Jellyfish Classification

Convolutional Neural Networks for Jellyfish Classification. Used deep learning tools including Keras, SkLearn, and TensorFlow.

My project is on deep learning for classification of 6 types of jellyfish (Barrel, Blue, Compass, Lions Mane, Mauve Stinger and Moon) using sklearn, keras, and tensorflow in addition to numpy and matplotlib for plotting. This data set is from kaggle- https://www.kaggle.com/datasets/anshtanwar/jellyfish-types

6 different models were implemented- simple_CNN, reg_CNN and batch_CNN with 3x3 filters and 5x5 filters

Simple_CNN - Has three convolutional layers, each followed by a max pooling layer, a flatten layer, a fully connected dense layer, and an output layer with softmax activation for multi-class classification.

Reg_CNN- includes dropout layers to regularize the model and prevent overfitting, potentially making it more robust but possibly requiring more training time and data to achieve optimal performance.

Batch_CNN- Uses batch normalization to stabilize and potentially speed up training by normalizing activations. Has a batch normalization after each convolutional layer

First, I created three data generators for the training, validation, and test dataset using the flow_from_directory method. Each instance reads images from the respective directories, resizes them to 150x150 pixels, rescales the pixel values, and yields batches of images and their corresponding labels (labels are one-hot encoded for categorical classification tasks).

code below

5 subplots of the moon Jelly using matplotlib

code and plot

Labeling the Classes

The the types of CNN models




Training on the 6 CNN models using 3x3 and 5x5 filters


Plotting results (Accuracy and Loss)

Code


Plots







Testing/Results


Highest test accuracy
Test Accuracy: 0.6499999761581421 for 5x5 no dropout CNN
F1 Score: is 0.17067307692307693 for 5x5 no dropout CNN


Visualizing feature detection at different convolutional layers using VGG16

code


Visualization of a 3x3 filter CNN no drop out, blue_jellyfish photo

image activation


This image depicts which parts of the image are being activated by different filters in the convolutional layers, providing insights into what the model is learning!!