After self-studying on how to build an image classification model using deep learning from a range of resources, I wanted to get my hands dirty by implementing and putting my learnings into practice. Some of these resources are found below.
This is an image classification project that uses Convolutional Neural Networks (CNNs) and feature extraction from pre-trained CNNs to classify the images of birds by their species. The objectives of this project was to demonstrate:
- Why fine-tuned pre-trained CNNs perform well with little to moderate amount of training
- How users can present test evaluation results to locate the set of prediction classes that need more training
- How users can localise the important objects of the image that belong to a given prediction class, using Gradient Class Activation Mapping (Grad-CAM)
I personally find objective 3 very important for ML practitioners because an understanding of what the model learns helps minimise the fear that users have in using the product (aids in user adoption), whilst also equipping the practitioner with data-driven next steps on how to fine tune the model better (model improvement and explainability).
I wrote a medium article on this project. Read up more here.
The dataset comprises of 525 bird species. 84635 training images, 2625 test images(5 images per species) and 2625 validation images(5 images per species). You can use this link to find the dataset used in this project.
AWS EC2 Instance - Deep Learning AMI GPU TensorFlow 2.7.3 (Ubuntu 20.04). Instance type: c5.2xlarge
(Learn how to set up your deep learning workstation with AWS here)
Chollet, F. (2017). Deep learning with python. Manning Publications
Starmer, J. (2021). Image Classification with Convolutional Neural Networks (CNNs). Retrieved from https://www.youtube.com/watch?v=HGwBXDKFk9I
Chollet, F. (2020). Keras documentation: Grad-CAM class activation visualization. Retrieved from https://keras.io/examples/vision/grad_cam/
Rosebrock, A. (2017). ImageNet: VGGNet, ResNet, Inception, and Xception with Keras - PyImageSearch. Retrieved from https://pyimagesearch.com/2017/03/20/imagenet-vggnet-resnet-inception-xception-keras/
Singh et al. (2020). Filter Response Normalization Layer: Eliminating Batch Dependence in the Training of Deep Neural Networks. Retrieved from https://paperswithcode.com/paper/filter-response-normalization-layer