信息速览
CBIS-DDSM — 乳腺钼靶 CAD 研究标准评测集 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | CBIS-DDSM(乳腺X线数字化精选数据集) |
| 英文全称 | Curated Breast Imaging Subset of the Digital Database for Screening Mammography |
| 别名/简称 | CBIS-DDSM、Curated DDSM、TFDS 名称 curated_breast_imaging_ddsm |
| 疾病分类 | ICD-11:2C60 乳腺恶性肿瘤 / 2E65 乳腺原位癌 / 2F30 乳腺良性肿瘤 |
| SNOMED CT | 254837009 乳腺恶性肿瘤 / 441652007 乳腺原位肿瘤 / 399264000 乳腺肿块(详见 §2) |
| 数据模态 | 乳腺钼靶 X 线(屏片胶片数字化扫描,16-bit 灰度 DICOM) |
| AI 任务类型 | 良恶性分类、病灶检测与分割、BI-RADS 分级预测、钙化/肿块形态分析 |
| 样本总数 | 1,566 例受试者 / 3,568 个标注异常记录 / 10,239 张 DICOM 图像 |
| 数据大小 | 163.51 GB(TCIA 全量 DICOM) |
| 数据格式 | DICOM(完整钼靶图 / 裁剪图 / ROI 掩膜三类)+ CSV 标注表 |
| 许可证 | CC BY 3.0 + TCIA 数据使用政策 |
| 访问级别 | 开放(无需注册,NBIA Data Retriever 直接下载) |
| DUO 标签 | NRES(无限制使用;CC BY 3.0 要求注明数据出处) |
| 语言 | 英文 |
| 首发日期 | 2016 年(TCIA 上线) |
| 最后更新 | 2017-09-14(TCIA 集合层面,此后停止更新) |
| 发布机构 | 斯坦福大学(编制)/ The Cancer Imaging Archive(托管) |
| 官方主页 | https://wiki.cancerimagingarchive.net/display/Public/CBIS-DDSM |
| 下载地址 | https://wiki.cancerimagingarchive.net/display/Public/CBIS-DDSM(NBIA manifest + 4 个 CSV) |
| DOI | 10.7937/K9/TCIA.2016.7O02S9CY(数据)/ 10.1038/sdata.2017.177(论文) |
| 引用次数 | 817+(Semantic Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 提供 ROI 掩膜、官方 CSV 划分与病理金标签;扣分项:CSV 路径与实际文件名错位、80 张图尺寸不匹配、患者级泄漏需自行处理 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、BI-RADS 分级与临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(三类图像口径、CSV 字段映射)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与斯坦福大学、The Cancer Imaging Archive(TCIA)、Fred Hutchinson Cancer Center 无任何商业利益关联。本页面不销售 CBIS-DDSM 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CBIS-DDSM 在 TCIA 以 CC BY 3.0 开放,使用前请阅读 TCIA Data Usage Policy,并在任何成果中以数据 DOI(10.7937/K9/TCIA.2016.7O02S9CY)与论文 DOI(10.1038/sdata.2017.177)注明出处。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? CBIS-DDSM 是斯坦福大学团队从经典 DDSM 乳腺癌筛查数据库中精选、重标注后发布的乳腺钼靶 AI 研究子集,2016 年经 The Cancer Imaging Archive(TCIA)开放。它包含 1,566 例受试者的 3,568 个病灶级异常(钙化 753 例 + 肿块 891 例),每个异常配有三类图像——完整钼靶图、病灶裁剪图与 ROI 掩膜——并带 BI-RADS 分级、乳腺密度和活检病理良恶性金标签。
为什么重要? DDSM 是史上规模最大的公开屏片钼靶研究库之一(2,620 例),但原始 LJPEG 编码需要 1993 年的专用解码器、无病灶掩膜、标注陈旧。CBIS-DDSM 将其全程无损转为 DICOM、跨扫描仪统一光学密度、重绘 ROI 并挂接病理标签,让这批 1990 年代的影像在 2017 年论文发表后重新成为钼靶 AI 论文引用最广的标准评测集之一——数据 DOI 页面记录 57.9k 次浏览与 91 次数据引用,论文引用 817+(截至 2026-09)。
我能用它做什么? 训练和评测良恶性分类、病灶检测与分割模型;研究 BI-RADS 分级与病理结论的关系;做钙化/肿块形态学分析;构造弱监督与半监督学习基准。两点必须先知道:官方划分按异常记录而非患者划分,直接套用存在患者级数据泄漏(§6.5 坑点 1);CSV 中的图像路径与实际文件名不一致,需要先做一次路径重映射(§6.5 坑点 2)。
§1.1 技术摘要
CBIS-DDSM 的编制流程可以概括为「筛选—转码—标准化—重标注」四步。斯坦福团队从 DDSM 原库中筛出带可复现异常的病例,由受训乳腺影像复核人员剔除 254 张无法清晰见到肿块的图像;随后修改 PVRG-JPEG 编解码器编译,把 DDSM 原始的 8-bit LJPEG 无损解码为 16-bit 灰度,先统一为 TIFF 再封装为 DICOM,全程无有损压缩;转换过程中将像素值映射为 64-bit 光学密度值完成跨扫描仪标准化,并截断至 0.05–3.0 的有效区间;最后由乳腺影像专业人员重绘 ROI 分割掩膜、更新边界框,并将病理诊断回填到训练集记录。数据以 8 个 NBIA manifest 子集包(Mass/Calc × Train/Test × 完整图/裁剪图+掩膜)加 4 个 CSV 标注表的形式发布在 TCIA,总计 10,239 张 DICOM 图像、163.51 GB。数据规模存在三个口径:受试者 1,566 人、异常记录 3,568 条(CSV 行)、完整钼靶图像 3,103 张,三者不可混用,详见 §3.2。
§1.2 战略价值
维度一:25 年算法进化的可回溯基线。 DDSM 发布于 1997 年,是计算机辅助检测(CAD)研究的第一代公共基准;CBIS-DDSM 在保留原始影像物理特性的前提下完成了现代化封装,使 2017 年之后的方法可以与更早文献在相近数据上对话。对需要长时间跨度实验史的团队(如撰写综述、复现经典方法、研究数据集本身的影响),CBIS-DDSM 几乎是唯一选择——INbreast(2012 年)之后的现代数据集缺乏这条时间纵深。
维度二:病灶级三层标签体系。 每条异常记录同时携带三张图像(完整图、裁剪图、二值 ROI 掩膜)和三层语义标签(BI-RADS 评估级、subtlety 可见度评分、病理良恶性金标准)。这使得同一个数据集可以支撑分类(用裁剪图)、检测(用完整图 + 边界框)、分割(用 ROI 掩膜)和标签关系研究(BI-RADS vs pathology)四类任务,是构建多任务基准的低成本起点。
维度三:零门槛获取与宽松许可。 CC BY 3.0 授权、无需注册、无需签署协议,NBIA 客户端直接下载即可使用。与申请审核制的临床数据集(如 MIMIC 系列需 CITI 培训)相比,CBIS-DDSM 适合作为教学、课程作业与快速原型验证的首选钼靶语料;商用场景下仅需满足 CC BY 署名要求。
维度四:标注经济性。 每条记录自带掩膜、边界框与三层标签,新增一条自标注数据的成本可以压缩到「校对已有掩膜」而非「从零画框」。对半监督、弱监督与主动学习研究而言,这意味着可以在掩膜置信度分层的基础上设计标注预算——用 1,566 例受试者的既有标注撬动更大规模的标注迭代,是多数纯原始影像库不具备的条件。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态/设备 | 标注体系 | 与 CBIS-DDSM 的差异化定位 |
|---|---|---|---|---|
| CBIS-DDSM | 1,566 例受试者 / 10,239 张 DICOM | 屏片胶片数字化(1990 年代) | 病灶级 ROI 掩膜 + BI-RADS + 活检病理 | 屏片时代金标准,三类标签齐全,零门槛获取 |
| INbreast | 115 例 / 410 图 | 全数字数字化钼靶(FOV 33 cm) | BI-RADS + 密集像素级掩膜 | 设备最新、掩膜精细,但规模小 |
| VinDr-Mammo | 5,000 例检查 / 20,000 图 | 现代数字化钼靶 | 六级 BI-RADS,六名放射科医师交叉标注 | 现代人群筛查分布,大规模一致性标注 |
| RSNA 2023 挑战赛 | 11,813 例患者 / 54,706 图 | 数字化钼靶 | 恶性 + density,竞赛专用 | 目标检测赛题,规模最大,图像仅可经竞赛获取 |
| CMMD | 1,775 例患者 | 数字化钼靶 | 良恶性 + 分子分型(Luminal 等) | 中国人群 + 影像-分子关联 |
| EMBED | 3.4M 张图像 | 现代数字化钼靶 | BI-RADS + 病理 + EHR 关联 | 超大规模、临床全语境,需数据使用协议 |
§1.4 版本时间轴
| 时间 | 事件 | 说明 |
|---|---|---|
| 1997-1998 | DDSM 原库发布 | Heath 等建立屏片钼靶数字化研究库,2,620 例,LJPEG 编码 |
| 2016 | CBIS-DDSM 上线 TCIA | 数据 DOI 10.7937/K9/TCIA.2016.7O02S9CY;斯坦福团队完成筛选、转码、重标注 |
| 2017-09-14 | TCIA 集合最后更新 | 此后官方数据层面停止更新 |
| 2017-12-19 | Scientific Data 论文发表 | Sawyer Lee 等,Sci Data 4:170177(2017-10-09 接收) |
| 2019 起 | TensorFlow Datasets 收录 | curated_breast_imaging_ddsm:patches 配置 train 49,780 / val 5,580 / test 9,780(224×224,5 类) |
注意:TFDS 的 patches 配置沿用 Shen 等(2017)的采样方案,其 65,140 个 patches 是 patch 级口径,与本条目 §3.2 的病灶/图像口径没有直接换算关系——引用时必须注明使用的是哪一套。
§1.5 典型应用场景
- 良恶性分类基准评测:用裁剪图 + 病理标签快速构建二分类 baseline,与 §8.1 排行榜直接对照。
- 病灶检测与分割:完整图 + ROI 掩膜训练 Mask R-CNN / U-Net 类模型,掩膜可兼作弱监督先验。
- BI-RADS 与病理关系研究:3,568 条记录同时带评估级与病理结论,适合研究分级一致性与误分类代价。
- 预处理消融研究:同一物理影像存在光学密度标准化前后可对照的转换链,适合研究灰度归一化对模型的影响。
- 教学与课程实验:CC BY 3.0、零注册门槛,医学影像课程的标准教材数据集。
- 主动学习与弱监督研究:以掩膜置信度与 subtlety 评分构造标注成本模型,迭代扩充自有标注。
§2 医学背景
§2.1 ICD-11 编码映射
CBIS-DDSM 的病理标签覆盖乳腺肿瘤良恶性判读的三大去向。ICD-11 采用 MMS 分册编码:
| 概念 | ICD-11 编码 | 中文名称 | 在数据集中的体现 |
|---|---|---|---|
| 乳腺恶性肿瘤 | 2C60 | 乳腺恶性肿瘤 | pathology = MALIGNANT(1,367 张图像级记录) |
| 乳腺原位癌 | 2E65 | 乳腺原位癌 | 恶性标签中包含导管/小叶原位癌(DCIS/LCIS)病例 |
| 乳腺良性病变 | 2F30 | 乳腺良性肿瘤 | pathology = BENIGN / BENIGN_WITHOUT_CALLBACK(合计 1,736 张图像级记录) |
§2.1b SNOMED CT 映射
| 数据集标签 | 含义 | ICD-11 | SNOMED CT | 术语名称 |
|---|---|---|---|---|
| MALIGNANT | 经活检证实的恶性病变 | 2C60 | 254837009 | Malignant tumor of breast |
| BENIGN | 经活检证实的良性病变 | 2F30 | 399264000 | Mass of breast(乳腺肿块,良性病变主体) |
| BENIGN_WITHOUT_CALLBACK | 良性且无需召回随访 | — | 399264000 | 影像良性表现,未进入活检流程 |
| BI-RADS 0–5(assessment 字段) | 乳腺影像报告分级 | — | — | BI-RADS 评估类别(ACR 体系,SNOMED 无一一对应码) |
§2.2 疾病简介与流行病学
乳腺癌是全球女性最常见的恶性肿瘤:根据世界卫生组织 GLOBOCAN 2022 估计,全球每年新发女性乳腺癌约 230 万例、死亡约 67 万例(WHO 乳腺癌实况报道)。乳腺钼靶(X线乳腺摄影)是目前唯一被多项随机对照试验证实能降低乳腺癌死亡率的群体筛查影像手段,其核心读片对象是两类异常:微钙化(簇状分布的高密度点状影,导管原位癌的重要征象)与肿块(密度增高灶,需评估形状与边缘特征)。
数据集沿用 ACR 的 BI-RADS 分级体系(0–6 级)描述影像评估结论:0 级为评估不完整需补充检查,1 级阴性,2 级良性表现,3 级良性可能性大需短期随访,4 级可疑异常(再细分为 4A/4B/4C),5 级高度提示恶性,6 级为已证实的恶性。CBIS-DDSM 记录的评估集中在 2–5 级(图像级分布:4 级 1,544 / 5 级 532 / 3 级 429 / 2 级 357 / 0 级 239 / 1 级 2),与「拟行活检或已活检」的诊断性检查人群构成一致。
从任务难度看,两类异常的判读逻辑截然不同。微钙化的识别依赖高分辨率下点状高密度的形态与分布特征(BI-RADS 形态学词汇有 10 余种),对图像分辨率极其敏感,因此钙化轨道实验普遍在放大图或裁剪图上进行;肿块的判读则依赖边缘特征(毛刺状 vs 光滑)与密度对比,当肿块边界与周围腺体重叠时难度陡增——这正是 mass_shape / mass_margins 字段成为重要弱标签的原因。CBIS-DDSM 对两类异常分开维护 CSV 与 manifest 的设计,正是为了让钙化与肿块两条任务轨道可以独立评测、独立报告。
需要强调的是,CBIS-DDSM 反映的是 1990 年代屏片(screen-film)钼靶时代的诊断性人群:病例以活检证实或拟活检为主,恶性比例远高于普通筛查人群,且不包含现代全数字钼靶(FFDM)的影像特性(如低剂量、更高动态范围)。将其结论外推到现代筛查场景时必须经过外部验证(§7.3)。
§2.3 临床任务定义
| 任务 | 临床定义 | 数据集支撑 | 常见 AI 形式 |
|---|---|---|---|
| 筛查判读 | 无症状人群的常规钼靶读片,目标是高敏感性发现早期癌 | 影像 + BI-RADS | 分类/分级网络(注意人群偏倚,§7.1) |
| 诊断与良恶性判别 | 对拟活检异常评估恶性概率,决定随访或活检 | 病理金标签 + 裁剪图 | 裁剪图二分类(AUC 为主要指标) |
| 病灶检出与定位 | 在全图上定位钙化簇/肿块 | 完整图 + 边界框/掩膜 | 目标检测(mAP)或分割(Dice) |
| 分级辅助 | 预测 BI-RADS 评估类别 | assessment 字段(0–5) | 有序回归/多分类 |
| 形态学分析 | 钙化形态/分布、肿块形状/边缘的标准化描述 | calc_type、mass_shape、mass_margins | 多标签分类或描述生成 |
§2.4 患者人群画像
| 维度 | 描述 |
|---|---|
| 数据来源 | 美国 DDSM 原库多机构病例(屏片钼靶数字化) |
| 检查类型 | 诊断性/拟活检人群为主,非自然筛查人群 |
| 性别 | 女性(乳腺钼靶检查人群) |
| 年龄 | 官方 CSV 未提供年龄字段 |
| 种族/民族 | 官方未记录(公平性分析的硬约束,§7.5) |
| 标签金标准 | 活检病理(MALIGNANT/BENIGN)或影像随访结论(BENIGN_WITHOUT_CALLBACK) |
| 乳腺密度 | breast_density 1–4 四级(BI-RADS 密度分类的旧四分类口径) |
§2.5 临床价值与转化路径
CBIS-DDSM 对临床 AI 的价值体现在三个层面。其一,它是病灶级金标签最完整的公开钼靶库之一:病理结论直接来自活检报告,而非后续随访推断,使良恶性分类实验的标签噪声低于多数筛查队列。其二,ROI 掩膜与 BI-RADS/subtlety 字段共同构成了可解释性研究的素材——模型注意力与掩膜的重合度、subtlety 评分与错误率的关系都是文献中常用的分析维度。其三,屏片影像与现代 FFDM 之间的域差距使其成为域泛化与预处理鲁棒性研究的天然测试床:在 CBIS-DDSM 上训练、在 VinDr-Mammo 或 CMMD 上外部验证(反之亦然)是评估跨时代泛化能力的经典设计。
对产品团队的落地路径建议分两步走:先在 CBIS-DDSM 上以最低成本完成算法可行性验证与消融设计(数据零门槛、标签可信),再迁到携带现代设备与真实筛查分布的目标域数据集上微调与校准——直接跳过第二步等于把 1990 年代诊断人群的先验带入现代筛查流程,是最常见的落地事故之一。
§2.6 金标准表
| 任务/标签 | 划分方式 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|---|
| pathology(良恶性) | 按 CSV 行(异常记录)划分 train/test | 活检病理报告回填 | 斯坦福编制团队(链接病理结论) | 诊断金标准 |
| assessment(BI-RADS 0–5) | 同上 | 原始报告评估级数字化 | 原始读片放射科医师 | 回溯性专家标签 |
| ROI 掩膜/边界框 | 同上 | 重绘并更新边界框 | 乳腺影像专业人员复核 | 研究用参考标准(非病理级) |
| breast_density 1–4 | 同上 | 影像评估 | 原始判读 | 旧版四分类密度口径 |
| subtlety 3–5 | 同上 | 病灶可见度评分 | 编制团队 | 辅助难度标签 |
在进入数据规格之前,需要先明确一个关键事实:CBIS-DDSM 的样本统计存在受试者、异常记录、图像三个不同口径,官方文档与第三方统计经常混用——这正是下一章 §3.2 要解决的问题。
§3 数据集规格
§3.0 版本抉择矩阵
CBIS-DDSM 没有语义化版本号,但存在「TCIA 原始包 / TensorFlow Datasets / 社区镜像」三种获取形态。先按需求选形态再动手,能省掉 80% 的预处理工作:
| 你的需求 | 推荐获取形态 | 大小 | 理由 |
|---|---|---|---|
| 良恶性分类快速 baseline | TensorFlow Datasets curated_breast_imaging_ddsm(patches 配置) | 下载量随 tfds 缓存(约 10 GB 级) | 已切成 224×224 patches(train 49,780 / val 5,580 / test 9,780),5 类标签,开箱即训 |
| 病灶检测 / 分割研究 | TCIA 完整下载(8 个 manifest 全选) | 163.51 GB | 只有 TCIA 同时提供完整钼靶图 + 裁剪图 + 二值 ROI 掩膜 |
| 只复现肿块或钙化单任务 | 只下载对应 2-4 个 manifest + 2 个 CSV | 数十 GB | Mass-Training 与 Mass-Test 相互独立,可先跑通再补全 |
| 教学演示 / 课程作业 | 社区镜像(Kaggle 等) | 视镜像而定 | 免 NBIA Java 客户端;注意镜像版本与官方 CSV 的对应关系 |
| 需要与现代 FFDM 对比 | TCIA 原始 DICOM + 现代 FFDM 数据集组合 | 163.51 GB + 外部集 | 只有原始包保留光学密度标准化前后的完整物理信息 |
§3.1 模态详情
- 成像方式:乳腺钼靶 X 线摄影,源自屏片(screen-film)系统胶片,经商用扫描仪数字化。物理像素为光学密度(OD)采样值,而非现代探测器的线性灰度。
- 位深与编码:原始 8-bit LJPEG 经修改版 PVRG-JPEG 编解码器无损解码 → 16-bit 灰度 TIFF → 封装为 DICOM(全程无有损压缩)。
- 光学密度标准化:像素值映射为 64-bit OD 值完成跨扫描仪统一,有效区间截断至 0.05–3.0 后再映射回 16-bit 灰度,这是不同扫描仪影像可以在同一模型下混合训练的关键。
- 灰度语义提示:原始像素是光学密度的采样而非现代探测器的线性灰度,低像素值表示高吸收(黑胶片上的高密度影),做「亮度越高越好」类直觉假设的模型(如部分 ImageNet 迁移初始化)需先验证灰度方向,避免学反。
- 三类图像变体:每个异常记录对应 full mammogram(完整图)、cropped(以病灶为中心的裁剪图)、ROI mask(与 cropped 对应的二值掩膜,病灶区为前景)。
- 视图:CC(头尾位)与 MLO(内外斜位)两个标准投照体位。
§3.2 按口径样本数表
本数据集最重要的规格事实:所有流行数字都是对的,但口径不同。下表一次说清(全部数字可交叉验证,合计自洽):
| 口径 | 数量 | 构成 | 使用场景 |
|---|---|---|---|
| 真实受试者 | 1,566 人 | 官方统计;DICOM 元数据因一人多 ID 呈现 6,671 个 patient ID | 患者级划分、泄漏讨论 |
| 异常病例(case 级) | 1,644 例 | 钙化 753 + 肿块 891 | 报告「病例数」 |
| 异常记录(CSV 行) | 3,568 条 | mass train 1,318 / mass test 378 / calc train 1,546 / calc test 326 | 训练循环、官方划分单位 |
| 完整钼靶图像 | 3,103 张 | train 2,458 + test 645;MLO 1,643 + CC 1,460;左乳 1,592 + 右乳 1,511 | 图像级统计(BI-RADS/pathology 分布均为此口径) |
| ROI / cropped 图像 | 3,568 张 | train 2,864 + test 704(与 CSV 行一一对应) | 分割/分类 |
| DICOM 文件总数 | 10,239 张 | full + cropped + ROI 三类合计 | 磁盘与下载规划 |
一名受试者可贡献多条异常记录(同一乳腺同一视图多病灶,或双侧/双视图异常),因此 3,568 条记录 ≠ 3,568 名患者;反之 DICOM 元数据把每个复合 ID 当作独立患者,6,671 ≠ 1,566。两类混淆都见过真实复现事故(§6.5 坑点 1、坑点 4)。
§3.3 数据格式表
| 内容 | 格式 | 说明 |
|---|---|---|
| 图像(三类) | DICOM(.dcm,16-bit 灰度,MONOCHROME2) | 封装 TIFF 转换而来;尺寸因原图而异 |
| 下载清单 | .tcia manifest ×8 | 需 NBIA Data Retriever 解析;Mass/Calc × Train/Test × full / cropped+ROI |
| 标注表 | CSV ×4 | calc/mass × training/test;一行一条异常记录 |
| 现代封装 | TensorFlow Datasets(tfds) | curated_breast_imaging_ddsm,patches 配置 5 类标签 |
| 尺寸不匹配官方清单 | CSV(mismated 对应表) | 官方随包提供 full 与 ROI 尺寸不匹配的图像信息表 |
8 个 manifest 与 4 个 CSV 的对应关系:
| manifest 组 | 覆盖图像 | 配套 CSV |
|---|---|---|
| Mass-Training ×(Full / Cropped+ROI) | 肿块训练集完整图、裁剪图与掩膜 | mass_case 训练 CSV(1,318 行) |
| Mass-Test ×(Full / Cropped+ROI) | 肿块测试集同上三类 | mass_case 测试 CSV(378 行) |
| Calc-Training ×(Full / Cropped+ROI) | 钙化训练集同上三类 | calc_case 训练 CSV(1,546 行) |
| Calc-Test ×(Full / Cropped+ROI) | 钙化测试集同上三类 | calc_case 测试 CSV(326 行) |
每条 CSV 记录的三条路径列同时横跨两个 manifest 组:完整图路径指向 Full 组,裁剪图与掩膜路径指向 Cropped+ROI 组——这意味着做分类只需要下载 2 个 manifest,做检测/分割才需要全量 8 个。
§3.4 存储大小
- TCIA 全量 DICOM:163.51 GB(10,239 张)。
- 建议:预留 350 GB 磁盘(原始下载缓存 + 解压副本 + 转码中间产物),NBIA 客户端下载不会自动清理临时目录。
- 4 个 CSV 本体很小(数 MB 级),但路径修复所需的映射脚本输出建议单独落盘(§6.3)。
§3.5 标注方式
- ROI 掩膜:人工重绘。编制团队对 DDSM 原有区域标记进行了复核与更新,重绘分割掩膜并更新边界框。
- 病理标签:训练集记录回填活检病理诊断(MALIGNANT / BENIGN),测试集标签由官方保持独立;BENIGN_WITHOUT_CALLBACK 表示影像评估为良性且无需召回随访。
- BI-RADS 与形态学:assessment、calc type/distribution、mass shape/margins 沿用原始诊断报告的结构化抽取。
§3.6 标注者资质与一致性
数据由斯坦福大学乳腺影像方向的专业人员主导编制,剔除流程(254 张无法清晰见到肿块的图像)由受训乳腺影像复核人员完成;论文明确说明了复核角色。官方未公布多标注者一致性指标(如 kappa),掩膜为单标注参考标准——需要高一致性掩膜的项目应组织二次标注(§6.5 坑点 7 相关)。
§3.7 采集周期
影像为 DDSM 原库在 1990 年代屏片时代采集的病例(DDSM 于 1997 年发布),CBIS-DDSM 编制与上线在 2016 年,2017-09-14 完成 TCIA 集合层面的最后更新,此后官方不再更新。
§3.8 地域覆盖
美国多机构来源(DDSM 原库汇集多家美国医疗机构的检查胶片)。具体机构清单随 DDSM 原始文档发布,CBIS-DDSM 未按机构拆分子集。
§3.9 设备规格
影像来自多台不同商用扫描仪对屏片胶片的数字化,这也是编制方将光学密度统一到 0.05–3.0 区间的直接动因(扫描仪间灰度响应差异大)。DICOM 头保留转换后的统一参数;若需逐图溯源扫描仪型号,需回溯 DDSM 原库文档。
§3.10 深度溯源链
| 层级 | 主体 | 时间 | 角色 |
|---|---|---|---|
| L1 | University of South Florida(DDSM,Heath 等) | 1997-1998 | 原始胶片采集、数字化与发布 |
| L2 | 斯坦福大学(Sawyer Lee 等) | 2016 | 筛选、转码、光学密度标准化、重绘 ROI、回填病理 |
| L3 | The Cancer Imaging Archive(TCIA) | 2016 上线,2017-09-14 更新 | 托管、去标识化、CC BY 3.0 发布(DOI 10.7937/K9/TCIA.2016.7O02S9CY) |
| L4 | Scientific Data 论文(10.1038/sdata.2017.177) | 2017-12-19 | 编制方法学的同行评审背书 |
| L5 | TensorFlow Datasets / 社区镜像 | 2019 起 | 二次封装(patches 配置),非官方口径需谨慎引用 |
§4 数据结构
§4.0 目录树
NBIA 下载的原始目录含日期中间层与复合患者 ID,CSV 中的路径与实际文件名不一致。下述是建议整理后的工作目录结构(树中 CSV 文件名以通配符示意,实际以下载到的 4 个 CSV 为准;目录名中的日期段因人而异):
cbis-ddsm/ # 建议的整理后根目录
├── csv/
│ ├── calc_case_training_*.csv # 钙化训练集标注(1,546 行)
│ ├── calc_case_test_*.csv # 钙化测试集标注(326 行)
│ ├── mass_case_training_*.csv # 肿块训练集标注(1,318 行)
│ └── mass_case_test_*.csv # 肿块测试集标注(378 行)
├── images/
│ ├── Mass-Training_Full_Mammogram_Images/ # manifest 之一
│ │ └── Mass-Training_P_00067_LEFT_CC/ # 复合患者 ID 目录
│ │ └── <日期>-DDSM-<序号>/ # 日期中间层(坑点 2)
│ │ └── 1-1.dcm # 实际文件名(CSV 写的是 000000.dcm)
│ ├── Mass-Test_Full_Mammogram_Images/
│ ├── Calc-Training_Full_Mammogram_Images/
│ ├── Calc-Test_Full_Mammogram_Images/
│ ├── Mass-Training_Cropped_Images/ # cropped 与 ROI mask 成对
│ ├── Mass-Test_Cropped_Images/
│ ├── Calc-Training_Cropped_Images/
│ └── Calc-Test_Cropped_Images/
└── manifests/ # 8 个 .tcia 清单文件
§4.1 DAIMS 字段字典
以下为 4 个 CSV 合并后的字段字典(8 列:字段名 / 类型 / 说明 / 示例值 / AI 用途 / 观测误差 / 信息性缺失编码 / 取值范围):
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| patient_id | Text | 复合 ID:子集_P_编号_侧别_视图_序号 | Mass-Training_P_01981_RIGHT_MLO_1 | 分组键(防泄漏) | 同一真人可对应多个 ID(坑点 4) | 无 | 全库唯一 |
| abnormality id | Integer | 同一 (乳腺, 视图) 内的异常序号 | 1 | 区分多病灶记录 | 与掩膜对象需重新对齐(坑点 2) | 无 | 1–N |
| abnormality type | Text | 异常类别 | calc | 任务路由(钙化/肿块) | 无 | 无 | calc, mass |
| breast_density | Integer | 乳腺密度旧版四分类 | 3 | 协变量、分层采样 | 旧口径,与现行 ACR 分类不完全等价 | 无 | 1–4 |
| left or right breast | Text | 侧别 | LEFT | 分组与镜像增强控制 | 无 | 无 | LEFT, RIGHT |
| image view | Text | 投照体位 | MLO | 分组与视图级分析 | 无 | 无 | CC, MLO |
| assessment | Integer | BI-RADS 评估级 | 4 | 分级辅助任务标签 | 0/1 级语义特殊(坑点 7) | 无 | 0–5(无 6) |
| subtlety | Integer | 病灶可见度评分 | 4 | 难例挖掘、误差分析 | 主观评分,无一致性指标 | 无 | 3–5 |
| calc type | Text | 钙化形态描述学 | PLEOMORPHIC | 多标签分类 | 枚举沿用 BI-RADS 术语 | 无 | 官方枚举 |
| calc distribution | Text | 钙化分布描述学 | CLUSTERED | 同上 | 同上 | 无 | 官方枚举 |
| mass shape | Text | 肿块形状描述学 | IRREGULAR | 同上 | 部分含复合描述 | 无 | 官方枚举 |
| mass margins | Text | 肿块边缘描述学 | SPICULATED | 恶性征象特征 | 同上 | 无 | 官方枚举 |
| pathology | Text | 病理金标签 | MALIGNANT | 主任务标签 | 图像级口径 3,103 条 | BENIGN_WITHOUT_CALLBACK = 未活检且无需召回 | MALIGNANT, BENIGN, BENIGN_WITHOUT_CALLBACK |
| image file path | Text | 完整钼靶图路径 | Calc-Training_P_…/000001.dcm | 检测/分割输入 | 与实际文件名错位(坑点 2) | 无 | 需重映射 |
| cropped image file path | Text | 病灶裁剪图路径 | 同上 | 分类任务输入 | 同上 | 无 | 需重映射 |
| ROI mask file path | Text | 二值 ROI 掩膜路径 | 同上 | 分割标签 | 部分行实际指向 crop;80 张尺寸不匹配(坑点 3) | 无 | 需重映射 |
§4.2 标签分布
病理标签(图像级,合计 3,103 张完整图口径):
| pathology | 数量 | 占比 |
|---|---|---|
| MALIGNANT | 1,367 | 44.1% |
| BENIGN | 1,336 | 43.1% |
| BENIGN_WITHOUT_CALLBACK | 400 | 12.9% |
训练集按异常类别与病理的病例/病灶构成:
| 子集 | 良性病例(病灶数) | 恶性病例(病灶数) |
|---|---|---|
| calc 训练集 | 329 例(552 病灶) | 273 例(304 病灶) |
| mass 训练集 | 355 例(387 病灶) | 336 例(361 病灶) |
BI-RADS 评估级(图像级口径):4 级 1,544 / 5 级 532 / 3 级 429 / 2 级 357 / 0 级 239 / 1 级 2(合计 3,103)。可见数据向 4–5 级(拟活检/高度可疑)倾斜,与诊断性人群定位一致。
§4.3 关键统计
- 分辨率未统一:完整图尺寸因扫描仪与胶片规格而异(跨度可达数千像素),DataLoader 必须处理变尺寸输入(§6.4 用自定义 collate_fn)。
- 掩膜前景占比极低:3,577 个 ROI 标注对象平均仅占图像面积 0.74%——分割任务天然极度类别不平衡。
- 多病灶并存:同一 (乳腺, 视图) 可有多条异常记录,需按 abnormality id 区分。
- CSV 行与 ROI 图像一一对应(3,568 = 3,568),与完整图不一一对应(3,568 → 3,103,多条记录共享同一完整图):约七分之一的完整图承载 2 条及以上异常记录,多标签学习需按 (patient_id, 侧别, 视图) 聚合。
- subtlety 选择偏倚:取值域仅 3–5 且向高值集中,直接用作难度加权会低估真实读片难度分布,建议仅作相对难度参考。
- 描述学字段即弱标签:calc type / mass shape / mass margins 沿用 BI-RADS 术语,可直接用于多任务学习的辅助监督头。
§4.4 数据层级
真实受试者(1,566 人)
└── 复合 patient ID(6,671 个,一人可多个) ← 元数据层陷阱
└── 检查(侧别 LEFT/RIGHT × 视图 CC/MLO)
└── 异常记录(3,568 条 CSV 行) ← 官方划分单位
├── abnormality id(同检查内多病灶序号)
├── 图像三变体:full / cropped / ROI mask(二值)
└── 标签:assessment + subtlety + pathology + 形态学描述
层级设计的直接推论:官方划分单位(异常记录)位于树的最末端,而泄漏防御必须作用在树的最顶端(真实受试者)——这就是为什么所有「防泄漏改造」都要先做一次从叶到根的键归约(§6.4 的 person_key),再从根往下重新切分。
§4.5 缺失值与信息性缺失
| 字段/现象 | 是否缺失 | 处理建议 |
|---|---|---|
| 数值字段(density/assessment/subtlety) | 无官方缺失 | 直接读取;但 0/1 级 assessment 语义特殊(坑点 7) |
| pathology 三值 | 无缺失 | BENIGN_WITHOUT_CALLBACK 不是缺失,是「未活检」的信息性去向;与 BENIGN 混用时需在实验设计中显式声明 |
| calc type / mass shape 等描述学字段 | 官方未见缺失说明 | 读取后仍建议空串检查;复合描述(如含逗号)解析时注意引号 |
| 图像路径 | 「缺失」表现为路径对不上文件 | 统一走重映射脚本(§6.3),禁止按路径直接 join |
| 人口学(年龄/种族) | 全库缺失 | 结构性不可得;公平性分析只能留白或外部数据补充 |
§5 数据划分与使用建议
§5.1 官方划分
官方按异常记录(CSV 行)划分训练/测试,四张 CSV 即四个子集:
| 子集 | 异常记录 | 完整图 | ROI 图像 |
|---|---|---|---|
| mass 训练 | 1,318 | — | — |
| mass 测试 | 378 | — | — |
| calc 训练 | 1,546 | — | — |
| calc 测试 | 326 | — | |
| 合计 | 3,568 | 2,458 + 645 = 3,103 | 2,864 + 704 = 3,568 |
测试集(test 4 张 CSV 对应的 704 条记录)保持独立,论文未在测试集上做任何调参——这是官方划分相对社区随机划分的主要价值。
§5.2 社区惯例划分
- TFDS patches 划分:curated_breast_imaging_ddsm 的 patches 配置按 Shen 等(2017)的采样方案切分(train 49,780 / val 5,580 / test 9,780 patches,224×224),适合直接对比该文献系谱。
- 患者级重划分:合规研究普遍自建按受试者的 GroupKFold 划分(见 §5.4)。
- 钙化/肿块分轨评测:两条 CSV 轨道分别训练、分别报告,是社区默认做法。
§5.3 泄漏风险(重点)
CBIS-DDSM 的官方划分按记录而非患者划分,同一受试者的记录可同时出现在训练与测试集。三条泄漏通道:
- 记录级重复:同一 (乳腺, 视图) 的多条异常记录被拆到两侧;
- 图像级共享:多条记录共享同一张完整钼靶图,完整图学习到的暗纹理信息经由共享图像进入测试;
- 跨子集同人:Mass 与 Calc 子集、Training 与 Test 子集之间的同一真人(复合 ID 前 P_XXXXX 编号相同者),叠加一人多 DICOM patient ID(坑点 4)后被放大。
§5.4 划分策略建议
发表级实验建议以「去标识化真人核心编号」为组键重划分:
import re, pandas as pd
from sklearn.model_selection import GroupShuffleSplit
df = pd.concat([
pd.read_csv(f"{root}/csv/mass_case_training.csv"),
pd.read_csv(f"{root}/csv/calc_case_training.csv"),
], ignore_index=True)
# 严格组键:剥离子集前缀与侧别/视图,仅保留 P_XXXXX 核心编号
df["person"] = df["patient_id"].str.extract(r"P_(\d+)")[0]
gss = GroupShuffleSplit(n_splits=1, test_size=0.15, random_state=42)
train_idx, val_idx = next(gss.split(df, groups=df["person"]))
train_df, val_df = df.iloc[train_idx], df.iloc[val_idx]
三种划分方案的对比如下,按发表严谨性递增:
| 方案 | 组键 | 优点 | 风险/缺点 |
|---|---|---|---|
| 官方记录级划分 | 无(CSV 自带 train/test) | 与 2017 年以来多数文献可比 | 患者级泄漏(坑点 1) |
| 复合 ID 分组 | patient_id(复合 ID) | 实现成本最低 | 跨 Mass/Calc 子集的同一真人仍可能重叠 |
| 真人核心编号分组 | P_XXXXX 核心编号 | 最严格,消除全部同人通道 | 与旧文献数字不可直接对比,需双轨报告 |
更严格的做法是用 GroupKFold(5) 做组级交叉验证,并把官方 test 集(704 条记录)整体留作最终一次评估。
§5.5 交叉验证建议
- GroupKFold(n_splits=5) 按 person 分组,每折内保持良恶性比例(用 StratifiedGroupKFold,sklearn ≥1.0 支持);
- 钙化与肿块合并训练时,报告「合并 AUC」与「分轨 AUC」两套指标,避免与单轨文献不可比;
- 阈值类指标(灵敏度/特异度)应在固定工作点(如 90% 特异度)下报告,方便跨论文比较。
§5.6 外部验证建议
| 外部数据集 | 设备代际 | 建议任务 | 注意点 |
|---|---|---|---|
| INbreast | 全数字(2012) | 良恶性分类、分割 | 115 例,规模小,置信区间宽 |
| CMMD | 数字化 | 良恶性分类 | 中国人群,可同时考察跨人群泛化 |
| VinDr-Mammo | 现代数字化 | BI-RADS 分级迁移 | 标签为六级评估级,与病理标签不可直接对齐 |
| EMBED | 现代数字化 | 大规模筛选 | 需签数据使用协议;注意预处理差异 |
跨代际迁移(屏片 → FFDM)是 CBIS-DDSM 最有价值的验证方向之一:光学密度标准化使灰度分布大体可比,但伪影、动态范围与人群构成差异仍然显著(§7.3、§7.6)。执行时优先固定「预训练在 CBIS-DDSM、微调与测试在外部集」的单一方向,避免双向迁移造成数据流污染的争议。
§6 AI 就绪指南
§6.0 云端快速启动
官方未提供云端托管版本;最省事的云端路径是「轻量试水用 TFDS,全量研究用 NBIA 命令行」:
# ① 零安装试水(Colab 可直接运行):TFDS patches 配置,224x224,5 类
pip install -q tensorflow-datasets
python -c "
import tensorflow_datasets as tfds
ds = tfds.load('curated_breast_imaging_ddsm/patches', split='train', shuffle_files=True)
print(next(iter(ds.take(1))))
"
# ② 全量下载:Java NBIA 客户端断线频发时,改用社区 CLI 封装
pip install NBIA_data_retriever_CLI # kyuheejo/NBIA_data_retriever_CLI
python -m nbia_cli -i manifests/Mass-Training_Full_Mammogram_Images.tcia -o data/
§6.1 数据获取
下载清单:TCIA 集合页提供 8 个 .tcia manifest(Mass/Calc × Train/Test × 完整图 / 裁剪图+掩膜)与 4 个标注 CSV,全量 163.51 GB。
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 访问 TCIA CBIS-DDSM 页面 | 无需注册;CC BY 3.0 授权,引用数据 DOI 与论文 DOI 即可 |
| 2 | 安装 NBIA Data Retriever(含 Java) | 官方桌面客户端;Linux 服务器建议改用 §6.0 的社区 CLI |
| 3 | 逐个导入 8 个 manifest 下载 | 单 manifest 支持断点续传;下载目录默认含日期中间层 |
| 4 | 另存 4 个 CSV 至 csv/ |
与图像目录解耦存放,便于路径重映射 |
| 5 | 校验文件数 | 10,239 张 DICOM;缺失时用 manifest 重跑增量下载 |
三条下载注意事项:① NBIA 桌面客户端依赖 Java,Linux 无图形界面服务器直接改用 §6.0 的社区 CLI;② 下载目录默认嵌套日期中间层,不要手工移动单个文件——先用 §6.3 的扫描脚本建立映射,再决定是否重排目录;③ 下载完成即可对照 §3.2 做三口径自检(DICOM 总数 10,239、ROI 3,568、CSV 行 3,568),任一不符都说明 manifest 有遗漏。
常见下载故障排查:
| 现象 | 根因 | 处理 |
|---|---|---|
| NBIA 客户端反复断线 | Java 客户端长连接不稳 | 换社区 CLI,按 manifest 分包下载 |
| 下载目录找不到 .dcm | 文件藏在日期中间层目录内 | 用 rglob("*.dcm") 全局扫描(§6.3) |
| 校验数不足 10,239 | 某 manifest 未下载完成 | 对照 §3.3 manifest 表逐包补齐 |
| CSV 行数与文档不符 | 误用第三方镜像的旧版 CSV | 一律以 TCIA 页面当前 CSV 为准并记录下载日期 |
最小可用子集:mass_case_test(378 条记录)+ 对应 manifest,约 10 GB 级即可跑通端到端分类 baseline;calc 轨道适合第二阶段。
目录约定(下文所有代码通用):
data_root指向 §4.0 的整理后目录,即data_root/csv/*.csv与data_root/images/<子集名>/<复合ID>/<日期层>/*.dcm;manifest.parquet是 §6.3 修复路径后生成的映射表,DataLoader 只依赖 CSV + manifest,不再直接信任 CSV 里的路径列。
§6.2 快速上手:读取标注表
# 目录预期:data_root/csv/mass_case_training.csv(其余 3 张 CSV 同构)
# data_root 仅作拼接前缀:CSV 的路径列 + data_root/images/ 才能定位文件(且需先过 §6.3 重映射)
# 最小可用子集:任意 1 张 CSV + 对应 manifest 的 DICOM
import pandas as pd
ROOT = "data_root"
df = pd.read_csv(f"{ROOT}/csv/mass_case_training.csv")
print(df.shape) # (1318, 14)——mass 训练集 1,318 条异常记录
print(df.columns.tolist())
# ['patient_id', 'breast_density', 'left or right breast', 'image view',
# 'abnormality id', 'abnormality type', 'mass shape', 'mass margins',
# 'assessment', 'pathology', 'subtlety',
# 'image file path', 'cropped image file path', 'ROI mask file path']
print(df["pathology"].value_counts()) # 记录级良恶性分布
print(df["assessment"].value_counts().sort_index()) # BI-RADS 0–5
print(df["image file path"].head(3).tolist()) # 注意:这些路径与实际文件名不一致(§6.5 坑点 2)
§6.3 预处理全流程
预处理的核心不是灰度,而是把三份「地图」对齐:CSV 记录 → 磁盘文件 → 掩膜几何。下面三个脚本构成一条可复现流水线。
第一步:路径重映射(必做,修复坑点 2)
# scan_files.py——扫描磁盘,建立 (复合ID, 序号) → 实际文件路径 的映射
from pathlib import Path
import pandas as pd
def scan_split(data_root: str, subset_dir: str) -> pd.DataFrame:
rows = []
for dcm in (Path(data_root) / "images" / subset_dir).rglob("*.dcm"):
case_dir = dcm.parts[-3] # 例如 Mass-Training_P_01981_RIGHT_MLO_1
rows.append({
"patient_id": case_dir,
"fname": dcm.name, # 实际文件名,如 1-1.dcm / 000001.dcm
"path": str(dcm),
})
return pd.DataFrame(rows)
# 对 8 个子集目录各扫一次,合并后落盘,供后续 join
scan = pd.concat(
[scan_split("data_root", d) for d in [
"Mass-Training_Full_Mammogram_Images", "Mass-Test_Full_Mammogram_Images",
"Calc-Training_Full_Mammogram_Images", "Calc-Test_Full_Mammogram_Images",
"Mass-Training_Cropped_Images", "Mass-Test_Cropped_Images",
"Calc-Training_Cropped_Images", "Calc-Test_Cropped_Images"]],
ignore_index=True,
)
scan.to_parquet("data_root/manifest.parquet")
# remap.py——把 CSV 三个路径列改写为磁盘真实路径
# 策略:CSV 路径的倒数第二层目录名 == 复合ID,把该目录下文件按名称排序后逐位对齐磁盘文件
import pandas as pd
manifest = pd.read_parquet("data_root/manifest.parquet")
def remap(df: pd.DataFrame, col: str, kind: str) -> pd.Series:
case = df[col].str.rsplit("/", n=1).str[0] # CSV 中的目录段
order = df.groupby(case).cumcount() # 记录在目录内的序号
pool = manifest[manifest.patient_id.isin(case.unique())].copy()
pool = pool.sort_values(["patient_id", "fname"])
rank = pool.groupby("patient_id").cumcount()
lookup = dict(zip(zip(pool.patient_id, rank), pool.path))
return pd.Series(
[lookup.get((c, r)) for c, r in zip(case, order)],
index=df.index, name=f"{kind}_path_real",
)
for name in ["mass_case_training", "mass_case_test", "calc_case_training", "calc_case_test"]:
df = pd.read_csv(f"data_root/csv/{name}.csv")
for col, kind in [("image file path", "full"), ("cropped image file path", "crop"),
("ROI mask file path", "mask")]:
df[f"{kind}_path_real"] = remap(df, col, kind)
df.to_parquet(f"data_root/{name}_fixed.parquet")
print(name, df[["full_path_real", "mask_path_real"]].isna().sum().to_dict())
第二步:尺寸不匹配处理(坑点 3)。官方随包提供了 full 与 ROI 尺寸不匹配图像的信息表(约 80 张,ROI 约为 full 的 87%)。统一策略:掩膜按比例仿射重采样回 full 网格,再高斯平滑 + 阈值 0.5 恢复二值;无法对齐的样本落盘到黑名单并在训练时跳过。
第三步:灰度标准化。DICOM 保留 16-bit OD 灰度,训练前统一做分位数窗(p1–p99)线性压到 0–1,或保留 16-bit 直接交给模型(见坑点 6 的 8-bit 截断问题)。不建议按「图像名」全局复制固定窗宽窗位。
第四步:自检与黑名单(必跑,防坑点 2/3 回流)
# sanity_check.py——对齐后全量自检,输出黑名单并校验掩膜几何
import numpy as np
import pydicom
import pandas as pd
from pathlib import Path
def check_row(r):
issues = []
for col in ["full_path_real", "crop_path_real", "mask_path_real"]:
if not r[col] or not Path(r[col]).exists():
issues.append(f"{col}:missing")
if Path(r["mask_path_real"]).exists() and Path(r["full_path_real"]).exists():
img = pydicom.dcmread(r["full_path_real"]).pixel_array
msk = pydicom.dcmread(r["mask_path_real"]).pixel_array
if img.shape != msk.shape:
issues.append(f"size:{img.shape}->{msk.shape}") # 坑点 3
fg = float((msk > 0).mean())
if not (0 < fg < 0.05):
issues.append(f"foreground:{fg:.3f}") # 全库平均 0.74%,超界必查
return ";".join(issues)
fixed = pd.read_parquet("data_root/mass_case_training_fixed.parquet")
fixed["issues"] = fixed.apply(check_row, axis=1)
bad = fixed[fixed["issues"] != ""]
bad.to_csv("data_root/blacklist.csv", index=False)
print(f"{len(bad)} / {len(fixed)} 条进入黑名单,训练侧一律跳过")
黑名单建议与 manifest 一起做版本管理:任何一次磁盘重排或官方数据重下后重跑本脚本,diff 黑名单即可发现路径映射回归。
§6.4 PyTorch DataLoader
# dataset.py——完整可运行:分类任务用 cropped,检测/分割任务用 full + mask
# 前置依赖:data_root/{mass,calc}_case_*_fixed.parquet(§6.3 产物)
# 灰度:pydicom 读取 16-bit,p1-p99 归一化;掩膜 NEAREST 缩放保二值
import re
import numpy as np
import pydicom
import torch
import cv2
import pandas as pd
from torch.utils.data import Dataset, DataLoader
IMG_SIZE = (1152, 896) # (H, W);变尺寸图像统一到固定网格
LABEL = {"MALIGNANT": 1, "BENIGN": 0, "BENIGN_WITHOUT_CALLBACK": 0}
def person_key(pid: str) -> str:
"""严格组键:剥离子集前缀/侧别/视图,防患者级泄漏(§5.3)"""
return re.sub(r"^(Mass|Calc)-(Training|Test)_P_(\d+).*$", r"P_\3", pid)
def load_dcm(path: str) -> np.ndarray:
arr = pydicom.dcmread(path, stop_before_pixels=False).pixel_array.astype(np.float32)
lo, hi = np.percentile(arr, (1, 99))
return np.clip((arr - lo) / max(hi - lo, 1e-6), 0, 1)
class CBISDDSM(Dataset):
def __init__(self, parquet_paths, mode="classification", train=True):
self.df = pd.concat([pd.read_parquet(p) for p in parquet_paths], ignore_index=True)
self.df = self.df[self.df["mask_path_real"].notna()] # 黑名单兜底
self.mode, self.train = mode, train
def __len__(self):
return len(self.df)
def __getitem__(self, i):
r = self.df.iloc[i]
if self.mode == "classification":
img = load_dcm(r["crop_path_real"])
img = cv2.resize(img, (IMG_SIZE[1], IMG_SIZE[0]), interpolation=cv2.INTER_AREA)
mask = None
else: # detection / segmentation
img = load_dcm(r["full_path_real"])
mask = cv2.imread(r["mask_path_real"], cv2.IMREAD_GRAYSCALE)
if mask is not None and mask.shape != img.shape: # 坑点 3:尺寸不匹配
s = np.array(img.shape) / np.array(mask.shape)
mask = cv2.resize(mask, (int(mask.shape[1] * s[1]), int(mask.shape[0] * s[0])),
interpolation=cv2.INTER_NEAREST)
img = cv2.resize(img, (IMG_SIZE[1], IMG_SIZE[0]), interpolation=cv2.INTER_AREA)
if mask is not None:
mask = cv2.resize(mask, (IMG_SIZE[1], IMG_SIZE[0]), interpolation=cv2.INTER_NEAREST)
img = np.repeat(img[None, ...], 3, axis=0) # 灰度 → 3 通道
if self.train: # 增强见 §6.6
if np.random.rand() < 0.5:
img = img[:, :, ::-1].copy()
mask = mask[:, ::-1].copy() if mask is not None else None
img = img * (0.9 + 0.2 * np.random.rand())
y = LABEL[r["pathology"]]
return {"image": torch.from_numpy(img.copy()).float(),
"mask": torch.from_numpy(mask.copy()).long() if mask is not None
else torch.zeros(IMG_SIZE, dtype=torch.long),
"label": torch.tensor(y),
"person": person_key(r["patient_id"])}
def make_loader(paths, mode="classification", train=True, bs=8, workers=4):
return DataLoader(CBISDDSM(paths, mode=mode, train=train), batch_size=bs,
num_workers=workers, pin_memory=True,
shuffle=train) # 已按组键划分,此处无需 sampler
# 用法:loader = make_loader(["data_root/mass_case_training_fixed.parquet",
# "data_root/calc_case_training_fixed.parquet"])
# for batch in loader: images (B,3,1152,896) / label (B,) / mask (B,1152,896)
§6.5 八大坑点
⚠️ 坑点 1:官方划分按记录划分,同一患者横跨 train/test(分类:数据泄漏)
问题:官方 CSV 按异常记录划分训练/测试,同一受试者的多条记录(双侧、双视图、多病灶)可分处两侧,模型在测试时见过同一乳腺的其他影像,指标虚高。
症状:测试 AUC 稳定偏高、复现论文数字时总是好于基线;按 person 重新分组后指标显著下滑(下滑 2–10 个百分点在社区复现中常见)。
解决:
- 简单方法:直接用
patient_id(复合 ID)做 group split,至少保证复合 ID 级不重叠。- 进阶方法:用正则把复合 ID 归约为 P_XXXXX 核心编号(§6.4 的
person_key),以真人为组做 StratifiedGroupKFold,官方 test 留作终评。- SOTA 方法:在 2 的基础上把「同受试者跨子集(Mass/Calc)」合并去重,训练集内部再做组级 5 折 CV;发表时同时报告官方划分与患者级划分两套结果。
参考:论文 Methods 与 TCIA 集合页 https://wiki.cancerimagingarchive.net/display/Public/CBIS-DDSM
⚠️ 坑点 2:CSV 路径与实际文件名错位(分类:工程陷阱)
问题:CSV 中路径形如
…/000000.dcm,而磁盘文件实际名为1-1.dcm/1-2.dcm等,且部分ROI mask file path列实际指向 crop 图像;直接 join 得到全量 FileNotFoundError 或静默读错图。
症状:DataLoader 报文件不存在;或「能跑通」但抽查发现掩膜读成裁剪图、标签与图像错配。
解决:
- 简单方法:按复合 ID 目录扫描磁盘,目录内文件名排序后与 CSV 记录序号逐位对齐(§6.3 remap.py)。
- 进阶方法:对齐后用 DICOM 头(图像尺寸、SeriesDescription)交叉校验 full/crop/mask 三类,掩膜必须是二值且前景占比 <5%。
- SOTA 方法:把校验结果固化成 manifest.parquet + 黑名单清单,任何实验只允许消费 manifest,禁止再读原始 CSV 路径列。
参考:社区修正与校验工具 https://gitlab.com/ACSG-64/cbis-ddsm-description-correction-and-verification-tool
⚠️ 坑点 3:约 80 张图像 full 与 ROI 掩膜尺寸不匹配(分类:预处理陷阱)
问题:80 张图像(训练 67 + 测试 13)的 ROI 掩膜尺寸与完整图不一致,掩膜约为完整图的 87%;直接叠加掩膜做分割或裁剪会错位。
症状:分割 loss 不收敛或 Dice 异常低;可视化时掩膜轮廓与病灶明显偏移。
解决:
- 简单方法:按宽高比例把掩膜仿射缩放回完整图网格(NEAREST 保二值),个别无解样本跳过。
- 进阶方法:缩放后对掩膜做高斯平滑 + 0.5 阈值去锯齿,并用掩膜质心是否落在 crop 中心 ±10% 区间做一致性断言。
- SOTA 方法:优先使用官方提供的 mismated 图像信息表(随 CSV 发布)预筛这些样本,单独建处理分支并在论文中披露处理方式。
参考:官方 mismated 对应表(TCIA 下载页)与社区数据问题梳理 https://deepwiki.com/lingliao/Transparency-in-CABCDTD/9.1-data-issues
⚠️ 坑点 4:DICOM 元数据显示 6,671 个 patient ID,真实受试者只有 1,566 人(分类:工程陷阱)
问题:每个复合 ID(含侧别、视图、序号)都被 DICOM 当作独立患者写入元数据,
len(set(patient_ids)) = 6,671≠ 1,566;按元数据去重或统计患者数即错。
症状:论文里写出「6,671 名患者」的规模数字;按 DICOM 患者 ID 做划分后仍然泄漏(同一真人的多个复合 ID 分处两侧)。
解决:
- 简单方法:规模统计一律使用官方口径 1,566 人(§3.2)。
- 进阶方法:所有分组操作使用 P_XXXXX 核心编号而非 DICOM PatientID 字段。
- SOTA 方法:建立「复合 ID → 真人」映射表并在 manifest 中落盘,使图像级、记录级、患者级三种口径可一键切换统计。
参考:TCIA 数据 DOI 页面 https://doi.org/10.7937/K9/TCIA.2016.7O02S9CY
⚠️ 坑点 5:full / cropped / ROI 三类图像不可互相比较(分类:评估误用)
问题:同一条记录有三张语义不同的图——完整图含全局背景,裁剪图以病灶为中心,ROI 掩膜是二值标签。把「在裁剪图上的 AUC」与「在完整图上的检出指标」混排,或把掩膜当灰度图训练,都会得到不可比的数字。
症状:同一模型「换了个输入」指标波动巨大;与文献对比时发现数量级对不上。
解决:
- 简单方法:实验配置里显式声明任务类型与输入变体(classification@crop / detection@full / segmentation@full+mask)。
- 进阶方法:对检测任务,用掩膜从完整图中派生边界框时统一留 5% padding,并记录派生规则。
- SOTA 方法:同一模型分轨评测并分别报告(裁剪图分类 AUC / 完整图 FROC / 掩膜 Dice),不合并成单一指标。
参考:论文对三类图像的定义(https://www.nature.com/articles/sdata2017177)
⚠️ 坑点 6:16-bit 灰度转 8-bit 的截断与「过白」问题(分类:预处理陷阱)
问题:DICOM 是 16-bit OD 归一化灰度,直接
astype(np.uint8)会把全部动态范围压进 0–255 的下段,图像整体发黑或过白;不同扫描仪的灰度响应又被放大。
症状:可视化基本看不清腺体;ImageNet 预训练模型 loss 几乎不降。
解决:
- 简单方法:分位数窗(p1–p99)线性拉伸后再转 8-bit(§6.4 的
load_dcm)。- 进阶方法:利用编制方已做的 OD 0.05–3.0 标准化,按 OD 域固定窗(0.05–3.0 → 0–1)保证跨扫描仪一致。
- SOTA 方法:保留 16-bit 输入(或 0–1 float),首层改适配单通道,避免任何位深截断;对 CLAHE 等增强做消融验证收益。
参考:TCIA 集合页的转换与 OD 标准化说明 https://dev.cancerimagingarchive.net/collection/cbis-ddsm/
⚠️ 坑点 7:BENIGN_WITHOUT_CALLBACK 与 BI-RADS 0/1 级的语义陷阱(分类:标签理解)
问题:
BENIGN_WITHOUT_CALLBACK表示「评估为良性、未做活检、无需召回」,它与BENIGN(活检证实)的证明强度不同;assessment 0 级(需补充检查)与 1 级(阴性)混入训练时语义与其他级别不可通约。
症状:把三值 pathology 当二值标签时「良性」内部混杂;分级任务把 0 级当普通低级别导致评估失真。
解决:
- 简单方法:二分类实验明确写入标签映射(本条目 §6.4 把 BENIGN_WITHOUT_CALLBACK 归入 0 类)并在论文披露。
- 进阶方法:做三组消融——只用活检证实样本 / 加 WITHOUT_CALLBACK / 仅按评估级分层,观察结论稳健性。
- SOTA 方法:把「是否活检证实」作为置信度权重或单独评估层(label-aware evaluation),分级任务用有序回归并剔除 0 级样本。
参考:字段语义见 TCIA 集合页 CSV 说明(https://dev.cancerimagingarchive.net/collection/cbis-ddsm/)
⚠️ 坑点 8:诊断性富集人群 + 人口学不透明带来的偏倚(分类:偏倚陷阱)
问题:数据来自 1990 年代屏片时代、以拟活检/已活检为主的美国人群,图像级恶性占比 44.1%,远高于真实筛查阳性人群;年龄、种族字段整体缺失。
症状:模型在筛查样分布数据上特异度崩塌(假阳性暴涨);灵敏度/特异度跨人群不可迁移;公平性审计无从下手。
解决:
- 简单方法:论文写作中禁用「筛查性能」表述,改称「诊断性任务性能」;流行率修正(prior-adjusted)后再外推。
- 进阶方法:在 CMMD、VinDr-Mammo 等现代/跨人群数据上做外部验证矩阵(§7.8),报告相对内部变化。
- SOTA 方法:对现代 FFDM 数据采用「CBIS-DDSM 预训练 + 少量目标域微调」迁移范式,并用亚组保真检查(按密度分层)监控偏倚。
参考:论文 Limitations 与 §7.1 偏倚表(https://www.nature.com/articles/sdata2017177)
§6.6 数据增强
| 增强方式 | 安全性 | 说明 |
|---|---|---|
| 水平翻转(按侧别映射) | ✅ | 需同时翻转掩膜;左右侧别互换后语义不变 |
| 平移/小角度旋转(≤10°) | ✅ | 贴近投照体位差异;掩膜同步变换 |
| 亮度/对比度抖动(±10%) | ✅ | 模拟扫描与胶片差异;在 OD 归一化后进行 |
| 随机裁剪后 resize(分类) | ✅ | 保持病灶在视野内(用掩膜引导裁剪更稳) |
| 垂直翻转 | ❌ | 破坏 MLO 位解剖方向(腋窝侧朝上) |
| 大角度旋转(>30°) | ❌ | 破坏投照体位先验,读片语义失真 |
| 弹性形变 | ❌ | 改变钙化簇形态与肿块边缘等诊断特征 |
| 像素级逐图直方图均衡不加约束 | ❌ | 跨扫描仪一致性已被 OD 标准化处理,二次强均衡放大噪声 |
增强策略的整体原则:任何改变解剖结构或诊断征象的操作都视为危险。钙化的形态(点状/分支状)与肿块的边缘(毛刺/光滑)是 BI-RADS 判读的核心特征,弹性形变与强旋转会系统性破坏这些特征,使模型学到与读片逻辑无关的捷径。灰度类增强放在 OD 归一化之后执行,避免重复拉伸放大扫描仪间差异。
§6.7 模型推荐
| 任务 | 推荐起点 | 理由 |
|---|---|---|
| 裁剪图分类 | ResNet-50 / DenseNet-121(单通道适配) | 文献主力骨干,参数量适中,2D 钼靶上稳健(§8.1 有 ResNet-50 基线) |
| 完整图检测 | Faster R-CNN / RetinaNet + FPN | 变尺寸大图,anchor 类检测器配合 FFC/大核卷积更稳 |
| 病灶分割 | U-Net / Attention U-Net | 前景占比 0.74%,建议 Dice + BCE 复合损失 |
| 多视图联合 | 双流 CNN + 视图嵌入 | 同侧 CC/MLO 信息互补,两视图联合文献常见 |
| 弱监督/自监督 | MoCo/SimMIM 预训练 + 下游微调 | 3,103 张完整图规模有限,自监督预训练可利用无标签灰度图 |
§6.8 硬件需求
| 配置 | 显存 | 适用场景 |
|---|---|---|
| 入门 | 1× GPU 8-12 GB | 裁剪图分类(224-384 px,batch 16-32) |
| 标准 | 1× GPU 24 GB | 完整图分类(896-1152 px)或 U-Net 分割 |
| 进阶 | 2-4× GPU 32-48 GB | 检测/分割全量训练 + 超参搜索 |
| 磁盘 | ≥350 GB | 原始包 + 解压 + 中间产物(§3.4) |
§6.9 评估指标代码
# metrics.py——分类(AUC + 固定特异度灵敏度)与分割(Dice)双轨
import numpy as np, torch
from sklearn.metrics import roc_auc_score, roc_curve
def cls_metrics(y_true, prob):
auc = roc_auc_score(y_true, prob)
fpr, tpr, _ = roc_curve(y_true, prob)
spec90 = float(np.interp(0.9, 1 - fpr, tpr)) # 90% 特异度处的灵敏度
return {"auc": auc, "sens@spec90": spec90}
def dice_score(logits, mask, thr=0.5, eps=1e-6):
pred = (torch.sigmoid(logits) > thr).float()
inter = (pred * mask).sum(dim=(1, 2))
return float(((2 * inter + eps) /
(pred.sum(dim=(1, 2)) + mask.sum(dim=(1, 2)) + eps)).mean())
def subgroup_auc(df, prob_col="prob", label_col="y", group_col="density"):
"""密度亚组 AUC——§7.5 公平性检查的最小实现"""
from sklearn.metrics import roc_auc_score
return {g: round(float(roc_auc_score(d[label_col], d[prob_col])), 4)
for g, d in df.groupby(group_col) if d[label_col].nunique() > 1}
def bootstrap_ci(y_true, prob, n=1000, seed=42):
"""AUC 的 bootstrap 95% 置信区间(评测协议 §8.3 要求)"""
rng = np.random.default_rng(seed)
y, p = np.asarray(y_true), np.asarray(prob)
stats = [roc_auc_score(y[idx], p[idx])
for idx in (rng.integers(0, len(y), len(y)) for _ in range(n))]
return float(np.percentile(stats, 2.5)), float(np.percentile(stats, 97.5))
§6.10 MLOps 笔记
- 数据版本化:manifest.parquet + 黑名单清单 + 划分种子三者入 Git/DVC;原始 DICOM 只读不改。
- 可复现性:固定 numpy/torch/cv2 三处随机源;记录 pydicom 版本(像素布局行为偶有变动)。
- 缓存策略:
load_dcm的归一化结果按 (复合ID, 序号) 落 .npy 缓存,第二轮 epoch 起磁盘读取提速一个量级。 - 监控:训练时跟踪「按 person 分组的验证 AUC」与「掩膜前景占比分布」两条曲线,前者防泄漏回潮,后者能最早暴露路径错配回归。
- 发布物:模型卡注明训练口径(图像级/记录级、是否含 WITHOUT_CALLBACK)、划分策略与官方 test 独立性声明。
- 团队协作:数据工程与算法组共用 manifest.parquet 单一事实源;任何人不得在实验代码里直接读原始 CSV 路径列,评审时作为硬性检查项。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 人群富集偏倚 | 诊断性/拟活检人群,图像级恶性占比 44.1%,远高于筛查阳性率 | 高 | 禁用「筛查性能」表述;流行率修正后外推 |
| 设备代际偏倚 | 全部为 1990 年代屏片数字化影像,无现代 FFDM | 高 | 与 FFDM 数据集组合训练;跨域微调 |
| 人口学缺失 | 年龄、种族、民族字段整体缺失 | 高 | 公平性分析留白并披露;外部数据补充 |
| 标注单源 | 掩膜与复核为单一标注流程,无一致性指标 | 中 | 高要求项目组织二次标注 |
| 扫描仪混源 | 多台扫描仪数字化,OD 标准化后仍可能有残留差异 | 中 | 按 OD 域统一窗;扫描仪敏感实验单独分组 |
| 标识混淆 | DICOM 元数据 6,671 个 patient ID ≠ 1,566 人 | 中 | 统一使用 P_XXXXX 核心编号(坑点 4) |
| 标签构成偏倚 | 4–5 级占评估级三分之二,2 级以下样本稀薄 | 中 | 低级别样本分层抽样或明确限定适用范围 |
§7.2 标注质量
- 病理金标签可信度高:MALIGNANT/BENIGN 来自活检报告回填,是钼靶数据集中少见的诊断级标签;BENIGN_WITHOUT_CALLBACK 为影像随访去向,证明强度低于活检(坑点 7)。
- 掩膜为研究级参考标准:由乳腺影像专业人员重绘并复核,但无多标注者一致性数据;用于分割金标准时建议自行复核测试集。
- 剔除流程透明:254 张无法清晰见到肿块的图像被受训复核人员移除,并已在官方文档说明。
- 评估级可交叉验证:BI-RADS 评估与病理标签同时可得,可用于构建「评估-结局」一致性分析,是审计标注质量的额外抓手。
§7.3 泛化性
| 部署场景 | 失效风险 | 证据与说明 |
|---|---|---|
| 现代 FFDM 筛查流程 | 高 | 屏片→FFDM 存在采集物理差异;富集人群导致特异度不足 |
| 跨设备/跨医院诊断辅助 | 中-高 | OD 标准化缓解灰度差异,但伪影与人群差异仍在 |
| 致密型乳腺判读 | 中 | 密度字段可分层审计;屏片对致密组织敏感度本就受限 |
| 钙化/肿块分轨任务 | 低-中 | 单轨任务与数据构成匹配度最好 |
| 分级(BI-RADS)预测 | 中 | 评估级为回溯性专家标签,与现代读片标准有代差 |
§7.4 伦理
数据由 TCIA 完成去标识化:患者标识替换为合成复合 ID,影像无烧录注释,公开数据集中不含受保护健康信息。许可为 CC BY 3.0,允许商业使用但要求署名。合规使用还包括遵守 TCIA Data Usage Policy 的引用与不得再识别条款。基于本数据集的任何临床转化需独立伦理审批与前瞻验证。
残余伦理风险两点需要写入项目评审材料:其一,合成复合 ID 含侧别/视图/序号信息,虽不指向真人,但可被误当作人口学特征使用;其二,屏片影像的回顾性采集年代使知情同意范式与现代标准不同,涉及跨库联合建模时应由伦理委员会逐案确认,而非默认沿用任一数据集的许可条款。
§7.5 公平性
数据集不包含年龄、种族、民族等人口学字段,无法在数据集内部完成亚组公平性审计。可操作的替代方案:按乳腺密度(1–4)做亚组性能分解;或在携带人口学元数据的外部数据集(如 EMBED、VinDr-Mammo)上做迁移后的亚组评估。撰写涉及该数据集的公平性章节时,必须显式披露这一结构限制。
三步可执行动作:① 用 §6.9 的 subgroup_auc 输出密度亚组 AUC 表,检查最差亚组与均值的差距;② 在带人口学字段的外部集上复检迁移后的亚组差异;③ 把「人口学不可得」写入模型卡与论文 limitations,防止下游使用者误以为已通过公平性审计。
§7.6 数据漂移
屏片钼靶已被 FFDM 与 DBT(断层摄影)全面取代,影像 appearance 与伪影模式发生代际变化;读片生态也在 AI 辅助下改变。CBIS-DDSM 适合定位为「历史域基准」:短期(1-3 年)内作为方法学对照仍有价值,直接用于现代筛查建模应结合 §7.3 的迁移验证。
工程上可监控的漂移信号:输入灰度分布的 p1/p99 分位数漂移、掩膜前景占比的批次级漂移、density 亚组构成变化。三者任一超出训练期统计的 ±3 个标准差时,应触发数据质量告警并复跑外部验证。
§7.7 DAIMS 24 项检查
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 4 张 CSV 结构规整,一记录一行 |
| 2 | 唯一标识 | ⚠️ | 复合 ID 唯一,但一人多 ID(6,671 vs 1,566),需核心编号归约 |
| 3 | 特殊字符 | ✅ | 枚举字段规范,无转义陷阱(复合描述含逗号时按引号解析) |
| 4 | 重复行 | ✅ | 无重复记录(3,568 = 3,568 对齐 ROI 图像数) |
| 5 | 缺失编码 | ✅ | 数值字段无缺失;图像路径「缺失」实为路径错位(坑点 2) |
| 6 | 标签标识 | ⚠️ | pathology 三值语义需文档支撑,二值用法需自行声明 |
| 7 | 罕见类分组 | ⚠️ | BI-RADS 1 级仅 2 张图像,分级实验应合并或剔除 |
| 8 | 偏倚评估 | ✅ | 论文 Limitations 与本文 §7.1 均给出系统评估 |
| 9 | 数据字典 | ✅ | TCIA 页面提供字段说明;本文 §4.1 完整字典 |
| 10 | 信息性缺失解释 | ⚠️ | BENIGN_WITHOUT_CALLBACK 的统计含义社区常误解 |
| 11 | 设备记录 | ❌ | 扫描仪型号未随包记录,需回溯 DDSM 原库文档 |
| 12 | 共线性 | ✅ | 各字段信息独立,无冗余共线列 |
| 13 | 编码映射 | ✅ | BI-RADS 与形态学术语沿用 ACR 标准词汇 |
| 14 | 时间戳处理 | ⚠️ | DICOM 头有检查日期,CSV 无临床时间字段 |
| 15 | 划分建议 | ⚠️ | 官方有划分但按记录划分,患者级需自建(§5.4) |
| 16 | 泄漏讨论 | ⚠️ | 官方未讨论患者级泄漏,社区普遍指出并给出对策 |
| 17 | 标签分布 | ✅ | 各级分布可得且三口径自洽(§3.2、§4.2) |
| 18 | 测量偏倚 | ⚠️ | 多扫描仪混源,OD 标准化后仍有残留差异 |
| 19 | 外部验证建议 | ✅ | 社区迁移研究丰富,本文 §7.8 给出矩阵 |
| 20 | 版本记录 | ✅ | TCIA DOI 记录上线与最后更新时间(2017-09-14) |
| 21 | 预处理脚本 | ⚠️ | 无官方一键脚本;TFDS 与社区工具(GitLab 校验工具、NBIA CLI)可组合 |
| 22 | 合规要求 | ✅ | CC BY 3.0 + TCIA 数据使用政策,条款清晰 |
| 23 | 多模态对齐 | ❌ | 图像-标签对齐依赖路径重映射;掩膜与路径错位是真实缺陷 |
| 24 | 去标识化 | ✅ | TCIA 完成合成 ID 替换,无 PHI |
DAIMS 评分:17.5 / 24
评分解读:13 项 ✅、9 项 ⚠️、2 项 ❌。扣分集中在三类——工程对齐(路径错位、掩膜尺寸、多 ID)、元数据完整性(设备、时间戳、人口学)、划分语义(记录级划分与未讨论的泄漏)。值得注意的是,全部 ❌ 都可通过社区工具与自建 manifest 部分修复,而 ⚠️ 多数属于「需要使用者显式声明设计决策」的类型。
对你意味着什么:这是一份「标签可信、工程要动手」的数据集。可以直接信任的是病理金标签与 BI-RADS 评估;必须自己动手的是:路径重映射脚本(坑点 2)、患者级重划分(§5.4)、掩膜尺寸校验(坑点 3)、规模口径统一(§3.2)。若你的项目时间有限,先做前三件事即可达到可发表状态;若追求严谨披露,把 DAIMS 表随实验报告一起公开。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| CBIS-DDSM 内部(肿块) | Scientific Reports 2024(10.1038/s41598-024-78648-0) | 肿块良恶性分类 | AUC 0.7421 [0.6651, 0.8147](ResNet-50,448×448) | 基线 | 现代骨干在裁剪图轨道的稳健下界 |
| CBIS-DDSM 钙化放大像 | BioMedical Engineering OnLine 2023(10.1186/s12938-023-01115-w) | 钙化良恶性分类 | AUC 0.847(YOLO-AMDF) | — | 检测-分类一体架构在钙化轨道有效 |
| CMMD(外部) | ECR 2024(10.26044/ecr2024/C-21656) | 钙化良恶性分类 | AUC 0.89(VGG-16,外部测试) | 优于多数内部基线报告 | 跨设备、跨人群迁移可行性证据 |
| sota2 排行榜记录 | sota2.com | 完整图分类 | test AUC 87.5;mass test Acc 78.31;calc test Acc 75.4 | 口径不一 | 排行榜数值输入变体各异,仅作量级参考 |
§8 基准性能与生态
§8.1 排行榜
| 排名 | 模型/研究 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | sota2 最高记录 | 完整图分类 test AUC 87.5 | — | 随提交而异 | sota2 CBIS-DDSM 排行榜(截至 2026-09) | 未统一公开 |
| 2 | ResNet-50 基线 | 肿块 test AUC 0.7421 [0.6651, 0.8147] | 2024 | 448×448 端到端微调 | Scientific Reports, 2024, 10.1038/s41598-024-78648-0 | 见论文 |
| 3 | YOLO-AMDF | 钙化放大像 AUC 0.847 | 2023 | YOLO 检测 + 多尺度特征融合 | BioMedical Engineering OnLine, 2023, 10.1186/s12938-023-01115-w | 见论文 |
| 4 | VGG-16 迁移 | 钙化外部测试 AUC 0.89 | 2024 | CBIS 训练 → CMMD 外部测试 | ECR 2024, C-21656, 10.26044/ecr2024/C-21656 | 未公开 |
| 5 | All-Conv Net | patch 级基准(TFDS 采样依据) | 2017 | 全卷积网络 + patch 采样 | Shen et al., 2017, arXiv:1708.09427 | 社区复现多版本 |
数值不可直接比较的原因:各行在输入变体(裁剪图 / 完整图 / 224×224 patches)、指标口径(AUC / Acc)、划分策略(官方记录级 / 患者级 / TFDS)与图像尺寸上均不一致;排行榜最高记录尤其缺乏统一协议。引用任何数字时必须连同口径一起引用。
§8.2 SOTA 总结与选型建议
分类轨道的公开数字大体落在 AUC 0.74–0.90 区间,上限受输入变体与划分策略影响大于模型架构本身。选型建议:以 ResNet-50/DenseNet-121 单通道微调作为可信 baseline(有同行评审数字背书);检测/分割轨道以 U-Net 与 RetinaNet 起步,重点预算花在路径修复与患者级划分上,而不是盲目追新架构;论文对比时优先引用 §8.1 中带 DOI 的同行评审数字,排行榜记录仅作方向性参考。
工作点设计上,钼靶诊断任务的惯例是固定特异度报灵敏度(如 90%/95% 特异度),而非固定阈值 0.5——后者在富集人群上会同时虚高灵敏度与特异度,迁移到筛查样分布时性能塌陷。若论文需要绝对阈值,应同时给出校准曲线(calibration curve)与 Brier 分数。
§8.3 评测协议
- 冻结输入变体:声明 classification@crop 或 detection@full,全文一致;
- 划分声明:官方记录级划分与患者级划分二选一并披露(推荐患者级 + 官方 test 终评);
- 指标:主指标 AUC;辅以 90%/95% 特异度处灵敏度;分割报 Dice + IoU 并说明二值化阈值;
- 分轨报告:钙化/肿块分别报告,合并结果单列;
- 复现细节:OD 归一化方式、掩膜尺寸处理、黑名单样本数全部随论文披露;
- 不确定性:AUC 附 bootstrap 95% CI(§6.9
bootstrap_ci),跨模型比较用 DeLong 检验; - 可审计性:随代码发布 manifest、黑名单与 person 分组映射的生成脚本。
§8.4 相关数据集
| 数据集 | 规模 | 设备代际 | 标注特点 | 与 CBIS-DDSM 的关系 |
|---|---|---|---|---|
| DDSM(母库) | 2,620 例 | 屏片数字化 | 区域标记,无现代掩膜 | CBIS-DDSM 的直接来源 |
| INbreast | 115 例 / 410 图 | 全数字 | BI-RADS + 像素级掩膜 | 现代 mask 精度参照 |
| VinDr-Mammo | 5,000 例检查 / 20,000 图 | 现代数字化 | 六人交叉 BI-RADS | 大规模一致性标注参照 |
| RSNA 2023 | 11,813 例患者 / 54,706 图 | 数字化 | 恶性 + density(竞赛) | 检测赛道主要现代基准 |
| CMMD | 1,775 例患者 | 数字化 | 良恶性 + 分子分型 | 跨人群外部验证常用 |
| EMBED | 3.4M 张图像 | 现代数字化 | BI-RADS + 病理 + EHR | 超大规模对照 |
§8.5 关键论文 Top 5
- Sawyer Lee R, Gimenez F, Hoogi A, Miyake KK, Gorovoy M, Rubin DL. A curated mammography data set for use in computer-aided detection and diagnosis research. Scientific Data, 2017, 4:170177. DOI 10.1038/sdata.2017.177 —— 数据集官方论文:编制方法学、转码与标注流程的唯一权威描述。
- Heath M, Bowyer K, Kopans D, Moore R, Kegelmeyer P. The Digital Database for Screening Mammography. Proceedings of the Fifth International Workshop on Digital Mammography (IWDM), 2000, 212-218 —— DDSM 母库论文:理解影像来源与扫描仪混源问题的起点。
- Shen L, Margolies LR, Rothstein JH, Fluder E, McBride R, Sieh W. Deep Learning to Improve Breast Cancer Early Detection on Screening Mammography. arXiv:1708.09427, 2017 —— 全卷积 patch 采样方案,TensorFlow Datasets patches 配置的直接依据。
- Scientific Reports. ResNet-50 肿块分类基线研究. 2024, DOI 10.1038/s41598-024-78648-0 —— 提供带置信区间的现代骨干基线(AUC 0.7421 [0.6651, 0.8147]),常被用作严谨下界。
- BioMedical Engineering OnLine. YOLO-AMDF 钙化分类研究. 2023, DOI 10.1186/s12938-023-01115-w —— 检测-分类一体化架构在钙化轨道的代表(AUC 0.847)。
§8.6 社区活跃度
- 论文引用 817+(Semantic Scholar,截至 2026-09),是钼靶 AI 文献中被引最高的数据集论文之一;
- TCIA 数据 DOI 页面累计 57.9k 次浏览、91 次数据引用(截至 2026-09);
- 被 TensorFlow Datasets 官方收录(curated_breast_imaging_ddsm),高校课程普遍用作教学数据集;
- 社区维护的路径修正/校验工具与 NBIA CLI 持续可用(见 §8.7),官方数据层面自 2017-09-14 后冻结;
- 注意区分两类引用口径:论文 DOI 的引用数反映方法学影响,数据 DOI 的 91 次引用反映数据复用,报告时应注明使用的是哪一口径(截至 2026-09)。
§8.7 生态快照
| 资源 | 类型 | 链接 | 状态(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| TCIA 集合页 | 官方主页 | https://wiki.cancerimagingarchive.net/display/Public/CBIS-DDSM | 有效 | manifest、CSV、许可与说明的权威入口 |
| 数据 DOI | 数据引用页 | https://doi.org/10.7937/K9/TCIA.2016.7O02S9CY | 有效 | 引用与版本记录 |
| TFDS 条目 | 二次封装 | https://www.tensorflow.org/datasets/catalog/curated_breast_imaging_ddsm | 有效 | 分类任务最快上手 |
| GitLab 校验工具 | 社区修复 | https://gitlab.com/ACSG-64/cbis-ddsm-description-correction-and-verification-tool | 有效 | 坑点 2/3 的自动化校验 |
| NBIA CLI | 社区下载 | https://github.com/kyuheejo/NBIA_data_retriever_CLI | 有效 | 无 GUI 服务器的批量下载 |
§9 相关资源与引用
§9.1 官方资源
- TCIA 集合页(manifest + CSV + 说明):https://wiki.cancerimagingarchive.net/display/Public/CBIS-DDSM
- TCIA 开发者页(镜像站):https://dev.cancerimagingarchive.net/collection/cbis-ddsm/
- 数据 DOI:https://doi.org/10.7937/K9/TCIA.2016.7O02S9CY
- 论文页(Scientific Data):https://www.nature.com/articles/sdata2017177(PMID 29257132 / PMCID PMC5735920)
- TensorFlow Datasets 条目:https://www.tensorflow.org/datasets/catalog/curated_breast_imaging_ddsm
官方资源中,TCIA 集合页与论文页是仅有的两处权威描述;其余行为(转换细节、字段语义)以论文 Methods 为准,社区文档与其冲突时不再另行裁定。
§9.2 社区资源
- 路径修正与描述校验工具:https://gitlab.com/ACSG-64/cbis-ddsm-description-correction-and-verification-tool
- NBIA 命令行下载器:https://github.com/kyuheejo/NBIA_data_retriever_CLI
- 数据统计看板(图像与标注分布交叉核对):https://datasetninja.com/cbis-ddsm
- 排行榜聚合:https://www.sota2.com/research/dataset/cbis-ddsm
以上社区资源均非官方维护,使用其转换结果时建议回溯官方 manifest 校验样本数(§3.2 三口径自检),并在论文中注明所用镜像与下载日期。
§9.3 BibTeX 引用块
@article{SawyerLee2017CBISDDSM,
title = {A curated mammography data set for use in computer-aided
detection and diagnosis research},
author = {Sawyer Lee, Rebecca and Gimenez, Francisco and Hoogi, Assaf and
Miyake, Kanae Kawai and Gorovoy, Mia and Rubin, Daniel L.},
journal = {Scientific Data},
volume = {4},
pages = {170177},
year = {2017},
doi = {10.1038/sdata.2017.177}
}
@inproceedings{Heath2000DDSM,
title = {The Digital Database for Screening Mammography},
author = {Heath, Michael and Bowyer, Kevin and Kopans, Daniel and
Moore, Richard and Kegelmeyer, W. Philip},
booktitle = {Proceedings of the Fifth International Workshop on
Digital Mammography (IWDM)},
pages = {212--218},
year = {2000}
}
@misc{TCIA2016CBISDDSM,
title = {CBIS-DDSM: Curated Breast Imaging Subset of the
Digital Database for Screening Mammography},
author = {Sawyer Lee, Rebecca and Gimenez, Francisco and Hoogi, Assaf and
Rubin, Daniel},
howpublished= {The Cancer Imaging Archive},
year = {2016},
doi = {10.7937/K9/TCIA.2016.7O02S9CY}
}
§9.4 引用指南
任何使用 CBIS-DDSM 的成果都应同时引用:① 数据 DOI(10.7937/K9/TCIA.2016.7O02S9CY,对应上方 TCIA2016CBISDDSM);② 论文 DOI(10.1038/sdata.2017.177,对应 SawyerLee2017CBISDDSM);使用 DDSM 溯源讨论时补充 Heath2000DDSM。这是 TCIA Data Usage Policy 与 CC BY 3.0 署名要求的最低合规组合。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 环节 | 模型/工具 | 用途 |
|---|---|---|
| 正文起草与整理 | CodeBuddy Code(fast-model) | 章节起草、表格排版、代码示例整理 |
| 事实核查 | WebSearch 工具链(6 次检索) | 规模口径、许可、基准与坑点来源核实 |
§10.2 AI 参与范围
- AI 参与:全部章节的初稿起草、对照 FACTS 清单的数字整理、代码示例的格式化与自检修复。
- 人工参与:研究检索指令设计、事实清单审核、医学与数据工程交叉审核(范围见 §0)、最终定稿。
- AI 未参与:源数据本身的生产与标注、官方文档的撰写;本条目全部关键数字均可回溯至 §10.3 的 16 条公开来源。
§10.3 输入来源列表
- Sawyer Lee R, Gimenez F, Hoogi A, Miyake KK, Gorovoy M, Rubin DL. A curated mammography data set for use in computer-aided detection and diagnosis research. Scientific Data, 2017, 4:170177. DOI 10.1038/sdata.2017.177
- The Cancer Imaging Archive. CBIS-DDSM Collection Page. https://wiki.cancerimagingarchive.net/display/Public/CBIS-DDSM
- The Cancer Imaging Archive. CBIS-DDSM Data DOI. https://doi.org/10.7937/K9/TCIA.2016.7O02S9CY
- The Cancer Imaging Archive. CBIS-DDSM Developer Mirror Page. https://dev.cancerimagingarchive.net/collection/cbis-ddsm/
- Heath M, Bowyer K, Kopans D, Moore R, Kegelmeyer P. The Digital Database for Screening Mammography. IWDM, 2000, 212-218.
- Shen L, Margolies LR, Rothstein JH, Fluder E, McBride R, Sieh W. Deep Learning to Improve Breast Cancer Early Detection on Screening Mammography. arXiv:1708.09427, 2017.
- Scientific Reports. ResNet-50 肿块分类基线研究. 2024. DOI 10.1038/s41598-024-78648-0
- BioMedical Engineering OnLine. YOLO-AMDF 钙化分类研究. 2023. DOI 10.1186/s12938-023-01115-w
- ECR 2024. VGG-16 钙化分类与 CMMD 外部验证. Poster C-21656. DOI 10.26044/ecr2024/C-21656
- TensorFlow Datasets. curated_breast_imaging_ddsm. https://www.tensorflow.org/datasets/catalog/curated_breast_imaging_ddsm
- University of Central Florida Complexity Lab. CBIS-DDSM 数据说明与许可. https://complexity.cecs.ucf.edu/cbis-ddsm/
- ACSG-64. CBIS-DDSM Description Correction and Verification Tool. https://gitlab.com/ACSG-64/cbis-ddsm-description-correction-and-verification-tool
- Jo K. NBIA Data Retriever CLI. https://github.com/kyuheejo/NBIA_data_retriever_CLI
- Dataset Ninja. CBIS-DDSM Statistics. https://datasetninja.com/cbis-ddsm
- World Health Organization. Breast Cancer Fact Sheet (GLOBOCAN 2022). https://www.who.int/news-room/fact-sheets/detail/breast-cancer
- sota2. CBIS-DDSM 排行榜记录. https://www.sota2.com/research/dataset/cbis-ddsm(截至 2026-09)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §1 概览与规模三口径 | 千方病案医学编辑部 | 对照 TCIA DOI 页与论文逐数核对 | ✅ 已通过 |
| §2 医学背景与术语映射 | 千方病案医学编辑部 | ICD-11/SNOMED/BI-RADS 对照标准库 | ✅ 已通过 |
| §3-§4 规格与字段字典 | 千方病案医学编辑部 | 对照官方文档与社区统计工具 | ✅ 已通过 |
| §5-§6 划分与代码 | 千方病案医学编辑部 | 泄漏逻辑复推与代码走查 | ✅ 已验证 |
| §7 质量评估与 DAIMS | 千方病案医学编辑部 | 逐项证据核对 | ✅ 已通过 |
| §8-§10 基准与声明 | 千方病案医学编辑部 | 引用完整性核对 | ✅ 已通过 |
§10.5 AI 生成章节标注
| 章节 | 生成方式 | 人工参与 |
|---|---|---|
| §0-§4 | AI 起草 | 事实核对与术语审定 |
| §5-§6 | AI 起草(含代码) | 泄漏逻辑与代码走查 |
| §7-§9 | AI 起草 | 证据与引用核对 |
| §10 与 §C | AI 起草 | 最终定稿 |
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cmmd — 共享标签:医学影像 / 乳腺影像 / X光影像 / 图像分类 / 乳腺癌
- busi — 共享标签:医学影像 / 乳腺影像 / 图像分类 / 乳腺癌
- inbreast — 共享标签:医学影像 / 乳腺影像 / 图像分类 / 乳腺癌
- vindr-mammo — 共享标签:医学影像 / 乳腺影像 / X光影像 / 乳腺癌
- chexpert — 共享标签:医学影像 / X光影像 / 图像分类
- nih-chestx-ray14 — 共享标签:医学影像 / X光影像 / 图像分类
- image-embeddings-mimic-cxr — 共享标签:医学影像 / X光影像 / 图像分类
- mimic-cxr-jpg — 共享标签:医学影像 / X光影像 / 图像分类
- odelia — 共享标签:医学影像 / 乳腺影像 / 图像分类 / 乳腺癌
- udiat — 共享标签:医学影像 / 乳腺影像 / 图像分类 / 乳腺癌
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

