Course Description

This class is an introduction to fundamental concepts in image understanding, the subdiscipline of artificial intelligence that tries to make the computers “see”. It will survey a variety of interesting vision problems and techniques. Specifically, the course will cover image formation, features, object and scene recognition and learning, multi-view geometry and video processing. The goal of the class will be to grasp a number of computer vision problems and understand basic approaches to tackle them for real-world applications.

Instructor

Course Logistics

Lectures: Wednesdays 1:00pm-3:00pm (LEC0101; MP 137) and 3:00pm-5:00pm (LEC0201; GB 221). Lectures will be recorded and made available on Quercus.

Tutorials: Friday 1:00pm-2:00pm (LEC0101; GB 221) and 3:00pm-4:00pm (LEC0201; MP 137).

Instructor office hours: Wednesdays 11:10am-12:00pm (BA 7228).

TA office hours: Fridays 2:00pm-3:00pm in BA 2270.

Forum: Course announcements and general information will be posted on the course forum at Piazza. Any questions can also be discussed on the course forum, though do not expect an immediate response from the TAs. Also, do not expect answers during weekends or at the last minute before assignments are due. Please only email the staff for emergency inquiries that cannot be handled on the forum via a private post: Course Staff Email.

MarkUs: Assignment materials and grades will be posted on MarkUs.

Quercus: Lecture recordings and tutorial codes will be posted on Quercus.

Attendance: While lectures will be recorded, in-person attendance is expected as the recording will not capture all presented material (e.g., handwritten annotations, chalkboard diagrams, etc.).

Assignments: All assignments must be submitted on MarkUs. You will be automatically added to MarkUs if you're taking the course. Please do not email the staff if you are not yet added at the beginning of the term; it may take a week or two to be added.

Remark requests must be submitted within 1 week of graded assignments being returned. Late remark requests will not be accepted.

Lateness: All assignments are due on Thursdays at 12:59 PM (i.e., in the afternoon) as indicated on the schedule. There is a one-hour grace period after the deadline to account for any technical glitches/issues during the submission. If you require an extension you must submit an official request to the course staff using this form. All assignments must be submitted within seven days of the deadline (no exceptions).

Textbook: Readings are assigned from the following texts:

Some topics will have specific additional assigned reading materials as indicated in the course schedule.

   

Grading

Assignments (29%)

There will be 4 assignments, posted every two weeks, starting with the second week. Assignments will consist of problem sets and programming problems with the goal of deepening your understanding of the material covered in class. The assigned problem sets will not be graded; the programming problems will be graded. Note that material for the midterm and final exams will be partly based on questions from the problem sets and programming problems. The programming problems will use Python and Jupyter Notebook.

Collaboration Policy: The graded portion of assignments (programming problems) must be implemented individually; however, you may discuss general strategies and discuss the concepts of the course with other students, TAs (e.g., on Piazza), or AI. You must not share code or derivations. the ungraded portion of assignments (problem sets) may be completed collaboratively.

AI Assistants Policy: You are welcome to use AI assistants in a responsible fashion. You should not ask an AI assistant to complete your assignments for you; this is just as inappropriate as asking another student. However, you may ask an AI assistant questions about lecture material, clarifications about the assignments, tips on how to approach a problem, etc. (i.e., you may discuss the assignments with the AI assistant in the same way you are allowed to discuss with your peers or the TAs). If you decide to use an AI assistant, you must include a sentence or two describing how you used it at the very top of your submitted assignment.

Midterm Exam (30%)

A timed one-hour exam held during the tutorial hour. The exam will be a combination of multiple choice and short-answer/long-answer. There are no make-ups for the midterm. If you miss the midterm, we will add a 30% weight to your final exam (so that the final will be worth 70% of your total grade).

Final Exam (40%)

A timed three-hour exam consisting of a combination of multiple choice and short-answer/long-answer questions. The time and date will be announced later in the term.

Ethics Module (1%)

Completion of two surveys based on a course ethics module of the course will be worth 0.5% each.

Accessibility and Accommodations

Students with diverse learning styles and needs are welcome in this course. In particular, if you have a disability or health consideration that may require accommodations, please feel free to approach me and/or the Accessibility Services Office as soon as possible. The Accessibility Services staff are available by appointment to assess specific needs, provide referrals and arrange appropriate accommodations. The sooner you let them and me know your needs, the quicker we can assist you in achieving your learning goals in this course: https://www.studentlife.utoronto.ca/as, 416-978-8060, or accessibility.services@utoronto.ca

Schedule and Syllabus

