CoolFace
Datasetpublic

milkyroad/core

Cystoscopy Core Benchmark Raw-source core dataset for cystoscopy image and video classification. Contains cystoscopy videos with bounding-box annotations, and images with lesion-level labels, grades, and stages. Designed as the source-of-truth from which derived training datasets (v1, v2, G) are built. Sources The dataset aggregates three publicly available cystoscopy datasets: Source Origin Modality Patients Images/Frames Type B B_dataset Video clips… See the full description on the dataset page: https://huggingface.co/datasets/milkyroad/core.

sourceHugging Facecc-by-sa-4.0updated 21d agoView on Hugging Face
0likes363downloads
Dataset Card

Cystoscopy Core Benchmark

Raw-source core dataset for cystoscopy image and video classification. Contains cystoscopy videos with bounding-box annotations, and images with lesion-level labels, grades, and stages. Designed as the source-of-truth from which derived training datasets (v1, v2, G) are built.

Sources

The dataset aggregates three publicly available cystoscopy datasets:

SourceOriginModalityPatientsImages/FramesType
BB_datasetVideo clips (CLARA+CHROMA / white light)30173 videos (2448 annotated frames)Track clips with bounding boxes
CCystoDSStill images (WLC / BLC)1608067 imagesHistopathology-confirmed stills
DLazo et al.Still images (WLI / NBI)221754 imagesHistopathology-confirmed stills

Dataset Structure

cystoscopy-core/
├── data/
│   ├── image_annotations.parquet   # 12,269 rows: per-image labels, grade, stage, segmentation
│   ├── video_annotations.parquet   # 173 rows: per-video metadata (histological type, grade, stage)
│   └── video_frame_boxes.parquet   # 69,108 rows: per-frame bounding boxes (x,y,w,h)
├── B/videos/                        # 173 .mp4 video clips (1920x1080)
├── C/images/<pid>/                  # 8067 .png images organized by patient
└── D/images/<pid>/                  # 1754 .png images organized by patient

Annotation Schemas

image_annotations.parquet (12,269 rows)

Per-image annotation table covering all C images, all D images, and B video frames selected for the G-derived benchmark.

ColumnTypeDescription
source_datasetstringB, C, or D
patient_idintNormalized patient ID (B: 1–30, C: 31–190, D: 191–212)
lesion_idstringLesion grouping (B: B_<track>_<idx>, C: L0–L6/Multifocal, D: D_<case>_pt<pt>_<tissue>)
filenamestringImage filename (C/D only; B uses videoid + frameidx)
labelint0 = malignant tumor (MT), 1 = non-malignant lesion (NML), 2 = non-ROI (NROI)
gradestringlow, high, or null (inferred from histological type / subclass / tissue type)
stagestringTa, T1, Tis, T2, or null (D has no stage)
subclassstringSource-native subclass (C: LowGradePapillary, HighGradePapillary, CIS, etc.)
subclass2stringSecondary reclassification (C only; 16 rows)
morphologystringC: Papillary, Non-papillary, etc.
visitfloatC: visit number
multifocalstringC: multifocal flag
imaging_typestringUnified modality (CLARA + CHROMA, white light, WLC, BLC, WLI, NBI)
segmentationlistPolygon segmentation masks (C only; 768 of 8,067 images)
video_idstringB: video clip identifier (e.g., P017cystoscopytrack_077)
frame_idxfloatB: frame index within video clip

video_annotations.parquet (173 rows)

ColumnTypeDescription
video_idstringVideo clip identifier
patient_idintNormalized patient ID
histological_typestringpTaLG, pT1LG, pTaHG, pT1HG, pT2HG, pT2, PUNLMP
light_modestringCLARA + CHROMA or white light
num_framesintActual frame count of the .mp4 file (not original cystoscopy length)
n_boxesintNumber of bounding boxes in this video
stagestringTa, T1, T2 (derived from histological_type)
gradestringlow, high, or null (pT2 and PUNLMP → null)
imaging_typestringSame as light_mode for B

videoframeboxes.parquet (69,108 rows)

ColumnTypeDescription
video_idstringVideo clip identifier
patient_idintNormalized patient ID
track_idintTrack number within patient
frameintFrame index within video clip (0-indexed)
labelstringBox label (all "tumor"; class comes from video-level histological_type)
xtl, ytl, xbr, ybrfloatBounding box coordinates (pixels, 1920x1080)
occludedintOcclusion flag
outsideintOutside frame flag
keyframeintKeyframe flag
z_orderintZ-order for overlap resolution

Label Distribution (image_annotations)

LabelIDCount
Malignant Tumor (MT)04,512
Non-Malignant Lesion (NML)1355
Non-ROI (NROI)27,402
Total12,269

Grade Distribution

GradeCount
Low2,633
High1,888

Stage Distribution

StageCount
Ta2,017
T11,124
Tis71
T2261

Histological Type Distribution (B videos)

TypeCount
Urothelial carcinoma pTaLG77
Urothelial carcinoma pT1LG38
Urothelial carcinoma pT1HG27
PUNLMP12
Urothelial carcinoma pTaHG8
Urothelial carcinoma pT2HG7
Urothelial carcinoma pT24

Patient IDs

Normalized mapping (1-indexed):

  • —B: patients 1–30 (30 patients, 173 video track clips)
  • —C: patients 31–190 (160 patients, 8067 images)
  • —D: patients 191–212 (22 patients, 1754 images)

Licensing

This is a mixed-license dataset:

  • —Source B: CC BY 4.0
  • —Source C (CystoDS): CC BY 4.0
  • —Source D (Lazo et al.): CC BY-SA 4.0

The combined dataset is distributed under CC BY-SA 4.0 (the most restrictive component license).

Citation

If you use this dataset, please cite the original source datasets.

Usage

python
from datasets import load_dataset
from huggingface_hub import hf_hub_download

# Load annotation tables
ds = load_dataset("milkyroad/cystoscopy-core")

# Download a specific image
hf_hub_download(
    repo_id="milkyroad/cystoscopy-core",
    filename="C/images/P031/d6df5610.png",
    repo_type="dataset",
)

# Download a specific video
hf_hub_download(
    repo_id="milkyroad/cystoscopy-core",
    filename="B/videos/P000_cystoscopy_track_000.mp4",
    repo_type="dataset",
)