Mammography dataset
Only a handful of open mammography sets contain the fine-grain BI-RADS descriptors you are thinking of mining (shape, margin, morphology, distribution, etc.).
- CBIS-DDSM and BCDR explicitly expose them in CSV metadata.
- VinDr-Mammo and RSNA-SMBC stop at breast-level labels (plus lesion boxes in RSNA) – no descriptor columns are present.
- Legacy sets such as INbreast and MIAS provide precise contours or ROI centres, but not the descriptor vocabulary.
| Dataset (public) | Year | Images / exams | Annotation level | BI-RADS descriptor columns? |
|---|---|---|---|---|
| RSNA-SMBC (Kaggle) | 2022 | 54 k images, 8 k pts | Breast-level CSV: cancer, density, BIRADS, invasive, plus optional finding_annotations.csv with bounding-boxes |
No shape / margin / calc-type fields (github.com, kaggle.com) |
| VinDr-Mammo | 2022 | 20 k images, 5 k exams | Breast- & finding-level CSV; findings boxed for mass, calcification, asymmetry, etc. | No morphology descriptors (BI-RADS > 2 findings only) |
| CBIS-DDSM | 2017 | 10 239 images, 2 620 studies | ROI masks + CSV per lesion | Yes – mass_shape, mass_margin, calc_type, calc_distribution, breast_density, overall BI-RADS and pathology (nature.com, cancerimagingarchive.net) |
| INbreast | 2011 | 410 FFDM images | Polygon contours in XML | No descriptor fields; only lesion type (mass, calc, etc.) (biokeanos.com) |
| MIAS | 1994 | 322 digitised images | Centre + radius for ROI | Limited: abnormality class (CIRC, SPIC, CALC, …) and background density (F,G,D) (toolbox.google.com) |
| BCDR-FM / BCDR-DM | 2012- | 7 300+ images | Segmentation masks + extensive clinical spreadsheet | Yes – BI-RADS features (shape, margin, density, distribution) and patient history (bcdr.ceta-ciemat.es) |
| OPTIMAM (application-only) | 2020 | 150 k+ images | Boxes & rich BI-RADS descriptors | Restricted access, but descriptors are provided (pubs.rsna.org) |
What this means for your extraction pipeline
- Leverage CBIS-DDSM/BCDR for descriptor mining
Both sets already hold the structured fields you need; you can prototype directly against their CSVs and masks. CBIS-DDSM filesmass_case_description_*.csvandcalc_case_description_*.csvcontain the canonical columns (mass_shape,mass_margin,calc_distribution,calc_type, etc.) in plain text (nature.com). - RSNA & VinDr – boxes only
These large modern FFDM sets are excellent for detection tasks but lack explicit BI-RADS sub-descriptors. If you need them you will have to:- train a multi-head model to predict descriptors from the cropped box, or
- run a semi-automatic labelling pass with experts and add your own columns.
- INbreast & MIAS – good for segmentation, not semantics
Polygon accuracy is high, so they are useful for training shape-aware detectors. But because descriptors are missing you cannot harvest shape/margin text without re-reading images. - Consider harmonisation early: If you plan to fuse datasets, create an internal schema (e.g.,
mass_shape_code ∈ {round, oval, irregular, spiculated},calc_morphology ∈ {amorphous, coarse_het, fine_lin, …}) and map each dataset’s native labels (where present) to it. FillNULLfor RSNA/VinDr rows until your own model or radiologist adds the data. - Automatic descriptor inference
For the descriptor-poor sets you could:- fine-tune a vision-transformer on CBIS-DDSM descriptor labels, then apply it to RSNA/VinDr crops (domain shift mitigation needed);
- or adopt large vision–language models that generate BI-RADS text from an ROI, using CBIS-DDSM/BCDR as supervised prompts.
Practical next steps
- Start with CBIS-DDSM – parse the CSVs and confirm that the descriptors meet your desired granularity.
- Design a unified pandas schema and an
extract_descriptors()function that reads whichever columns exist, normalises codes, and stores them in your database. - For datasets lacking descriptors, plan an active-learning loop: sample uncertain ROIs, have a radiologist label the BI-RADS attributes, retrain, repeat.
- Keep track of licence terms (RSNA and OPTIMAM are research-only; BCDR requires registration).
This approach lets you bootstrap a descriptor-rich corpus quickly and scale it across the larger, descriptor-poor datasets as your model (or annotation budget) matures.