Skip to content

yurayli/fish-detection

Repository files navigation

The Nature Conservancy Fisheries Monitoring


https://www.kaggle.com/c/the-nature-conservancy-fisheries-monitoring

Task

Given a training dataset of 3792 images and testing dataset of 13153 images taken from fixed cameras mounted on fish boats. The task is to build algorithms to automatically detect and classify the species of fish in the image, and evaluated by log loss of classes.

Solution

The task cannot be directly solved by a CNN classifier. The problem is most of the camera images contain rather complicated environment yet the fish is rather small within an image. Thus we need a fish object detector. Another challenge is the data is quite small and imbalanced for each species class. Therefore it's hard for the detector to directly do classification. So the effective way is that firstly build a fish detector (fish or not), then crop the window with only fish from the image, and finally train a classifier from these cropped images. The process is as follows

Architecture

Detectors:

  1. Faster-RCNN:
    With ResNet-50 based FPN as base network RPN, modified from maskrcnn-benchmask.
  2. SSD:
    With VGG16 as base network, modified from sgrvinod's great tutorial.
  3. YOLO-v3:
    Originated from pjreddie; train by the code from AlexeyAB.

Performances in downstream classification task: 1 > 2 > 3.

Classifier:
ResNet-50 + 8-class classification head

The performance results may also depend on many hyperparameters - batch size, lr schedule, training steps etc.

Dependencies

Pytorch 1.0.1

Releases

No releases published

Packages

No packages published