This project showcases various techniques for feature represenations and classification of images. We are using a sample data set of 15 classes with 1500 images as a training set, and another 1500 images as a test set.

## Part 1 - Tiny Images and KNN

Implemented exactly as instructed in the rubric and the stencil code. Tiny images uses normalization and mean centering. KNN matching uses K = 13 and L2 norm for the Tiny Image features.

Accuracy (mean of diagonal of confusion matrix) is 0.239
Elapsed time is 12.958442 seconds.


## Part 2 - Bag of SIFT and KNN

Implemented exactly as instructed in the rubric and the stencil code. Bag of SIFT features are found with a step size of 3 and with the "fast" parameter, uses kdtrees for nearest neighbour search. KNN matching uses K = 5 and L2 norm for the Bag of SIFT features.

Accuracy (mean of diagonal of confusion matrix) is 0.521
Elapsed time is 171.256649 seconds.


## Part 3 - Bag of SIFT and SVM

Implemented exactly as instructed in the rubric and the stencil code. Linear SVM uses a LAMBDA of 0.00001.

Accuracy (mean of diagonal of confusion matrix) is 0.667
Elapsed time is 1.074299 seconds.


## Part 4 - Extra Credit

Firstly, I decided to add a layer of scale (1/2x) to the vocabulary and the features. This resulted in a slight improvement.

Accuracy (mean of diagonal of confusion matrix) is 0.681


Then I also decided to find an optimal classifier, by using the MATLAB Classification Learner App to go over a wide range of configurations. The winning classifier was a quadratic SVM trained using 1vsALL method, and made a decent improvement. The selection process is shown below, followed by the final results.

# Scene classification results visualization

Accuracy (mean of diagonal of confusion matrix) is 0.728

Category name Accuracy Sample training images Sample true positives False positives with true label False negatives with wrong predicted label
Kitchen 0.700
Industrial

LivingRoom

Office

Industrial
Store 0.670
Industrial

LivingRoom

Industrial

Street
Bedroom 0.540
Kitchen

LivingRoom

Mountain

Kitchen
LivingRoom 0.360
Store

Bedroom

Store

Kitchen
Office 0.900
LivingRoom

Kitchen

Kitchen

Bedroom
Industrial 0.550
TallBuilding

Kitchen

LivingRoom

Suburb
Suburb 0.960
Industrial

InsideCity

InsideCity

Store
InsideCity 0.630
Industrial

Suburb

Street

Bedroom
TallBuilding 0.800
Industrial

Street

Kitchen

Industrial
Street 0.740
Bedroom

Store

Highway

Highway
Highway 0.810
Industrial

Bedroom

LivingRoom

OpenCountry
OpenCountry 0.600
Mountain

Mountain

Highway

Mountain
Coast 0.830
Highway

OpenCountry

Industrial

OpenCountry
Mountain 0.840
Industrial

Store

Highway

OpenCountry
Forest 0.990
TallBuilding

Street

Mountain
Category name Accuracy Sample training images Sample true positives False positives with true label False negatives with wrong predicted label