What it is

A zebrafish larva is small and nearly transparent, so its forming skeleton can be photographed whole under an ordinary brightfield microscope. Labs use that to study how bone develops and what a mutation does to it, and the slow part is measuring each bone in each fish. Deep-Fish-Bone is a set of such photographs, taken from below (ventral view), with every one of 25 skeletal structures of the head and the start of the spine masked by hand. The authors, at the University of Liège, built it to train and compare multi-label segmentation models.
| Fact | Value |
|---|---|
| Record | Zenodo 23125004, version V1.0, published 2026-10-03 |
| Images | 190 annotation records from 34 zebrafish larvae, brightfield, ventral view |
| Labels | 25 binary masks of craniovertebral skeletal structures per record, plus a full-body mask |
| Genotypes | wild-type (WT), heterozygous (HET) and homozygous (HOM), with a metadata table linking each record to its fish and genotype |
| Size | one zip, 1.2 GB |
| License | CC BY 4.0 |
The counts in this table are the record's own. The record does not name the gene behind the genotypes or the stain, so this page does not either. The authors' GitHub README gives the age of the larvae as 10 days post-fertilization.
Browse it in DataTorch
Dataset · datatorch/deep-fish-bone-zebrafish · 192 files
Deep-Fish-Bone zebrafish larval skeleton segmentation
Deep-Fish-Bone: brightfield microscopy of zebrafish larvae (ventral view) with pixel-level annotations of 25 developing craniovertebral skeletal structures. 190 annotation records from 34 fish (WT, HET and HOM genotypes), 2576x1932 PNG images, with 4,395 skeletal polygon annotations plus 190 supporting full-body outlines, converted from the official per-structure binary masks. Genotype, fish id and the authors' grouped CV fold are kept as file metadata. License: CC BY 4.0. Source: https://zenodo.org/records/23125004. Please cite: Kumar, N., Raman, R., Muller, M., Maree, R., & Geurts, P. (2026). Deep-Fish-Bone: Brightfield Microscopy Dataset for Multi-Label Segmentation of Craniovertebral Skeletal Structures in Zebrafish Larvae (Version V1.0) [Dataset]. Zenodo. https://doi.org/10.5281/zenodo.23125004
Open →

The hosted copy holds all 190 images, each 2576 x 1932 pixels, with 4,585 annotations in 26 labels: the 25 structures under the README's names, and full_mask for the body outline. Each mask was converted to polygons so you can open an image, see every structure by name and correct an outline. Each file's metadata keeps the record id, the fish id, the genotype and the authors' cross-validation fold, so you can filter by fish or by genotype.
The import checked every file. What it found is in errata.txt in the project, and four points matter if you train on this data:
- Three likely mislabelled masks. In records 163428646, 163434162 and 163434207, one mask appears under two structure names (Ch2 and En2, Br2a and En1, Br1b and En2). They are imported unchanged.
- Double annotations. 136 of the 190 records are two annotators' labels of the same 68 images. Where the two differ, their masks overlap at a median IoU of 0.69 by our measurement. Each pair stays within one fish and one fold.
- Empty masks. 355 of the 4,750 structure masks are empty and produce no annotation, most of them Br2a and Br2b.
- Genotype written in the image. 50 images carry the genotype as red text in the lower-left corner. Crop or mask that corner before training anything that predicts genotype.
How to split it
Split by fish. With 34 fish behind 190 records, and 68 images present twice, a random split by image puts the same animal, and often the same photograph, on both sides. The authors' own evaluation uses five folds grouped by fish, with three folds for training, one for validation and one for testing in each rotation. The archive itself ships no split. The folds are in the authors' repository, and the hosted copy stores them per file as cv_base_fold.
What people use it for
Training and benchmarking multi-label segmentation where structures are small, overlap and are sometimes absent, and measuring skeletal structures across genotypes without outlining each one by hand. The double annotations make it a rare set where a model's score can be read against how well two people agree. For reference, the authors' README reports a mean Dice of about 0.80 for their U-Net++ baselines.
Source and citation
Source: https://zenodo.org/records/23125004 (read 2026-11-13). Cite: Kumar, N., Raman, R., Muller, M., Maree, R., & Geurts, P. (2026). Deep-Fish-Bone: Brightfield Microscopy Dataset for Multi-Label Segmentation of Craniovertebral Skeletal Structures in Zebrafish Larvae (Version V1.0) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.23125004. The README also asks you to cite the accompanying manuscript, whose publication details were not yet available. Code, folds and trained models are at github.com/navdeepkaushish/Deep-Fish-Bone.
Outline your own structures
Label microscopy images with your team, review each other's work and export COCO, in the browser.
Frequently asked questions
What does Deep-Fish-Bone label?
In each image, 25 skeletal structures of the larval head and anterior spine, each as its own binary mask, plus one mask of the whole body. The structures go by short codes in the dataset's README, for example P, N, Op1 and Op2, Cl1 and Cl2, Br1a and Br1b, and VC for the vertebral column.
How should I split it for training?
By fish, never by image. The 190 records come from only 34 fish, and 136 of the records are two annotators' labels of the same 68 images. The authors publish a 5-fold split grouped by fish in their GitHub repository, and the hosted copy keeps each file's fold in its metadata.
Are all 25 structures present in every image?
No. A structure that had not formed or could not be seen has an empty mask. Br2a and Br2b are the main case, which the README documents as present in 63 and 67 of the 190 records. Our import counted 355 empty masks out of 4,750.
Why are some images in the dataset identical?
68 images were annotated twice, by two annotators working independently, and the README says this is intentional. It lets you measure how much two people agree on a structure before judging a model against either of them.
What is the license?
Creative Commons Attribution 4.0 International (CC BY 4.0), stated on the Zenodo record and in the README inside the archive. Cite the Zenodo record, DOI 10.5281/zenodo.23125004.
Open the hosted copy on DataTorch.
Browse the files in your browser, then download the dataset with a free account.
Related
