16-720: Computer Vision

Info

Lecture  

Tues & Thurs, 12:30 - 1:50pm @ Posner Hall A35

Instructor

Deva Ramanan (Smith 221, office hours on request; send Piazza msg to schedule!)

TAs 

Erica Weng <eweng@andrew.cmu.edu>Hung-Jui (Joe) Huang <hungjuih@andrew.cmu.edu>Harry Freeman <hfreeman@andrew.cmu.edu>Bardienus Duisterhof <bduister@andrew.cmu.edu>Xinyu (Rachel) Li <xinyul2@andrew.cmu.edu

Office hours

Smith 200, 5-6pm M-F (unless otherwise noted on Piazza)

Piazza 

https://piazza.com/cmu/spring2024/16720

Gradescope

4GYB6D

Description

This course introduces the fundamental techniques used in computer vision, that is, the analysis of patterns in visual images to reconstruct and understand the objects and scenes that generated them. The first third of the course covers low-level image processing, including filtering, warping, image descriptors, and correspondence matching. The second third of the course covers geometry and 3D motion, including image formation, camera models, optical flow, stereo, and structure from motion. The last third of the course covers pattern recognition including deep learning, convolutional neural networks. Additional topics include radiometry, color, and photometric stereo.

Prerequisites

Prerequisites include linear algebra, probability, and calculus. A great reference for linear algebra is here. Courses related to 16-720 include 16-385 and 16-820. Undergraduates should take 16-385, which serves as the undergraduate version of this course). Graduate students with little exposure to computer vision should take 16-720, which serves as the introductory graduate version of this course. Graduate students with prior exposure to computer vision should take 16-820, which serves as the advanced version of this course.

Textbooks

Computer Vision: Algorithms and Applications, by Richard Szeliski, Springer, 2cnd Edition. Can be downloaded for free here.

Assignment Submission 

Gradescope (Entry code: 4GYB6D). Homework is submitted through Gradescope. Homeworks are due by 11:59pm on the given due date. Submissions must be in the form of (1) a PDF containing the write up including screen grabs of code when requested and (2) a zip file containing the code. You are required to to assign individual pages of your PDF to individual questions in Gradescope and are responsible for making sure all work is legible. Not doing so will dock your point total by 10% per question.
Late Days. You have 6 free late days to use across all of your assignments. To allow us to grade and return assignments in a timely manner,  no assignment will be accepted more than 3 late days after its original due date. That means, you may only use at most 3 late days on any one assignment. If the assignment is turned in >3 late days after the due date, you will receive 0% on that assignment, NO EXCEPTIONS. A late day extends the deadline for an assignment by 24 hours. Once you have used up all 6 of your late days, there will be a 20% penalty per additional late day on that assignment. A common mistake is using up all your late days up on the early assignments. You are responsible for keeping track of the number of late days you have used.
Collab Policy. We encourage study groups and homework discussions, but each student must independently write up their own solutions. In particular, no sharing of code. Please see the university policy on academic honesty. It is fine to use reference materials found online, but you must mark all reference websites you use on your homework submission. Do not search for homework solutions. Rather, students are strongly encouraged to ask questions at both office hours and on the class discussion group.

Office hours

Please prepare your question before the office hours. The more thought-out the question, the more likely you'll be able to get an immediate and helpful answer. If you have a coding or debugging question, please include screenshots, detailed information about your issue, and what you have tried. This will make it much easier for course staff to understand and help resolve your issue.If there is a queue of waiting students, TAs will spend 15 minutes per person, and bump them to the bottom of the queue.

Discussion (Piazza) Guidelines

Piazza (https://piazza.com/cmu/spring2024/16720) should be used for discussing general topics and problems. It is not to be used to crowdsource debugging. While posting questions:1. Please avoid private questions in general (if you have a question, it is likely many others do!). Exceptions are private questions for office hours, described further below. 2. Check to see if the same question has been posted before!3. Choose the appropriate thread channel to help organize questions.
Good Posts:Asking about unclear questions on the homeworkClarification or problems with slidesQuestions about CV topics
Bad Posts:Source codeDebuggingAsking for answer to a homework question

Grading

Homeworks 1-6 are work 16.5% each plus 1% class participation (in-person and piazza) = 100 %.  All assignments will have regular and extra credit. The score for a given assignment is computed differently than other courses:  100* total_score / max_score_without_extra_credit. Note that historically, most students get near or above 100. Final grades are A+/A/A- for above 100/95/90, B+/B/B- for above 86/83/80, C+/C/C- for above 76/73/70, D+/D/D- for above 66/63/60, and Fail for less than 60.
Regrade Requests: If you believe an error was made during grading, you will be able to submit a regrade request on Gradescope. For each homework, regrade requests will be open for only 1 week after the grades have been published.  This is to encourage you to check the feedback you’ve received early! TAs reserve the right to regrade any part of an assignment that is submitted for regrading. Your score may go up, down, or may not change based on the TAs discretion. 

Compute Resources / Environments

We highly recommend completing assignments using Google Colab, for which we will provide Jupyter notebooks. You can also make use of your personal computer, but this will require modifying our skeleton code to explicitly download and store datasets on your local workstation. The free version of Colab should suffice if you are careful with your use of compute; since GPU cycles are limited per month, use them only for one assignment that uses PyTorch. For this class, you will be providing skeleton code in Python 3. Python is ubiquitous in academia and industry, so mastering it will be a useful skill. We recommend using conda as a package manager to avoid cluttering the pre-installed Python on your computer. Here are directions for setting up your environment:
1. Follow the directions to download and install anaconda.2. Create a new conda environment called cv:conda create -n cv python=3.83. Activate your conda environment (do this before running any code for homework assignments):conda activate cvMore directions on managing your conda environment can be found here.4. Install packages needed for Homework 1:pip install notebook matplotlib numpy scikit-image scikit-learn scipy tqdm 5. You should now be able to run the code for Homework 1:python code/main.py