Project 2

Overview

The objective of this project is to gain experience building and training neural networks as multi layer perceptrons. In this project you will implement a fixed size two layer neural network and a set of generic network layers that can be used to build and train multi layer perceptrons.

The goals for this project are as follows:

  • Generalize your network implementation to fully connected layers.
  • Implement the forward and backward pass for convolutional neural networks.
  • Implement the Faster R-CNN architecture for object detection.
  • Implement and understand the tradeoffs using network regularization techniques.
  • Understand the characteristics of neural network based object detection using the PROPS Detection Dataset.

Instructions

  1. Download the project starter code
  2. Unzip the starter code and upload to Google Drive
    • Once unzipped, you should find a root directory titled ‘P2’. The ‘P2’ directory contains all starter code and files needed to complete this project. Please upload the ‘P2’ directory to your Google Drive.
  3. Open the *.ipynb and *.py files and implement features
    • We recommend implementing the features in a Google Colab environment. The Colab development environment can be accessed by double-clicking on each *.ipynb and *.py file within your Drive. Instructions for each feature are included in the two_layer_net.ipynb and fully_connected_networks.ipynb files.

    • We suggest starting by implementing the required features as they appear in the two_layer_net.ipynb notebook, which can be thought of as part 1 of the project. Then work through the fully_connected_networks.ipynb notebook as part 2 of the project.

    • While working on the project, keep the following in mind:

      • The notebook and the python file have clearly marked blocks where you are expected to write code. Do not write or modify any code outside of these blocks.
      • Do not add or delete cells from the notebook. You may add new cells to perform scratch computations, but you should delete them before submitting your work.
      • Run all cells, and do not clear out the outputs, before submitting. You will only get credit for code that has been run.
      • To avoid experiencing Colab usage limits, save and close your notebooks once finished working.
  4. Submit your implementation for Autograder feedback
    • Once you have implemented a portion of the required features, you may submit your work for feedback from the Autograder. To receive feedback, download your *.ipynb and *.py files then upload them to the Project 2 Autograder. You may submit to the Autograder for feedback up to 5 times per day.
  5. Download final implementation
    • After implementing all features, save your work and download the completed *.ipynb and *.py files.
    • The last cell of the two_stage_detector.ipynb notebook will generate a uniqueid_umid_P2.zip file. The zip file should include fully_connected_networks.ipynb, fully_connected_networks.py, convolutional_networks.ipynb, convolutional_networks.py, two_stage_detector.ipynb, two_stage_detector.py, one_minute_deepconvnet.pth, overfit_deepconvnet.pth, best_overfit_five_layer_net.pth, best_two_layer_net.pth, and rcnn_detector.pt for this assignment.
  6. Submit your python and notebook files for grading
    • Upload your files to the Autograder for grading consideration. Your highest score will be used for final grades.

Deadline

This project is due on Thursday, February 22nd at 11:59pm EST. We suggest starting as soon as possible.

Grading

This project will be graded by the Autograder. The project is worth a total of 165 points. You may submit to the Autograder for feedback up to 3 times per day.