Running 10 epocs on the Food-101 dataset


I’m currently working on the Food-101 dataset. The problem is similar to what we’ve been working on so far so basically I’m using the exact same approach. I want to train a model that is greater than 85% accuracy for top-1 for the test set, using a ResNet50 or smaller network with a reasonable set of augmentations. I’m running 10 epochs using ResNet34 and I’m currently on the 8th epoch. This is how its doing:

epoch train_loss valid_loss error_rate time
0 2.526382 1.858536 0.465891 25:21
1 1.981913 1.566125 0.406881 27:21
2 1.748959 1.419548 0.372129 27:16
3 1.611638 1.315319 0.346980 25:16
4 1.568304 1.250232 0.328069 24:43
5 1.438499 1.193816 0.313762 24:26
6 1.378019 1.156924 0.307426 24:30
7 1.331075 1.131671 0.299010 24:26
8 1.314978 1.115857 0.297079 24:24

As you can see, it doesn’t seem like I’m going to do better than 71% accuracy at this point. The dataset size is 101,000. It has 101 different kinds of food and each food has a 1000 images. Training this definitely takes long but what are some things I can do to improve its accuracy?

I’d reduce the size of your data to reduce the time it takes to get feedback about the model performance. It is going to take you a long time to run experiments with your current setup. You could sample a fraction of the labels and the observations for each label to reduce your data size. You could also try reducing the size of the images.

Then use the classification interpretation methods like plotting top losses and the confusion matrix to better understand the model’s performance. Understanding where your model is performing poorly will help you decide what to try next.

Things to try:

  • different model architectures
  • different data augmentation
  • progressively increasing the image size
  • getting more data
  • self supervised learning
  • googling what other people have done with that dataset