Photo by July PJuxa (Puchkova) on Dribbble

Fishes also known as Ichthyology , accounts for the majority of Sea Life on our planet . They range from small centimetre to many meters .It can be even said that is one of the most diversified species on the planet that we mere humans have not explored .Distinguishing them is a task that even puzzle experts let alone a normal person .But that’s Exactly what we will try to accomplish here .


  • Problem Statement
  • Library and Concepts
  • Methodology
  • Modelling
  • Kernel link


We will be making a model to predict the fish breed of the image passed to it .We will be classifying the fish into one of 9 different categories .


Convolutional neural network

Image Augmentation



Matplotlib / Seaborn


Our dataset contains 3 channels images of shape 288×384 . We will be using multiple Convolutional layers followed by a Max Pool layer with Dropout layer to keep our model generalized and prevent overfitting .We will be also using Image Augmentation on features such as rescaling ,horizontal and vertical flips . This increases our dataset size and adds a bit of randomness to our model .


We will be using Convolution layers of 32 filters of size 3×3 at start followed by MaxPooling of size 2×2 accompanied by Dropout layer . As we go down deep in the model we increase the number of filter to 64 to allow our model to learn complex features .

To pass the Images into the Model we will be using Keras flow from dataframe .This allows our model to handle images easily and apply transformation with ease rather than getting exhausted by applying the whole dataset in one go .

Accuracy over training
Loss over Training

We are achieving about 80 % accuracy .


Kernel Link

Credit : Devansh Chowdhury