5
$\begingroup$

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?

$\endgroup$
2
$\begingroup$

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.

| improve this answer | |
$\endgroup$
1
$\begingroup$

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.

Good luck!

| improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ I agree with @hisairnessag3 also remember to apply one-hot encoding, multi-hot encoding or sparse categorical depending on your dataset structure. $\endgroup$ – Simbarashe Timothy Motsi Jun 26 '18 at 20:52
1
$\begingroup$

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

| improve this answer | |
$\endgroup$
0
$\begingroup$

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).

All these publications refer to the ImageNet data base and the associated image classification/detection contest which has 1000 classes.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.