CSCI 497P/597P - Introduction to Computer Vision

Scott Wehrwein

Fall 2020

Course Overview

Remote Instruction Format

Lectures

I’ve chosen to use Discord to conduct class for two reasons: (1) to have a persistent online hub for the course that will hopefully help to build a sense of community within the class, and (2) to enable lower-friction transitions between lecture and group work. This is my first quarter teaching on Discord, so there will be hiccups, but I’m hoping that it will be a better experience than Zoom.

Lectures will be delivered synchronously via our class Discord server at the scheduled time: MTWF 11:00am–11:50am. I will make an effort to include as many opportunities for group work and interaction as possible. Although you should attend the synchronous lectures if at all possible, there will be no penalty for missing lecture, and recordings of lectures (not including time spent breaking out into groups) will be made available promptly.

Recordings and Privacy

Lectures will be recorded for members of the class to watch if you missed lecture, or to review if you’d like to see the content again. The recording will capture my audio, webcam, and screen share only - it will not include video or audio of other participants. I will do my best to repeat questions, but the recordings may be missing context from the voice and chat channels.

Office hours

Office hours will be held via Zoom. For security, the link is only posted on the Syllabus page of Canvas.

Scott’s office hours are as follows:

Josh Myers-Dean is the grader for this course and will also hold an office hour:

Exams

The midterm and final exams will be open-book/open-note take-home exams.

Flexibility and Accommodations

The ongoing challenges associated with the current state of the world are affecting all of us in complex and varied ways. Although I have done my best to design this course to allow for flexibility, I understand that individual students may have circumstances that make it difficult to fully participate in this course.

If you contact me and ask, I will always make reasonable accommodations for late assignments and labs, missed classes, etc. Exceptions include:

The key thing to keep in mind, especially with respect to the programming assignments, is that the deadlines are primarily there for you: to make sure you stay on top of the material enough to get everything done by the end of the course.

The flip side of all this is that if you don’t talk to me, I can’t help you. I am making an effort to be transparent about accommodations because I don’t want them denied to those who are too shy to ask, or don’t ask because they assume I won’t be flexible.

What

Prerequisites
Synopsis from the WWU Course Catalog

A broad introduction to the fundamentals and applications of computer vision. Topics include basic image processing, the geometry and physics of image formation, multi-view scene reconstruction, segmentation, and detection and recognition of objects.

Official Course Outcomes

Note: the actual outcomes for this course may be a pared-down subset of these due to the remote instruction modality. My aim will be to emphasize quality over quantity of topics.

On completion of CSCI 497P, students will demonstrate:

On completion of CSCI 597P, students will additionally demonstrate:

Schedule

Here’s a tentative schedule that will be updated to reflect reality as the quarter progresses. Lecture materials, assignments, and other materials will also be posted here.

