Schedule

Lecture Date Topic Materials Assignments
Lec. 1 Mon, Aug. 31A simple vision system
About the course
Cameras
Simple edge detection
ps1 (filtering) out
Lec. 2 Wed, Sep. 2 Image filters
Convolution
Gradient filters
Blurring
Sec. 1 Fri, Sep. 4 Linear algebra
Mon, Sep. 7 No class
Lec. 3 Wed, Sep. 9 Nonlinear filtering
Laplacian
Hybrid images
Template matching
Bilateral filtering
Sec. 2 Fri, Sep. 11More linear algebra
Lec. 4 Mon, Sep. 14Frequencies
Image statistics
Fourier transform
Lec. 5 Wed, Sep. 16Image pyramids
Gaussian pyramid
Laplacian pyramid
Resampling
ps1 due
ps2 out (frequency)
Sec. 3 Fri, Sep. 18Fourier tutorial
Lec. 6 Mon, Sep. 21Statistical models for images
Image priors
Denoising
Example-based texture synthesis
Lec. 7 Wed, Sep. 23Machine learning
Learning
Datasets
Linear regression
ps2 due
ps3 out (pyramids)
Sec. 4 Fri, Sep. 25Learning tutorial
    Lec. 8 Mon, Sep. 28Machine learning 2
    Learning
    Datasets
    Linear regression
    Lec. 9 Wed, Sep. 30Linear models
    Logistic regression
    Gradient descent
      ps3 due
      ps4 out
      Sec. 5 Fri, Oct. 2Office hours
        Lec. 10 Mon, Oct. 5 Neural networks
        Nonlinearities
        Network structure
        Regularization
        Lec. 11Wed, Oct. 7 Optimization
        Backpropagation
        SGD
        Sec. 6 Fri, Oct. 9PyTorch tutorial
          Lec. 12Mon, Oct. 12Convolutional networks
          Convolution layers
          Pooling
          Normalization
          Lec. 13 Wed, Oct. 14Scene understanding
          Scene recognition
          Semantic segmentation
          Sec. 7 Fri, Oct. 16Office hours
            Lec. 14 Mon, Oct. 19Object detection
            Sliding window
            Region-based CNNs
            Instance segmentation
            Lec. 15 Wed, Oct. 21Temporal models
            3D CNNs
            RNNs
            Attention
            Sec. 8 Fri, Oct. 23Project office hours
              Lec. 16 Mon, Oct. 26Image synthesis
              Texture synthesis
              GANs
              Conditional GANs
              Lec. 17 Wed, Oct. 28Representation learning
              Transfer learning
              Autoencoders
              Self-supervision
              Sec. 9 Fri, Oct. 30Project office hours
                Lec. 18 Mon, Nov. 2 Multimodal models
                Neural nets for other signals
                Sight and sound
                Multisensory supervision
                Lec. 19 Wed, Nov. 4 Image formation
                Plenoptic function
                Pinhole cameras
                Homogeneous coordinates
                Projection matrix
                • Szeliski: Chapter 2
                Sec. 10 Fri, Nov. 6Project office hours
                  Lec. 20 Mon, Nov. 9 Multi-view geometry
                  Triangulation
                  Epipolar lines
                  Homographies
                  Warping
                  Lec. 21 Wed, Nov. 11Multi-view reconstruction
                  Feature matching
                  RANSAC
                  Structure from motion
                  • Szeliski 6.1-6.3, 7.1, 7.4
                  Sec. 11 Fri, Nov. 13Geometry tutorial
                    Lec. 22 Mon, Nov. 16Depth estimation
                    Stereo matching
                    Graphical models
                    Belief propagation
                      Lec. 23 Wed, Nov. 18Motion
                      Optical flow
                      Aperture problem
                      Multi-scale estimation
                      • Szeliski 8.4
                      Sec. 12 Fri, Nov. 20Project office hours
                        Lec. 24 Mon, Nov. 23Color
                        Color perception
                        Color constancy
                        • Szeliski 2.3.2
                        Lec. 25 Wed, Nov. 25Light and shading
                        Shape from shading
                        Photometric stereo
                        Intrinsic images
                        Sec. 13 Fri, Nov. 27Project office hours
                          Lec. 26 Mon, Nov. 30Language
                          Attention
                          Captioning
                          Lec. 27 Wed, Dec. 2 Embodied vision
                          Learning from demonstrations
                          Reinforcement learning
                          Sec. 14 Fri, Dec. 4Project office hours
                            Lec. 28 Mon, Dec. 7Bias and disinformation
                            Datasets
                            Algorithmic fairness
                            Image forensics


                            Staff & Office Hours


                            Instructor
                            Graduate student (GSI)
                            Graduate student (GSI)
                            Graduate student (GSI)

                            Name Office hours times
                            Haozhu Wang Thursday 9-10pm
                            Zhengyu Huang Tuesday 4-5pmWednesday 1:45 - 2:45pm
                            Hansal Shah Tuesday 2-3pmFriday 5-6pm
                            Andrew Owens Monday 4:45 - 5:15pm Friday 3pm-4pm
                            Office hours will take place over video chat, using the same Zoom link as lecture. When you join the call, you will be put on a waiting list. You will then meet one-on-one with a member of the course staff.


                            Course information

                            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 perception.

                            Lectures:

                            • Lectures will take place over Zoom on Monday and Wednesday, 3:00 - 4:30pm. Attendance will not be required; we'll post lecture recordings online for people who can't make it. See here for the Zoom link. Please do not share the link, so that we can avoid Zoom bombing.
                            • We hope that you'll participate in class! If you have a question during lecture, we reccomend that you use the "raise hand" feature, then unmute yourself when we call on you, or send a message.

                            Discussion section:
                            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
                            Some weeks, we'll host tutorials during these sections, where GSIs will cover a topic in depth (e.g. a PyTorch guide). These tutorials appear in the schedule. Attendance to these tutorials is optional, and recordings will be posted online. Other weeks, the discussion section will function as additional office hours and project discussion.

                            Prerequisites:

                            • This course puts a strong emphasis on mathematical methods. We'll cover a wide range of techniques in a short amount of time. Knowledge of linear algebra is highly encouraged. Please consider taking a linear algebra course before taking this class; otherwise, it may be quite difficult. For a refresher, please see here. This material should mostly look familiar to you.
                            • This class will require a significant amount of programming. 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 write a large amount of code 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 (eecs442-fa20-staff@umich.edu), 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 to purchase. As an experiment, we'll be using a new draft version of the online book:

                            If you have feedback for the author, please submit it here, and we'll pass it along!

                            The following textbooks may also be useful as 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, David Fouhey, 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.

                            Please note that, due to the number of late days available, there will a lag between submission and grading times — we'll need to wait for the late submissions to arrive before we can finish grading.

                            Regrade requests: If you think there was a grading error, you'll have 9 days to submit a regrade request, using Gradescope. This will be a strict deadline, even for significant mistakes such as missing grades, so please look over your graded assignments!

                            Support: The counseling and psychological services center (CAPS) provides support for a variety of issues, including mental health and stress.

                            Grading:

                            • Grades will be computed as follows, with all homeworks equally weighted:
                              Homework 70%
                              Final project 30%
                            • We'll use these approximate grade thresholds:
                              A+ TBD
                              A 92%
                              A- 90%
                              B+ 88%
                              B 82%
                              B- 80%
                              C+ 78%
                              C 72%
                              C- 70%
                              These are lower bounds on letter score grades. For example, if you get an 81%, you will be guaranteed to get a B-. We may gently curve the class up, in a way that would only improve your letter grade: e.g. after the curve, an 81% might round up to a B, but it would not round down to a C+.

                            Academic integrity: While you are 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.