InceptionV3

Utilizing the InceptionV3 CNN for our image classification. We downloaded pre-trained weights from ImageNet to increase the accuracy of our classification. Later on, we retrained the model to fit our ten classes specifically.

Data augmentation

Since we had a small data set we had to use augmented data to get the best results. We did this with the help of ImageDataGenerator class from the tensorflow library.

Training paramaters

For the optimizer we used the RMSProp optimization. A learning rate of 10E-4. And a batch size of 8. This combination gave us really good results. One thing to note is that the batch size seemed to play the most significant role in maximum accuracy, however we could not increase it further because of the google colab resourses limitation.

Results

Here we can see the average loss and accuracy per epoch. This is data from training without the segmentation of the images. As we can see, the accuracy is extremely good even without the segmentation part. The highest average accuracy is 97.5%.

Correctly classified test set image

Incorrectly classified test set image

Incorrectly classified test set image #2

Here we can see another image which the model failed to classify correctly and on the right is this type of butterfly the model thinks the input is.

Online images

Here we found an example of correct and incorrect classification from images the model has never seen before.