🌊 Life Under Water β€” Marine Trash Detection

Fine-tuned YOLOv8m-seg for underwater debris detection and instance segmentation, specifically designed for ROV (Remotely Operated Vehicle) camera footage β€” seabed and underwater surface debris, not floating surface trash.

Project: Life Under Water Author: Krishna Jaiswal Live Demo: Hugging Face Spaces


Results

Metric Score
mAP50 β€” detection 65.6%
mAP50 β€” segmentation 65.0%
Precision 79%
Classes 16
Training images 6,008
Validation images 1,204
Epochs 75

Sample Predictions

Sample predictions

Training Curves

Training curves


Dataset

TrashCan 1.0 β€” Instance segmentation dataset of underwater trash captured by JAMSTEC deep-sea ROV cameras. Source: University of Minnesota Data Repository

16 Classes

Category Classes
Trash trash_plastic, trash_metal, trash_fabric, trash_fishing_gear, trash_rubber, trash_wood, trash_paper, trash_etc
Marine life animal_fish, animal_starfish, animal_shells, animal_crab, animal_eel, animal_etc, plant
Equipment rov

Class Distribution (training set)

Class Instances %
rov 2,653 44.2%
trash_etc 1,629 27.1%
trash_plastic 1,490 24.8%
trash_metal 901 15.0%
animal_fish 611 10.2%
plant 405 6.7%
animal_starfish 274 4.6%
trash_wood 271 4.5%
animal_eel 267 4.4%
animal_crab 247 4.1%
trash_fabric 247 4.1%
animal_etc 180 3.0%
animal_shells 171 2.8%
trash_paper 154 2.6%
trash_fishing_gear 127 2.1%
trash_rubber 113 1.9%

Note: Severe class imbalance (ROV 44%, trash_rubber 2%) β€” use conf=0.15 for better detection of rare trash classes.


Usage

from ultralytics import YOLO
from huggingface_hub import hf_hub_download

# Download model
model_path = hf_hub_download(
    repo_id="Krishna-Jaiswal/yolov8m-marine-trash",
    filename="yolov8m_marine_best.pt"
)

# Run inference
model   = YOLO(model_path)
results = model.predict("underwater_image.jpg", task="segment", conf=0.15)
results[0].show()

Training Configuration

Parameter Value
Model YOLOv8m-seg (pretrained COCO)
Optimizer SGD
Learning rate 0.01 β†’ 0.001 (cosine decay)
Epochs 75 (early stopping patience=20)
Batch size 16
Image size 640Γ—640
Augmentation Mosaic, Mixup=0.1, Copy-paste=0.1, HSV jitter, Flip
Platform Kaggle T4 GPU

Limitations

  • Trained specifically on JAMSTEC ROV deep-sea footage β€” performance may vary on footage from different cameras or water conditions
  • Class imbalance: ROV (44%) dominates vs trash_rubber (2%) β€” model biased toward ROV
  • mAP (65.6%): Realistic for challenging underwater domain (low-light, murky conditions, occlusions)
  • Best performance on seabed debris, not floating surface trash
  • Per-class mAP varies: ROV ~90% vs rare trash classes ~20-40%

Real-world Applications

  • Underwater ROV-based ocean cleanup systems
  • Marine pollution monitoring and research
  • Automated seabed debris surveys
  • Aligned with UN SDG 14 β€” Life Below Water
  • Same problem domain as EU SeaClear 2.0 (€9M Horizon Europe project)

Citation

@dataset{trashcan2020,
  title  = {TrashCan 1.0: An Instance-segmentation Labeled Dataset of Trash Observations},
  author = {Hong, Jungseok and Fulton, Michael and Sattar, Junaed},
  year   = {2020},
  url    = {https://conservancy.umn.edu/handle/11299/214865}
}
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

Spaces using Krishna-Jaiswal/yolov8m-marine-trash 2