Course: COS429
Instructor: Olga Russakovsky
F 2019

Description of Course Goals and Curriculum

This course is an introduction to the concepts of computer vision. It discusses concepts such as filtering and edge detection; cameras and shape reconstruction; segmentation and clustering; optical flow and tracking; object recognition; motion recognition; statistical modeling of visual data, etc. The course will go somewhat in depth into the math behind the different computer vision techniques, but focuses on covering as wide of a knowledge base as possible. Thus, some computer vision concepts will be more surface level ideas.

Learning From Classroom Instruction

The lectures are in general very well structured and clear. Professor Russakovsky is very good at explaining things and will answer questions at any point during the lecture. The lecture consists of slides and the professor talking over them. The slides are available on the class website prior to the lecture, so you can look at them beforehand or have them open on your phone or computer during class to follow along better. The lectures are very clear and contain a lot of information, so you really don't have to take many notes during class because looking at the slides after class to study is often sufficient. The lectures cover a LOT of ground and often moves very fast. Olga is happy to answer questions, but at times the information can be overwhelming and requires studying the material again after class.

Learning For and From Assignments

The assignments were coding projects and were very cool and very practical. They turned the concepts and ideas talked about in class into reality. There is some starter code given for each assignment, but a large part of the assignments are left to the students. Finishing the assignments were very rewarding because you build face detection, motion tracking, etc. software almost from scratch. I found that the assignments themselves didn't really help prepare for the midterm exam because the midterm exam was more understanding the concepts/techniques and their pros/cons. The homework just focuses on implementation and doesn't focus that much on the theory(which is tested on the written exams.) Lecture slides, on the other hand, were crucial in preparing for the midterm. Only one practice test was given and it too was very helpful, although I wish they had given more. Because there was only one exam (the midterm), you really don't have to pay too much attention during lecture in the second half of the semester. However, I would recommend doing so, because it will help you figure out what you want to do for your final project. You are given an adviser on the final project, but the vast majority of it is left to you to research and figure out. For most groups, the assignments and lectures didn't help them too much in implementing their final projects because most groups chose topics not really discussed in class or extended concepts discussed in class to a depth that the class did not cover.

External Resources

There are two main resources that the class offers: a Piazza forum where you can ask questions and lab TA hours. Depending on who is in your class, the Piazza questions may or may not be answered quickly. The lab TA hours were crucial because the assignment specifications were often very unclear/vague and it was very necessary to go to TA hours to ask if your implementation was what they actually wanted. For the final project, my partner and I were left on our own and did all of our research and learning without outside help because it was hard for other students and TA's to answer our questions due to how unique our project idea was. Nonetheless, the professor and TA were very willing to help in whatever way they could (giving links to papers and other resources that they thought might be helpful.) When preparing for the midterm, it is very helpful to study with someone else because you can ask each other questions.There are two main resources that the class offers: a Piazza forum where you can ask questions and lab TA hours. Depending on who is in your class, the Piazza questions may or may not be answered quickly. The lab TA hours were crucial because the assignment specifications were often very unclear/vague and it was very necessary to go to TA hours to ask if your implementation was what they actually wanted. For the final project, my partner and I were left on our own and did all of our research and learning without outside help because it was hard for other students and TA's to answer our questions due to how unique our project idea was. Nonetheless, the professor and TA were very willing to help in whatever way they could (giving links to papers and other resources that they thought might be helpful.) When preparing for the midterm, it is very helpful to study with someone else because you can ask each other questions.

What Students Should Know About This Course For Purposes Of Course Selection

Good experience in Python is incredibly helpful because all the assignments are coded in Python. No prior ML knowledge is needed for the class. Some linear algebra knowledge is helpful, but not necessary. This class is a great way to see the applications of computer vision techniques. If you are at all interested in how facial recognition works or how objects are detected and tracked across multiple frames, then this class is a great way to learn more about it without having to invest time in ML course prerequisites. Any ML knowledge needed is taught in class and the deep learning units are pretty high level. You get out of this class what you put in. If you invest time in your assignments and final project, you will come away from the class with a ton of new knowledge and in my opinion, cool skills.
Computer Vision

Add a Strategy or Tip