TLTR: I'm developing a CNN for a classification task. The data contains multiple classes some of which are very similar to each other and I know these meta-classes. In such a situation is it a good approach to use 2 Levels of CNNs: 1. Level detect the meta-classes. 2. Level detect the classes within the classified meta class (of Level 1).

Example: Suppose I try to classify the following 9 classes:

Apple Tree, Plum Tree, Cherry Tree, Sports car, SUV car, Coupe car, Dog, Cat, Wolf

Now I could of course use one network on these classes and get a classification output for all of them. But the output (softmax) percentage e.g. for an apple tree would be for probably high for any tree class. Thus is it a good approach to train and use 2 level of CNNs, like this:

  1. Level classify tree, car, animal --> Trained with all images
  2. Level classify what kind of tree, car, animal --> trained only with the subsample of trees, cars, animals

So images are checked by CNN Level 1 and then depending on its classification with appropriate CNN Level 2.

So the questions are:

  • Is this a good approach ?
    • Does it help in terms of prediction quality/accuracy of the subclasses?
    • Is it easier for an CNN to detect the specific features of a subclass if the input is limited (like in level 2) ?

Or use another approach ?

Thanks Swad

  • $\begingroup$ That may work or may be not so good. In my experience CNN with fine classification, many classes, works better then CNN with few bigger classes. If number of classes is less then 1000 I'd start with flat classification. Only experiments would tell which is better, but my intuition the single flat classification will be better. $\endgroup$ – mirror2image Apr 3 '19 at 12:02
  • $\begingroup$ It is less than 100classes so'll try flat model. thanks for your hint. $\endgroup$ – swad Apr 9 '19 at 13:47

Your Answer

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

Browse other questions tagged or ask your own question.