What if instead of Cats vs. Dogs you were trying to take an arbitrary picture of the world (not just a picture of a Cat or a Dog, but a random picture of people, furniture, food, etc.), and figure out if there was a Cat in it? (Dropping the detection of Dogs completely…)
I worked on something like this after Lesson 1. On Jeremy’s recommendation I tweaked the Classifier to train two classes: instead of Cats & Dogs, I trained it on Cats & Unknown (the latter containing only Dogs at first, but it could function as a catch-all for other object types that are not Cats).
On my first attempt, I noticed the model I was training was over-eager to recognize cats. i.e. a picture of a dog would not be identified as containing a cat, but pictures of random objects (e.g. furniture) were routinely misidentified as having a cat in it.
So I started adding pictures of furniture to my Unknown class, and that seemed to make the false positive rate go down if looking at pictures of furniture. But false positives remained high on pictures of food, landscapes, etc.
So it looks like it would be very time-consuming to train the model on every other type of picture/object (portraits, foods, lanscapes, cartoons, etc.) just to make sure it’s not mis-tagging cats.
Is there an easier way to build an open-world classifier that is great at recognizing cats in random pictures (better than Vgg16), without having to build a general image classifier all over again? For example is there a way to enhance Vgg16’s accuracy in recognizing cats, without destroying all the other ImageNet classes it was capable of recognizing before?