This project focused on developing a robust CNN-based solution capable of classifying images of plankton into one of 12 distinct classes.
Designed and trained a deep CNN with batch normalisation and dropout using PyTorch. The final network utilises an adam optimiser and Huber loss to achieve around 80%. This task is inherently complex due to the vast variability in plankton morphology, making traditional classification methods far less effective then a deep learning solution.
This task was made more complex by large class imbalances and a small dataset. This led to biased model predictions and reduced accuracy, as the network became overly biased toward the majority class. Addressing this challenge required innovative techniques in data preprocessing, augmentation and weighted dataloading. This ensured that the model would see a varied and balanced representation of all classes.
I tried to improve on my model by adding a multihead self-attention layer to the model. This network can be found here, although it did not improve the classification accuracy.