Date (Week) Topics Assignments Readings
9/23 (0) What is computer vision?
Logistics
slides
Ch 1
9/25 Overview and images
problems, slides
on the recreational use of spreadsheets (video)
9/28 (1) Filtering 1
colab playground, slides
3.1-3.3
9/29 Filtering 2
problems, slides
hw1 out 3.1-3.3
9/30 Gradients and edges
problems, slides
4.2
10/2 Spatial Frequency and Resampling
Numpy
numpy playground, slides
P1 - Filters out 3.4, 3.5.2
numpy quickstart
cs231n numpy
10/5 (2) Downsampling; Image Pyramids
slides, numpy playground
3.5.3
10/6 Upsampling
slides, numpy playground
hw1 due
10/7 Feature detection
slides
4.1.1
10/9 Harris corners
slides; demo code
4.1.2
10/12 (3) Feature descriptors
slides
hw2 out 4.1.3
10/13 Feature Matching;
Transformations 1 - Linear
slides, problems
2.1.1–2.1.2
10/14 Transformations 2 - Affine
slides, problems, demo
P1 code due
(artifact due 10/15)
2.1.1–2.1.2
10/16 Projective transformations
forward and inverse warping
slides
3.6
10/19 (4) Homogeneous Intuition
Alignment: Translation
slides
6.1.1–6.1.3
10/20 Alignment: Affine, Homography
slides
P2 - Pano out
10/21 RANSAC
slides
hw2 due
hw3 out
10/23 Planar Panoramas
slides, notes
10/26 (5) Pinhole Cameras and Projection
slides
10/27 Spherical Panoramas
slides, notes
10/28 Spherical Panoramas 2
Intrinsics, Extrinsics
slides
hw3 due 2.1.5-6, 6.3
10/30 Depth from Disparity
Stereo Reconstruction:
Matching, Metrics
slides
11/2 (6) Stereo: Metrics, Rectification
slides, notes, live notes
P2 - Pano due
midterm out
11/3 Plane Sweep Stereo
slides, notes
midterm due
7.2
11/4 Projective geometry 1
notes, live notes
P3 - Stereo out
11/6 Projective geometry 2, Fundamental Matrix
slides, notes, song
hw4 out
11/9 (7) SfM and MVS
Intro to Recognition
sfm slides, recognition slides
231n: Classification/
11/10 ML Basics
KNN
slides, mnist nn, demo
231n: Linear Classifiers
11/11 No class: Veterans Day
11/13 Linear Classifiers
slides, L28.mp4
hw4 due
231n: Linear Classifiers
11/16 (8) Optimization and SGD
Neural Networks
slides, L29.mp4, demo
231n:
Optimization 1, 2
Neural networks 1
11/17 Activation Functions
Gradient Descent in Practice
Convolutional Neural Networks
slides, videos, torch demo
P3 - Stereo due
P4 - CNNs out
231n:
Neural networks 1, 2, 3
CNNs
11/18 CNNs: regularization; interpretation; training
slides
hw5 out
11/20 CNNs: tricks and training
slides
11/23 (9) CNNs: architectures
slides
11/24 No class
11/25 No class
11/27 No class
11/30 (10) CNNs: other problems
slides
P4 - CNNs due
hw5 due
12/1 Generative Models, Deep Dream, Style Transfer
12/2 (Fast) Bilateral Filter
12/4 AMA
Final Exam: Takehome
Released: 8am Tuesday, 12/8
Due: 10pm Wednesday, 12/9

Textbooks

As a reference for this course, we will use the latest preprint of the Second Edition of Computer Vision: Algorithms and Applications, by Richard Szeliski. The author is currently finalizing a draft of the second edition, and a PDF preprint of the latest draft is available for free at http://szeliski.org/Book/.

Community Office Hours

See the following message from the Faculty Community Ambassador, Moushumi Sharmin:

As we navigate this unnatural environment, it is creating a lot of stress and anxiety for many of us. If you want to share your views/concerns/comments related to EID issues, the climate of the department, or just need a space to talk about things that you need someone else to listen to, please feel free to join me in the Community Hours.

This hour is for Students, Faculty, and Staff. The conversations that will happen in the room will be strictly confidential and one-on-one (unless it is previously agreed that a group of individuals want to join at the same time).

Time: Thursdays at 10am (or by appointment)

Zoom link: https://wwu-edu.zoom.us/j/161683671?pwd=anhINUdwRUc1cmdPaTJqSXJMRFl0dz09

Assessment

Fall Quarter Pass/No-Pass Grading Policy

The University’s Fall 2020 interim grading policy applies. For official details, please see the Fall Guide. In contrast to Spring 2020, both undergraduate and graduate have the option to opt-in for P/NP grading. Also unlike Spring 2020, you must make this choice via the registrar by the end of the 7th week of classes.

One important caveat to the official grading policy applies to the undergraduate section of this course:

Grade Breakdown

Grades will be calculated as a weighted average of scores on the following course components:

