Course Syllabus
CS 6320/5320 Fall 2024 Computer Vision
Time: Tuesday and Thursday from 09:10 AM to 10:30 AM Mountain Time.
Location: Zoom-Class **
Instructor: Ziad Al-Halah
Office Hours: Monday: 8am - 9am Location: Zoom-Office
TA: Kushagra Dixit, Email: kushagra.dixit@utah.edu
Office Hours: Monday: 11am - 12pm, Location: Zoom-TA
Tuesday: 12pm - 2pm, Location: MEB 3115
Wednesday: 1pm - 2pm, Location: Zoom-TA
TA: Yi-Kai Lee, Email: u1480041@umail.utah.edu
Office Hours: Wednesday: 2pm - 3pm, Location: Zoom-TA (Password: 3VBaGL)
Thursday: 2pm - 3pm, Location: MEB 3115
** Please note that the lectures will not be recorded
Welcome!
Computer vision asks how we can enable computers to make sense of the complex world using data provided by cameras, lasers, and other visual sensors. To do this, the field of computer vision draws on a diverse set of tools from the mathematics of geometry, the geometry of light, and data-driven machine learning techniques, among many other fields. With the increasing ubiquity of cameras on mobile devices and large Internet image databases, the tools of computer vision have become more relevant than ever before in all areas of computer science.
What does this course offer you?
In this course, you will learn to develop and analyze the algorithms and mathematics for computer vision problems and applications. You will learn to implement vision algorithms efficiently for use in research or industry.
Learning Objectives
Upon completion of this course, students should be able to:
- Recognize and describe both the theoretical and practical aspects of computing with images. Connect issues from Computer Vision to Human Vision
- Describe the foundation of image formation and image analysis. Understand the basics of 2D and 3D Computer Vision.
- Become familiar with the major technical approaches involved in computer vision. Describe various methods used for registration, alignment, and matching in images.
- Get an exposure to advanced concepts, including state-of-the-art deep learning architectures, in all aspects of computer vision.
- Build computer vision applications with python and the PyTorch framework.
Prerequisites
No prior experience with computer vision is assumed, although previous knowledge of visual computing, image processing, or signal processing will be helpful. The following skills are necessary for this class:
- Data structures: You’ll be writing code that builds representations of images, features, and geometric constructions.
- Programming: Projects are to be completed and graded in Python. All project starter code will be in Python. TA’s will support questions about Python. If you’ve never used Python, that is OK, as long as you have programming experience.
- Math: Linear algebra, vector calculus, and probability. Linear algebra is the most important, and students who have not taken a linear algebra course have struggled in the past.
How are you, exactly, going to achieve this?
We will have readings associated with most lectures. You should read this material and come prepared to class. We will have selected readings from Rick Szeliski's Computer Vision: Algorithms and Applications book, available free online here: http://szeliski.org/Book/
Links to an external site. and from the book Deep Learning available online here: http://www.deeplearningbook.org/
Links to an external site. by Goodfellow, Bengio, and Courville.
Other readings will come from research papers or notes provided by the instructor.
Programming projects will provide you with an opportunity to implement algorithms studied in the course. You will implement these assignments independently to help improve your own skills in programming vision algorithms. You make work with other students at the level of "whiteboard discussion" to help understand the assignments, but all work turned in must be your own. Please list any individuals you worked with on assignments and correctly cite any other resources used.
We will have around 10 in-class quizzes, approximately one every week, to help enhance and assess retention and understanding of the material. These are very short and straightforward quizzes to help prepare you by reviewing material we'll build on in class that should not take more than 10 or 15 minutes to complete.
How will you (and the teaching staff) know if you are making progress in your learning?
The best way to understand your progress is to actively engage in class and work to answer questions yourself. Each class, you will be provided time to engage with the professor and your classmates to solve problems. If something isn't clear, then ask about it! If you are confused, then many others in the class likely are as well.
We will provide feedback on programming assignments quickly to aid in understanding. Office hours by the professor and TA also serve as a great time to go and get individual feedback on your progress if you are uncertain.
Helps Hours and Contact
Students can meet with the teaching staff during the office hours listed above or by appointment.
Before sending a message to the teaching staff, please first look on the website for the information. If it is not found there or not clear, then think about asking a question on piazza. This will enable other students to get the same information and decrease the workload of both students and the teaching staff.
Also, please ask relevant questions in class!
If you think your question is better handled privately with the teaching staff, then please contact us using the piazza messaging system. Direct emails not through piazza will generally not be read or responded too. Additionally, you should by default include the instructor and TAs on the message to keep everyone on the same page and increase the timeliness of responses.
Grading
Grades will be assigned based on the scores received on programming projects comprising 90% and quizzes and possibly other short assignments making up the remaining 10%.
Final grades will be determined based on overall performance of students in the class. A minimum of 93% will guarantee an A, but this threshold may be moved to a lower value depending on overall performance on assignments.
Late Policy
Please let the teaching staff know as early as possible if you need an extension on any assignments to accommodate issues.
If you don't have extenuating circumstances you have a total of 3 extra days you can elect to use as you see fit to turn in assignments late (for example you could turn in assignments 1, 2, and 3 late by 1 day each or turn in assignment 3, 3 days late, etc.). You need to notify in a comment on your submission if you are using one of your late days.
Any other late submissions will be discounted by 10% for being a day late up to a total of 30% off (i.e. at 3 days late). You have 3 days after the deadline to submit before the submissions close for good, and you will receive a 0.
Regrade Requests
Any regrade requests must be submitted via gradescope within 1 week of the assignment being submitted. We will not address regrade requests made at the end of the semester for assignments that did not have the grade released within the last week.
Project dates
Please note that the project dates provided here are tentative and subject to change at the discretion of the instructor throughout the semester. Students should refer to the dates listed on each assignment as posted on Canvas for the most accurate and up-to-date deadlines. The dates shared here are intended to give you an overview of the schedule and should not be considered final.
Further Course Administrative Information
- Student Disability Accommodations: https://oeo.utah.edu/how-can-we-help/disability-access.php
- School of Computing Academic Misconduct Policy: https://www.cs.utah.edu/undergraduate/current-students/policy-statement-on-academic-misconduct/
- University of Utah Academic Misconduct Policy: https://regulations.utah.edu/academics/6-410.php#a.III.C
Acknowledgment
This course is mainly based on the Computer Vision course taught previously by Prof. Tucker Hermans from the University of Utah.