OMSCS — Computer Vision

Jonathan Lao
4 min readApr 28, 2020

--

No trips for Atlanta planned.

Overview

The course covers ‘classical’ computer vision. Some debate that this course is more a class in history rather than practical application. There is an opportunity to explore deep learning, which a lot of the state-of-the-art computer vision is based on, in the final project though it is completely self-directed.

Prerequisites

Like most courses, the class has no hard prerequisites. But someone who is familiar with all the ‘prereqs’ below will certainly spend orders of magnitude more time on this class than someone who is fluent in all of them. In order of importance:

  1. Knowing linear algebra will provide the best foundation for conceptual understanding of the material. You can certainly get by without it (I did), but you will have a shallow understanding of a lot of the concepts.
  2. Many say taking Computational Photography is a good precursor to this course since there is a lot of overlap in material (though many may argue that it is pointless to take two courses with a lot of the same material).
  3. Competency in python and numpy will certainly help.
  4. There is usually a problem set on particle/Kalman filtering which overlaps with material in Artificial Intelligence For Robotics.
  5. If you choose to do the final project involving Convolutional Neural Networks (which is optional, though many opt for it), you will need to get familiar with pytorch/keras in a short amount of time.

Practical Tips

  • This class really embodies ‘breadth’ not ‘depth.’ There is an overwhelming number of lectures, many of which are very dense. Getting good conceptual understanding of all the topics covered in the course requires (in my opinion) an impractical amount of time. On top of that, the lectures required to start on the problem set are often released before the lectures are scheduled to be watched via the recommended schedule, which can be frustrating. Luckily, the problem sets usually only require watching a small subset of lectures which you can skip forward to; this will allow you to start the problem sets early (which is always a good idea) and you can go back to watch lectures you missed afterwards.
  • Watch the office hours by Matthew Houston right before (or while) you are doing the problem set. They are absolutely incredible; they are the perfect balance of giving you relevant information to tackle the project while also not completely giving away the answer. I hope he considers a career in teaching.
  • Some kind student named George compiled an amazing set of notes of the course here. Treat it like an unofficial textbook and read it alongside the lectures, and give George some kind of an award (or a donation). A student once posted a question on Piazza, and instead of trying to explain the answer, a TA just linked to the relevant page in these notes. That’s an endorsement if I ever saw one.
  • Many say the actual textbook is not useful. I cannot verify whether it is, since I took that advice and did not do the readings.
  • One of the biggest complaints of the course is the amount of parameter tuning required to do well. In my experience, that is only half true. For each project, about half the grade comes from passing the autograder, and half the grade comes from compiling a report (usually filled with output images from your program, sometimes with textual answers). There is usually a pretty low bar for passing all the autograder tests and the report is graded very generously. Extensive parameter tuning is required to get full marks on the report, but it is not required to do well on the report in general. Somewhat making up estimates, if it takes you 6–8 hours to pass all the autograder tests, that will result in a report that’s probably half (or more) done. Another 3 hours can turn that report into B or low A material. You can easily spend double the amount of time parameter tuning in order to bump up your report to a solid A. And a similar amount of time to get full marks on your report. I personally do not think getting those few extra points has sufficient practical or educational value to be worth the time, but it will ultimately be your call.
  • Passing all the local tests given in the project was a great indicator that your program is working as intended. However, they were sometimes significantly harder than passing all the tests in gradescope, and not always necessary to get full marks. On the other hand, passing the tests in gradescope was sometimes not a very good indicator that your program is working as intended. Go figure.
  • Most projects have 5 points dedicated as a ‘challenge problem.’ Don’t let the fact that it’s called a ‘challenge’ discourage you, or make you think it’s optional or even all that challenging. If you were otherwise able to complete the problem set, each challenge problem usually takes minimal more effort to complete.
  • You have a choice of several final projects. It is generally agreed upon that choosing the CNN/deep learning project is orders of magnitude more time consuming, rewarding, and educational. On the other hand, I chose the activity recognition project and it was probably comparable time-wise with other problem sets.
  • The exam is silly. It is open book, open internet, and asked a decent number of obscure questions. They release a study guide before hand with sample questions, many of which will appear on the actual exam, so work with classmates to find the answers to them (people on Slack will likely be collaborating on an answer guide). If you have those answers handy, alongside George’s notes, then the exam is more of an exercise in your ability to Google and press Ctrl+F. It is also only worth 15% of your grade. So at this point, hopefully, whether you get an A in this class should not depend on how well you do on this exam.

--

--

Jonathan Lao
Jonathan Lao

No responses yet