The purpose of this project is to classify scenes. In particular, we will be classifying scenes from the 15 scene database into the aforementioned 15 scene types.
To do this, we first collect a bunch of image features from a set of training scenes. We randomly sample a fixed number of features (I used 300 per image) from each image's feature set, and run kmeans on this reduced feature set to build a feature vocabulary that we will use to classify test scenes.
For each scene in the training database, we then use this feature vocabulary to assign each feature in each scene to a histogram bin. This results in a vocabulary histogram for each image in our training database.
Next, we use a linear SVM create a histogram classifier, using the training histograms as input. We can now build a histogram for each test scene and, using our classifier, assign scenes to scene types.
My implementation of this method scored 62% on the test image database:
94 1 0 2 1 0 0 0 0 0 1 0 1 0 0 1 81 1 4 0 3 9 0 0 0 1 0 0 0 0 0 0 95 0 0 4 0 1 0 0 0 0 0 0 0 0 8 1 80 3 3 3 0 0 0 1 1 0 0 0 5 4 1 1 59 0 0 4 3 1 1 0 10 1 10 7 0 3 2 0 81 2 1 3 0 1 0 0 0 0 4 26 9 7 0 7 42 2 1 0 2 0 0 0 0 2 0 0 9 18 2 0 55 3 0 0 1 0 2 8 0 3 2 0 2 3 0 7 73 1 3 3 2 0 1 0 0 0 0 0 0 0 0 0 90 2 0 8 0 0 1 0 0 1 3 2 1 0 2 12 43 2 19 13 1 7 5 1 10 8 5 3 3 8 3 1 31 3 3 9 1 0 0 0 11 1 0 1 0 20 9 3 49 1 4 2 0 0 1 3 4 0 2 4 25 22 4 15 8 10 1 0 2 3 14 7 0 4 5 5 3 1 4 2 49