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
dataset5correspond 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
Evaluation results
- [email protected] on N-MARINEtest set self-reported0.808
- [email protected]:0.95 on N-MARINEtest set self-reported0.494
- precision on N-MARINEtest set self-reported0.807
- recall on N-MARINEtest set self-reported0.764