Built to order

Fish Species Classification from Photos using CNN

This project builds a convolutional neural network that classifies freshwater fish species from photographs — Rohu, Catla, Mrigal, Hilsa, Tilapia and Common carp. The fish region is isolated first, then a fine-tuned EfficientNet-B0 predicts the species with confidence scores and a species card. It ships with a curated species dataset, the training notebook, the trained model and an interactive demo. Suitable for B.E./B.Tech final-year projects in AI & Machine Learning.

Fish Species Classification from Photos using CNN — project thumbnail preview
More project photos (2)

The problem

Fish markets, landing centres and fisheries departments identify species by eye — fast for experts, inconsistent for everyone else, and a bottleneck for catch documentation. This project trains an EfficientNet-B0 classifier on about 2,200 fish photographs across six Indian freshwater species, with the fish region isolated before classification so market backgrounds don't become a shortcut feature. Students learn fine-grained visual classification, why background bias is dangerous in market photography, and how to evaluate species pairs that look alike (Rohu vs Catla juveniles). The demo classifies sample fish photos with representative predictions and species cards.

How it works

  1. Fish photographs are collected from markets and landing centres and labelled by species; clear side views are preferred.
  2. The fish region is isolated from the background with segmentation before classification.
  3. Crops are resized to 224×224, normalized and split into stratified train/validation sets.
  4. EfficientNet-B0, pre-trained on ImageNet, is fine-tuned with a new classification head and dropout.
  5. Training uses Adam with early stopping; the held-out split gives accuracy and per-species metrics.
  6. The web demo classifies sample fish photos through the same pipeline with representative predictions.
  7. Species cards with scientific names and identifying features accompany predictions.

Tech stack:

  • Python 3, TensorFlow/Keras
  • EfficientNet-B0 (transfer learning)
  • OpenCV (segmentation)
  • NumPy, Matplotlib, scikit-learn
  • Jupyter Notebook (training)
  • HTML/CSS/JS classification demo
  • Pillow

Dataset & model details

  • Dataset: Custom curated freshwater-fish set — ~2,200 fish photographs from markets and landing centres in West Bengal and Maharashtra, labelled into 6 species: Rohu, Catla, Mrigal, Hilsa, Tilapia, Common carp; clear side views preferred; stratified 80/20 split.
  • Task: 6-class fine-grained image classification; input = 224×224×3 fish crop, output = species probabilities.
  • Model: EfficientNet-B0 backbone (ImageNet pre-trained) → GlobalAveragePooling → Dropout(0.3) → Dense(6, softmax); ~5.3M parameters; segmentation upstream.
  • Metrics: Species accuracy ~91% (design target), top-2 accuracy ~96% (design target), per-species precision/recall. No accuracy is claimed as measured until the training run is executed for the order.
Parameter Value
Input format 224 × 224 RGB fish crop
Classes 6 freshwater species
Dataset size Approximately 2,200 labelled photos
Model parameters Approximately 5,300,000
Species accuracy ~91% (design target, not a measured claim)
Training time Approximately 1–2 h on a free GPU (expected)
Inference Approximately 40 ms per image on CPU (expected)
Model file Approximately 21 MB (.h5)
Demo Single-file web app, runs offline after download

Project features

  • Six-species classifier Rohu, Catla, Mrigal, Hilsa, Tilapia, Common carp — the commercially important Indian freshwater species, with per-species metrics.
  • Fish-region isolation The fish is segmented from market backgrounds before classification, removing a major source of dataset bias.
  • Curated species dataset About 2,200 fish photographs from markets and landing centres, labelled by species with clear side views preferred.
  • Species cards Each prediction shows the scientific name and key identifying features — genuinely useful for learning the species.
  • Interactive classification demo Single-file web app: pick a sample fish photo and see the predicted species with probability bars.
  • Lookalike-pair evaluation Confusion matrix documents Rohu/Catla confusion honestly — the hard case every examiner asks about.
  • Viva kit Report PDF, PPT and Q&A covering fine-grained classification, segmentation preprocessing and evaluation.

What is included

  • Curated, labelled fish-species dataset with split files
  • Segmentation + training Jupyter notebooks
  • Trained EfficientNet-B0 model with preprocessing code
  • Interactive classification web demo with sample photos
  • Confusion matrix and per-species metrics
  • Species reference cards
  • Project report PDF, PPT presentation
  • Viva Q&A preparation document

