YOLOv7 Baselines for N-MARINE

This repo hosts baseline YOLOv7 models trained on the N-MARINE dataset (North Atlantic underwater images with 9 fish species + background).

  • Best baseline (no class weights)
    [email protected] 0.808 ± 0.007 · mAP@[0.5:0.95] 0.494 ± 0.008 · P 0.807 ± 0.036 · R 0.764 ± 0.014
  • Paper: TODO – add link when available

Dataset: N-MARINE
Supplementary + scripts: https://github.com/Pentaerythrittetranitrat/N-MARINE_dataset_supplementary

Model list

The released models follow this directory structure, where each datasetX (X = 1–5) corresponds to one of the five cross-validation splits:

Each datasetX directory contains two trained models:

  • classweights/best.pt — trained with inverse-frequency class weights.
  • no_classweights/best.pt — trained without class weights (baseline, recommended).

The dataset splits used for training can be found in the supplementary repository:
https://github.com/Pentaerythrittetranitrat/N-MARINE_dataset_supplementary

Note: The models under dataset5 correspond to the most balanced split across classes.

Each model outputs 9 classes. The class order (index → class) for all models is:

Index Class name
0 Atlantic Cod
1 Roughhead Grenadier
2 Atlantic Halibut
3 Redfish Mentella
4 Thorny Skate
5 Striped Wolffish
6 Spinytail Skate
7 Whelk
8 Northern Wolffish

Intended use

  • Benchmarking object detection on North Atlantic underwater imagery
  • Studying class imbalance, visibility limits (turbidity/occlusion), and domain shifts
  • Generating crops for downstream species classification tasks

Training data and splits

  • Data: N-MARINE (23,936 images, 9 species + background)
  • Split protocol: fixed 15% video-level test; 5-fold CV within train videos
  • Pretraining: COCO weights (YOLOv7)
  • Image size: 640×640 letterboxed
  • Epochs: 50
  • Batch size: 32
  • Other: default YOLOv7 augmentations & hyperparams unless noted

Class weights variant

Inverse-frequency class weights slightly improved Spinytail Skate but reduced aggregate mAP.

Quick inference

These weights are YOLOv7-format PyTorch checkpoints. Use the YOLOv7 repository or a compatible runner.

CLI (YOLOv7)

# 1) Clone YOLOv7 (example URL; use the official repo you trained with)
git clone https://github.com/WongKinYiu/yolov7.git
cd yolov7
pip install -r requirements.txt

# 2) Run inference
python detect.py \
  --weights /path/to/N-MARINE_baseline_classifiers/n-marine_weights/dataset5/no_classweights/best.pt \
  --source /path/to/images_or_video \
  --img-size 640 \
  --conf-thres 0.25 \
  --iou-thres 0.65 \
  --save-txt --save-conf

Citation

If you use the dataset, please cite:

Dataset citation (plain text): Morris, C. J., Ayyagari, K. D., Porter, D., Nguyen, Q. K., Hanlon, J., & Whidden, C. (2025). Newfoundland Marine Refuge Fish Classification Dataset (N-Marine). Government of Canada Open Data Portal. https://open.canada.ca/data/en/dataset/2ae46860-f82a-4127-bb1f-b02e36ef6a70

If you use the models, please cite:

Model citation (plain text): TODO: Add

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Evaluation results