Ahmet Cecen
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 |