Programming assignments will include extensions beyond the base project; some of these add-ons will be required for students in CSCI597P, while they can be completed for extra credit by students in CSCI497P.

Course Policies

Inclusive Classroom Environment

It is expected that everyone will promote a friendly, supportive, and respectful environment in the classroom, labs, and project groups. Everyone’s participation will be equally welcomed and valued.

Attendance

One reason I am keeping lectures synchronous is to help us all maintain a routine, which is extra important when much of the structure in our lives has been upended by circumstances such as a global pandemic. The synchronous lectures will include exercises and group work that will make your learning experience significantly more interactive and, in my experience, more effective.

However, I am aware of the possiblity that you may have extra constraints imposed by family, work, technology access, or any number of other circumstances. For this reason, lecture recordings will be available and attendance will not be tracked. Participating asynchronously puts more responsibility on you as a student to make sure you’re truly absorbing the material, so if you are able to attend the lectures synchronously, I strongly encourage you to do so.

Late Work

You have five “slip days” that you may use at your discretion to submit programming assignments or homework assignments late. Slip days apply only to programming assignments and homework assignments, and can not be applied to any other deadline (e.g., exams). You may use slip days one at a time or together - for example, you might submit each of five assignments one day late, or submit one assignment three days late and another two days late. A slip day moves the deadline by exactly 24 hours from the original deadline; if you go beyond this, you will need to use a second slip day, if available. If there is a separate artifact deadline, a slip day moves both deadlines back by 24 hours.

After your slip days are exhausted, a penalty of 10% * floor(hours_late/24 + 1) - that is, 10% per day late.

To use slip days or submit work late, you do not need to let me know ahead of time. For homeworks, simply submit to Canvas when you are ready, and I will apply slip days according to the submission time, noting the number of slip days used in your feedback. For programming assignments, you will complete your submission by pushing code to Github and filling out a Canvas survey. The submission time of the survey must be after your final push to Github and will be used as the time of submission.

Programming Guidelines

Your programs will be graded on correctness, clarity, and efficiency (in that order).

Correctness:

A correct program is one that always produces the correct output for a given input. Also, a correct program does not produce unintended side-effects. The most effective way to ensure that your program is correct is to test, test, test. Test each component as you introduce it; once you are confident that a component works you can use it in other routines. Try to break your program in testing, and if you succeed, locate the bug and fix it. The better you test your program, the more likely it is to be correct - the more likely it is to be correct, the more likely you’ll earn a good score. Most of your grade will depend on the correctness of your code.

Clarity:

The easier it is to read and maintain your code, the easier it is to locate and remove bugs. Your program should be well organized, appropriately commented, and easy to maintain. To have a well-organized program, design your program thoughtfully and modularly. Think before you code: hacking away blindly leads to ugly, difficult-to-read code. If you do hack away, producing a functional but ugly wall of code, try to clean it up a bit. Make sure that your cleaning does not introduce new bugs.

As for comments, please follow these simple guidelines proposed by Emeritus Professor Osborne:

Efficiency:

Your programs should be asymptotically efficient, e.g. checking graph reflexivity should be O(n), insertion into a balanced tree should be O(log n), etc. Do not optimize your code beyond the asymptotic level, as such tweaks are often at the expense of clarity, correctness, or both.

Academic Honesty

Collaboration Policy - Individual Assignments

Individual programming assignments are to be completed independently. Students are welcome to discuss assignments with each other on a conceptual level, but each student should be writing their code independently and without direct help from fellow students. Sharing your code with others or looking at someone else’s code is an explicit violation of this collaboration policy. To make sure you are collaborating appropriately, follow these two rules:

Automated tools will be used to check your code for plagiarism at the push of a button. They are not fooled by tricks such as changing variable naming and whitespace: in fact, hiding plagiarism is harder than doing the assignment.

Collaboration Policy - Pair Programming

For pair programming assignments, the above policy applies to any collaborations with people outside your group. In addition, the following pair programming best practices must be followed:

University Policies