Lecture Date Topic Materials Assignments
Lec. 1 Thu, Jan. 9 Introduction
About this course
A simple visual world
ps1 (filtering) out
Lec. 2 Tue, Jan. 14Image filters
Lec. 3 Thu, Jan. 16Signal processing
Fourier analysis
Template matching
Lec. 4 Tue, Jan. 21Multi-scale pyramids
Gaussian and Laplacian pyramids
Image blending
Texture analysis
ps1 due
ps2 (signal processing) out
Lec. 5 Thu, Jan. 23Statistical models of images
Image priors
Example-based texture synthesis
Lec. 6 Tue, Jan. 28Machine learning
Linear classifiers
ps2 due
ps3 out (texture)
Lec. 7 Thu, Jan. 30Neural networks
Network structure
Lec. 8 Tue, Feb. 4 Optimization (Lecturer: Haozhu Wang)
Gradient descent
ps3 due
ps4 out (backprop)
Lec. 9 Thu, Feb. 6 Convolutional networks
Convolution layers
TutorialThu, Feb. 6PyTorch tutorial
5:30pm - 7:00pm in EECS 1200

Lec. 10 Tue, Feb. 11Scene understanding
Scene recognition
Semantic segmentation
Sliding window
ps4 due
ps5 out (scene recognition)
Lec. 11 Thu, Feb. 13Object detection
Region-based CNNs
Single-shot detection
Instance segmentation
Lec. 12 Tue, Feb. 18Temporal models
ps5 due
ps6 (object detection) out
Lec. 13 Thu, Feb. 20Image synthesis
Texture synthesis
Conditional GANs
Lec. 14 Tue, Feb. 25Representation learning
Transfer learning
ps6 due
project proposal info out
Lec. 15 Thu, Feb. 27Multimodal learning
Multimodal models
Vision methods for other signals
Multisensory supervision
Spring break
Lec. 16 Tue, Mar. 10Image formation
Plenoptic function
Pinhole cameras
Homogeneous coordinates
Projection matrix
project proposal due
ps7 out (image translation)
Thu, Mar. 12No class
Lec. 17 Tue, Mar. 17Multi-view geometry
Epipolar lines
ps7 due
ps8 out (representation learning)
Lec. 18 Thu, Mar. 19Multi-view reconstruction
Feature matching
Structure from motion
Lec. 19 Tue, Mar. 24Depth estimation
Stereo matching
Graphical models
Belief propagation
ps8 due
ps9 out (panorama stitching)
Lec. 20 Thu, Mar. 26Motion
Optical flow
Aperture problem
Multi-scale estimation
Lec. 21 Tue, Mar. 31Color
Color perception
Color constancy

ps10 out (optical flow)
Lec. 22 Thu, Apr. 2 Light and shading
Shape from shading
Photometric stereo
Intrinsic images
Lec. 23 Tue, Apr. 7 Grouping
Normalized cuts
Bilateral filtering
Lec. 24 Thu, Apr. 9 Language
Lec. 25 Tue, Apr. 14Embodied vision
Lec. 26 Thu, Apr. 16Reinforcement learning + disinformation
Lec. 27 Tue, Apr. 21Datasets and bias ps9 and ps10 due
Final project presentations, Mon. April 27 - Thurs. April 30. Project writeup due on midnight April 26.

Staff & Office Hours

Graduate student (GSI)
Anthony Liang
Instructional aide (IA)
Instructional aide (IA)

Name Office hour times
Andrew OwensFri. 3:00pm - 4:00pm
Haozhu WangThu. 7:30pm - 8:30pm
Bingqi SunMon. 4:30 - 5:30
Anthony LiangTue. 1:30 - 2:30pm
Office hours will take place over video chat. Please see Piazza for more details.

Course information

EECS 504 is a graduate-level computer vision class. Class topics include low-level vision, object recognition, motion, 3D reconstruction, and basic signal processing and deep learning. We'll also touch on very recent advances, including those in image synthesis, unsupervised learning, and multimodal perception.

Prerequisites: Please note that this is an advanced, graduate-level computer vision course. There are no exams, but there will be a fairly heavy workload, with programming projects due almost every week.

  • This course puts a strong emphasis on mathematical methods. We'll cover a wide range of techniques in a short amount of time: e.g., projective geometry, backpropagation, graphical models, signal processing, etc. We'll assume that you have strong linear algebra, multivariable calculus, and probability skills. Basic knowledge of machine learning is encouraged, but not required.
  • All programming will be completed in Python, using numerical libraries such as numpy, scipy, and PyTorch. We'll assume that you have extensive programming experience.

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!

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.

Grading: Class grades will be weighted:

  • Homework: 70%
  • Final project: 30%

Textbook: There is no required textbook. Instead, we'll post online readings for each lecture. Optional reference textbooks:

  • Szeliski. Computer Vision: Algorithms and Applications. (available for free online)
  • 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 6 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 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 one week to submit a regrade request, using Gradescope. This will be a strict deadline, even for significant errors such as missing grades.

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.

Support: The counseling and psychological services center (CAPS) provides support for a variety of issues.