Hands-on DL

Introduction to the course:

This is an attempt of showing practical concepts of deep learning and convolutional neural networks (CNNs) through useful examples using the MatConvNet framework by Vedaldi, et al. MatConvNet is an awesome framework for training and testing CNNs, exploiting the simplicity of Matlab code and the power of GPU-cuda-cudnn implementations. The course is scheduled to last 6 sessions from December to the end of January.

The sessions of this course will be focused on acquiring deep hands-on experience, training state-of-the-art architectures and developing new ones. This is probably different from other courses you have seen so far. Here the theory is not the focus, but the practical knowledge about how to work with deep learning tools. We will focus on practical issues and tricks, those things that you never see in papers.

We will address different problems, including classification of images, object detection, semantic segmentation and optical flow. During this course we will show how to implement and train state-of-the-art architectures for all these problems.

Course organization:

The course will be held at the Computer Vision Center (Barcelona) and it has been organized by me (German Ros), Joost van de Weijer, Marc Masana and Yaxing Wang.  The preliminary organization of the sessions is as follow:

  • [04/12/2015] Session 1: Introduction to Neural Networks
    • Theory: From ARNNs to Deep architectures and Convolutions
    • Hands-on: Training and inference on LeNet (MNIST) and AlexNet (CIFAR-10), filter visualization, and more!
  • [11/12/2015] Session 2: Deep Convolutional Networks
    • Theory: Types of layers and their purposes
    • Hands-on: Understanding the training algorithm, momentum, decay, etc.
  • [15/01/2016] Session 3: Tips and tricks to make it work!
    • Theory: The importance of initialization, dropout and bnorm
    • Hands-on: different initialization methods, how to add bnorm layers, etc.
  • [29/01/2016] Session 4: Preparing your data (IMDB)
    • Theory: The importance of normalization and…How do I adapt things to my data?
    • Hands-on: data normalization, how to create the imdb structure, etc.
  • [29/01/2016] Session 5: Beyond standard layers
    • Theory: Some useful layers that are not so common (PRELU, Unpooling, etc.)
    • Hands-on: How to create a new layer in MatConvNet
  • [5/02/2016] Session 6: Directed Acyclic Graph nets & FCN
    • Theory: DAG nets and how to apply backpropagation there
    • Hands-on: creating a DAG for semantic segmentation (PASCAL VOC) and optical flow (Sintel)

Sessions description:

Sessions are scheduled for Friday from 18.00 to 19.10 and will consist of

  • 15 – 20 minutes talk about basic theoretical concepts (Sala d’ Actes, CVC)
  • 10 minutes talk describing the contents of the lab (Sala d’ Actes, CVC)
  • 40 minutes of hands-on experience on your own computer with aid of several helpers (CVC basement, CVC Labo)

The flow of the sessions will be as follow:

  1. People who want to participate must download the material of that week before the session (check below)
  2. Then it is required to attend both the theoretical session and the explanation of the lab (25 – 30 minutes in total). During these sessions we will provide attendant with more resources to keep developing their knowledge about deep learning (references, links and materials).
  3. Go back to your desk and watch the video guide for the current lab. This is a video showing step-by-step what you need to do for the session and how to do it. This is a hands-on course, so you are supposed to do the exercises during the session using your PC. If for any reason you don’t have a PC you can work in pairs. There will be “helpers” in the basement and Labo to solve people doubts. If you are not located at any of these places, please come to the basement with your laptop or work with someone.
  4. Remember to check the materials provided during the session!


Sessions materials: