otolith detection fish marine biology yolo yolov8 ultralytics object-detection en license:mit region:us
---
license: mit
pipeline_tag: object-detection
tags:
- otolith
- detection
- fish
- marine biology
- yolo
- yolov8
- ultralytics
language:
- en
---
# Model Card for YOLOv8 based Otolith detection


## Model Summary
This model is a fine-tuned version of the YOLOv8n model, developed by Ultralytics, for Otolith detection in images.

Commonly, due to the small size of fish otoliths, the images need to have a high resolution in order for domain experts to locate the different concentric circles when performing age identification.
This results in two distinct caveats:
- Firstly, the images become rather large, often having more than 1000 pixels in each dimension, which for regular users without access to an HPC cluster or very expensive GPUs can be a limiting factor in using these images to train models for a wide array of use cases.
- Secondly, apart from the large background area in the images, it's common practice to include both otoliths in one single picture. By detecting the otoliths and splitting them into two different images (left and right), it is possible to intrinsically augment the dataset without having to rely on synthetic data.

(NOTE: Remember that this requires careful partition of the dataset by specimen, and not by image, as to avoid data leakage)


## Training Information

To train the model, we used a data cohort from 2020, consisting of 333 images of Blue whiting, manually labelled using RoboFlow, and split it into Training (80%) / Validation (10%) / Holdout-Test (10%).

Additionally, after training, we performed inference on the cohorts from 2021 and 2022, consisting of a total of `2018` images, and visually validated their quality as they had no labels.

All images are the same size, `1280x960`. To keep the aspect ratio we define the image size parameter as `[1920x1080]`

These were the parameters used to train the model:

```bash
yolo detect train \
    data=$data \
    model=yolov8n.pt \
    epochs=1000 \
    imgsz=[1920,1080] \
    rect=True \
    batch=64 \
    save=True \
    save_period=1 \
    cos_lr=True \
    optimizer="auto" \
    warmup_epochs=5 \
    plots=True \
    seed=42 \
    device=0 \
    project=otolith_detection \
    name=2020_normal
```
