3 ms·
ImageNet now has 1000 classes. And I used to think this was a bottleneck before I really got into deep learning. Actually, adding categories is very easy and
by Iv 9y ago
ImageNet now has 1000 classes.
And I used to think this was a bottleneck before I really got into deep learning.
Actually, adding categories is very easy and does not require a crazy amount of data. It does not even requires a lot of retraining as a lot of the lower layers of a typical ImageNet model can be reused for new categories. I have made classifiers using an old model (VGG16) and less than 100 images in each new category.
If a project like wikipedia for instance started to promote the goal to have 100 different pictures for each of its articles, a classifier could be trained with any arbitrary number of categories.
- alexcnwy 9y agoAlso, see things like the DeVISE paper that replace the 1-hot encoding output on the 1000 imagenet paper with word vectors so the model can generalize beyond 1000 classes: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.466.176&rep=rep1&type=pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.466...
- jamesmcintyre 9y agoI've trained inception V3 for 20 classes using transfer learning method (google for poets tutorial/script) and I'm curious if there is an upper-limit to adding a lot of classes? For instance if I wanted to classify 30,000 different classes is there any reason one inception V3 model couldn't do it? For some reason I suspect that it wouldn't scale to that so I'm thinking I'd have to break the classification into a hierarchy (i.e. Classification/model 1: "Is it an animal?" If yes send to classification model 2: "what type of animal?" If feline send to model 3 "what type of feline?".) Is there an upper limit to classes? If so what imposes this limit? Is a process like I described above ideal or is there a better way to scale to 10's of thousands of classes in image recognition?
- Iv 9y agoI mostly used VGG16 but I suppose this more or less translates into inception as well: in VGG16 there are a few CNN layers and two dense layers at the end, the last one having 1000 outputs. The key is in these dense layers. If you want 30x more categories you probably need at least 30x more parameters in these. And I would naively assume that the relationship is more quadratic. The idea is that if the lower layers trained to recognize features that are useful in differentiating 1000 categories, they probably are good enough features to recognize other categories. After all we know that there are eyes detectors there, grid detectors, text detectors, that naturally emerge. ImageNet will continue to increase its number of categories anyway, so unless you have a cluster of TITAN GPU in your basement, you may just as well wait for their results and take their networks.
- jamesmcintyre 9y agoThanks for the answer!