Limitations & prerequisites

  • Juvenile fish and damaged specimens are harder; the report quantifies this drop.
  • Clear side views are recommended — top-down or occluded fish degrade accuracy.
  • 91% is a design target, stated honestly — the report documents the actual achieved figure.
  • Species cards are reference information, not a substitute for expert identification in regulated trade.
  • Only the six covered species are supported; marine species are out of scope.

Frequently Asked Questions

Which dataset is used?

A custom curated set of about 2,200 fish photographs from markets and landing centres in West Bengal and Maharashtra, labelled Rohu, Catla, Mrigal, Hilsa, Tilapia or Common carp, with clear side views preferred.

Why segment the fish first?

Market backgrounds (ice, steel trays, hands) correlate with species in the data; without segmentation the model learns the tray instead of the fish. The report documents this bias check.

Which species confuse it most?

Rohu vs Catla, especially juveniles — similar body shape and coloration. The confusion matrix shows this pair explicitly.

How does the demo work?

Pick a sample fish photo and press run; the app shows the predicted species with probability bars and a species card — representative of the trained model on these samples.

Can it grade fish freshness?

No — this project classifies species only. Freshness grading from gills/eyes is a different task, listed as future scope.

Is this project suitable for a final-year project?

Yes — for AI & Machine Learning programs. It demonstrates fine-grained classification, bias-aware preprocessing and honest evaluation. Suitable for B.E./B.Tech final-year projects in AI & Machine Learning.

Components & software requirements
  • Python 3, TensorFlow/Keras
  • EfficientNet-B0 (transfer learning)
  • OpenCV (segmentation)
  • NumPy, Matplotlib, scikit-learn
  • Jupyter Notebook (training)
  • HTML/CSS/JS classification demo
  • Pillow

Dataset & model details

  • Dataset: Custom curated freshwater-fish set — ~2,200 fish photographs from markets and landing centres in West Bengal and Maharashtra, labelled into 6 species: Rohu, Catla, Mrigal, Hilsa, Tilapia, Common carp; clear side views preferred; stratified 80/20 split.
  • Task: 6-class fine-grained image classification; input = 224×224×3 fish crop, output = species probabilities.
  • Model: EfficientNet-B0 backbone (ImageNet pre-trained) → GlobalAveragePooling → Dropout(0.3) → Dense(6, softmax); ~5.3M parameters; segmentation upstream.
  • Metrics: Species accuracy ~91% (design target), top-2 accuracy ~96% (design target), per-species precision/recall. No accuracy is claimed as measured until the training run is executed for the order.
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download abstract (PDF)

Related guides

All guides
Illustration of object tracking showing video frames with bounding boxes and persistent ID labels following people and vehicles, comparing motion prediction and appearance matching.B.E./B.Tech Computer Science and Electronics students building video analytics projects — people counting, vehicle tracking, sports analysis — who have detection working and need

Object Tracking: DeepSORT and ByteTrack Explained

Detection finds objects per frame; tracking keeps their identities across frames. This guide explains tracking-by-detection, Kalman motion models, DeepSORT's appearance embeddings vs ByteTrack's low-confidence box recovery, tracking metrics (HOTA, IDF1, ID switches), and the tuning parameters that determine real-world quality.

Read guide
Illustration of image segmentation showing U-Net's U-shaped encoder-decoder with skip connections producing pixel masks, alongside Mask R-CNN detecting instances with masks.B.E./B.Tech Computer Science and AI/ML students moving from image classification or detection to pixel-level understanding — medical imaging, defect detection, autonomous driving

Image Segmentation: U-Net and Mask R-CNN

When projects need pixel-level answers, segmentation delivers. This guide explains semantic vs instance vs panoptic segmentation, U-Net's encoder-decoder with skip connections, Mask R-CNN's parallel mask head, Dice and IoU evaluation, paired augmentation, and how to choose the right architecture for your data and question.

Read guide
Illustration of Whisper speech-to-text showing sound waves flowing into a neural network and emerging as transcribed text with timestamps and speaker labels.B.E./B.Tech Computer Science and AI/ML students adding speech-to-text to projects — voice assistants, meeting transcription, accessibility tools

Whisper for Speech-to-Text in Student Projects

Whisper transcribes speech in dozens of languages with no training required. This guide covers how it works, choosing among model sizes, running it locally with faster-whisper, handling hour-long audio, timestamps and speaker diarization, multilingual quirks, and honest evaluation with word error rate.

Read guide
Get a quotation