信息速览
VinDr-Mammo — 大规模乳腺钼靶 BI-RADS 标注基准 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | VinDr-Mammo |
| 英文全称 | VinDr-Mammo: A large-scale benchmark dataset for computer-aided diagnosis in full-field digital mammography |
| 别名/简称 | VinDr-Mammo v1.0.0、VinDr Mammography、VinDr 乳腺钼靶数据集 |
| 疾病分类 | 乳腺癌及乳腺病变(ICD-11:2C60 恶性乳腺肿瘤 / 2E65 乳腺原位癌 / 2F30 良性乳腺肿瘤) |
| SNOMED CT | 254837009 Malignant neoplasm of breast / 441652006 Carcinoma in situ of breast / 127556008 Benign neoplasm of breast(详见 §2.1b) |
| 数据模态 | 全视野数字乳腺 X 线摄影(FFDM,四视图:双侧 CC + MLO) |
| AI 任务类型 | BI-RADS 分级、乳腺密度分类、病灶检测(CADe)、病灶分类(CADx)、目标检测、多标签图像分类、多任务预训练 |
| 样本总数 | 5,000 次检查 / 20,000 张图像 / 10,000 侧乳腺级标注 / 约 2,280 个病灶框 |
| 数据大小 | 约 337.8 GB(DICOM) |
| 数据格式 | DICOM(.dicom)+ CSV(breast-level_annotations / finding_annotations / metadata 三表) |
| 许可证 | PhysioNet Credentialed Health Data License 1.5.0(基于 CC BY-NC-SA 4.0,附加禁止再识别条款) |
| 访问级别 | 申请审核(注册 PhysioNet + 签署 DUA;另有 Kaggle 公开镜像页可检索) |
| DUO 标签 | NPUNCU, PUB |
| 语言 | 英文(标注词表与文档) |
| 首发日期 | 2022-03-21(PhysioNet v1.0.0) |
| 最后更新 | 2022-03-21(v1.0.0,至今唯一官方版本) |
| 发布机构 | VinBigData / VinBrain(Vingroup,越南)与河内医科大学医院(HMUH)、108 中央军队医院(H108) |
| 官方主页 | https://www.vindr.ai/datasets/mammo |
| 下载地址 | https://physionet.org/content/vindr-mammo/1.0.0/ |
| DOI | 10.13026/br2v-7517(数据集 v1.0.0)/ 10.1038/s41597-023-02100-7(论文) |
| 引用次数 | 237+(Semantic Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方划分、三表标注字典与配套脚本齐全;扣分项:DICOM 非标准合规、无病理金标准、无官方一键预处理 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、BI-RADS 与乳腺密度体系、金标准描述)、§7 偏倚分析。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 VinBigData、Vingroup、河内医科大学医院、108 中央军队医院及 PhysioNet 无任何商业利益关联。本页面不销售 VinDr-Mammo 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。VinDr-Mammo 要求用户注册 PhysioNet 账号、签署数据使用协议(DUA,即 PhysioNet Credentialed Health Data License 1.5.0)后方可下载。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? VinDr-Mammo 是越南 Vingroup 旗下 VinBigData(研发团队源自 VinBrain)联合河内医科大学医院(HMUH)与 108 中央军队医院(H108)发布的全视野数字乳腺 X 线摄影(FFDM)公开基准数据集,包含 5,000 次四视图检查、共 20,000 张图像(PhysioNet 官方页面)。每侧乳腺均由资深放射科医师按 ACR BI-RADS 第 5 版给出 1-5 级评估与 A-D 乳腺密度分级;需要随访的可疑病灶另附边界框与病灶级 BI-RADS 分级。
为什么重要? 在它发布之前,公开乳腺影像数据集要么规模小(什么重要?** 在它发布之前,公开乳腺影像数据集要么规模小(INbreast 仅 115 例),要么是胶片数字化产物(DDSM/CBIS 仅 115 例),要么是胶片数字化产物(DDSM/east 仅 115 例),要么是胶片数字化产物(DDSM/CBIS-DDSM),要么只带图像级癌症标签(RSNA 2023 挑战赛训练集),要么只带图像级癌症标签(RSNA 2023 挑战赛训练集)。VinDr-Mammo 是当时最大的带 BI-RADS 与病灶级标注的公开 FFDM 资源,也是首个大规模东南亚人群乳腺影像基准:每例检查按欧洲指南双独立阅片、分歧由第三人仲裁,标注协议直接对标临床质控流程。
我能用它做什么? 训练与评测乳腺密度分类、BI-RADS 分级、病灶检测(CADe)与病灶分类(CADx)模型;把它当作多任务预训练源——2023 年 RSNA 乳腺癌筛查 Kaggle 挑战赛 Top10 方案中有 7 支采用了它(Radiology 2025 赛后分析);也可用于人群多样性、域泛化与标注协议研究。
§1.1 摘要
VinDr-Mammo 的构建分三步(论文 Fig. 1):其一,回顾性从两院 PACS 抽样 2018-2020 年间 5,000 次检查(20,000 张 DICOM),经脚本脱敏——仅保留年龄与设备厂商标签,图像四角烧录信息置黑,并经两轮人工复核。其二,三名具备十年以上乳腺阅片经验、持越南卫生部执业证书的放射科医师通过自研 Web 平台 VinDr Lab 依照欧洲指南独立双阅,分歧由第三人仲裁,产出乳腺级 BI-RADS(1-5)与密度(A-D),以及仅针对 BI-RADS 3-5 病灶的边界框标注。其三,采用迭代分层算法按 BI-RADS、密度与病灶类别频率将数据划分为 4,000 例训练集与 1,000 例测试集。全库共标注约 2,280 个病灶框,约 9.6% 的乳腺为 BI-RADS 3-5(arXiv 2025 复现研究)。数据以 DICOM 图像加三个 CSV 表的形式托管于 PhysioNet,签署 DUA 后免费获取。
§1.2 战略价值
科学维度:人群多样性与标注协议的双重稀缺。 乳腺影像 AI 的证据长期被欧美与东亚人群占据,东南亚人群几乎缺席——而乳腺密度分布在种族间差异显著,VinDr-Mammo 中 76.5% 的乳腺为 C 型(不均匀致密),这与欧美筛查队列的构成明显不同,为跨人群泛化研究提供了稀缺素材。同时,它是少数执行「双独立阅片 + 第三人仲裁」协议的公开乳腺数据集,标注流程可直接映射欧洲筛查质控标准,适合作为标注方法学研究的对象。
工程维度:官方划分与「BI-RADS + 病灶框」双层标注。 三个 CSV 表(乳腺级、病灶级、元数据)加上官方 train/test split,使得任何团队都能在同一测试集上复现对比——这在 2023 年 RSNA 挑战赛中被反复验证:多支 Top10 队伍先用 VinDr-Mammo 做多任务预训练(BI-RADS 五分类 + 密度四分类 + 病灶多标签),再迁移到 cancer 二分类主任务上(第 5 名方案)。对一个 337.8 GB 的数据集而言,这种「一张测试集、一套字段定义」的标准化设计显著降低了社区重复建设成本。
方法学维度:标注协议本身的示范价值。 「双独立阅片 + 第三人仲裁 + Web 平台质控规则」这套流程是欧洲筛查质控标准的开源实现样本:VinDr Lab 平台代码公开,脱敏与分层脚本公开,甚至「BI-RADS 1 时禁止落框」这类内置校验规则也在论文中披露。对准备自建标注管线的团队(尤其是计划做国产乳腺筛查 AI 的机构),这是一份可以直接对照的协议范本——研究它的价值不亚于使用它的数据。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注 | 与 VinDr-Mammo 的差异化 |
|---|---|---|---|---|
| VinDr-Mammo | 5,000 例 / 20,000 张 | FFDM(现代数字机) | 乳腺级 BI-RADS 1-5 + 密度 A-D + 病灶框(BI-RADS 3-5),双读仲裁 | 本条目对象;最大规模、双层标注、东南亚人群 |
| DDSM | 约 2,620 例 | 胶片数字化 | 病灶轮廓 + 良恶性/病理 | 1990 年代胶片扫描件,画质与格式陈旧 |
| CBIS-DDSM | 约 1,660 例 | 胶片数字化(精修) | 肿块/钙化轮廓 + 病理确诊 | 有病理金标准但无 BI-RADS 分级任务、无密度 |
| INbreast | 115 例 / 410 张 | FFDM | 像素级轮廓 + BI-RADS + 随访 | 精度高但规模过小,仅适合方法验证 |
| Mini-DDSM | 1,952 例 | 胶片数字化 | 癌症标签(部分病理) | DDSM 清洗子集,RSNA 赛事常用外部数据 |
| CMMD | 中等规模(数千例级) | FFDM | 良恶性 + 恶性亚型(中国人群) | 跨人群外部验证的常用选择 |
| RSNA 2023 训练集 | 11,913 例 / 约 54,706 张 | FFDM | 仅图像级癌症标签 | 规模大但无 BI-RADS、无病灶框,阳性率极低 |
读表要点:同时具备「现代 FFDM、乳腺级 BI-RADS、病灶级框、双读协议」四个属性的公开数据集,在 VinDr-Mammo 发布前并不存在;若研究需要病理确诊金标准,则应转向 CBIS-DDSM 并接受其胶片数字化画质。
§1.4 版本时间轴
| 时间 | 事件 | 说明 |
|---|---|---|
| 2022-03-07 | medRxiv 预印本发布 | 数据集设计、标注协议与划分方法首次公开(预印本) |
| 2022-03-21 | PhysioNet v1.0.0 上线 | 唯一官方版本,DOI 10.13026/br2v-7517(PhysioNet) |
| 2022-03 起 | Kaggle 社区镜像传播 | 2023 年 RSNA 挑战赛期间作为外部数据被广泛使用(Kaggle 讨论) |
| 2023-05-12 | Scientific Data 正式发表 | Nguyen et al., Sci Data 10:277,DOI 10.1038/s41597-023-02100-7(PubMed 37173336) |
| 2025-2026 | 下游基准研究持续 | 迁移学习系统研究(arXiv 2503.19945)与零样本评测(sota2 收录)陆续发表 |
时间轴揭示的生态规律:数据集发布(2022-03)与论文正式发表(2023-05)相隔 14 个月,期间社区已通过预印本与 Kaggle 镜像完成大规模采纳——2023 年下半年的 RSNA 挑战赛恰好承接了这波采用潮。这提示读者:引用本数据集时以 Scientific Data 论文为准,讨论具体版本与文件时以 PhysioNet v1.0.0 为准。
§1.5 典型应用场景
- 乳腺级 BI-RADS 分级模型:以 5 类(或 3 类筛查映射)预测每侧乳腺的评估等级,模拟放射科医师的召回决策。
- 病灶检测(CADe):用边界框训练 Faster R-CNN、RetinaNet 或 YOLOX 检测肿块、可疑钙化、结构扭曲等 10 类词表病灶。
- 癌症筛查预训练源:先在 VinDr-Mammo 上做多任务预训练(BI-RADS + 密度 + 病灶类型),再迁移到 RSNA 等癌症二分类数据集——2023 年 RSNA 挑战赛 Top10 中 7 支方案采用此策略。
- 乳腺密度分类:四分类 A-D 任务,支撑「致密乳腺需补充超声」等筛查间隔政策的算法研究。
- 域泛化与人群多样性研究:以越南人群为源域或目标域,检验跨厂商、跨人群的模型漂移。
场景取舍提示:若目标是发表分类基准论文,优先场景 1 与 4,并严格沿用官方划分;若目标是刷竞赛榜或做产品原型,优先场景 3(预训练 + 主任务微调的两阶段管线,工程验证最充分);若目标是病灶级可解释输出(CAD 报告),选择场景 2 并接受「只覆盖 BI-RADS 3+ 病灶」的边界(坑点 3)。
§2 医学背景
§2.1 ICD-11 编码映射
| 标签/概念 | ICD-11 编码 | ICD-11 中文名 | 说明 |
|---|---|---|---|
| BI-RADS 4/5(可疑恶性) | 2C60 | 恶性乳腺肿瘤 | 数据集无病理确诊,4/5 级仅为影像学怀疑,建模时不得直接映射为 2C60 确诊标签 |
| BI-RADS 3(可能良性) | 2F30 | 良性乳腺肿瘤 | 3 级病灶癌变概率 <2%,临床对应短期随访而非立即活检 |
| 乳腺原位癌(未在数据集中区分) | 2E65 | 乳腺原位癌 | 若病理确认多归类于此;本数据集不提供该层级信息 |
| 乳腺密度 C/D(致密乳腺) | 无独立 ICD-11 编码 | (致密乳腺为影像学描述) | 密度等级属 ACR BI-RADS 词表,编码映射仅到疾病层面 |
注意:BI-RADS 是评估类别体系而非疾病分类,上表给出的是「若最终诊断为某类疾病时的 ICD-11 落点」;数据集标签本身不携带 ICD-11 编码。
若需要把模型输出接入电子病历或登记系统,建议的做法是在导出层维护一份「BI-RADS 等级 × 后续病理结果」的映射表,由临床端在随访后补全 ICD-11/SNOMED 编码——数据集层面的影像标签不应直接充当疾病编码。
§2.1b SNOMED CT 映射
| 标签/概念 | SNOMED CT 码 | 术语 | 说明 |
|---|---|---|---|
| 恶性乳腺肿瘤(对应 BI-RADS 4/5 的最终诊断方向) | 254837009 | Malignant neoplasm of breast | 影像怀疑 ≠ 确诊,映射需病理证实 |
| 乳腺原位癌 | 441652006 | Carcinoma in situ of breast | 数据集未单独区分 |
| 良性乳腺肿瘤(对应 BI-RADS 2/3 方向) | 127556008 | Benign neoplasm of breast | 数据集中 BI-RADS 2 不标框 |
| 乳腺 X 线筛查(检查项目) | 712736006 | Mammography screening | 本数据集的采集检查类型,混合筛查与诊断性检查 |
§2.2 疾病简介与流行病学
乳腺癌是全球女性发病率最高的恶性肿瘤:据论文引用的 GLOBOCAN 2020 统计,2020 年全球新发乳腺癌约 220 万例,居女性癌症死亡首位(PhysioNet Background 引用 Sung et al. 2021)。乳腺 X 线摄影(钼靶)是唯一被广泛证实的群体筛查手段,建模研究显示双年筛查可使乳腺癌死亡率降低约 30%(论文引用 Mandelblatt et al. 2016)。筛查的核心难点是召回率与癌检出率的平衡:现代筛查基准下召回率远高于癌检出率,带来大量不必要的随访与焦虑——这正是 CADe/CADx 工具的切入点。
就本数据集来源人群而言,越南乳腺癌发病率持续上升且确诊时分期偏晚,筛查体系仍在建设期;河内医科大学医院与 108 中央军队医院均为大型综合医院,采集的检查混合了筛查与诊断性检查。数据集内 76.5% 的乳腺为 C 型(不均匀致密)、13.5% 为 D 型(极度致密)(论文标注统计),显著高于欧美队列中致密乳腺占比,与东亚及东南亚女性乳腺构成特征一致——这对「致密乳腺中病灶易漏诊」这一临床痛点研究具有直接价值。
BI-RADS 词表本身的临床语义也值得建模者理解:1 级(阴性)与 2 级(良性发现)都不需要额外处理;3 级(可能良性)按惯例需短期随访,恶性概率 <2%;4 级(可疑)触发活检建议,内部再按 4A/4B/4C 细分恶性可能(2-95%);5 级(高度提示恶性)恶性概率 >95%。本数据集按第 5 版词表发布 1-5 级但不区分 4A/4B/4C,也不含 0 级(需补充检查)与 6 级(病理确诊),建模时应把这五个离散等级视为有序类别而非等距数值。
§2.3 临床任务定义
| 任务 | 定义 | 数据集对应标签 | 说明 |
|---|---|---|---|
| 筛查召回判定 | 判断该乳腺是否需要进一步检查 | BI-RADS 3/4/5 → recall;1 → normal;2 → benign | 论文官方推荐的 3 类筛查映射 |
| BI-RADS 分级 | 按第 5 版词表给 1-5 级评估 | breast_birads(每侧乳腺一个) | 5 类监督信号 |
| 乳腺密度分类 | A-D 四级(乳腺组成) | breast_density | 指导筛查间隔政策 |
| 病灶检测(CADe) | 定位可疑病灶 | finding_annotations 的边界框(仅 BI-RADS 3-5) | 10 类词表,一框可多标签 |
| 病灶分类(CADx) | 判定病灶性质与等级 | finding_birads(每框一个) | 与框类别联合使用 |
§2.4 患者人群构成
| 维度 | 内容 |
|---|---|
| 来源机构 | 河内医科大学医院(HMUH)与 108 中央军队医院(H108),越南河内 |
| 采集时间 | 2018-2020 年(PACS 回顾性抽样) |
| 年龄 | 成年女性;metadata.csv 保留年龄字段,无 89 岁以上受检者 |
| 性别 | 女性 |
| 种族/地域 | 越南裔为主,单一国家双中心 |
| 就医类型 | 筛查与诊断性检查混合 |
| 规模 | 5,000 次检查 / 10,000 侧乳腺 / 20,000 张图像 |
人群构成上的两点提示:其一,数据集未公布年龄分布直方图,metadata.csv 的 age 字段是唯一的年龄信息源,做年龄分层研究前先自查分布;其二,「混合筛查与诊断性检查」意味着 BI-RADS 4/5 的占比可能高于纯筛查人群,外推到组织化筛查场景时应按 §7.1 的就医类型偏倚做敏感性分析。
§2.5 临床价值
对算法开发者,该数据集把「筛查决策」拆解为可监督的中间任务:密度分类、BI-RADS 分级、病灶检出与分级。中间任务标签(而非仅有癌症二分类)使模型可解释性显著提升——例如模型输出「BI-RADS 4,右乳 MLO 可见肿块伴皮肤凹陷」而非单一概率,更贴近放射科报告结构。对临床教学,10 类病灶词表与真实患病率分布(BI-RADS 5 仅 1.13%)提供了接近门诊实际的阅片素材。对卫生政策研究,双读协议与召回映射实验可用于评估「AI 复核第二读」在东南亚筛查体系中的潜在收益,这正是论文引言援引 Lancet Digital Health 模拟研究的问题意识。
从学科发展看,该数据集还承担了一个隐性角色:把「乳腺筛查 AI」的评价重心从二分类癌症检出拉回到与临床工作流一致的分级决策(是否召回、是否密度提示需补充检查、病灶在哪)。这种「中间决策」视角后来也被 RSNA 挑战赛的赛题设计(按乳房聚合并计分)所印证,是数据集设计影响领域评测习惯的一个实例。
§2.6 金标准构成
| 属性 | 内容 |
|---|---|
| 划分 | 乳腺级(每侧乳腺一条)与病灶级(每框一条)双层标签 |
| 标注方式 | 双独立阅片(欧洲指南),分歧由第三人仲裁;Web 平台 VinDr Lab 完成 |
| 标注者 | 3 名放射科医师,均 >10 年乳腺阅片经验(平均约 19 年、年阅 10,000-15,000 张),持越南卫生部执业证书(论文) |
| 词表 | ACR BI-RADS 第 5 版:评估 1-5 级、密度 A-D、病灶 10 类词表 |
| 性质 | 影像学共识金标准;非病理确诊,无活检对照 |
这一定位决定了它的最佳用法:把「共识影像金标准」用于训练与筛查级评估,把「病理确诊」的求证需求交给外部数据。若论文需要同时呈现两种口径,常规做法是以本库训练、以带病理标签的队列(如 CBIS-DDSM)做诊断级外部检验,并在方法学章节明确说明两套标签的语义差异。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐渠道 | 大小 | 理由 |
|---|---|---|---|
| 复现论文指标、发论文 | PhysioNet v1.0.0(官方) | 约 337.8 GB | 唯一官方版本,DOI 可引用,内容与论文完全一致 |
| 国内网络快速获取、Kaggle 工作流 | Kaggle 镜像(站内检索 vindr-mammo) | 约 337.8 GB | 与 v1.0.0 同内容,kaggle CLI 下载稳定(Kaggle 讨论) |
| 只需脱敏/分层/可视化脚本 | GitHub 官方代码仓 | <1 MB | deidentification.py、stratification.py、visualize.py(vinbigdata-medical/vindr-mammo) |
| 二分类癌症任务训练 | 不推荐单独使用 | — | 无病理确诊标签;应作为预训练源,主任务数据用带癌症标签的队列 |
§3.1 模态详情
全视野数字乳腺 X 线摄影(Full-Field Digital Mammography, FFDM)是当前临床主流的钼靶技术,直接产出数字图像而不经胶片扫描。每次检查固定包含四个标准投照体位:双侧乳腺各取头尾位(Craniocaudal, CC)与内外斜位(Mediolateral Oblique, MLO),构成四视图。图像为高分辨率单通道灰度(典型位深 12-16 bit),以 for-presentation 状态从 PACS 导出(即放射科实际阅片所见的样子,已经过厂商灰阶处理),这与一些数据集发布 for-processing 原始态的做法不同——用本数据训练的模型学到的是「已呈现」域的图像特征,跨到 for-processing 数据时要重新审视预处理假设。另有三点模态特性需要注意:其一,不同厂商设备的灰度表现函数(LUT)与分辨率差异明显,跨厂商训练需做窗宽窗位/VOI LUT 归一;其二,图像四角原有烧录的患者信息已在发布前置黑,但黑框仍占据像素;其三,官方明确声明这批 DICOM 文件并非完全 DICOM 标准(not DICOM-compliant),通用 DICOM 库可能处理失败(详见坑点 1)。
§3.2 按子集样本数
| 子集 | 检查数 | 图像数 | 乳腺级标注行 | 说明 |
|---|---|---|---|---|
| training | 4,000 | 16,000 | 8,000 | split 列为 training |
| test | 1,000 | 4,000 | 2,000 | split 列为 test;官方协议用于最终评估 |
| 合计 | 5,000 | 20,000 | 10,000 | 每检查恒为 4 张图、每张图对应 1 行乳腺级标注 |
乳腺级 BI-RADS 分布(10,000 侧乳腺,arXiv 2503.19945 复现统计):
| BI-RADS | 占比 | 约数 |
|---|---|---|
| BI-RADS 1(阴性) | 67.03% | 约 6,700 |
| BI-RADS 2(良性) | 23.38% | 约 2,340 |
| BI-RADS 3(可能良性) | 4.65% | 约 465 |
| BI-RADS 4(可疑) | 3.81% | 约 380 |
| BI-RADS 5(高度可疑恶性) | 1.13% | 约 113 |
乳腺密度分布(论文标注统计):A 型 0.5%、B 型 9.5%、C 型 76.5%、D 型 13.5%。
上表与官方比例的对照方法:用 §6.1 的三行代码即可在本地复现同一组分布(value_counts(normalize=True)),这是验收「数据下载完整、CSV 未损坏」的最快方式——任何显著偏离都应先怀疑传输截断或版本不一致,而不是模型问题。
§3.3 数据格式
| 组成 | 格式 | 说明 |
|---|---|---|
| 图像 | DICOM(.dicom 后缀),16-bit 灰度 |
20,000 个文件,位于 images/{study_id}/ 下 |
| 乳腺级标注 | CSV(breast-level_annotations.csv) |
每行一张图像,含 BI-RADS、密度、split |
| 病灶级标注 | CSV(finding_annotations.csv) |
每行一个边界框,含类别列表、finding_birads、xmin/ymin/xmax/ymax |
| 元数据 | CSV(metadata.csv) |
年龄、厂商(Manufacturer)、型号(ManufacturerModelName) |
三个 CSV 均为 UTF-8 编码的标准逗号分隔文件,可直接 pandas.read_csv 读取;唯一的解析陷阱在 finding_categories 列(字符串化列表,见坑点 2)。图像文件扩展名为 .dicom(而非 .dcm),写路径匹配时注意通配符。
§3.4 存储大小
官方包约 337.8 GB(Kaggle 社区统计),解压后占用基本相同。工程建议预留至少 600 GB 磁盘:原图 + 解压临时空间 + PNG 转换缓存 + 训练切片。若磁盘紧张,可只解压测试集或训练集所需的 study_id 子目录——目录名与 CSV 中 study_id 一一对应,便于按需提取。
传输耗时参考:337.8 GB 在 100 Mbps 带宽下理论需约 8 小时,实际含 PhysioNet 限速与验证常以天计;因此社区普遍先在云端(PhysioNet 云桶或 Kaggle Notebook 挂载)完成预处理,仅下载转换后的 PNG 缓存(约数十 GB 量级,取决于压缩与分辨率)回本地。
§3.5 标注方式
采用「人工 + 双读共识」模式,无自动预标注参与终稿。乳腺级标签(BI-RADS、密度)每侧乳腺一条;病灶级采用矩形边界框(非像素级轮廓),每框附带类别列表与病灶级 BI-RADS。两条关键标注规则必须理解:第一,良性 BI-RADS 2 病灶被系统性不标注,以缩短阅片时间——因此「无框」的语义是「无 BI-RADS 3 及以上病灶」而非「无任何病灶」;第二,一个框可以同时挂多个类别(如 ["Mass", "Skin Retraction"]),类别列表以字符串化列表形式存储在 finding_categories 列中。
选择「边界框而非像素级轮廓」是规模与精度的工程折中:双读协议下轮廓标注的时间成本会数倍膨胀,而框标注足以支撑检测类任务与多任务预训练。需要像素级分割真值的研究(如病灶分割),应转向 INbreast 或 CBIS-DDSM,或在本数据集上做弱监督/半监督分割。
§3.6 标注者资质与一致性
参与阅片的 3 名放射科医师均具备 10 年以上乳腺影像经验(平均约 19 年),年阅片量 10,000-15,000 张,持越南卫生部颁发的执业证书;阅片团队名单见于 PhysioNet 致谢页(Nhung Hong Luu、Minh Thi Ngoc Nguyen、Huong Thu Lai)。一致性方面,论文采用「双读 + 仲裁」的共识机制替代传统 kappa 统计:每位阅片者独立给出全部标签,任何分歧交由第三人仲裁定稿。需要注意的是,数据集未公布逐例的阅片者间一致性矩阵,也未标注最终标签出自初读共识还是仲裁,这使得标注方差无法从外部精确量化——使用时应把标签视为共识金标准而非测量型连续变量。
§3.7 采集周期
2018-2020 年间从两院 PACS 回顾性抽样。官方未公布逐例检查日期(脱敏),仅保留三年区间粒度,因此无法开展逐时序漂移分析;若需时序建模,只能以「采集批次」做粗粒度近似。
抽样方式为随机抽样而非连续入组,这意味着三年窗口内的设备更换、就诊季节性等因素已被「稀释」进同一池子——对建模者是中性设计,但对希望研究「按时间演化」的团队是硬约束。
§3.8 地域覆盖
单一国家(越南)双中心(河内两所大型综合医院)。这是它的科学价值所在(东南亚人群代表性),也是它的泛化边界:跨国家、跨筛查体系(越南混合筛查/诊断场景 vs 欧美组织化筛查)迁移时性能衰减风险显著(详见 §7.3)。
§3.9 设备规格
图像来自三家乳腺机厂商:Siemens、Planmed 与 IMS(论文对比资料);metadata.csv 逐例记录 Manufacturer 与 ManufacturerModelName,可据此做设备分组评估或域自适应实验。官方未公布各厂商的具体样本占比,使用前建议先对 metadata.csv 做 groupby('manufacturer').count() 自查分布。
§3.10 深度溯源链
| 环节 | 主体 | 说明 |
|---|---|---|
| 立项与资助 | Vingroup JSC(学术资助,不干预研究) | 论文利益冲突声明 |
| 数据制作与发布 | VinBigData JSC(研发团队源自 VinBrain) | PhysioNet 利益冲突声明 |
| 采集医院 | HMUH、H108 放射科 | IRB 批准发布脱敏数据,知情同意豁免 |
| 脱敏与分层 | VinBigData 工程团队,脚本开源 | GitHub 仓库(Apache-2.0) |
| 标注 | 3 名资深放射科医师(VinDr Lab 平台) | 平台代码开源(vinbigdata-medical/vindr-lab) |
| 托管与许可 | PhysioNet(Credentialed Health Data License 1.5.0) | 凭证化访问 + DUA |
§4 数据结构
§4.0 目录树
数据解压后的目录结构(与 PhysioNet Data Description 一致):
vindr-mammo/
├── metadata.csv # 年龄、厂商、型号(每行一张图像)
├── breast-level_annotations.csv # 乳腺级标注(每行一张图像)
├── finding_annotations.csv # 病灶级标注(每行一个边界框)
└── images/
├── 0025a5dc99fd5c742026f0b2b030d3e9/ # study_id(MD5 哈希命名的检查目录)
│ ├── 2ddfad7286c2b016931ceccd1e2c7bbc.dicom
│ ├── 451562831387e2822923204cf8f0873e.dicom
│ ├── 47c8858666bcce92bcbd57974b5ce522.dicom
│ └── fcf12c2803ba8dc564bf1287c0c97d9a.dicom # 每检查恒 4 张
├── ...
└── fff2339ea4b5d2f1792672ba7d52b318/
├── 5144bf29398269fa2cf8c36b9c6db7f3.dicom
├── e4199214f5b40bd40847f5c2aedc44ef.dicom
├── e9b6ffe97a3b4b763cf94c9982254beb.dicom
└── f1b6aa1cc6246c2760b882243657212e.dicom
三个联表要点:其一,目录名与 study_id 完全一致,可按 CSV 直接拼路径,无需索引文件;其二,series_id 与图像文件一一对应(一图一序列),因此乳腺级表没有单独的 image_id 列也能定位文件;其三,finding_annotations.csv 的 image_id 就是文件名主干,病灶表到文件的映射同样是一跳可达。
§4.1 DAIMS 字段字典
核心字段 8 列字典(观测误差与信息性缺失两列为使用指南性质):
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差/注意 | 信息性缺失 | 取值范围 |
|---|---|---|---|---|---|---|---|
| study_id | 文本 | 检查级哈希标识,同时是 images/ 子目录名 | 0025a5dc99fd5c742026f0b2b030d3e9 |
分组键、防泄漏划分 | 无患者级 ID,同一患者多次检查不可关联 | 无 | 32 位十六进制 |
| series_id | 文本 | 图像级标识(一图一序列) | 32 位哈希 | 唯一主键 | 在 breast-level 表中每行唯一 | 无 | 32 位十六进制 |
| image_id | 文本 | 图像文件名(不含后缀) | 32 位哈希 | 关联 DICOM 路径 | 仅出现在 finding 表与 metadata | 无 | 32 位十六进制 |
| laterality | 文本 | 乳腺侧别 | L / R | 左右分组、翻转校验 | 无 | 无 | |
| view_position | 文本 | 投照体位 | CC / MLO | 视图感知建模 | 官方仅保证标准两体位 | 无 | |
| height / width | 整数 | 原始分辨率(像素) | 4084 / 3328 | bbox 坐标归一 | 不同厂商差异大,勿假设统一尺寸 | 无 | 数百至数千像素 |
| breast_birads | 文本 | 乳腺级 BI-RADS | BI-RADS 4 |
分级任务主标签 | 无 0/6;非病理确诊 | 无 | |
| breast_density | 文本 | 乳腺密度(组成) | DENSITY C |
密度分类标签 | 与 BI-RADS 相关但不等价 | 无 | |
| split | 文本 | 官方划分 | training / test | 复现基准 | 整个数据集同流程制作,可自定义但须声明 | 无 | |
| finding_categories | 文本 | 字符串化类别列表(一框可多类) | ["Mass", "Skin Retraction"] |
检测/多标签任务 | 需解析而非直接按字符串分类 | 无框图像不出现在本表 | 10 类词表 |
| finding_birads | 文本 | 病灶级 BI-RADS | BI-RADS 3 |
病灶分级 | 仅 3/4/5,良性 2 未标注 | 无 | |
| xmin/ymin/xmax/ymax | 整数 | 边界框四角(原始像素坐标) | 1083 / 2145 / 1301 / 2380 | 检测框回归 | 基于原始分辨率,resize 后须同步缩放 | 无 | [0, width/height] |
| age | 整数 | 受检者年龄(metadata.csv) | 52 | 人群分析、年龄分层 | 无 89 岁以上;可能存在少量缺失 | 缺失需自查 | 20-89(官方口径) |
| manufacturer / model | 文本 | 设备厂商与型号(metadata.csv) | Siemens / MAMMOMAT… | 域泛化分组 | 三家厂商,占比需自查 | 无 | Siemens、Planmed、IMS 等 |
字典使用规则:乳腺级表与病灶级表通过 study_id/series_id 冗余联表(无需 metadata 也能补全标签上下文),metadata.csv 只提供年龄与设备两块增量信息;三表均为「一张图像一行」或「一框一行」的规范粒度,聚合方向永远是「病灶 → 图像 → 乳腺 → 检查」逐级向上,反向拆分则可能破坏标签的唯一性。
§4.2 标签分布
病灶类别计数(全库,论文统计):
| finding 类别 | 框数 | 备注 |
|---|---|---|
| Mass(肿块) | 1,226 | 最主要病灶类别 |
| Suspicious Calcification(可疑钙化) | 543 | 形态学可疑或可能良性 |
| Asymmetries(Global + Focal Asymmetry 合计) | 392 | 非对称致密 |
| Architectural Distortion(结构扭曲) | 119 | 经典难检出类别 |
| Suspicious Lymph Node / Skin Thickening / Skin Retraction / Nipple Retraction | 每类 <60 | 伴随特征,官方警告样本过少 |
病灶级 BI-RADS 分布(Kaggle 社区统计):BI-RADS 5 共 241 框、BI-RADS 4 共 995 框、其余约 1,044 框为 BI-RADS 3;全库约 2,280 框覆盖约 2,254 张图像。
解读这组数字时的三个推论:其一,四大主类(肿块/钙化/非对称/结构扭曲)合计约 2,280 框,而伴随特征合计不足百例,任何按 10 类均衡输出的检测模型都会被尾部类别拖垮;其二,BI-RADS 4+5 合计约 1,236 框,是「高置信可疑病灶」检测任务真正可用的监督量;其三,每图平均框数仅约 1 个(2,280/2,254),说明病灶多发的图像占比很低,检测器的多目标能力在本库上难以充分训练。
§4.3 关键统计
- 每次检查恒为 4 张图像(双侧 × CC/MLO),无缺视图记录。
- 图像级异常率约 9.6%(BI-RADS 3-5);官方测试集 4,000 张图像中异常 384 张、正常 3,616 张(arXiv 2503.19945)。
- 约 11.3% 的图像(2,254/20,000)至少含一个标注框。
- 单框可挂多类别(肿块 + 皮肤凹陷等伴随特征),多标签解析是数据处理必经步骤。
- 图像分辨率跨厂商不一致(height/width 逐图记录),从数百到数千像素不等。
- 10,000 侧乳腺中约 9.6% 为 BI-RADS 3-5,即「每 10 侧乳腺约 1 侧需要随访」的患病结构,显著高于欧美组织化筛查的召回率。
- 病灶表与乳腺级表通过 study_id/series_id/image_id 三级哈希联表,均可与 metadata.csv 按图像关联出年龄与设备信息。
§4.4 数据层级
受检者(无独立患者级 ID)
└── 检查 study_id(5,000 个)
└── 乳腺 laterality(L/R,每检查 2 侧)
└── 视图 view_position(CC/MLO,每侧 2 视图)
└── 图像 image_id(20,000 张)
└── 病灶框(0 到多个,共约 2,280 个)
层级含义:同一乳腺的两张视图共享同一个 BI-RADS 与密度标签(乳腺级),检测任务则落在图像级。注意数据集不提供患者级主键——同一受检者若在不同日期多次检查,将表现为两个不相关的 study_id,任何「按患者划分」的设想都因缺乏患者 ID 而不可行,唯一安全的分组单位是 study_id。
这一层级设计对建模的直接影响:视图级模型(单图输入)最贴合数据粒度;乳腺级模型(CC+MLO 两图输入)需要自定义采样器保证同侧两图成对出现;检查级模型(四图输入)则要处理左右侧的对称性与视图配对,是 RSNA 方案中 multiview/multilaterality 路线的技术基础。
§4.5 缺失值与信息性缺失编码
| 现象 | 编码方式 | 正确解读 |
|---|---|---|
| 图像无病灶框 | 该图像在 finding_annotations.csv 中不出现 | 语义为「无 BI-RADS 3-5 病灶」,不是「无任何异常」(BI-RADS 2 良性病灶不标框) |
| BI-RADS 0/6 | 全库不出现 | 0(需补充检查)与 6(病理确诊)被协议排除 |
| 检查日期 | 不提供 | 仅 2018-2020 区间粒度 |
| 阅片者 ID | 不提供 | 仅在致谢中列名,逐例归属未知 |
| 年龄缺失 | 官方未报告缺失率 | 使用 metadata.csv 前自行统计 age.isna().sum() |
理解这张表的关键是区分「数据缺失」与「信息性缺失」:前者是字段值为空,需要插补或过滤;后者是「值的缺席本身携带语义」(无框 = 无 3+ 病灶),插补反而会破坏语义。本数据集的核心信息性缺失只有一处(病灶框),但它的语义陷阱足够大(见坑点 3)。
§5 划分与使用建议
§5.1 官方划分
| 划分 | 检查数 | 图像数 | 划分方法 |
|---|---|---|---|
| training | 4,000 | 16,000 | 迭代分层(Sechidis et al. 2011),保持 BI-RADS、密度、病灶类别频率 |
| test | 1,000 | 4,000 | 同上;官方建议作为统一对比基准 |
split 标记存储于 breast-level_annotations.csv 与 finding_annotations.csv 的 split 列(取值 training / test),图像目录不按 split 分文件夹,需经 CSV 联表获取。
与官方划分保持一致的理由不止「可比性」:官方迭代分层同时保住了 BI-RADS、密度、病灶类别三个维度的频率,任何自制划分(尤其在小验证集上)都很难同时兼顾三者,容易出现「验证集里 BI-RADS 5 过多或过少」的隐性偏置。若确需自定义划分,建议先在官方划分上校准自己划分器的类别频率再动用。
§5.2 社区惯例划分
- 直接使用官方 split:绝大多数论文与 Kaggle 方案的做法,结果可与文献直接对话。
- 训练集内再切验证集:常见做法是从 4,000 例训练集中按 study_id 分组再切 10-15% 做验证(如 arXiv 2503.19945 从训练图像中切出 1,604 张验证图),测试集 1,000 例保持不动。
- 框转图像级多标签:RSNA 第 5 名方案把边界框转成 10+ 维病灶多标签 + BI-RADS + 密度的多任务头,用于预训练——若采纳此路线,保持与官方一致的四视图粒度。
| 惯例 | 适用场景 | 关键操作 | 风险提示 |
|---|---|---|---|
| 官方 split 原样使用 | 基准对比、论文复现 | 按 split 列过滤 | 无;默认首选 |
| 训练集内再切 10-15% 验证 | 超参搜索、早停 | 以 study_id 为组切分 | 勿按图像行随机切 |
| 框转图像级多标签 | 预训练、多任务 | ast 解析 finding_categories 后聚合 | 丢弃坐标信息,不适用于检测评估 |
| 全库自定义重划分 | 特殊协议研究 | 自行复现迭代分层 | 须在论文中声明,结果不可与文献直比 |
§5.3 泄漏风险(重点)
- 检查级泄漏:同一检查的 4 张图像来自同一受检者同一次扫描,随机按图像划分会让几乎相同的影像同时出现在训练与验证集,指标虚高。必须以 study_id 为最小划分单位。
- 联表遗漏导致 split 失效:finding_annotations.csv 自带 split 列,但自建验证集时若只从乳腺级表取样、却把检测目标从全库病灶表提取,会把测试集病灶混入训练。正确顺序是先按 study_id 求出训练/验证/测试的检查集合,再过滤病灶表。
- 重复内容检查:虽然 study_id 经哈希处理,社区仍建议对图像做感知哈希去重,排除极少数同患者同日多次抽样造成的近似重复。
一个容易忽视的次级泄漏通道是 metadata.csv:年龄与设备型号是「患者级/检查级」属性,若把它们用于跨集合的统计建模(如按设备分组的归一化参数估计),必须同样遵守 split 边界,否则测试集的分布信息会经元数据统计量泄入训练管线。
§5.4 交叉验证建议
以 study_id 为组的 GroupKFold(5 折)是训练集内的安全默认;若研究类别不平衡敏感任务(如 BI-RADS 5 检出),建议在分组之上叠加迭代分层(沿用官方 Sechidis 算法)保持每折的类别频率。绝对禁止按图像行随机 K 折。
§5.5 外部验证建议
内部测试集只覆盖越南双中心分布,发布前的外部验证应至少覆盖一个非越南队列:可迁移方向包括 RSNA 2023 挑战赛训练集(癌症二分类,赛后分析)、CMMD(中国人群)、CBIS-DDSM/Mini-DDSM(美国胶片数字化历史队列)。迁移时注意标签体系差异:本数据集无病理确诊标签,外部数据集若有病理标签,比较时必须声明标签语义不同。
推荐的迁移评估报告格式:固定模型与超参,仅在「源域数据」上做开关实验(有/无 VinDr-Mammo 预训练),在目标域测试集上报告同一指标的差值与置信区间——这是 RSNA 赛后分析与 sota2 收录方案共同采用的增量归因方式,能把「预训练收益」与「目标域数据量收益」分开。
§6 AI 就绪指南
§6.0 云端快速启动
PhysioNet 为凭证化用户提供了云上获取通道(GCP/AWS),签署 DUA 后可在 PhysioNet Cloud 页面 按指引申请访问对应存储桶;对 337.8 GB 级别的数据集,云上直接挂载训练比本地下载更省时。若使用 Kaggle 镜像,kaggle CLI 配合 GPU Notebook(30 GB 显存上限)可完成中等规模实验,但完整 20,000 张图像训练建议使用自持 GPU 服务器。
云端方案的三点取舍:其一,PhysioNet 云桶按项目授权,申请周期通常按工作日计,适合长期项目;其二,Kaggle 路径授权即用但磁盘上限(约 73 GB 工作区)装不下原始 DICOM,只能配合其 PNG 预处理版或流式处理;其三,无论哪条路径,DUA 对「数据不得离开授权环境」的约束在云端同样适用,选择托管服务前确认其数据保留政策。
§6.1 快速上手
以下代码假定数据已下载并解压到 data_root,目录结构即 §4.0 所示;data_root 与 CSV 文件名直接拼接,images 路径为 data_root/images/{study_id}/{image_id}.dicom。最小可用子集 = breast-level_annotations.csv + 对应 20,000 个 DICOM(病灶检测才需要 finding 表)。
# 快速体检:确认数据完整性、标签分布与图像路径可达
import pandas as pd
from pathlib import Path
data_root = Path("data/vindr-mammo") # 解压目录
img_dir = data_root / "images" # 检查目录名 = study_id
# 1) 乳腺级标注:20,000 行(每张图像一行)
breast = pd.read_csv(data_root / "breast-level_annotations.csv")
assert len(breast) == 20_000
print(breast["breast_birads"].value_counts(normalize=True)) # 复现 §3.2 分布
print(breast["split"].value_counts()) # training/test
# 2) 病灶级标注:仅含至少一个 BI-RADS 3-5 病灶的图像
findings = pd.read_csv(data_root / "finding_annotations.csv")
print(f"标注框总数: {len(findings)}, 覆盖图像: {findings['image_id'].nunique()}")
# 3) 抽查 10 个检查目录是否为 4 张 DICOM
for sid in breast["study_id"].drop_duplicates().sample(10, random_state=0):
n = len(list((img_dir / sid).glob("*.dicom")))
assert n == 4, f"{sid} 只有 {n} 张图"
print("数据完整性 OK")
§6.2 数据获取
| 渠道 | 前置条件 | 方式 | 大小 |
|---|---|---|---|
| PhysioNet 官方 | 注册账号 + 签署 DUA(页面点击 agree) | 浏览器下载 zip,或凭证化用户的云存储桶 | 约 337.8 GB |
| Kaggle 镜像 | Kaggle 账号;站内检索 vindr-mammo | kaggle datasets download(slug 以检索结果为准) |
约 337.8 GB |
| 官方代码仓 | 无 | git clone(仅脚本,不含数据) |
<1 MB |
# 方式 A:PhysioNet 网页签署 DUA 后,浏览器/下载工具获取官方 zip 并解压
unzip vindr-mammo.zip -d data/
# 方式 B:Kaggle CLI(先在 Kaggle 站内检索 vindr-mammo 确认 slug 再替换)
# kaggle datasets download --unzip <owner>/vindr-mammo-...-1.0.0 -p data/
# 合规提醒:DUA 禁止向第三方转传数据或公开下载链接;
# 云端使用需确认服务商不保留数据副本(PhysioNet 2025-09 官方公告口径)。
PhysioNet 申请流程明细(首次使用者按序操作):
- 在 physionet.org 注册账号(邮箱验证);
- 访问数据集页 https://physionet.org/content/vindr-mammo/1.0.0/ ,阅读许可条文后点击签署 DUA;
- 签署后页面解锁下载入口(zip 包)与云存储指引;凭证化资源另需完成资料审核;
- 发表成果时按 §9.3 的引用指南注明数据集与论文双引用。
§6.3 预处理全流程
推荐管线:DICOM 读取(容错)→ VOI LUT/反相 → 裁剪黑边 → 长边缩放 → 16-bit PNG 落盘缓存。全部 20,000 张预处理一次后,后续实验加载速度提升一个数量级。
<details>
<summary>查看完整预处理脚本(约 55 行)</summary>
# 目录假设:data_root/images/{study_id}/{image_id}.dicom(见 §4.0)
# 产出:{out_dir}/{study_id}/{image_id}.png(16-bit 灰度,长边 1536)
import numpy as np
import pydicom
from pathlib import Path
from PIL import Image
LONG_EDGE = 1536
def load_mammo_pixels(path):
"""容错读取:VinDr-Mammo 的 DICOM 非标准合规(官方声明),
优先 pydicom 常规路径,失败时退回原生像素读取。"""
try:
ds = pydicom.dcmread(str(path))
arr = ds.pixel_array.astype(np.float32)
# 部分 MONOCHROME1 图像灰度反转(亮=低值),需反相统一为 亮=高值
if getattr(ds, "PhotometricInterpretation", "") == "MONOCHROME1":
arr = arr.max() - arr
# 应用 VOI LUT(存在时),把原始存储值映射为显示灰度
try:
from pydicom.pixel_data_handlers.util import apply_voi_lut
arr = apply_voi_lut(arr, ds).astype(np.float32)
except Exception:
pass
except Exception as e:
raise RuntimeError(f"无法解析 {path},请参考官方 visualize.py 的读取方式: {e}")
return arr
def crop_black_borders(arr, tol=8):
"""四角烧录信息置黑留下的黑边裁剪(保留乳腺区域)"""
mask = arr > tol
if not mask.any():
return arr
rows = np.where(mask.any(axis=1))[0]
cols = np.where(mask.any(axis=0))[0]
return arr[rows[0]:rows[-1] + 1, cols[0]:cols[-1] + 1]
def process_one(dcm_path: Path, out_dir: Path):
arr = load_mammo_pixels(dcm_path)
arr = crop_black_borders(arr)
# 长边缩放,保持纵横比(禁止拉伸)
h, w = arr.shape
scale = LONG_EDGE / max(h, w)
nh, nw = int(round(h * scale)), int(round(w * scale))
img = Image.fromarray(arr.astype(np.uint16) if arr.max() > 255 else arr.astype(np.uint8))
img = img.resize((nw, nh), Image.BILINEAR)
(out_dir / dcm_path.parent.name).mkdir(parents=True, exist_ok=True)
img.save(out_dir / dcm_path.parent.name / f"{dcm_path.stem}.png")
if __name__ == "__main__":
data_root = Path("data/vindr-mammo")
out_dir = Path("cache/vindr-mammo-png1536")
for dcm in sorted((data_root / "images").rglob("*.dicom")):
out_file = out_dir / dcm.parent.name / f"{dcm.stem}.png"
if out_file.exists():
continue
process_one(dcm, out_dir)
</details>
坐标同步:边界框坐标基于原始分辨率。裁剪黑边与缩放后,框需按同样流程换算:先减去裁剪偏移,再乘 scale。若跳过裁剪,仅需乘 scale。
窗宽窗位:训练侧不建议写死固定窗位;统一 MONOCHROME 反相 + VOI LUT 已可满足多数任务,余下对比度交由归一化与增强处理。
批量转换的两点工程建议:其一,用多进程池(ProcessPoolExecutor,每核一进程)并行处理 20,000 个文件,单机 16 核约可在 1-2 小时内完成;其二,转换后跑一遍验证清单——文件计数等于 20,000、每个 PNG 均非全黑(arr.max() > 0)、抽查 20 张与官方 visualize.py 的显示结果目测比对——再进入训练环节,避免「缓存了一半黑图」的静默事故。
边界框坐标换算示例(与上文的裁剪/缩放逻辑严格对应,检测任务必备):
def transform_box(box, crop_offset=(0, 0), scale=1.0):
"""把原始分辨率的 bbox 换算到处理后图像坐标系。
box=(xmin, ymin, xmax, ymax);crop_offset 为裁剪掉的左上角偏移;
scale 为统一缩放系数。若跳过裁剪,直接令 crop_offset=(0, 0)。"""
xmin, ymin, xmax, ymax = box
dx, dy = crop_offset
return (int(round((xmin - dx) * scale)),
int(round((ymin - dy) * scale)),
int(round((xmax - dx) * scale)),
int(round((ymax - dy) * scale)))
# 用法:process_one 返回 crop 偏移与 scale 后,对 finding_annotations.csv
# 中同 image_id 的每一行调用 transform_box,再落盘成检测 GT 文件。
§6.4 PyTorch DataLoader
完整可运行示例:多任务 Dataset(图像级 BI-RADS 五分类 + 密度四分类 + 可选病灶多标签),适配 §6.3 生成的 PNG 缓存。
<details>
<summary>查看完整 DataLoader 代码(约 70 行)</summary>
# 前置:先用 §6.3 脚本生成 cache/vindr-mammo-png1536/{study_id}/{image_id}.png
# 目录关系:data_root=CSV 所在目录;png_root=图像缓存目录;
# breast-level_annotations.csv 的 study_id+series_id 联表定位 PNG 文件。
import ast
import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
from PIL import Image
from pathlib import Path
BIRADS2IDX = {f"BI-RADS {i}": i - 1 for i in range(1, 6)} # 5 类
DENSITY2IDX = {f"DENSITY {c}": i for i, c in enumerate("ABCD")} # 4 类
FINDING_LABELS = ["Mass", "Suspicious Calcification", "Asymmetry", "Global Asymmetry",
"Focal Asymmetry", "Architectural Distortion", "Suspicious Lymph Node",
"Skin Thickening", "Skin Retraction", "Nipple Retraction"] # 10 类
class VinDrMammoMultiTask(Dataset):
"""每样本 = 一张图像;标签 = (birads_5, density_4, lesions_10multi)"""
def __init__(self, data_root: str, png_root: str, split="training", img_size=1024):
self.df = pd.read_csv(Path(data_root) / "breast-level_annotations.csv")
self.df = self.df[self.df["split"] == split].reset_index(drop=True)
self.png_root = Path(png_root)
self.img_size = img_size
self.lesion_map = self._build_lesion_map(data_root, split)
def _build_lesion_map(self, data_root, split):
f = pd.read_csv(Path(data_root) / "finding_annotations.csv")
f = f[f["split"] == split]
out = {}
for _, row in f.iterrows():
cats = ast.literal_eval(row["finding_categories"]) # 字符串化列表,必须解析
out.setdefault(row["image_id"], torch.zeros(len(FINDING_LABELS)))
for c in cats:
if c in FINDING_LABELS:
out[row["image_id"]][FINDING_LABELS.index(c)] = 1.0
return out
def __len__(self):
return len(self.df)
def __getitem__(self, idx):
row = self.df.iloc[idx]
png = self.png_root / row["study_id"] / f"{row['series_id']}.png"
img = Image.open(png).convert("F")
# 短边 padding 成正方形(避免拉伸改变腺体形态)
w, h = img.size
s = max(w, h)
canvas = Image.new("F", (s, s), 0)
canvas.paste(img, ((s - w) // 2, (s - h) // 2))
canvas = canvas.resize((self.img_size, self.img_size), Image.BILINEAR)
x = torch.from_numpy(np.array(canvas, dtype=np.float32))[None] / 65535.0
birads = BIRADS2IDX[row["breast_birads"]]
density = DENSITY2IDX[row["breast_density"]]
lesions = self.lesion_map.get(row["series_id"], torch.zeros(len(FINDING_LABELS)))
return x, birads, density, lesions
def make_loader(data_root, png_root, split, batch_size=8, workers=8, shuffle=None):
ds = VinDrMammoMultiTask(data_root, png_root, split)
return DataLoader(ds, batch_size=batch_size, shuffle=(shuffle if shuffle is not None
else split == "training"), num_workers=workers, pin_memory=True)
if __name__ == "__main__":
train_loader = make_loader("data/vindr-mammo", "cache/vindr-mammo-png1536", "training")
for x, birads, density, lesions in train_loader:
print(x.shape, birads.shape, density.shape, lesions.sum(dim=0)) # 冒烟测试
break
</details>
不平衡采样补丁:直接实例化上述 DataLoader 会让绝大多数 batch 都是 BI-RADS 1-2。生产训练建议叠加按类别频率倒数的 WeightedRandomSampler,或直接移植 RSNA 第 5 名方案的平衡批采样(正负比 1:3 至 1:7 按骨干调参)。多任务损失建议以 CE(birads) + CE(density) + BCE(lesions) 起步,把三个头的权重固定为 1:1:1 跑通后再调。
§6.5 坑点清单(8 个)
⚠️ 坑点 1:官方 DICOM 并非 DICOM 标准合规,常规库直接失败(分类:工程陷阱)
问题:论文 Usage Notes 原文声明这批文件 not DICOM-compliant,通用 DICOM 处理库可能解析失败或产出错误像素,影响所有下游实验。
症状:pydicom.dcmread()抛出缺 tag 异常、pixel_array报错,或 dcmtk/ITK 命令行工具静默产出全黑图。
解决:
- 简单方法:跟随官方仓库
visualize.py的读取路径(Python 3.8 + Pydicom 1.2.0 验证过),失败样本再单独排查。- 进阶方法:按 §6.3 的容错读取包装
try/except,先dcmread再退回 raw 像素解析,并批量预检 20,000 个文件建立「可读清单」。- SOTA 方法:预处理阶段一次性转成 16-bit PNG 中间格式(社区通行做法,如 Mammo-CLIP 官方亦提供 DICOM→PNG 脚本),训练管线与 DICOM 彻底解耦。
参考:论文 Usage Notes、官方仓库 visualize.py
⚠️ 坑点 2:finding_categories 是字符串化的多标签列表(分类:标签理解)
问题:类别列以
["Mass", "Skin Retraction"]这类字符串化列表存储,一框可挂多类;把它当普通分类字符串做value_counts会把每个组合当成新类别。
症状:类别分布统计出现大量低频「假类别」;训练时LabelEncoder直接报类别数爆炸。
解决:
- 简单方法:
ast.literal_eval(row["finding_categories"])解析后再展开统计。- 进阶方法:检测训练把每框展开为多标签向量(§6.4 的写法),损失用 BCE;CSV 检查行数时不把多类框重复计数。
- SOTA 方法:把「框 → 多标签」的转换固化为可复用函数并写入数据卡,预训练方案(RSNA 第 5 名)即按 image 级 10+ 维病灶向量使用。
参考:PhysioNet Data Description
⚠️ 坑点 3:良性 BI-RADS 2 病灶被系统性不标注,「无框」不等于「无病灶」(分类:标签理解)
问题:官方协议只框出 BI-RADS 3/4/5 病灶以缩短阅片时间,良性病灶不落框;若把「无框」当「阴性背景」训练检测器,会把真良性病灶当负样本。
症状:检测器在良性病灶区域出现大量「无监督的矛盾标签」;评估时假阳性集中在实际良性结构上且无法通过调阈值消除。
解决:
- 简单方法:明确任务边界——该数据集只适合「BI-RADS 3+ 病灶检出」,论文与 README 中均有声明。
- 进阶方法:训练时对乳腺级 BI-RADS 1-2 的图像做背景重加权,弱化其作为「绝对阴性」的监督强度。
- SOTA 方法:弱监督/多实例学习(MIL)框架,把乳腺级 BI-RADS 作为袋级标签、框作为实例级先验,容忍未标注良性病灶。
参考:PhysioNet Usage Notes
⚠️ 坑点 4:BI-RADS 4/5 不是病理确诊,不能当诊断金标准评估 CADx(分类:评估误用)
问题:数据集无活检对照,论文明确指出不应直接用于诊断性能评估(diagnosis evaluation),只宜训练或以筛查映射做评估。
症状:把 BI-RADS 4/5 当「恶性」算出的灵敏度/特异度在文献中被质疑;与 CBIS-DDSM(有病理标签)的结果混排比较。
解决:
- 简单方法:按论文推荐转 3 类筛查体系:BI-RADS 3/4/5 → recall(对应筛查语义的 BI-RADS 0),1 → normal,2 → benign。
- 进阶方法:报告图像级/乳腺级 AUC 并明确「正类 = BI-RADS 4-5 或 3-5」的协议定义(sota2 收录的方案均显式标注该定义)。
- SOTA 方法:需要癌性终点时,把本数据集限制为预训练源,在带病理/癌症标签的外部队列(RSNA、CBIS-DDSM)上评估。
参考:论文 Usage Notes、sota2 基准页
⚠️ 坑点 5:按图像随机划分造成检查级与乳腺级泄漏(分类:数据泄漏)
问题:同一检查 4 张图、同一乳腺 2 张视图共享受检者与扫描条件;随机按行划分会让近重复影像跨集合出现,指标虚高。
症状:验证 AUC 比官方测试集结果高 0.05-0.15;换到外部数据骤降。
解决:
- 简单方法:一律用官方 split 列;自建验证集时以 study_id 为组的 GroupShuffleSplit。
- 进阶方法:GroupKFold(5) on study_id + 迭代分层保持类别频率(与官方划分算法同源,Sechidis et al. 2011)。
- SOTA 方法:划分脚本落盘可复现(固定 seed + 检查集合哈希),并在论文中报告划分指纹,杜绝「按 DataFrame 行号划分」的事故。
参考:PhysioNet Data Stratification 一节
⚠️ 坑点 6:极端类别不平衡与 <40 样本的罕见类(分类:偏倚陷阱)
问题:BI-RADS 5 仅占 1.13%(约 113 侧),skin/nipple retraction 每类不足 60 例(官方点名 skin 与 nipple retraction <40);直接训练会让模型偏向多数类或罕见类完全不收敛。
症状:分类任务全部预测 BI-RADS 1;检测任务对结构扭曲、凹陷类召回为 0;宏平均指标剧烈抖动。
解决:
- 简单方法:加权交叉熵或 Focal Loss;罕见类合并(如伴随特征合并为 associated findings 组)并在论文中声明合并规则。
- 进阶方法:按 study 分层的平衡批采样(RSNA 第 5 名方案的 Balanced Batch Sampler,正负比 1:3 至 1:7 按模型调参)。
- SOTA 方法:对 <40 样本类别完全不做单类结论,改用 leave-one-class-out 的分组报告;或引入外部同类数据增广(须声明来源)。
参考:PhysioNet Usage Notes 官方限制声明、第 5 名方案 writeup
⚠️ 坑点 7:边界框坐标与分辨率、黑边裁剪不同步(分类:预处理陷阱)
问题:bbox 以原始像素坐标存储,图像分辨率跨厂商从数百到数千像素不等;且图像四角有置黑烧录框,裁剪后若不换算坐标,框位整体漂移。
症状:可视化时框悬空或偏移;训练检测器时 IoU 永远上不去;把图像直接 resize 到固定尺寸时纵横比被拉伸,进一步放大坐标误差。
解决:
- 简单方法:不裁剪、仅等比缩放,框坐标乘以同一 scale。
- 进阶方法:裁剪(去黑边)与缩放在同一函数中完成,返回
(img, boxes),坐标先减裁剪偏移再乘 scale(§6.3 的 crop_black_borders 与缩放保持同一变换链)。- SOTA 方法:把坐标归一化为 [0,1] 相对坐标存储中间格式;转换后抽样 50 张做「框-病灶对齐」人工抽查。
参考:finding_annotations 字段定义
⚠️ 坑点 8:水平翻转破坏左右侧与 MLO 解剖语义(分类:预处理陷阱)
问题:通用的
RandomHorizontalFlip会把右乳 MLO 变成「镜像左乳 MLO」,与 laterality/view_position 标签矛盾;MLO 含胸大肌轮廓,镜像后解剖方位错误,模型学到伪相关。
症状:翻转后与标签联合训练时 BI-RADS/侧别辅助任务准确率下降;跨视图模型(CC+MLO 融合)性能反而低于单视图。
解决:
- 简单方法:CC 视图可安全水平翻转(对称性假设),MLO 视图禁用水平翻转或翻转后同步交换 laterality 标签。
- 进阶方法:增强策略按 view_position 条件化(Dataset 内根据 view 分支选择 transform)。
- SOTA 方法:RSNA 方案族的通用做法——先 YOLOX 裁出乳腺区域再增强,翻转仅作用于裁剪后的乳腺纹理区域且避开肌肉方位。
参考:RSNA 赛后预处理综述
§6.6 数据增强建议
- ✅ 安全:小角度旋转(±10°)、平移、缩放、亮度/对比度抖动、CoarseDropout、CC 视图水平翻转(配合 laterality 校验)。
- ❌ 危险:MLO 视图水平翻转;大幅旋转(>20°,破坏解剖方位);垂直翻转(上下颠倒违反投照体位约定);CutMix 跨图混合(把 A 的病灶贴到 B 上产生医学上不存在的组合,社区实验显示其 Macro-F1 低于透明度类增强,见 arXiv 2203.10609)。
- 建议把「增强是否依赖视图/侧别」作为超参数显式记录,跨实验对比时固定下来。
增强强度经验值(社区方案收敛区间):旋转 ±10°、平移 ≤0.05、缩放 0.9-1.1、亮度对比度 ±0.2;两阶段管线(先裁乳腺再增强)允许把角度放宽到 ±15°。增强只作用于训练集,验证与测试集仅做确定性变换(缩放 + padding),这是所有方案的一致做法。
§6.7 模型推荐
| 任务 | 推荐模型 | 理由 | 参考 |
|---|---|---|---|
| 乳腺级 BI-RADS 分级(patch 路线) | ConvNeXt-Base(22k) | 系统研究中 AUC 最高(0.851) | arXiv 2503.19945 |
| 乳腺级 BI-RADS 分级(整图路线) | DenseNet169 | 直接分类路线最优(AUC 0.813) | 同上 |
| 多任务预训练 → 癌症迁移 | EfficientNetV2-S / EfficientNet-B5 | RSNA 第 5 名验证的稳定组合 | writeup |
| 病灶检测(CADe) | Faster R-CNN / RetinaNet / YOLOX | 社区复现与 RSNA 冠军均采用此族 | Radiology 2025 |
| 零样本/基础模型评测 | Mammo-CLIP、Aegis ViT 系列 | VinDr 图像-标签数据可作预训练或外部验证 | Mammo-CLIP |
选型时的两个匹配原则:骨干复杂度要匹配数据规模——5,000 例训练检查支撑得起 ConvNeXt/EfficientNet 级骨干,但直接上大型 ViT 需要外部预训练权重兜底;任务头要匹配标签粒度——乳腺级标签建议多任务头联合(BI-RADS + 密度互为正则),病灶级标签建议先检测后分类的两阶段结构,避免单头回归多级标签造成梯度冲突。
§6.8 硬件需求
| 资源 | 最低 | 推荐 | 说明 |
|---|---|---|---|
| 磁盘 | 450 GB | 600 GB | 原始包 337.8 GB + PNG 缓存 + 训练产物 |
| 内存 | 32 GB | 64 GB | DICOM 解码与多进程 DataLoader |
| GPU | 16 GB 显存 | 24-40 GB | 参考研究在 A100 40GB 上训练 ConvNeXt-Base 约 24 小时 |
| CPU | 8 核 | 16+ 核 | DICOM→PNG 转换为 CPU 密集,可多进程并行 |
§6.9 评估指标代码
# 协议 A(图像级筛查映射 AUC):BI-RADS 3-5 vs 1-2,官方测试集 4,000 张
# 协议 B(检测):以 finding_annotations.csv 为 GT,mAP@0.5
import numpy as np
import pandas as pd
from sklearn.metrics import roc_auc_score
def image_level_auc(breast_csv: pd.DataFrame, pred_birads_prob: np.ndarray) -> float:
"""pred_birads_prob: 模型对测试集每张图输出的『异常概率』(≥3 视为正类)"""
df = breast_csv[breast_csv["split"] == "test"].reset_index(drop=True)
y = df["breast_birads"].isin([f"BI-RADS {i}" for i in (3, 4, 5)]).astype(int).values
return roc_auc_score(y, pred_birads_prob)
def detection_map(preds, targets):
"""torchmetrics 风格的两阶段检测评估。
preds 与 targets 均为按测试图像组织的列表,每个元素为字典:
preds 元素: {"boxes": FloatTensor[N,4], "scores": FloatTensor[N], "labels": IntTensor[N]}
targets 元素: {"boxes": FloatTensor[M,4], "labels": IntTensor[M]}
框坐标统一为 xyxy 绝对像素坐标(与 finding_annotations 的 xmin/ymin/xmax/ymax 同源,
若在缩放后的图像上预测,须先把预测框映射回原始分辨率,或把 GT 同步缩放)。"""
from torchmetrics.detection import MeanAveragePrecision
metric = MeanAveragePrecision(iou_type="bbox")
metric.update(preds=preds, target=targets)
res = metric.compute()
return {"mAP@0.5:0.95": res["map"].item(), "mAP@0.5": res["map_50"].item()}
注意:文献中「正类定义」差异极大(BI-RADS 4-5 vs 3-5、图像级 vs 乳腺级 vs 检查级),引用任何数字前先核对协议(§8.1 汇总各行均附协议说明)。
此外,sota2 收录的方案普遍会同时报告协议定义(训练数据、评估层级、正类定义三要素),这已成为该数据集社区的隐性格式约定——发表结果时照此三项标注,可避免大部分「数字不可比」的审稿质疑。
筛查 3 类映射的参考实现(论文官方推荐的评估口径):
def to_screening_3class(birads: str) -> str:
"""按论文 Usage Notes 的映射把 5 级 BI-RADS 折算为筛查三分类。
recall(需召回)<- BI-RADS 3/4/5;normal <- BI-RADS 1;benign <- BI-RADS 2。"""
if birads in ("BI-RADS 3", "BI-RADS 4", "BI-RADS 5"):
return "recall"
if birads == "BI-RADS 1":
return "normal"
if birads == "BI-RADS 2":
return "benign"
raise ValueError(f"非法 BI-RADS 值: {birads}")
# 评估:对预测概率先做 argmax 到三分类,再报告 macro-F1 与混淆矩阵;
# 若沿用 AUC 口径,则对 recall vs 非 recall 报告二分类 AUC。
§6.10 MLOps 笔记
- 版本钉死:数据集仅 v1.0.0 一版,用 DOI(10.13026/br2v-7517)而非 URL 做版本引用;训练配置记录数据 MD5 清单。
- 中间格式治理:DICOM→PNG 的缓存目录纳入版本控制(或记录生成脚本 commit),坐标换算与增强策略写进配置文件。
- 合规即代码:DUA 禁止再分发与再识别;训练平台禁止把数据外发给第三方 API(与 PhysioNet 2025-09 关于 LLM 服务的公告同口径)。
- 评测防污染:官方测试集 1,000 例只做终评;任何超参搜索使用训练集内部分割(§5.2),避免测试集间接泄漏进模型选择。
- 数据卡与血缘:为每个导出物(PNG 缓存、多标签矩阵、检测 GT)维护记录「来源版本 + 转换脚本 commit + 生成时间」的数据卡,337.8 GB 级资产一旦血缘断裂几乎无法追溯。
- 失效监控:上线模型若以本数据为预训练底座,需监控输入分布与本库统计的距离(如密度构成、分辨率分布漂移),触发阈值后启动再校准流程。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 地域偏倚 | 单一国家(越南)双中心,不能代表全球人群 | 高 | 外部验证(RSNA、CMMD 等);域自适应 |
| 就医类型偏倚 | 筛查与诊断性检查混合,患病率高于纯筛查人群 | 中 | 使用前按 metadata/年龄做分层分析并在论文中声明 |
| 厂商偏倚 | 仅三家厂商,跨设备泛化未验证 | 中 | 按 manufacturer 分组评估;元数据条件化训练 |
| 类别不平衡 | BI-RADS 5 仅 1.13%,罕见伴随特征 <40 例 | 高 | 加权损失/平衡采样/罕见类合并 |
| 标注规则偏倚 | 良性 BI-RADS 2 不落框,「阴性」非「无病灶」 | 中 | 明确任务为 3+ 病灶检出;弱监督方案 |
| 无病理金标准 | BI-RADS 4/5 未经活检证实 | 高 | 仅用于筛查语义评估;诊断结论需外部病理数据 |
| 年代偏倚 | 采集窗口 2018-2020,无 DBT 等新技术 | 中 | 部署前用当前设备数据回测;关注 §7.6 漂移 |
§7.2 标注质量
标注流程的可靠性设计相当充分:双独立读片 + 第三人仲裁、VinDr Lab 内置质控规则(如选择 BI-RADS 1 时禁止落框,论文 Technical Validation)、脱敏两轮人工复核。但有两点透明度缺口:其一,未公布仲裁触发率与逐标签阅片者间一致性(kappa)矩阵,标注方差不可外部估计;其二,最终 CSV 无阅片者标识,无法做「按标注者分层」的稳健性检查。对比 INbreast(双人双读并公布部分一致性讨论)与 CBIS-DDSM(病理锚定),VinDr-Mammo 的标签可信度介于「流程可信」与「无法量化」之间——引用其指标时应说明金标准为影像共识而非病理。
对置信度建模者的实用建议:把乳腺级 BI-RADS 视为「含仲裁噪声的有序共识」,训练时可对 3-5 级样本做标签平滑或直接使用病灶框数量作为辅助置信特征;评测时若报告按等级拆分的混淆矩阵,会比单一 AUC 更能暴露 3 级与 4 级之间的边界噪声。
§7.3 泛化性
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 越南双中心内部(官方测试集) | 低 | 官方迭代分层划分,分布一致 |
| 迁移到欧美筛查人群(RSNA 等) | 中(域偏移:人群/设备/筛查体系) | RSNA 2023 Top10 广泛采用其预训练且成绩提升;但主任务仍需本地数据微调(Radiology 2025) |
| 直接零样本用于其他人群 BI-RADS 判读 | 中-高 | sota2 收录的零样本最优 AUC 87.1(study 级、4-5 vs 1-2 定义),仍低于训练后方案 |
| 密度分类迁移到「以 B/C 为主」的队列 | 中 | 本库 76.5% 为 C 型,A 型仅 0.5%,极端类别缺乏训练信号 |
| 胶片数字化历史数据(DDSM 系) | 高 | 成像技术代差(FFDM vs 数字化胶片),特征分布差异大 |
§7.4 伦理与合规
研究经 HMUH 与 H108 两院 IRB 批准,未影响临床诊疗故知情同意豁免;发布数据经系统脱敏(DICOM 标签清洗、四角烧录置黑、两轮人工复核、无 89 岁以上受检者)。使用侧约束由 PhysioNet Credentialed Health Data License 1.5.0 规定:仅限科学研究与教育、禁止试图再识别患者/机构/医院、发表时须引用原始论文。该许可基于 CC BY-NC-SA 4.0 并附加上述限制,因此任何商用、转售或公开转传数据均为违约;基于数据训练的模型权重用于商业化前应另行获得授权并寻求法律意见。
对外合作中的常见合规问题有三个:能否把数据副本交给合作实验室(不能,除非对方独立签署 DUA)、能否用数据训练闭源商业 API(不能,训练用途限于科研教育)、能否公开含数据截图的论文配图(发布方已置黑患者信息且论文实践为先例,但建议保留原始出处标注)。拿不准的条款以 PhysioNet 许可条文与作者书面回复为准。
§7.5 公平性
数据集本身是「人群多样性」的正面样本——它把东南亚人群带入乳腺 AI 基准版图。但使用中要注意公平性两面性:其一,若以它为唯一训练源训练全球部署的模型,会反向引入对欧美人群的欠拟合(密度分布、患病谱不同);其二,受检者全为女性、年龄结构以中老年为主,对年轻女性与男性乳腺癌(罕见)无覆盖。公平性审计建议以「年龄 × 密度 × 厂商」三维分层报告误差。
从卫生公平视角,这份数据的长期价值在于支持「低成本数字钼靶 + AI 辅助」在筛查资源有限地区的部署评估:越南式的混合筛查/诊断场景、高致密乳腺占比,恰是许多中低收入国家乳腺筛查的共同画像,模型在该库上的表现对这些场景的外推性优于欧美库——但前提是部署前仍须按 §5.5 完成目标地区的前瞻性验证。
§7.6 数据漂移
发布于 2022-03,采集窗口 2018-2020。乳腺设备迭代(断层合成 DBT 普及、光子计数探测器)意味着当前临床 FFDM 影像与本库存在真实技术代差;此外 COVID 期间的筛查积压可能改变 2020 年后检查构成。官方不提供逐例时间戳,时序漂移只能以「队列级」粗估。长期维护方面,v1.0.0 为唯一版本,尚无增量更新计划迹象,下游应假设「静态数据集 + 动态临床分布」的漂移格局,定期用新队列回测。
工程上的漂移哨兵指标建议取三个:图像尺寸分布(厂商更替的信号)、密度构成(人群变化的信号)、每检查图像数(采集协议变化的信号)。三者都能从 CSV/DICOM 元数据低成本计算,适合纳入训练管线的例行监控。
§7.7 DAIMS 数据集管理评估(24 项)
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 三个 CSV 均为每行一图/一框的宽表,可直接 pandas 读取 |
| 2 | 唯一标识 | ✅ | study_id/series_id/image_id 三级哈希主键,与目录结构一一对应 |
| 3 | 特殊字符处理 | ⚠️ | finding_categories 为字符串化列表(含方括号逗号),须解析、不可直接分类 |
| 4 | 重复行 | ⚠️ | 病灶表一框一行,图像级聚合前必须去重,否则重复计数 |
| 5 | 缺失编码 | ✅ | 无框图像在病灶表中缺席 = 无 3+ 病灶,语义清晰 |
| 6 | 标签标识 | ✅ | breast_birads/breast_density/finding_birads 显式标签列,词表开放可查 |
| 7 | 罕见类分组 | ⚠️ | 皮肤/乳头凹陷等每类 <40 例,官方警告不可靠但未给合并建议 |
| 8 | 偏倚评估 | ✅ | 论文对抽样、双读协议与分层划分有系统描述 |
| 9 | 数据字典 | ✅ | PhysioNet 页面逐字段定义三个 CSV |
| 10 | 信息性缺失解释 | ⚠️ | 「良性不落框」规则写在论文中,CSV 内无显式标记列 |
| 11 | 设备记录 | ✅ | metadata.csv 保留厂商与型号,可做域分组 |
| 12 | 共线性 | ⚠️ | finding_birads 与 breast_birads、密度与年龄存在强相关,多任务需防标签泄漏式共线 |
| 13 | 编码映射 | ✅ | BI-RADS 1-5 与密度 A-D 遵循 ACR 第 5 版词表,论文补充材料给逐类定义 |
| 14 | 时间戳处理 | ❌ | 无逐例检查日期,仅 2018-2020 区间,时序分析受限 |
| 15 | 划分建议 | ✅ | 官方 split 列 + 迭代分层算法引用(Sechidis 2011) |
| 16 | 泄漏讨论 | ❌ | 官方未讨论按图划分的检查级泄漏风险,需使用者自行以 study_id 分组 |
| 17 | 标签分布 | ✅ | 论文与社区统计给出 BI-RADS、密度、病灶类别完整分布 |
| 18 | 测量偏倚 | ⚠️ | 三厂商混合,未提供按设备的标注一致性或性能分解 |
| 19 | 外部验证建议 | ⚠️ | 官方未提供跨库验证指引;社区已有 RSNA/CMMD 迁移实践可循 |
| 20 | 版本记录 | ✅ | PhysioNet Release Notes 明确 v1.0.0 为唯一公开版本 |
| 21 | 预处理脚本 | ✅ | 官方仓库提供脱敏、分层、可视化脚本(Apache-2.0) |
| 22 | 合规要求 | ✅ | DUA 条款明确:科研教育用途、禁止再识别、须引用论文 |
| 23 | 多模态对齐 | ❌ | 单模态影像,无病理/超声/文本报告配对 |
| 24 | 去标识化 | ✅ | DICOM 清洗 + 烧录置黑 + 两轮复核,脱敏流程可审计 |
DAIMS 评分:17.5 / 24
评分解读:良好——标识体系、标签词表、官方划分、合规与去标识化五块接近满分,扣分集中在三类:结构性缺失(无时间戳、无患者级 ID、单模态)、透明度缺口(无一致性矩阵、无信息性缺失标记列)与需要使用者自行补救的工程项(多标签解析、泄漏防护)。
对你意味着什么:你可以放心把这份数据当作「高质量影像共识标注 + 规范划分」的训练底座,三条硬约束必须写进项目规范:第一,所有划分以 study_id 为组(官方未替你防泄漏,DAIMS 第 16 项的扣分就是你的责任);第二,任何「阴性」结论只能针对 BI-RADS 3+ 病灶(第 5/10 项的语义陷阱);第三,发表诊断性能结论前先找病理锚定的外部数据(第 14/23 项决定了它撑不起诊断级评估)。若你的研究需要时序、纵向随访或多模态融合,这份数据只能承担预训练与单时点建模角色。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| RSNA 2023 挑战赛(美国多中心筛查) | Kaggle/RSNA | 癌症二分类(pF1) | Top10 中 7 支以其为外部预训练源 | 预训练贡献普遍正向(方案 writeup 定性报告) | 多任务预训练(BI-RADS/密度/病灶)是有效的迁移起点(Radiology 2025) |
| RSNA 挑战赛主任务 | Kaggle/RSNA | 癌症二分类 | 第 5 名方案 pF1 榜单前列 | 无消融数字公开 | EfficientNetV2-S/B5 双骨干 + VinDr 预训练 + 平衡采样组合(writeup) |
| 外部验证集(sota2 收录) | 多来源 | BI-RADS 4-5 vs 1-2(study 级,零样本) | Aegis ViT-L AUC 87.1 | 低于训练后内部方案(外部 val 最高 87.7) | 零样本可用但与微调方案仍有差距(sota2) |
矩阵整体呈现一个一致结论:VinDr-Mammo 上训练或预训练的模型在其他人群/任务上「有用但不够」——作为预训练源被头部方案反复验证有效,作为独立评估源则受限于标签语义(无病理)与单中心分布。使用者的外部验证设计应以此为基线预期。
§8 基准性能与生态
§8.1 排行榜
| 排名 | 模型/方法 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | Aegis ViT-L(T+D,零样本) | AUC 87.1(外部 val,study 级,4-5 vs 1-2) | 2026 | 基础模型零样本评测 | 「Breast Lesion Classification on VinDr-Mammo (External val)」, sota2 基准页, 2026. https://www.sota2.com/research/sota/breast-lesion-classification-on-vindr-mammo-external-val | 未公开 |
| 2 | ConvNeXt-Base(22k) patch 分类器 | AUC 0.851(官方 test,图像级,3-5 vs 1-2) | 2025 | 病灶 patch 裁剪 + 分层迁移 | 「Optimizing Breast Cancer Detection in Mammograms: A Comprehensive Study of Transfer Learning, Resolution Reduction, and Multi-View Classification」. arXiv:2503.19945, 2025. https://arxiv.org/abs/2503.19945 | 论文附表 |
| 3 | DenseNet169 直接分类器 | AUC 0.813(同协议) | 2025 | 整图直接分类基线 | 同上(arXiv:2503.19945) | 论文附表 |
| 4 | Transparency + CNN | 5 类 BI-RADS Macro-F1 0.676 | 2022 | 透明度合成增强 | 「Augmentation Approach for BI-RADS」. arXiv:2203.10609, 2022. https://arxiv.org/abs/2203.10609 | 未公开 |
| 5 | Racers(RSNA 第 5 名,VinDr 预训练) | RSNA 主任务榜单前五(pF1) | 2023 | 多任务预训练 + 双骨干微调 | NguyenThanhNhan, Pham A., Nguyen T.H. 「5th place solution」, Kaggle RSNA Screening Mammography Challenge writeup, 2023. https://www.kaggle.com/competitions/rsna-breast-cancer-detection/writeups/racers-5th-place-solution | GitHub 公开 |
⚠️ 不可直接比较说明:上各行使用不同的正类定义(4-5 vs 3-5)、聚合层级(study/乳腺/图像)、划分(官方 test / 外部 val / 竞赛榜)与指标(AUC/F1/pF1),数字仅表征各自协议下的相对水平;sota2 收录的其他任务(病灶定位 27.2 mTIoU、报告生成 54.76 Composition F1 等)协议差异更大(sota2 数据集页)。
§8.2 SOTA 总结与选型建议
截至 2026-09 的证据格局:BI-RADS 相关任务上,patch 裁剪路线(先检病灶再分类)显著优于整图直接分类(DeLong p=0.0013,arXiv 2503.19945);基础模型零样本已可用(AUC 87+)但尚未超越微调方案。选型建议:资源有限时从 EfficientNetV2-S + 多任务预训练起步(工程验证最充分);追求指标上限时采用「YOLOX/RetinaNet 检出 + ConvNeXt patch 分类」两阶段管线;做基础模型研究则把 VinDr-Mammo 定位为「标签丰富的预训练/外部验证源」。
值得注意的趋势:2024 年以来,本数据集在文献中的角色正从「训练 + 测试基准」向「预训练资产」迁移(RSNA 方案系、Mammo-CLIP、Aegis 评测均如此使用)。若你的目标是发表「VinDr-Mammo 测试集上的 SOTA」,建议先检索 sota2 与 arXiv 最新列表确认该任务未被更近的方案覆盖。
§8.3 评测协议
社区事实上形成了三种协议,引用时必须注明:其一,官方测试集图像级 AUC(3-5 vs 1-2),以 arXiv 2503.19945 为代表;其二,外部验证集 study 级 AUC(4-5 vs 1-2),sota2 收录;其三,竞赛式 pF1(RSNA 主任务,非本数据集原生协议)。官方推荐的第三种是筛查 3 类映射(recall/normal/benign),适合临床叙事但文献采用较少。
评测时的两个细节决定可复现性:聚合层级(图像/乳腺/检查)必须在代码里显式固定——官方 split 是检查级的,聚合到乳腺级时对 L/R 两图取最大概率是常见做法,但「取最大」与「取平均」不可混用;阈值类指标(F1、灵敏度)必须报告阈值选择协议(固定 0.5、Youden、或验证集搜索),否则结果在 1% 量级内任意波动。
§8.4 相关数据集
| 数据集 | 规模 | 标注特点 | 与本数据集关系 |
|---|---|---|---|
| DDSM | 约 2,620 例 | 病灶轮廓 + 良恶性 | 历史基石,胶片数字化 |
| CBIS-DDSM | 约 1,660 例 | 肿块/钙化 + 病理确诊 | 需要病理锚定时用它补位 |
| INbreast | 115 例 | 像素级轮廓 + BI-RADS | 方法验证与精标注对照 |
| Mini-DDSM | 1,952 例 | 癌症标签 | RSNA 方案常用补充训练数据 |
| CMMD | 中国人群乳腺数据集 | 良恶性分类 | 跨人群外部验证 |
| RSNA 2023 训练集 | 11,913 例 | 图像级癌症标签 | 下游迁移主任务 |
| 913 例 | 图像级癌症标签 | 下游迁移主任务 | |
| VinDr-CXR | 18,000 张胸片 | 22 类病灶 + 6 类图像 | 18,000 张胸片 |
上表的选择逻辑:按「标注类型」补位而非按「规模」补位——需要病理时找 CBIS-DDSM,需要像素级轮廓时找 INbreast,需要大规模弱标签时找 RSNA 训练集,需要跨人群时找 CMMD;VinDr-Mammo 自身的位置是「现代 FFDM + 分级与框标注的最大交集」。
§8.5 关键论文 Top 8
- Nguyen H.T., Nguyen H.Q., Pham H.H., Lam K., Le L.T., Dao M., Vu V. VinDr-Mammo: A large-scale benchmark dataset for computer-aided diagnosis in full-field digital mammography. Scientific Data, 10:277, 2023. DOI 10.1038/s41597-023-02100-7 —— 数据集正典论文,含标注协议与分层划分方法。
- Pham H.H., Nguyen Trung H., Nguyen H.Q. VinDr-Mammo (version 1.0.0). PhysioNet, 2022. DOI 10.13026/br2v-7517 —— 数据集正式托管版本引用。
- Nguyen H.T. et al. VinDr-Mammo preprint. medRxiv, 2022.03.07.22272009 —— 首发预印本,含补充材料的病灶定义词表。
- 「Optimizing Breast Cancer Detection in Mammograms: A Comprehensive Study of Transfer Learning, Resolution Reduction, and Multi-View Classification」. arXiv:2503.19945, 2025 —— 最系统的 VinDr-Mammo 分类基准研究,patch vs 直接分类对比。
- 「Performance of Algorithms Submitted in the 2023 RSNA Screening Mammography Breast Cancer Detection AI Challenge」. Radiology, 2025. DOI 10.1148/radiol.241447 —— 1,537 支算法的赛后分析,量化 VinDr 预训练采用率。
- NguyenThanhNhan, Pham A., Nguyen T.H. 5th place solution. Kaggle RSNA Screening Mammography Breast Cancer Detection, 2023 —— 多任务预训练范式的工程蓝本。
- Sechidis K., Tsoumakas G., Vlahavas I. On the stratification of multi-label data. ECML PKDD, 2011 —— 官方划分所用迭代分层算法出处。
- Moreira I.C. et al. INbreast: toward a full-field digital mammographic database. Academic Radiology, 19:236-248, 2012 —— 常被并列引用的早期 FFDM 基准。
阅读顺序建议:入门者按 1 → 4 → 5 的顺序即可建立完整认知(数据集协议 → 分类基准 → 迁移实践);方法学研究者再补 7(分层算法);做竞赛或工程的团队直接读 6 的代码仓库。
§8.6 社区活跃度
论文引用 237+(Semantic Scholar,截至 2026-09),Kaggle 生态中作为外部数据被 2023 RSNA 挑战赛的头部方案系统性采用,赛后持续出现在新方案与基础模型(如 Mammo-CLIP)的预训练管线中。官方 GitHub 代码仓 41 stars(截至 2026-09),issue 数量少——社区问题主要在 Kaggle 论坛与论文复现讨论中流转。总体判断:非顶流数据集,但在乳腺影像子领域属于「事实上的预训练标准件」。
求助路径建议:数据与许可问题走 PhysioNet 页面联系方式(作者响应记录良好,RSNA 赛事期间曾通过邮件确认使用口径);工程问题优先检索 Kaggle 讨论区与 Mammo-CLIP 等下游仓库的预处理 issue;标注协议细节以论文补充材料的病灶定义词表为准。
§8.7 生态快照
| 资源 | 类型 | 链接 | 热度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| PhysioNet 官方页 | 数据托管 | https://physionet.org/content/vindr-mammo/1.0.0/ | 官方唯一 | 版本、许可、字段定义一手来源 |
| vindr.ai 项目主页 | 官网 | https://www.vindr.ai/datasets/mammo | 官方 | 系列数据集导航 |
| vinbigdata-medical/vindr-mammo | 代码 | https://github.com/vinbigdata-medical/vindr-mammo | 41 stars | 脱敏/分层/可视化脚本 |
| vinbigdata-medical/vindr-lab | 标注平台 | https://github.com/vinbigdata-medical/vindr-lab | 平台开源 | 标注协议复现 |
| Mammo-CLIP | 下游基础模型 | http://github.chaintip.org/xangming94/Mammo-CLIP | 活跃维护 | 提供 VinDr DICOM→PNG 预处理参考实现 |
| sota2 基准页 | 榜单 | https://www.sota2.com/research/dataset/vindr-mammo | 持续收录 | 快速定位各任务 SOTA |
| RSNA 挑战赛页面 | 竞赛 | https://www.kaggle.com/competitions/rsna-breast-cancer-detection/leaderboard | 1,537 支队伍 | 迁移方案库 |
§9 相关资源与引用
§9.1 官方资源索引
- 数据集官方主页(vindr.ai):https://www.vindr.ai/datasets/mammo
- PhysioNet 托管页(含完整 Data Description 与 Usage Notes):https://physionet.org/content/vindr-mammo/1.0.0/
- Scientific Data 正式论文:https://www.nature.com/articles/s41597-023-02100-7
- medRxiv 预印本(含补充材料病灶定义):https://www.medrxiv.org/content/10.1101/2022.03.07.22272009v1.full
- 官方代码仓(脱敏/分层/可视化):https://github.com/vinbigdata-medical/vindr-mammo
- VinDr Lab 标注平台:https://github.com/vinbigdata-medical/vindr-lab
- PhysioNet Credentialed Health Data License 1.5.0 条文:https://physionet.org/about/licenses/
- Kaggle 镜像检索入口:https://www.kaggle.com/datasets(检索 vindr-mammo)
- 下游参考实现(Mammo-CLIP 的 VinDr 预处理):http://github.chaintip.org/xangming94/Mammo-CLIP
- RSNA 挑战赛赛后分析(Radiology 2025):http://radiology.rsna.org/doi/full/10.1148/radiol.241447
- RSNA 2023 挑战赛榜单与方案库:https://www.kaggle.com/competitions/rsna-breast-cancer-detection/leaderboard
- PhysioNet 云端访问指引(GCP/AWS):https://physionet.org/about/cloud/
- 任务级 SOTA 汇总:https://www.sota2.com/research/dataset/vindr-mammo
§9.2 BibTeX 完整引用
@article{nguyen2023vindrmammo,
author = {Nguyen, Hieu T. and Nguyen, Ha Q. and Pham, Hieu H. and Lam, Khanh and Le, Linh T. and Dao, Minh and Vu, Van},
title = {VinDr-Mammo: A large-scale benchmark dataset for computer-aided diagnosis in full-field digital mammography},
journal = {Scientific Data},
volume = {10},
pages = {277},
year = {2023},
doi = {10.1038/s41597-023-02100-7}
}
@misc{pham2022vindrmammo,
author = {Pham, Hieu Huy and Nguyen Trung, Hieu and Nguyen, Ha Quy},
title = {VinDr-Mammo: A large-scale benchmark dataset for computer-aided detection and diagnosis in full-field digital mammography (version 1.0.0)},
howpublished = {PhysioNet},
year = {2022},
doi = {10.13026/br2v-7517}
}
@article{nguyen2022vindrmammo_preprint,
author = {Nguyen, Hieu T. and Nguyen, Ha Q. and Pham, Hieu H. and Lam, Khanh and Le, Linh T. and Dao, Minh and Vu, Van},
title = {VinDr-Mammo: A large-scale benchmark dataset for computer-aided diagnosis in full-field digital mammography},
journal = {medRxiv},
year = {2022},
doi = {10.1101/2022.03.07.22272009}
}
@misc{optimizing2025vindr,
title = {Optimizing Breast Cancer Detection in Mammograms: A Comprehensive Study of Transfer Learning, Resolution Reduction, and Multi-View Classification},
howpublished = {arXiv:2503.19945},
year = {2025},
url = {https://arxiv.org/abs/2503.19945}
}
@article{rsna2025challenge,
title = {Performance of Algorithms Submitted in the 2023 RSNA Screening Mammography Breast Cancer Detection AI Challenge},
journal = {Radiology},
year = {2025},
doi = {10.1148/radiol.241447}
}
@inproceedings{sechidis2011stratification,
author = {Sechidis, Konstantinos and Tsoumakas, Grigorios and Vlahavas, Ioannis},
title = {On the Stratification of Multi-Label Data},
booktitle = {Joint European Conference on Machine Learning and Knowledge Discovery in Databases (ECML PKDD)},
pages = {145--158},
year = {2011}
}
@article{moreira2012inbreast,
author = {Moreira, In{\^e}s C. and Amaral, Ign{\'a}cio and Domingues, In{^e}s and Cardoso, Ana Maria and Cardoso, Maria Jo{\~a}o and Cardoso, Jaime S.},
title = {INbreast: Toward a Full-field Digital Mammographic Database},
journal = {Academic Radiology},
volume = {19},
number = {2},
pages = {236--248},
year = {2012}
}
@article{lee2017curated,
author = {Lee, Rebecca Sawyer and Gimenez, Francisco and Hoogi, Assaf and Miyake, Kanae K. and Gorovoy, Mia and Rubin, Daniel L.},
title = {A curated mammography data set for use in computer-aided detection and diagnosis research},
journal = {Scientific Data},
volume = {4},
pages = {170177},
year = {2017},
doi = {10.1038/sdata.2017.177}
}
§9.3 引用指南
- 使用数据:引用
pham2022vindrmammo(PhysioNet 版本引用,PhysioNet 官方要求)+nguyen2023vindrmammo(论文,DUA 明确要求发表时引用)。 - 讨论划分方法:补引
sechidis2011stratification。 - 对比历史基准:视场景补引 INbreast(
moreira2012inbreast)与 CBIS-DDSM(lee2017curated)。 - 引用本条目:千方病案医数集,VinDr-Mammo AI-Ready Wikipedia,https://www.qianfanghub.com/ai-ready-dataset/vindr-mammo/543(访问日期 2026-09-05)。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 用途 | 版本 |
|---|---|---|
| 大语言模型(条目起草) | 结构化写作、代码示例生成、文献归纳 | 生产环境通用 LLM(编辑部配置) |
| 大语言模型(事实核查辅助) | 交叉比对检索摘要与官方页面 | 同上 |
§10.2 AI 参与范围
AI 参与了初稿撰写、表格整理、BibTeX 格式化与代码草拟;全部规模数字、协议条款、许可名称与基准数字均逐条对照检索来源核验;章节结构、医学术语与结论由人工编辑定稿。数据、URL 与 DOI 未由 AI 推测补全,缺失字段按规范整行省略。
边界说明:本条目未使用 AI 生成医学影像插图或任何临床图像;封面图为按提示词生成的抽象插画,不承载任何诊断信息。代码示例仅做静态审查与结构验证,未在原始数据上端到端执行,使用前请按 §6.1 冒烟测试自验。
§10.3 输入来源列表
- Nguyen H.T. et al. VinDr-Mammo. Scientific Data 10:277, 2023. DOI 10.1038/s41597-023-02100-7(https://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Abstract&list_uids=37173336)
- Pham H.H., Nguyen Trung H., Nguyen H.Q. VinDr-Mammo v1.0.0. PhysioNet, 2022. DOI 10.13026/br2v-7517(https://physionet.org/content/vindr-mammo/1.0.0/)
- PhysioNet files 页(受限访问与许可名说明):https://physionet.org/content/vindr-mammo/1.0.0/files/
- medRxiv 预印本全文:https://www.medrxiv.org/content/10.1101/2022.03.07.22272009v1.full
- arXiv 预印本(Usage Notes 与补充材料病灶定义):https://arxiv.org/pdf/2203.11205
- Springer Nature Research Communities 官方介绍帖:https://communities.springernature.com/posts/vindr-mammo-the-largest-public-dataset-of-full-field-digital-mammography-to-evaluate-and-compare-algorithmic-support-systems-for-breast-cancer-screening
- 「Optimizing Breast Cancer Detection in Mammograms」. arXiv:2503.19945, 2025:https://arxiv.org/pdf/2503.19945
- 「Augmentation Approach for BI-RADS」. arXiv:2203.10609, 2022:https://www.arxiv.org/pdf/2203.10609
- 「Performance of Algorithms Submitted in the 2023 RSNA Screening Mammography Breast Cancer Detection AI Challenge」. Radiology, 2025. DOI 10.1148/radiol.241447(http://radiology.rsna.org/doi/full/10.1148/radiol.241447)
- Kaggle 社区月度汇总(337.8 GB、finding_birads 分布统计):https://www.kaggle.com/discussions/getting-started/374248
- RSNA 2023 第 5 名方案 writeup(Racers):https://www.kaggle.com/competitions/rsna-breast-cancer-detection/writeups/racers-5th-place-solution
- 官方代码仓 vinbigdata-medical/vindr-mammo:https://github.com/vinbigdata-medical/vindr-mammo
- Mammo-CLIP 仓库(VinDr 预处理参考实现):http://github.chaintip.org/xangming94/Mammo-CLIP
- sota2 基准页(任务榜单汇总):https://www.sota2.com/research/dataset/vindr-mammo
- Semantic Scholar 引用计数 API(截至 2026-09):https://api.semanticscholar.org/graph/v1/paper/DOI:10.1038/s41597-023-02100-7
- Nguyen et al. 论文结构化摘要(NotesByLex 学习笔记,密度/病灶计数核对用):https://notesbylex.com/nguyen-et-al-2023-vindr-mammo-a-large-scale-benchmark-dataset-for-cad-in-full-field-digital-mammography
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 JSON-LD 结构 | 千方病案医学编辑部 | 对照写作宪法逐字段核验 | ✅ 已通过 |
| INFOBOX 23 项字段 | 千方病案医学编辑部 | 与 PhysioNet 页面/论文逐项比对 | ✅ 已验证 |
| §0 免责声明 | 千方病案医学编辑部 | 按金标准三段文本核对 | ✅ 已通过 |
| §1-§2 医学背景与编码映射 | 千方病案医学编辑部 | ICD-11/SNOMED 术语核对 | ✅ 已通过 |
| §3-§4 规格与字段字典 | 千方病案医学编辑部 | 对照 PhysioNet Data Description | ✅ 已验证 |
| §5 划分与泄漏策略 | 千方病案医学编辑部 | 代码逻辑复核 | ✅ 已通过 |
| §6 代码示例 | 千方病案医学编辑部 | 静态审查 + 目录结构核对 | ✅ 已验证 |
| §6.5 八个坑点 | 千方病案医学编辑部 | 逐条对照论文/官方声明溯源 | ✅ 已通过 |
| §7 质量评估与 DAIMS | 千方病案医学编辑部 | 24 项逐项裁定复核 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与原文及 Semantic Scholar 快照交叉比对 | ✅ 已验证 |
| §9 BibTeX | 千方病案医学编辑部 | 逐字段核对 DOI 与作者名 | ✅ 已通过 |
| §10 声明卡 | 千方病案医学编辑部 | 来源清单逐条可达性检查 | ✅ 已验证 |
§10.5 AI 生成章节标注
- 全部章节由 AI 起草初稿,人工编辑逐节审定后发布;无「纯 AI 未审」章节。
- 代码示例(§6.1、§6.3、§6.4、§6.9)为 AI 起草、人工静态审查;未在原始数据上端到端运行,使用者应按 §6.1 的冒烟测试先行验证。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致;动态数字均标注「截至 2026-09」)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cbis-ddsm — 共享标签:医学影像 / 乳腺影像 / X光影像 / 乳腺癌
- cmmd — 共享标签:医学影像 / 乳腺影像 / X光影像 / 乳腺癌
- vindr-cxr — 共享标签:医学影像 / X光影像 / 目标检测
- chestx-det10 — 共享标签:医学影像 / X光影像 / 目标检测
- tufts-dental — 共享标签:医学影像 / X光影像 / 目标检测
- mura — 共享标签:医学影像 / X光影像 / 目标检测
- grazpedwri-dx — 共享标签:医学影像 / X光影像 / 目标检测
- lidc-idri — 共享标签:医学影像 / X光影像 / 目标检测
- tbx11k — 共享标签:医学影像 / X光影像 / 目标检测
- dentex — 共享标签:医学影像 / X光影像 / 目标检测
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

