EECS 442 is an advanced undergraduate-level
computer vision class. Class topics include
low-level vision, object recognition, motion, 3D
reconstruction, basic signal processing, and
deep learning. We'll also touch on very recent
advances, including image synthesis,
self-supervised learning, and embodied
- Lectures will take place over Zoom during class times. Attendance will not be required; we'll post lecture recordings online for people who can't make it. Please look here for the Zoom link.
- We hope that you'll participate in class! If you have a question during lecture, feel free to send a message to the class, or unmute and speak (for this, you are encouraged to use the "raise hand" feature beforehand).
This class has two discussion sections, which both use the same Zoom link as the lecture:
- Friday, 10:30am - 11:30am
- Friday, 12:30pm - 1:30pm
- This course puts a strong emphasis on mathematical methods. We'll cover a wide range of techniques in a short amount of time. Advanced knowledge of linear algebra is highly encouraged. Please see this review for a review.
- All programming will be completed in Python, using numerical libraries such as numpy, scipy, and PyTorch. The problem sets will be completed using Jupyter notebooks, generally using Google Colab. In some assignments, we'll give you starter code; in others, we'll ask you to implement a vision system from scratch.
Q&A: This course has a Piazza forum, where you can ask public questions. If you cannot make your post public (e.g., due to revealing problem set solutions), please mark your post private, or come to office hours. Please note, however, that the course staff cannot provide help debugging code, and there is no guarantee that they'll be able to answer last-minute homework questions before the deadline. We also appreciate it when you respond to questions from other students! If you have an important question that you would prefer to discuss over email, you may email the course staff (firstname.lastname@example.org), or you can contact the instructor by email directly.
Homework: There will be homework assignments approximately every week. All programming assignments are to be completed in Python, using the starter code that we provide. Assignments will always be due at midnight (11:59pm) on the due date. The assignments will all be worth approximately equal amounts. Written problems will usually be submitted to Gradescope. You may be asked to annotate your pdf (e.g. by selecting your solution to each problem).
Final project: In lieu of a final exam, we'll have final project. This project will be completed in small groups during the last weeks of the class. The direction for this project is open-ended: you can either choose from a list of project ideas that we distribute, or you can propose a topic of your own. A short project proposal will be due approximately halfway through the course. During the final exam period, you'll turn in a final report and give a short presentation. You may use an ongoing research work for your final project, as long it meets the requirements.
Textbook: There are no required textbooks. As an experiment, we'll be closely following a new draft version of the book:
- Szeliski. Computer Vision: Algorithms and Applications, 2nd edition draft (available for free online)
The following textbooks may also be useful references:
- Goodfellow, Bengio, Courville. Deep Learning. (available for free online)
- Forsyth and Ponce. Computer Vision: A Modern Approach.
- Hartley and Zisserman. Multiple View Geometry in Computer Vision.
Acknowledgements: This course draws heavily from MIT's 6.869: Advances in Computer Vision by Antonio Torralba, William Freeman, and Phillip Isola. It also includes lecture slides from other researchers, including Svetlana Lazebnik, Alexei Efros, and Noah Snavely (please see acknowledgments in the lecture slides).
Late policy: You'll have 7 late days to use over the course of the semester. Each time you use one, you may submit a homework assignment one day late without penalty. You are allowed to use multiple late days on a single assignment. For example, you can use all of your days at once to turn in one assignment a week late. You do not need to notify us when you use a late day; we'll deduct it automatically. If you run out of late days and still submit late, your assignment will be penalized at a rate of 30% per day. If you edit your assignment after the deadline, this will count as a late submission, and we'll use the revision time as the date of submission (after a short grace period of a few minutes). We will not provide additional late time, except under exceptional circumstances, and for these we'll require documentation (e.g., a doctor's note). Please note that the late days are provided to help you deal with minor setbacks, such as routine illness or injury, paper deadlines, interviews, and computer problems; these do not generally qualify for an additional extension.
Regrade requests: If you think there was a grading error, you'll have 10 days to submit a regrade request, using Gradescope. This will be a strict deadline, even for significant mistakes that are totally our fault, like missing grades!
Support: The counseling and psychological services center (CAPS) provides support for a variety of issues.
- Grades will be weighted as follows, with all homeworks equally weighted:
Homework 70% Final project 30%
- Approximate grade thresholds:
A+ TBD A 92% A- 90% B+ 88% B 82% B- 80% C+ 78% C 72% C- 70% D+ 68% D 62% D- 60%
Academic integrity: While you are (highly!) encouraged to discuss homework assignments with other students, your programming work must be completed individually. You must also write up your solution on your own. You may not search for solutions online, or to use existing implementations of the algorithms in the assignments. Please see the Michigan engineering honor code for more information.