Machine Learning for Computer Vision: Lecture, Exercise and Project

The topics for the projects will be discussed in/after the lecture on Monday July 16th. Please bring suggestions for the topic of your project.

Lecturer: Prof. Fred Hamprecht; Teaching Assistant: Elke Kirschbaum

Computer vision has made tantalizing progress in the past five years, bringing us self-driving cars, automated scene parsing and more. Machine Learning is the driving force behind this revolution.

This course covers advanced machine learning methods allowing for so-called "structured prediction". The goal is to make multiple predictions that interact in a nontrivial way; and we take these interactions into account both during training and at test time.

One example would be a method that accepts a video as input and that outputs a set of trajectories, one for each target. The number of targets is not known beforehand and can change throughout the sequence.

Another example is the problem of learning a policy for making good sequential decisions (e.g. in autonomous agents). Here, we need to anticipate the effect of decisions made earlier.


  • undirected probabilistic graphical models
  • deep neural networks
  • reinforcement learning


As the name suggests, the course consists of 2 hours of lectures per week, practical computer / programming exercises in python, and a project in which you solve a problem of your choice. The latter has a total duration of at least two weeks full-time and can extend into the semester break.


The most important prerequisite: interest in a steep learning curve. Modern machine learning builds on a broad range of ideas and techniques, and you will face many of them in the lecture and exercises.

To enjoy the course, participants should have a working knowledge of one or more of the following:

  • basic machine learning / pattern recognition
  • basic computer vision
  • optimization

The following are strictly required:

  • multivariable calculus
  • linear algebra: linear system of equations, eigenproblems
  • probability theory: multivariate random variables
  • basic python programming skills, or advanced programming skills in any modern language


No single book covers the contents of this course; but the following are helpful:

How to join

Just come along for the first lecture on Monday, April 16th 2018 at 15:15. Please be on time.

Venue: Mathematikon B (not A!), Berliner Str. 43, 3rd floor, seminar room B128. Simply ring the bell to open the front door.


The exercises take place on Thursdays, 10:15 in room 2/103, Mathematikon A.

The exercise sheets and needed material can be downloaded here:


Who can / has to do the project?

  • Everyone who achieved at least 50% of the points in the exercise sheets and wants to get credits or a grade for the course. If you are not sure whether you achieved more than 50%, you can ask Elke in the lecture on Monday July 16th.
  • You can do the projects in groups of
    • up to two people if any of you needs a grade for the course
    • up to three people if none of you needs a grade for the course

What are the projects about?

  • The topics for the projects will be discussed in/after the lecture on Monday July 16th. Please bring suggestions for the topic of your project. We will additionally suggest some projects closely related to the current research areas of the working group.
  • The topic should be scientifically interesting and related to the content of the lecture.
  • The workload of the project should be at least 2 weeks of full-time work. Working longer on it is of course possible. You can also distribute the work over time, there is no need to do all in one block, as long as you follow the deadlines below.


  • Project proposal
    • 1/2 - 1 page
    • describe what the project is about: what is the aim? what are the planned steps? who are the involved people?
  • Project report
    • 4 - 8 pages including all figures and tables, you can use additional pages for references.
    • use the NIPS 2018 style, you can find the style file and instructions here:
    • describe the problem, what was done, show major results including plots
    • obey the rules of scientific writing (proper citation, indicate if you used code from GitHub etc.)
    • Important: if any of you needs a grade for the course: clearly show who did what part of the project and the report
  • Provide access to the used code and data, e.g. via a link to a GitHub repo


  • Proposal: September 10th 2018
  • Report and access to code and data: October 14th 2018