Fall 2018 CS498DL

Assignment 3 Part 1: Multi-label Image Classification

Due date: Tuesday, November 13th, 11:59:59PM

Credit: Daniel McKee, Maghav Kumar

Source: PASCAL VOC website

This assignment will have multiple parts. START EARLY!!!

In this part of the assignment you will implement a multi-label image classifier on the PASCAL VOC 2007 dataset. You will design and train a deep convolutional network to predict a binary present/absent image-level label for each of the 20 PASCAL classes. This will help you gain experience with PyTorch. In Part 2, you will have to design and train an object detector on the same dataset. Instructions for that part will be released in a few days and results will be due at the same time as Part 1.

Download the starting code here.

The top-level notebook (MP3_P1.ipynb) will guide you through all the steps of the classifier. Detailed instructions are below.

You will be required to use a GPU for this assignment, and hence you will be given Google Cloud credits shortly. However, we encourage you to use Colaboratory to get started and for debugging purposes, as you have limited number of credit hours for this and the following assignments.

Environment Setup (Local)

If you will be working on the assignment on a local machine then you will need a python environment set up with the appropriate packages. We suggest that you use Conda to manage python package dependencies (https://conda.io/docs/user-guide/getting-started.html).

Unless you have a machine with a GPU, running this assignment on your local machine will be very slow and is not recommended.

Data Setup (Local)

Once you have downloaded the zip file, go to the Assignment3 folder and execute the download_data script provided:

cd Assignment3_p1/

Data Setup (For Colaboratory)

If you are using Google Colaboratory for this assignment you will need do some additional setup steps.

Download the assignment zip file and follow the steps above to download PASCAL-VOC to your local machine. Next, you should make a folder in your Google Drive to hold all of your assignment files and upload the entire assignment folder (including the PASCAL VOC dataset you downloaded) into this Google drive file.

You will now need to open the assignment 3 ipython notebook file from your Google Drive folder in Colaboratory and run a few setup commands. Make sure to set the GPU as the hardware accelerator. To do this, on the top bar choose Edit->Notebook Settings-> select 'GPU'. We have condensed all the important setup commands you need to run into an ipython notebook here.


The assignment is given to you in the MP3_P1.ipynb file. As mentioned, if you are using Colaboratory, you can open the ipython notebook directly in Colaboratory. If you are using a local machine, ensure that ipython is installed (https://ipython.org/install.html). You may then navigate the assignment directory in terminal and start a local ipython server using the jupyter notebook command.

Submission Instructions

You will submit this part of the assignment together with Part 2. The following items must be uploaded for Part 1.

  1. Upload your output file to the Kaggle competition for the Pascal classifier.
  2. All of your code (python files and ipynb file) in a single ZIP file. The filename should be netid_mp3_part1_code.zip.
  3. Your ipython notebook with output cells converted to PDF format. The filename should be netid_mp3_part1_output.pdf.
  4. A brief report for both parts in PDF format using this template. The filename should be netid_mp3_report.pdf.

Please refer to course policies on collaborations, late submission, and extension requests.