Nucleus instance segmentation (BBBC039)
imagingLeaderboard
Nucleus count MAE (trained from scratch)
The same mean absolute difference between predicted and annotated nucleus counts per test image, for the network trained from scratch.
Best in the catalogue: 6.200 (the best visible result here, not a state of the art). Ranks are the server's: ties share a rank. A ≠ marks a row whose n differs from the board's usual n (50). Floors are trivial baselines scored on the same items, shown unranked.
| # | Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|---|
| 1 | cell-imaging/monai | 6.200 best | [4.920, 7.540] | 50 | reproduced | unknown |
Secondary metrics (6) · supervised · context, not ranked
AP@0.75 (trained from scratch)
The same Cellpose / StarDist AP as AP@0.5, TP / (TP + FP + FN) per image after one-to-one matching at IoU >= 0.75, then the mean over the 50 test images.
| Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|
| cell-imaging/monai | 0.849 best | [0.816, 0.875] | 50 | reproduced | unknown |
AP@0.90 (trained from scratch)
The same Cellpose / StarDist AP as AP@0.5, TP / (TP + FP + FN) per image after one-to-one matching at IoU >= 0.90, then the mean over the 50 test images.
| Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|
| cell-imaging/monai | 0.575 best | [0.539, 0.612] | 50 | reproduced | unknown |
Split rate (trained from scratch)
Caicedo et al.'s split errors per annotated nucleus: the number of annotated nuclei covered by more than one predicted object (matches at IoU > 0.1), summed over the 50 test images, divided by their annotated nuclei.
| Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|
| cell-imaging/monai | 0.011 best | [0.008, 0.015] | 50 | reproduced | unknown |
Merge rate (trained from scratch)
Caicedo et al.'s merge errors per annotated nucleus: the number of predicted objects covering more than one annotated nucleus (matches at IoU > 0.1), counted once per predicted object, summed over the 50 test images, divided by their annotated nuclei.
| Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|
| cell-imaging/monai | 0.012 best | [0.008, 0.017] | 50 | reproduced | unknown |
Missed rate (trained from scratch)
Caicedo et al.'s missed errors per annotated nucleus: the number of annotated nuclei no predicted object matches at IoU > 0.7, summed over the 50 test images, divided by their annotated nuclei.
| Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|
| cell-imaging/monai | 0.097 best | [0.081, 0.117] | 50 | reproduced | unknown |
Extra rate (trained from scratch)
Caicedo et al.'s extra errors per annotated nucleus: the number of predicted objects matching no annotated nucleus at IoU > 0.7, summed over the 50 test images, divided by their annotated nuclei.
| Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|
| cell-imaging/monai | 0.044 best | [0.035, 0.054] | 50 | reproduced | unknown |
Protocol
What is measured. Finding every nucleus in a fluorescence image as a separate object (instance segmentation), including touching and dividing nuclei, on BBBC039 v1 (Caicedo et al., Cytometry A 2019): one Hoechst (DNA) field of view per well from 200 compounds of the BBBC022 Cell Painting screen in U2OS cells, 16-bit TIFF, 520 x 696 pixels, with about 23,000 nuclei outlined by hand.
Data and split. The official partition of the metadata archive is
used as is: the 50 images of test.txt are the test set and the 100 of
training.txt the training set; the 50 validation images are not used.
(exc) The test set is the whole official test split (50 images, 5,720
nuclei, 7 to 202 per image) rather than 100 items, and the training set
the whole training split (100 images): the dataset has no more, and the
official split keeps results comparable with published numbers.
Ground-truth masks encode touching nuclei with different colour indices;
every 8-connected component of one index is one nucleus (the decoding of
the dataset's reference code).
Zero-shot (ap50_zero_shot, count_mae_zero_shot). A generalist
segmenter (Cellpose, StarDist, ...) receives the raw 16-bit image and the
hint "nucleus" and returns one instance label map of the same size;
nothing is trained here. The count error uses the same maps.
Supervised (ap50_supervised). Frameworks with no pretrained weights
(a U-Net with an instance head, ...) are trained on the 100 training
images and their instance masks only, then predict the 50 test images.
Kept apart from zero-shot so that "trained on this benchmark" is never
ranked against "used as is".
Metrics. AP@0.5 is the Cellpose / StarDist definition (per image TP / (TP + FP + FN) after an optimal one-to-one matching at IoU >= 0.5, then the mean over images), not COCO's score-ranked AP; no confidence is needed. 95 % bootstrap interval over the test images, 1,000 resamples.
Caveats. Train and test images come from the same 18 BBBC022 plates (the official split is by image, not by plate); every model faces the same split. Cellpose's and StarDist's published generalist models were trained on collections that include parts of the Data Science Bowl 2018 (BBBC038), which overlaps a small fraction of BBBC039: their zero-shot numbers may include images seen in training (a known overlap, reported with the results).
Further metrics (metrics review). mean_f1_iou_zero_shot,
mean_f1_iou_supervised are the BBBC039 paper's headline (Caicedo et al.
2019): per image the F1 of nuclei matched one-to-one at IoU above 0.50,
0.55, ..., 0.90, averaged over the 9 thresholds, then the mean over
images. ap75_zero_shot, ap75_supervised and ap90_zero_shot,
ap90_supervised are the Cellpose AP at stricter IoU (>= 0.75, >= 0.9).
split_rate_zero_shot, split_rate_supervised, merge_rate_zero_shot,
merge_rate_supervised, missed_rate_zero_shot, missed_rate_supervised
and extra_rate_zero_shot, extra_rate_supervised count Caicedo's error
types per annotated nucleus, pooled over images: split (a true nucleus
covered by more than one prediction) and merge (a prediction covering more
than one true nucleus) at IoU > 0.1, missed (a true nucleus without a
prediction) and extra (a prediction without a true nucleus) at IoU > 0.7,
as in their code; lower is better. count_mae_supervised completes the
count error of the zero-shot protocol. Caicedo's F1 and errors use IoU >
t, the Cellpose AP IoU >= t (each as its reference code).
Data
bbbc039_images: urlhttps://data.broadinstitute.org/bbbc/BBBC039/images.zip, licence CC0-1.0bbbc039_masks: urlhttps://data.broadinstitute.org/bbbc/BBBC039/masks.zip, licence CC0-1.0bbbc039_metadata: urlhttps://data.broadinstitute.org/bbbc/BBBC039/metadata.zip, licence CC0-1.0
Subset
- seed 20261006
- test: all item(s)
- train: all item(s)
- results at
atlas-full-v1use subset71d22c95debb3938
Metrics
ap50_zero_shot— AP@0.5 (zero-shot); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplescount_mae_zero_shot— Nucleus count MAE (zero-shot); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesap50_supervised— AP@0.5 (trained from scratch); protocol supervised; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplesmean_f1_iou_zero_shot— Mean F1, IoU 0.50-0.90 (zero-shot); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplesap75_zero_shot— AP@0.75 (zero-shot); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplesap90_zero_shot— AP@0.90 (zero-shot); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplessplit_rate_zero_shot— Split rate (zero-shot); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesmerge_rate_zero_shot— Merge rate (zero-shot); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesmissed_rate_zero_shot— Missed rate (zero-shot); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesextra_rate_zero_shot— Extra rate (zero-shot); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplescount_mae_supervised— Nucleus count MAE (trained from scratch); protocol supervised; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesmean_f1_iou_supervised— Mean F1, IoU 0.50-0.90 (trained from scratch); protocol supervised; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplesap75_supervised— AP@0.75 (trained from scratch); protocol supervised; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplesap90_supervised— AP@0.90 (trained from scratch); protocol supervised; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamplessplit_rate_supervised— Split rate (trained from scratch); protocol supervised; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesmerge_rate_supervised— Merge rate (trained from scratch); protocol supervised; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesmissed_rate_supervised— Missed rate (trained from scratch); protocol supervised; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamplesextra_rate_supervised— Extra rate (trained from scratch); protocol supervised; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamples
Sample
Two test images (input: a 16-bit Hoechst image, 520 x 696; expected output: an instance label map of the same size, 0 = background):
| item_id | BBBC022 plate | annotated nuclei |
|---|---|---|
bbbc039-IXMtest_A09_s1_w1CE70AD49-290D-4312-82E6-CDC717F32637 | 20630 | 156 |
bbbc039-IXMtest_A12_s7_w1EAEEA614-51ED-43B3-A4FF-088730911E4C | 20641 | 69 |
A perfect prediction outlines every nucleus once (AP@0.5 = 1, count error 0); merging two touching nuclei costs one false positive and two false negatives at IoU 0.5.