Week Date Description Material Readings Event Deadline
Week 1 Wed
Sep 3
Lecture 1: Introduction & Machine Learning Review
Course overview, review of fully connected networks, optimization, backpropagation
[slides] FCV 9-14
What is a neural network?
Gradient descent
Backpropagation
Backpropagation calculus
(optional) Notes on backpropagation (optional) Least squares review (optional) SVD review
Assignment 1 out on MarkUs
Fri
Sep 5
Tutorial 1
PyTorch tutorial, Jupyter Notebook tutorial, lecture 1 practice problems, A1 Q&A
Week 2 Wed
Sep 10
Lecture 2: Recognition
Convolutional neural networks for segmentation, object detection, and classification
[slides] FCV 24
FCV 50
(optional) Hubel & Wiesel 1979
Fri
Sep 12
Tutorial 2
PyTorch Tutorial (CNNs), fine-tuning, logging tools, lecture 2 practice problems, A1 Q&A
Week 3 Wed
Sep 17
Lecture 3: Vision Transformers
attention, transformers, vision transformers, CLIP, autoregressive text-to-image
[slides] FCV 25
FCV 26
FCV 51
Thu
Sep 18
Ethics Survey 1 due
Fri
Sep 19
Tutorial 3
understanding & visualizing attention, lecture 3 practice problems, A1 Q&A
Week 4 Wed
Sep 24
Lecture 4: Generative Models & Embedded Ethics
VAEs, GANs, diffusion models, bias in deep learning
[slides] FCV 32.1–32.3, 32.8–32.10
FCV 33
FCV 35
In Class Exercise: CelebA-HQ Samples
Assignment 2 out on MarkUs
Thu
Sep 25
Assignment 1 due 12:59 pm
Fri
Sep 26
Tutorial 4
exploring vision latent spaces, lecture 4 practice problems, A2 Q&A
Week 5 Wed
Oct 1
Lecture 5: Digital Photography
ray optics, aperture, depth of field, exposure, sensor noise, demosaicking, denoising, deconvolution
[slides] FCV 5
Szeliski 2.3
Fri
Oct 3
Tutorial 5
lecture 5 practice problems, A2 Q&A
Week 6 Wed
Oct 8
Lecture 6: Radiometry and Photometric Cues
radiometric units, reflectance, photometric stereo, shape from shading, single-image depth
[slides] Gortler 21 (Quercus)
FCV 43
(optional) First Principles of Computer Vision (Photometric Stereo I)
(optional) First Principles of Computer Vision (Photometric Stereo II)
Fri
Oct 10
Tutorial 6
lecture 6 practice problems, A2 Q&A
Week 7 Wed
Oct 15
Lecture 7: 3D Vision & Stereo I
coordinate systems, calibration, stereo geometry, triangulation, stereo matching
[slides] FCV 39
FCV 40
(optional) Notes on stereo vision
Assignment 3 out on MarkUs
Thu
Oct 16
Assignment 2 due at 12:59 pm
Fri
Oct 17
Tutorial 7
lecture 7 practice problems, midterm review, A3 Q&A
Week 8 Wed
Oct 22
Lecture 8: Epipolar Geometry & Stereo II
Essential & Fundamental Matrices, 8-point algorithm, active stereo, volumetric stereo
[slides] Zisserman & Hartley 9, 11
Szeliski 12.7.2
Szeliski 13.2
In Defense of the 8-point Algorithm
Fri
Oct 24
Midterm
Week 9 Wed
Oct 29
Reading Week (No Lecture)
Week 10 Wed
Nov 5
Lecture 9: Structure from Motion & Radiance Fields
feature matching, bundle adjustment, learned SfM, volume rendering, surface-based representations
[slides] FCV 44
FCV 45
Fri
Nov 7
Tutorial 9
lecture 9 practice problems, A3 Q&A
Week 11 Wed
Nov 12
Lecture 10: Optical Flow & Tracking
Motion estimation, patch match, 3D motion, brightness constancy, applications
[slides] FCV 46-49 Assignment 4 out on MarkUs
Thu
Nov 13
Assignment 3 due at 12:59pm
Week 12 Mon
Nov 17
Tutorial 10 (on zoom)
lecture 10 practice problems, A4 Q&A
Wed
Nov 19
Lecture 11: Modeling Humans
parametric human models, pose estimation, mesh recovery, generation
[slides] Szeliski 13.6
Fri
Nov 21
Tutorial 11
lecture 11 practice problems, A4 Q&A
Week 13 Wed
Nov 26
Lecture 12: Course Review & Selected Topics Potpourri [slides]
Thu
Nov 27
Assignment 4 due/Ethics Survey 2 due 12:59 pm
Fri
Nov 28
Tutorial 12
review and final exam Q&A
TBD Final Exam

Miscellanea

Installing Python

We will only support Python 3.7 and recommend that you install it using Anaconda or Miniconda (see installation instructions here).

Acknowledgements

Some course content is adapted from previous offerings by Sanja Fidler, Ahmed Ashraf, and Babak Taati. Many of the slides are modified from those of Philip Isola, Bill Freeman, Yannis Gkioulekas, Gordon Wetzstein, and Steve Seitz. The webpage is based on the website for CS231N and EE367 at Stanford University.

Previous offerings