CoolFace
Datasetpublic

fish-gang/deepscan-dataset

Tropical Reef Fish Dataset A dataset of tropical reef fish images for species-level image classification, with additional negative classes for out-of-distribution rejection. Dataset Description Images were scraped from iNaturalist using research-grade observations with CC0 or CC-BY licenses. The dataset covers 12 species across 9 families, targeting fish commonly encountered by snorkelers at depths of 0–10 meters in tropical reef environments. Two negative classes… See the full description on the dataset page: https://huggingface.co/datasets/fish-gang/deepscan-dataset.

sourceHugging Facecc-by-4.0updated 5mo agoView on Hugging Face
0likes111downloads
Dataset Card

Tropical Reef Fish Dataset

A dataset of tropical reef fish images for species-level image classification, with additional negative classes for out-of-distribution rejection.

Dataset Description

Images were scraped from iNaturalist using research-grade observations with CC0 or CC-BY licenses. The dataset covers 12 species across 9 families, targeting fish commonly encountered by snorkelers at depths of 0–10 meters in tropical reef environments.

Two negative classes are included to enable the model to reject inputs that don't match any known species: unknown_fish for fish outside the 12 target species, and no_fish for non-fish objects.

This dataset was created as part of a bachelor thesis at ZHAW School of Engineering (Institute of Embedded Systems, InES) with the goal of training a lightweight image classifier for fully offline deployment on mobile devices.

Classes

Pinned Species (12 classes)

Scientific NameCommon NameFamilyImages
Acanthurus coeruleusAtlantic Blue TangAcanthuridae500
Naso unicornisBluespine UnicornfishAcanthuridae500
Scarus ghobbanBlue-barred ParrotfishLabridae500
Thalassoma lunareMoon WrasseLabridae500
Amphiprion ocellarisOcellaris AnemonefishPomacentridae376
Chromis viridisBlue-green ChromisPomacentridae425
Chaetodon lunulaRaccoon ButterflyfishChaetodontidae500
Pomacanthus imperatorEmperor AngelfishPomacanthidae310
Rhinecanthus aculeatusLagoon TriggerfishBalistidae500
Pterois volitansRed LionfishScorpaenidae500
Arothron meleagrisGuineafowl PufferTetraodontidae500
Carcharhinus melanopterusBlacktip Reef SharkCarcharhinidae483

Total pinned species: 5,594 images

Negative Classes (2 classes)

ClassSourceDescriptionImages
no_fishOpen ImagesNon-fish objects (24 object categories, 50 images each)1,200
unknown_fishiNaturalistFish species outside the 12 target species1,000

Total negative: 2,200 images

Grand total: 7,794 images across 14 classes

No-Fish Categories

The no_fish class contains 50 images each from the following Open Images categories:

  • Urban / everyday: Chair, Car, Table, Person, Dog, Cat, Bicycle, Bus, Truck, Motorcycle, Airplane, Boat, House, Bottle
  • Underwater / coastal: Sea turtle, Tortoise, Starfish, Jellyfish, Crab, Lobster, Dolphin, Whale
  • Natural: Mushroom, Tree

Data Collection

  • Pinned species & unknown fish: iNaturalist API (research-grade observations only), CC0 and CC-BY licenses validated at the individual photo level
  • No fish: Open Images V6 via the openimages Python package
  • Image resolution: Original resolution as provided by the respective source
  • Target depth range: 0–10m (snorkeling depth)

Structure


data/
<family_scientific_name>/
<species_scientific_name>/
<species_scientific_name>\_0000.jpg
...
unknown_fish/
unknown_fish_0000.jpg
...
no_fish/
chair1.jpg
...
dataset.json

Metadata

dataset.json contains four top-level arrays:

labels

Species metadata for the 12 pinned classes:

  • species_taxon_id / family_taxon_id — iNaturalist taxon IDs
  • family_common_name / family_scientific_name
  • species_common_name / species_scientific_name
  • image_count

negative_labels

  • label_id — either unknown_fish or no_fish
  • image_count

data

Per-image records for pinned species:

  • species_taxon_id — links to labels array
  • file — relative path to image
  • observation_id / observation_uri — original iNaturalist observation
  • photo_id / photo_url_original — original photo reference
  • photo_licensecc0 or cc-by
  • photo_attribution — attribution string as required by license

negative_data

Per-image records for negative classes, with a consistent structure:

  • label_idunknown_fish or no_fish
  • file — relative path to image
  • sourceinaturalist or openimages
  • meta — source-specific metadata:
  • For unknown_fish: photo_id, observation_id, observation_uri, photo_url_original, photo_license, photo_attribution, taxon_id, taxon_scientific_name
  • For no_fish: original_label (the Open Images category name)

Intended Use

This dataset is intended for training lightweight convolutional neural networks for species-level fish classification on mobile devices, with built-in support for out-of-distribution rejection. It is not exhaustive of all tropical reef fish species and is not intended for scientific surveys or biodiversity assessments.

Limitations

  • Class imbalance among pinned species (310–500 images per species)
  • No bounding box annotations — classification labels only
  • Image quality varies (motion blur, partial occlusion, waterproof housing distortion)
  • unknown_fish images are drawn from the same iNaturalist distribution as pinned species and may not represent all possible out-of-distribution fish inputs

Attribution

Images from iNaturalist are contributed by observers under CC0 and CC-BY licenses. Full per-image attribution is available in dataset.json under negative_data[*].meta.photo_attribution and data[*].photo_attribution. Please credit original observers when redistributing or publishing work derived from this dataset.

Images from Open Images are subject to their respective licenses as documented by Google.

License

Dataset metadata and structure: CC-BY 4.0

Individual images: see photo_license in dataset.json (iNaturalist images: CC0 or CC-BY; Open Images: per-image license as documented by Google)