Project 4: mAcHIne lEarnIng :)

Aniruddha Nrusimha

Part 1: Image Classification

The network I ended up using had the following structure

It trained pretty well. Here is the accuracy versus epoch curve.

Validation and Training Accuracy versus epochs

I made a table to investigate what mistakes the classifier was making. Here it is!

Table. Left side is actual label, top side is predicted label. Right most column is accuracy

Shirts, T shirts and shirts are often mixed up, and as a result have the two lowest accuracy numbers

Here are some correct and incorrect classifications:
Class First Correct Second correct First Wrong Second Wrong
Ankle Boot
Bag
Coat
Dress
Pullover
Sandals
Shirt
Sneaker
Trousers
T-shirts

As you can see, the error images tend to overlap with a certain other class. For example, the errors in sandles and sneakers look like the other, as do the errors in T shirts and shirts

Here are the learned filters for the first layer. Brighter colors are higher values

Learned filters in the first layer. 32 total

Segmentation

Here is the architecture I ended up with. I first defined a standard block which is pretty standard in the literature:

These layers were then arranged as follows. Channel Size, which I experimented with, will be denoted as C

I used the following hyperparameters

Validation and Training Loss over 60 epochs

Here is my AP (first try :) )

Average Precision for each of the five classes
Image Ground Truth Prediction
Image 0
Image 0 Label
Image 0 Prediction
Image 1
Image 1 Label
Image 1 Prediction
Image 2
Image 2 Label
Image 2 Prediction

As you can see, the images tend to struggle a bit with borders but overall perform very well.