Stanford's course cs231n "Convolutional Neural Networks for Visual Recognition" is one of the best ways to dive into Deep Learning in general, in particular, into Computer Vision. If you plan to excel in another subfiled of DL (say, NLP or Reinforcement Learning), we still recommend that you start with cs231n, because it gives you fundamental understanding and hands-on skills. Beware, the course is very challenging!
To motivate you to work as hard as Stanford's students, here are actual applications that you'll implement in A3 - style transfer and class visualization.
For the first one (on the left), you take a base image and a style image and "apply the style" to the base image (reminds of Prisma and Artisto, right?). The second example (on the right) is a random image, gradually perturbed in a way that a neural network classifies it more and more confidently as a gorilla. DIY Depp Dream, isn't it? And it's all math under the hood, it's cool to figure out how it all works. You'll get to this understanding if you pass cs231n, it'll be hard but at the same time an exciting journey from efficient kNN implementation to these fascinating applications. If you think that these two application are too eye-cathy (yes they are), then take a look at a picture above - a Convolutional Neural Network classifying images. That's the basics of how machines can "see" the world. The course will teach you both how to build such an algorithm from scratch and how to use modern tools to run State-of-the-Art models for your tasks.
- k-Nearest Neighbor (kNN) exercise + comments on some derivations
- Softmax classifier
- Multi-class SVM
- Two-layer net
- More features
- Image captioning with RNNs
- Image captioning with LSTMs
- Network Visualization (PyTorch)
- Generative Adversarial Networks (PyTorch)
- Style Transfer (PyTorch)
Passing cs231n together within the OpenDataScience community
Next start - from 02.12.2019 till 08.03.2020
Main links
- The course itself
- Video-lectures, youtube channel. Prerequisites are given in the 1st lecture
- Syllabus with assignments
- Unofficial lecture notes by Mahmoud Badry
- For Russian-speaking audience, a good alternative is the Deep Learning course dlcourse.ai lead by Simon Kozlov, sim0nsays
Assignments
There are 3 big and tough assignments in this course. The biggest challenge is to actually do these assignments on your own because solutions are easily accessible anywhere on the Internet and are even shared by me in this repo.
Competitions & projects
In the original course they've got projects. You can also complete one, but actually, lectures and assignments is already a good workload. So my advice is to first cope with assignments and then you can go on with pet projects or Kaggle.
GPUs For some parts of the 3rd assignment, you'll need GPUs. Kaggle Kernels or Google Colaboratory will do.
Plan
- 02.12.19 – 08.12.19. Lecture 1 and Lecture 2
- 09.12.19 – 15.12.19. Lecture 3 and Lecture 4
- 16.12.19 – 22.12.19. Lecture 5 and Lecture 6
- 22.12.19 – A1 due. You can discuss it in the #class_cs231n channel in Slack
- 23.12.19 – 12.01.20. Lecture 7 and Lecture 8
- 13.01.20 – 26.01.20. Lecture 9 and Lecture 10
- 27.01.20 – 09.02.20. Lecture 11 and Lecture 12
- 09.02.20 – A2 due. You can discuss it in the #class_cs231n channel in Slack
- 10.02.20 – 23.02.20. Lecture 13 and Lecture 14
- 24.02.20 – 08.03.20. Lecture 15 and Lecture 16
- 08.03.20 – A3 due. You can discuss it in the #class_cs231n channel in Slack