Hi Everyone I am a beginner in deep learning. I am doing my research work in deep learning. The topic on which I am working is Skin cancer image classification. I have tried training various standard models like resnet,vgg16,InceptionV3 using my dataset which I got from ISIC 2017 skin lesion Challenge.But no of images are very less. There are only 2000 training images belonging to 3 classes. I have increased the images to a extent using augmentation. There are 8000 images now. The problem is whatever I was trying I was not able to increase the the accuracy for the above mentioned model. Accuracy always lied between 75-80% in all the three models mentioned above. Then I tried a model with only 4 layers and trained it using my dataset. My validation accuracy increased drastically (91%). This is my concern that why standard model are showing such less accuracy but this simple model is showing high accuracy. Am I doing something wrongs?? Can that happen?? Any Suggestions are warmly welcomed
Yes, this can happen, and I think it is mostly due to the fact that the number of examples that you have is small. Higher complexity models will overfit the training dataset easier, and that is, most probably, what is causing your lower performance versus a simpler model. Note that, for example, ResNet was the winner of the ImageNet picture classification, where the dataset is of the order of 14 million examples, without doing data augmentation.
But something you can try is the following regularisation techniques in the more complex models:
- Dropout, which is very easy to implement, just add a dropout layer at the end of each activation (except in the output layer) and play with different probabilities (usually 0.2 works well).
- L1 or L2 regularisation, which in some libraries is straightforward to implement, by just changing a flag in the optimiser (e.g. PyTorch, just play with some values in the
weight_decayparameter, like 0.01, 0.001, 0.0001, and if it improves the performance, say at 0.001 then try in its vecinity, like 0.003 or 0.0008)
My feeling is that by using more complex models plus regularisation you won't be able to do better than the simpler model, but it is worth trying it.
Another aspect to take into account is that if you try with many hyperparameters, maybe you should separate the dataset in three parts (train, validation and test), so that you don't risk overfitting to validation.