After the second and third lesson I have implemented some of the things Jeremy discussed and worked through and that is what I have to show you in this post.
In lesson 2 of https://course.fast.ai/ v5 data cleaning and data augmentation was discussed. Data cleaning turned out to be a big part of making FastClouds perform better as the images i scraped from duckduckgo for clouds turned out to be quite messy and unreliably classified... unsurprising really. Once i'd cleaned up my image data set my model went from ~75% accurate to ~81% accurate.
This is the training with raw data:
This is the training with cleaned up data:
Data augmentation using the fastai DataBlock was super simple to implement. I just added the
batch_tfms=aug_transforms() line to my DataBlock definition and fastai took care of the rest for me. Data augmentation did add a bit of skill to the model - we went from ~81% to ~85% - but i suspect that this is because the input images are already quite varied and so augmentation didn't add that much more information for the model to learn. This is a batch of augmented images and they look very similar to the original images:
In the end we have a model that is about ~85% accurate using pretty much out of the box fastai methods and using a very small dataset - the final version only used 50 images from each category. As far as I know there is no other model out there that can classify clouds from images with this accuracy.
Now that we have a model i'd like to be able to make it 'operational' and available for people to use. The Transition to Operations (TROPS) using huggingface and gradio was discussed in lesson 2 and that is what i have used here to deploy the FastCloud model.
The app version looks like this:
and you can go to this URL to play with it.
I'd love it is you send me screenshots of the clouds you classify with this. Thanks for reading.