I am working on a project to classify images of types of cloth (shirt, tshirt, pant etc). While this is a standard supervised classification problem, the accuracy of the neural network is not good. This is because of the close similarity of the types of cloth that I am trying to classify.

I am working with 9 classes with around 10,000 images per class. For the classification problem I tried using CNN to classify the images. But over fitting took place with a good training accuracy (around 95%), but not so great validation accuracy (around 77%).

I wanted to know if there was any way I could create clusters based on the type of cloth using some unsupervised learning algorithm like K Means or DBScan.

  • $\begingroup$ Did you try data augmentation (rotating your images....) $\endgroup$ Commented Dec 12, 2018 at 20:04
  • $\begingroup$ Unsupervised learning is not going to perform better than a well trained CNN for so many images. You should reduce overfitting on your CNN. For example try a smaller model, or Data Augmentation, or adding dropout, or tuning batchsize/learningrate. Or use a pretrained model that you finetune $\endgroup$
    – Jon Nordby
    Commented Apr 12, 2019 at 1:52

1 Answer 1


Have you included dropout in your model? It can help avoid overfitting issue.

For your problem, yes, you can use auto-encoders, GAN, etc. for feature learning. However, I'm not sure if unsupervised learning can help, since it's more like a training issue. Your have label with your data so supervised learning is ideal, plus supervised learning generally shows better performance than unsupervised in image classification. You might want to check the false classification examples in your dataset, and try to alter the CNN structure based on that, which would be a more direct way.

  • $\begingroup$ Yes I have used dropout for my network. but That does not seem to have much effect. The problem is if you are familiar with Indian clothing (kurta is very similar to salwar) And since my dataset comprises of both the types of clothing, the program does not work well. should i try increasing the data size though i dod not know if that will have that big of an impact $\endgroup$
    – Sashaank
    Commented Aug 14, 2018 at 6:07
  • $\begingroup$ I checked google for them, it seems the main difference is the shape. CNN should be able to recognize such difference. Usually I will try to take the data for these two label out and train CNN for them only, and then see if can classify between them. If true, it means the degradation of model is caused by the introduction of multi-class classification. Otherwise, it's simply caused by the model structure, and you might want to work on that. $\endgroup$
    – plpopk
    Commented Aug 14, 2018 at 7:00
  • $\begingroup$ I will try that. thanks. Any idea on how to deal with multi classes? $\endgroup$
    – Sashaank
    Commented Aug 14, 2018 at 7:54
  • $\begingroup$ Check if you used softmax activation. At the moment, what come to my mind is either adjust the cost function or add extra models (e.g. combine with a binary classification model which works well). $\endgroup$
    – plpopk
    Commented Aug 14, 2018 at 8:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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