Independent Study will focus on visual recognition tasks such as image classification, localization, and detection. The course study is based primarily on the free material made available through Stanford University - Convolutional Neural Network for Visual Recognition.

Course study will cover data driven approaches to discuss deep learning architectures with an emphasis on end-to-end models for image classification. Completion of study will provide opportunity to implement, train, and debug custom neural networks and gain a detailed understanding of research in computer vision. Topics of study provided through the course material have been broken down into 3 separate modules which have been detailed below.

Module 0:

  • Python, Numpy, and Jupyter Notebooks
  • Google Cloud Platform, Google Compute Engine and Google Cloud VM

Module 1:

  • Image Classification: Data-driven Approach, k-Nearest Neighbor, train/val/test splits - L1/L2 Distances - Hyperparameter Search - Cross Validation
  • Linear Classification: Support Vector Machine & Softmax
    • Parametric Approach
    • Bias Trick
    • Hinge Loss
    • Cross-Entropy Loss
    • L2 Regularization
  • Optimization: Stochastic Gradient Descent
    • Optimization Landscapes
    • Local Search
    • Learning Rate
    • Analytic / Numerical Gradient
  • Backpropagation, Intuitions
    • Chain Rule Interpretation
    • Real-Value Circuits
    • Patterns in Gradient Flow
  • Neural Networks Part 1: Setting up the Architecture
    • Model of a biological neuron
    • Activation functions
    • Neural Net Architecture
    • Representational Power
  • Neural Networks Part 2: Setting up the Data and the Loss
    • Preprocessing
    • Weight Initialization
    • Batch Normalization
    • Regularization, (L2 / dropout)
    • Loss Functions
  • Neural Networks Part3: Learning and Evaluation
    • Gradient Checks
    • Sanity Checks
    • Babysitting the learning process
    • Momentum (+nesterov)
    • Second-Order Methods
    • Adagrad / RMSprop
    • Hyperparameter Optimization
    • Model Ensembles

Module 2: Convolutional Neural Networks

  • Convolutional Neural Networks: Architectures, Convolution / Pooling Layers
    • Layers
    • Spatial Arrangement
    • Layer Patterns
    • Layer Sizing Patterns
    • AlexNet / ZFNet / VGGNet Case Studies
    • Computation Consideration
  • Understanding and Visualizing Convolutional Neural Networks
    • tSNE Embeddings
    • Deconvnets
    • Data Gradients
    • Fooling ConvNets
    • Human Comparisons
  • Transfer Learning and Fine-tuning Convolutional Neural Networks

Deep Learning Hardware and Software Tools

  • Python & Jupyter Notebook
  • CPUs, GPUs, TPUs
  • PyTorch, Tensor Flow
  • Dynamic vs Static Computation Graphs
  • Google Compute Engine and Google Cloud VM

Assignments

To aid in program study, all assignments created under the Stanford CNN course are available through a public github repository. Assignments to be completed are listed as follows.

Assignment #1: Image Classification, kNN, SVM, Softmax, neural Network Assignment #2: Fully-Connected Nets, Batch Normalization, Dropout, Convolutional Nets Assignment #3: Image Captioning with Vanilla RNNs, Image Captioning with LSTMs, Network Visualization, Style Transfer, General Adversarial Netoworks

Additional Resources