I have an image dataset where objects may belong to one of the hundred thousand classes.
What kind of neural network architecture should I use in order to achieve this?
Artificial Intelligence Stack Exchange is a question and answer site for people interested in conceptual questions about life and challenges in a world where "cognitive" functions can be mimicked in purely digital environment. It only takes a minute to sign up.Sign up to join this community
Classification tasks with a large number of classes are usually handled with hierarchical softmax to reduce the complexity of the final layer. This is useful, for example, in applications such as word embedding where you have hundreds of thousands of classes (words), like in your case.
A large one!
In all seriousness, imagenet had roughly 1000 classes and did not require anything special from the top submissions. Depending on how deep(contextually) these classes are, you may want to do something like multi-label classification. Your biggest problems will likely be differentiating between classes, as well as class distribution.
As you can imagine and as it has already been said, a large one for your network to tune weights and biases. But I wanted to nuance this statement with two points
First : you can use an Autoencodeur to pre-process your images. It can reduce dimensionality and so improve the learning capability and efficiency (in a generalization point of view). This kind of NN takes your images as inputs, encode and then decode them to provie new representation of your initial images. Dealing with the decoded dataset can allow you to consider less hidden layer with less hidden nodes and then speed your work up.
Second : architecture is sure a thing to deal with image recognition, but you can also play on the input representation (that is what the autoencoder aforesaid is about). You can look at PCA (Principal Component Analysis). It allows to reduce dimensionality to a certain number of components (that you specify). It is often used in face recognition where inputs and targets are various.
All that to say that architecture is sure a thing when dealing with large datasets, but there also few tools to reshape the inputs so that then can be more easily learnt.
And by doing so you can improve the capability of your network as much in term of time computation as in quality and accuracy of prediction
Alexnet (2012), Overfeat (2013), VGG (2014) and ResNet (2016) are cited in many image recognition or segmentation applications. There is also GoogleLeNet (2015). The lastest is the publication the denser is the network.
The ResNet publication comments on how the network density affects accuracy depending on the image data set size. The article tends to give a motivated answer to the question
Is learning better networks as easy as stacking more layers?
You might consider the training time since you have your own image data set depending on the kind of hardware you can you use ( see this benchmark for instance ). The denser the more time it will takes.
You also have to consider the size of the traning data set w/r to the expected accuracy. If the set is too small the net will probably overfeat. In that case you migh consider a data augmentation strategy (one of the answers mentions auto encoding, I m not sure but this might help for this purpose).