While cute, I'm surprised why it seems to work so well.
The extracted features appear to be nothing but small patches of various types and directions of edges.
Training a Naive Bayes classifier on these features will try to determine the label roughly based on the unordered strength/number of occurences of these small feature patches.
While it's obviously demonstrated that you can attain a surprising accuracy with this method, if the features in the "bag of features" method are all very local like in this demo, you are throwing away the larger scale features of the image. And intuitively, it's the larger scale features that ultimately determine the subject of a photograph.
One thing this classifier would probably fail, would be a blurred photograph, that still would obviously depict either a cat or a cheeseburger to a human viewer, but it would completely mess up the local feature patches.
A more interesting, and much harder, thing would have been to try and train a classifier to determine "cat", "cheeseburger" or "other/neither". I'm fairly sure you couldn't have done that with such local features.
Just my educated Machine Learning opinion, of course :-) The demo itself is both hilarious, and a good demonstration of SimpleCV's ease of use.
The extracted features appear to be nothing but small patches of various types and directions of edges.
Training a Naive Bayes classifier on these features will try to determine the label roughly based on the unordered strength/number of occurences of these small feature patches.
While it's obviously demonstrated that you can attain a surprising accuracy with this method, if the features in the "bag of features" method are all very local like in this demo, you are throwing away the larger scale features of the image. And intuitively, it's the larger scale features that ultimately determine the subject of a photograph.
One thing this classifier would probably fail, would be a blurred photograph, that still would obviously depict either a cat or a cheeseburger to a human viewer, but it would completely mess up the local feature patches.
A more interesting, and much harder, thing would have been to try and train a classifier to determine "cat", "cheeseburger" or "other/neither". I'm fairly sure you couldn't have done that with such local features.
Just my educated Machine Learning opinion, of course :-) The demo itself is both hilarious, and a good demonstration of SimpleCV's ease of use.