Skip to content

Latest commit

 

History

History
77 lines (60 loc) · 4.34 KB

16385.md

File metadata and controls

77 lines (60 loc) · 4.34 KB

16-385 : Computer Vision

Category Difficulty
HW 6
Quizzes 4

This class gives a good introduction to the concepts and implementation details of major computer vision concepts. You'll learn some of the most influential algorithms in image processing, and even get to work with deep learning when you make your own convolutional neural net to classify images.

The class is primarily HW based, so it's a lower pressure class. However, the lack of time pressure often leads to students slacking off on HW assignments, which may be very tough to do at the last minute.

Lectures

Class is pretty fast-paced, and especially if you don't have a good background in multivariable calculus and especially linear algebra. If you don't know what eigenvalues, SVD (singular value decomposition) are and what they do, you should probably read about them before this class.

However, given that the class is primarily homework based, you technically don't have to follow lectures too closely, and only need to understand the concepts at a cursory level.

Homeworks

In the past, students had to use Matlab for all the assignments. Fortunately, the course now uses Python, so homeworks can be more fun to work through -- Python has better debugging support and is easier to use than Matlab in general.

You may find that some homeworks take a while to run -- in general image processing can be slow, since you are often working with data sets (images) with thousands of pixels. While your personal computer may be slow, you can take advantage of computer clusters at CMU to run your code. For example, especially on the deep learning homeworks that may take several hours to train on your computer, they can take only a few minutes on a Andrew cluster computer. Definitely take advantage of this if you can, which means setting up a working Python environment on Andrew early on.

You need to use LaTeX to write up your homeworks, but this shouldn't be too bad as there isn't too much complex writeup things you need to know. You should probably know how to insert pictures into LaTeX. You should learn how to use the figure command and subfig package to help you construct pretty writeups with images. For example, to put images next to each other, you can use the following code

\begin{figure}
    \centering
    \subfloat[Image 1]{{
        \includegraphics[\textwidth/3]{img_0.png}
    }}
    \subfloat[Image 2]{{
        \includegraphics[\textwidth/3]{img_1.png}
    }}
    \subfloat[Image 3]{{
        \includegraphics[\textwidth/3]{img_2.png}
    }}
    \caption{3 images side by side}
\end{figure}

The homework is generally very helpful towards your understanding of the material. They cover the various topics in the class and a lot of hints are in the lecture material. It is helpful to look through the lecture notes/recordings as you are working through the assignments. They are also very relevant to the field and provide a basis for other classes (such as 16-311) which have components of computer vision in them, even if it isn't a prerequisite.

The homework assignments cover the following topics in the class:

  • Image Filtering and Hough Transformations
  • Augmented Reality
  • 3D reconstruction
  • Physics-based vision
  • Scene recognition
  • Neural Networks
  • Video Tracking

Quizzes

The written quizzes also help a lot with making sure you understand the math/theory. Make sure to go to office hours or find a friend who knows what they're doing. Although they aren't worth too much, knowing the math is very helpful and important to the programming assignments.

How to do well

  • Some homework problems are very difficult and test obscure concepts. Just go to OH early on and you can get answers for those very difficult questions.
  • Figure out a good debugging system that lets you check your algorithm at various points.
  • Since you have Python now, consider using Jupyter notebook as a good debugging tool. You can use it to check side by side with hand calculations.
  • Some assignments may take a while to run, so run them on Andrew clusters. Otherwise, just start early.
  • The tracking algorithm homework is surprisingly difficult. You may implement the algorithm exactly how it is described, but your tracking window will drift off. It's best to start this assignment early on so you have time to try out several approaches.