EECS 442: Computer Vision (Winter 2022)
Instructor: David Fouhey (fouhey)
GSIs: Yinwei Dai (dywsjtu), Nikhil Devraj (devrajn)
IAs: Siyi Chen (siyich), Yuexi Du (duyxxd), Rahul Gupta (rahulgup), Ahmed Khan (ahmkhan), Victor Li (weijili), Prateeksunder Pinchi (pinchi), Changyuan Qiu (peterqiu), Jacob Skwirsk (skwirskj), Matthew Zhang (rzmatt)
Canvas+Piazza Link: TBD
Lecture: Tuesday/Thursday 12:00 Noon  1:30PM, 1610 IOE
Discussions: Monday 12:30PM  1:30PM, 2246 CSRB; Monday 3:30PM  4:30PM, 2150 DOW (Recorded); Wednesday 3:30PM  4:30PM, 2166 DOW; Wednesday 4:30PM  5:30PM, Remote (Previously: 3150 DOW); Thursday 3:30PM  4:30PM, Remote (Previously: 1006 DOW)
Office Hours: 9 of them; see canvas
This is an introduction to computer vision. Topics include: camera models,
lowlevel image processing, machine learning, object recognition,
multiview geometry, reconstruction, and applications.
A sketch of the topics covered is:
Images, light, and linear algebra (5 lectures);
Image processing, descriptors, and warping (5 lectures);
Basic ML (3 lectures);
Neural Nets (6 lectures);
Motion and Time (1 lectures);
3D (5 lectures);
Applications (2 lectures).
Prerequisites (tl;dr: you need to know how to program and some linear algebra)
Some students may have had some exposure to computer vision, machine learning, or image processing,
but none of these are required. We assume that you have a basic level of expertise
in programming, computer science, mathematics (specifically linear algebra).
Concretely, we will assume that you are familiar with the following topics and will not review them
in class:
Programming This includes algorithms and data structures at the level of EECS 281.
Python All course assignments will involve programming in Python. You will need to be
able to quickly learn a new language. The first homework will help teach
(or reinforce) some of concepts you will need, including Python gotchas and debugging effectively.
It would be helpful for you to have background in these topics. We will provide
refreshers on these topics, but we will not go through a comprehensive
treatment:
Array manipulation Homework assignments will extensively involve manipulating multidimensional arrays
with numpy and PyTorch. Some prior exposure will be useful, but if
you've never used them before, then the first homework assignment will help you get up to speed.
Linear Algebra In addition to basic matrix and vector operations, you will need to know about
the cross product, Eigenvectors and the Singular Value Decomposition (although we will teach you about these).
Calculus You should be comfortable with the chain rule, and taking partial derivatives of vectorvalued
functions.
Much of computer vision is applying linear algebra to realworld data. If you are unfamiliar with linear
algebra or calculus, past experience suggestst that you are are likely to struggle with the course. IF you
are rusty, we will provide math refreshers on the necessary topics. However, these refreshers are not meant
as a first introduction to the topics, but instead are meant to remind you of concepts you've forgotten or
to plug small gaps from your previous courses.
Textbook (tl;dr: none needed, but some may help)
There is no required textbook. Particularly thorny homeworks will often come with lecture notes to help.
The following optional books may be useful, and we will provide suggested
reading from these books to accompany some lectures:
Computer Vision: Algorithms and Applications by Richard Szeliski: Available for free online here.
Computer vision: A Modern Approach (Second Edition), by David Forsyth and Jean Ponce
Elements of Statistical Learning by Trevor Hastie, Robert Tibshirani, and Jerome Friedman.
Available for free online here
Multiview Geometry in Computer Vision (Second Edition), by Richard Hartley and Andrew Zisserman. Available
for free online through the UM Library (login required)
Work and Evaluation
Your grade will be based on:
Homework (78%) There will be seven homeworks over the course of the semester. The first one (homework 0)
is shorter than the rest and is worth 6%. The remaining 6 are worth 12% each.
Final Project (22%) There will be a final project, in which you work in groups of 35 students to produce
a substantial course project over the second half of the semester. This will consist of a proposal (worth 2%),
a final report (worth 14%), and a virtual showcase (worth 6%)
Contact Hours (tl;dr: go to lecture or watch the recordings, try to use Piazza)
Piazza: The primary way to communicate with the course staff is through Piazza. Here is the link.
We will use
Piazza to make announcements about the course, such as homework releases or course project details. If you have questions about course concepts, need help with the homework, or
have questions about course logistics, please post on Piazza instead of
emailing course staff directly. Since Piazza is a shared discussion forum,
asking and answering questions there can benefit other students as well.
On the other hand, please do not post homework solutions on Piazza. If you
have questions about a particular piece of code, please make a private post.
Homework Policies (tl;dr: you need to read this)
You are expected to read the policies before submitting homeworks.
Formatting and submission
In addition to any format that we ask you to have for an autograder, homework must follow two rules. Homeworks that
do not follow this formatting rule with get a zero. You can fix this zero by submitting identical homework that conforms
to these rules.
Rule #1: No handwriting. We will not accept handwritten homework in any shape or form. You do not have to typeset it in LaTex or make it pretty, but handwritten homework
will not be accepted.
Rule #2: Mark up your homeworks for Gradescope. You must mark where the questions are on Gradescope. To help ensure
consistency, the same question is marked in a row by a single grader. Homeworks without this
marked add considerable burden to the graders.
Rules for Collaboration, Looking Things Up, and Copying
You are encouraged to work on the homework together. This class has more freedom and selfteaching compared to many introsequence courses.
My role is to provide you guidance, background knowledge, and give you the opportunity to learn. Your role is to engage with the material, and doing
so with your peers is the best way to learn. Here are the rules:
Automated plagiarism detection: The vast majority of students are honorable. To ensure that honorable behavior is the incentivized behavior, we will run MOSS on the submitted homework.
Collaboration with students: You should never know the specific implementation details of anyone else's homework or see their code. Working in teams and giving
general advice about outputs or strategies (e.g., ‘‘if the image is really dark when you merge them together, you probably have screwed up the image
mask with the number of images’’) is great. However, pairprogramming or sitting next to someone else and debugging their code is not allowed
Consulting outside material: You can and should turn to other documentation (suggested textbooks, other professors’ lecture notes or slides, documentation
from libraries). You may not read a set of code (pseudocode is fine). If you come across code in your search, close the window and don't worry abou tit.
Things you should never worry about (some adapted from here): reading the documentation for publicly
available libraries; clarifying ambiguities and mistakes in assignments, slides, handouts, textbooks, or documentation; discussion the general material; helping
with things like cryptic numpy errors that are not related to class but part of the cost of doing business with a library; discussing the assignments to better
understand what's expected and general solution strategies; discussing the starter code; discussing general strategies for writing and debugging code.
Late Policy
We have generous late policies. This helps us avoid
judging the relative challenges of exceptional circumstances that arise
in the class. Due to these policies, please do not ask the course staff to wave late
deductions or give extra late days, except for truly exceptional circumstances
that merit it.
Penalties: Late homework will be penalized at a rate of 1% per hour,
rounding to the nearest hour, ties away from zero. For example, if the
homework is due Monday at 11:59:59pm, homework submitted until Tuesday
12:30am will be accepted with no penalty. After 12:30, there is a 1%
penalty. If you submit it Wednesday 6:30am, there is a 30% penalty. This is
applied as percentage points off. For instance, if you got a 90 and you
were 20 hours late, it is now a 70. The penalties will be applied in a way
that maximizes your overall score.
Late Hour Waiver:
You have 120 late hours over the semester that you can use on homework.
Each late hour remove one late hour of penalty. For instance, if you submit one homework assignment 110
hours late, another 5 hours late, and the rest on time, then there are no penalties.
This is meant to cover for
unexpected things that may happen (e.g., food poisoning, a
surprisingly difficult homework in this or another class, an interview,
an alien abduction, etc, etc.) and
is done automatically using times recorded in gradescope. We will not
keep track of lateness for you.
Late Hours and Projects:
Late hours do not apply to projects. Our due dates for the projects are typically
as late as we can take them and still deliver grades on time.
Regrades Policy
In a large class, it is likely that we will make a few mistakes in grading. We
are committed to making mistakes right. You are free to submit regrade requests,
especially if you believe there is a serious error (although not all regrade
requests will be approved). Here are the policies:
Deadline: Submit your regrade request within one week of the grades being released. This
regrade deadline is firm. If you get an F for submitting handwritten homework or not marking pages in Gradescope, these
grades are subject to the same deadlines. We will announce when grades are released.
Small judgment calls: Please do not quibble with small judgment call decisions. Regrade
request for things that are off by <= 1 points on any particular problem or which change the
homework by <= 3 points will not be considered. If you are worried that this will change your grade
due to rounding, please fill out
this form.
