Description: [SCS dragon logo]

CS194-26/294-26: Intro to Computer Vision and Computational Photography
Computer Science Division
University of California Berkeley

INSTRUCTOR: Alexei (Alyosha) Efros (Office hours: after lecture)
GSI: Zhe Cao (Office hours: 9 - 10 AM Fri)
Tutors: Chenyue Cai (Office hours: 8 - 9 AM Mon, Email: chenyue_cai[at]berkeley[at]edu), Kenny Chen (Office hours: 9 - 10 M Wed, Email: kenchen10[at]berkeley[at]edu), Yibin Li (Office hours: 11 - 12 PM Thurs, Email: liyibin516[at]berkeley[at]edu), and Violet Yao (Office hours: 1 - 2 PM Tuesday, Email: violetyao[at]berkeley[at]edu).
Reader: Justin Wang (Email: justinyiwang[at]berkeley[at]edu)
SEMESTER: Fall 2020
Q&A: Piazza Course Website
LOCATION: Remote (Zoom links are posted on Piazza)
: MW 5:00 PM-6:30 PM

This is a heavily project-oriented class, therefore good programming proficiency (at least CS61B) is absolutely essential. Moreover, familiarity with linear algebra (MATH 54 or EE16A/B or Gilbert Strang's online class) and calculus are vital. Experience with neural networks (e.g. CS189) is a plus. For these taking CS294-26, consent of instructor is required to register (please sign up on the waitlist first).

The aim of this advanced undergraduate course is to introduce students to computing with visual data (images and video). We will cover acquisition, representation, and manipulation of visual information from digital photographs (image processing), image analysis and visual understanding (computer vision), and image synthesis (computational photography). Key algorithms will be presented, ranging from classical (e.g. Gaussian and Laplacian Pyramids) to contemporary (e.g. ConvNets, GANs), with an emphasis on using these techniques to build practical systems. This hands-on emphasis will be reflected in the programming assignments, in which students will have the opportunity to acquire their own images and develop, largely from scratch, the image analysis and synthesis tools for solving applications.


Project 1: Images of the Russian Empire -- colorizing the Prokudin-Gorskii photo collection

See student submissions here

Class Choice Awards: Saurav Mittal


Project 2: Fun with Filters and Frequencies


See student submissions here

Class Choice Awards: Sara Wang


Project 3: Face Morphing and Modelling a Photo Collection


See student submissions here


Class Choice Awards: Saurav Mittal, Apollo Thomopoulos


Project 4: Face Keypoint Detection with Neural Networks


See student submissions here

Kaggle Winner: Kevin Lin
Class Choice Awards: Saurav Mittal


Project 5: (Auto)stitching and photo mosaics


See student submissions partA partB

Class Choice Awards: Apollo Thomopoulos


Final Project


See student submissions pre-canned own proposed

We will be loosely using the new 2nd edition of Rick Szeliski's Computer Vision textbook. The latest draft is available off the textbook's website. If you find a bug or a typo, please e-mail Rick for a chance to get an acknowledgement in the finished book! The first edition is still available at the bookstore, but it's missing some important things, like discussion of Convolutional Neural Networks.

There is a number of other fine texts that you can use for general reference:

Computer Vision: A Modern Approach (2nd edition), Forsyth and Ponce (classic computer vision text)
Vision Science: Photons to Phenomenology, Stephen Palmer (great book on human visual perception)
Digital Image Processing, 2nd edition, Gonzalez and Woods (a good general image processing text)
Linear Algebra and its Applications, Gilbert Strang (a truly wonderful book on linear algebra)

The instructor is extremely grateful to a large number of researchers for making their slides available for use in this course.  Steve Seitz and Rick Szeliski have been particularly kind in letting me use their wonderful lecture notes.  In addition, I would like to thank Paul Debevec, Stephen Palmer, Paul Heckbert, David Forsyth, Steve Marschner and others, as noted in the slides.  The instructor gladly gives permission to use and modify any of the slides for academic and research purposes. However, please do also acknowledge the original sources where appropriate.






Aug 26


Aug 31

Capturing Light... in man and machine

Sep 2

Point Processing
Pinhole Camera

  • Szeliski Ch. 2
  • Slides: pdf, ppt


Sep 9

Image Processing Filtering I

Sep 14

Image Processing Filtering II

  • Continue Szeliski Ch 3
  • Slides: pdf, ppt


Sep 17

The Frequency Domain

  • Szeliski Ch 3.4
  • Slides: pdf, ppt

Sep 21

Pyramid Blending, Templates, NL Filters

Sep 23

Spatial Frequencies and Human Perception

Slides: pdf, ppt

Sep 28

Image Morphing I

  • Szeliski 3.6
  • Slides: pdf, ppt

Sep 30

Image Morphing II

  • Continue Szeliski Ch 3

Oct 5

Data-driven Methods: Faces

Oct 7

Data-driven Methods: Video Textures

Oct 12

Visual Texture (in human and machine)

Slides: pdf, ppt

Oct 19

Feature Learning with Neural Networks

Slides: pdf, ppt

Oct 22

Convolutional Neural Networks I

Slides: pdf, ppt

Oct 26

Convolutional Neural Networks II

Oct 28

ConvNets for Image Synthesis


Nov 03

The Camera

Slides: pdf, ppt

Nov 05

Modeling Light

  • Slides: pdf, ppt
  • Szeliski 14.3

Nov 09

Homographies and Mosaics

  • Slides: pdf, ppt
  • Szeliski Ch 8

Nov 16

Automatic Image Alignment

Nov 23

Scene Modeling for a Single View

Nov 30

Multiview Geometry: Stereo & Structure from Motion

Dec 2

What Makes a Great Picture?

Although it is not required, students are highly encouraged to obtain a digital camera for use in the course.

Grading will be based on a set of programming and written assignments (60%), 6-7 (with 1 drop) in-class pop quizzes (20%) and a final project (20%).  For the programming assignments, students will be allowed a total of 5 (five) late days per semester; each additional late day will incur a 10% penalty.

Students taking CS294-26 will also be required to submit a conference-style paper describing their final project.

Students will be encouraged to use either MATLAB (with the Image Processing Toolkit) or Python (with either scikit-image or opencv) as their primary computing platform.  Specific libraries in both languages offer tons of build-in image processing functions.  Here is a link to some useful MATLAB and Python resources compiled for this class.

Previous offerings of this course can be found here.



Page design courtesy of Doug James