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, low-level 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 vector-valued functions.

Much of computer vision is applying linear algebra to real-world 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 3-5 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)

  • Lectures: There are two sections: a live lecture and a remote section that has been added to allow the class to enroll students beyond the assigned lecture room capacity. The lectures will be recorded. All students in both sections will have access to the lecture recordings and in person lecture attendance is optional. The students in the remote section may attend the in-person lecture if there is sufficient space. The instructor may alter this policy depending on how things go.

  • Discussion Sections: There are five discussion sections. You are free to attend whichever you would like. The instructor may alter this policy depending on how things go.

  • Office Hours: Office hours are your time to ask questions one-on-one with course staff and get clarification on concepts from the course. We encourage you to go to GSI office hours for implementation questions about the homework and faculty office hours for conceptual questions.

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

  • Contacting course staff directly: If you need to discuss a sensitive matter that you would prefer not to be shared with the entire course staff, then please email the instructor or your section's GSI/IA directly.

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 self-teaching compared to many intro-sequence 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, pair-programming 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.