# Learn Deep Learning for Computer Vision

March 27, 2018

This 19-part course teaches deep learning applied to computer vision. You’ll learn core deep learning concepts and how to apply them in computer vision applications such as image classification and image generation.

**What is Computer Vision? Why Computer Vision?**

Computer Vision comprises of a set of computational techniques to understand visual data such as images and videos. Computer vision techniques are used for image classification, motion tracking, image generation, colorizing black-and-white images, etc. Recent advanced applications of Computer Vision techniques have a wide variety of applications - form helping diagnose whether or not a patient has a tumor, to powering the search feature on photo managing applications like Google Photos, allowing us to perform image searches such as “my dog on the beach”.

The **primary objectives** of this course are as follows:

- Understand what
**machine learning**is, and learn the**gradient descent**algorithm. - Understand what
**deep learning**is, and how deep learning differs from and relates to machine learning. - Understand what
**neural networks**are and how they are trained using**back-propagation**. (and train your own neural network). - Understand the concept of
**computational graphs**, a core idea (often overlooked in DL courses) foundational to understanding and implementing all sorts of complex neural network architectures. - Understand how
**Convolutional Nets**work and how to solve computer vision tasks like**image classification**. - Understand
**Generative Adversarial Networks**, and how they can be used for**generating images**!

**Prerequisites**: Python, Linear Algebra, Statistics and NumPy and Calculus 1 (differentiation and chain rule).

**Subscribe** to add this course to the top of your Home Page**. Get started** with the first article below**.**

# Machine Learning and Gradient Descent

We’ll start by describing what machine learning is, and introduce a simple learning algorithm: linear regression + gradient descent. Using this algorithm, we’ll introduce the core concepts in machine learning: model parameters, cost function, optimization method, and overfitting and regularization.

- What is Machine Learning? Why Machine Learning?
- Linear Regression
- Gradient Descent
- Hands-on Assignment: Implementing Linear Regression with Gradient Descent
- Generalization and Overfitting
- Strategies to Avoid Overfitting
- Quiz: Train vs Test Data, Overfitting, Cost functions

# An Introduction to Deep Learning and Neural Networks

We start by discussing what deep learning is, and how deep learning differs from machine learning, i.e. what *deep* means and why it is important. We’ll learn specifically what **neural networks** look like and how they are trained using **back-propagation**. We’ll also introduce the concept of **computational graphs** which is how neural networks are implemented in popular deep learning libraries such as TensorFlow, Torch, etc. We’ll end the section with learning **regularization techniques** specific to deep learning.

- What is deep learning? How does it relate to machine learning?
- A First Look at Neural Networks
- Quiz: Deep Learning and Neural Networks
- Computational Graphs and Backpropagation
- Hands-on Assignment: Training your first Neural Network
- Quiz: The Importance of “Good” Gradients
- Regularization methods in Deep Learning
- Dropout (neural network regularization)

# Convolutional Neural Networks and Computer Vision

We’ll start by introducing the **image classification** problem in computer vision and a small note on how images are stored in a computer. Thereafter, we’ll describe the architecture of a **Convolutional Neural Network (CNN)** in substantial detail, and see why the *convolutional layer* is very well suited for computer vision applications.

- Computer Vision tasks: Image classification, localization, etc
- How do computers see an image?
- Convolutional Neural Network
- Hands-on Assignment: Convolutional Neural Networks (and Ablation Studies)

# Bonus: Generative Adversarial Networks and Image Generation

In this section (single tutorial), we’ll learn about **Generative Adversarial Networks** (GANs). GANs are one of the few machine learning techniques which has given good performance for a variety of **image generation** related tasks. We’ll introduce the image generation problem, describe the GAN setup and look at the results of applying GANs to image generation.