信息速览

VinDr-CXR — 越南医师精标胸片数据集 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | VinDr-CXR |
| 英文全称 | VinDr-CXR: An open dataset of chest X-rays with radiologist’s annotations |
| 别名/简称 | VinDr-CXR、VinBigData CXR、Kaggle VinBigData 胸片数据集 |
| 疾病分类 | 多疾病覆盖(ICD-11:CA40–CA4Z 肺炎等呼吸系统感染 / 1B10 呼吸道结核 / CA22 慢性阻塞性肺疾病 / 2C25 肺恶性肿瘤 / CB24 心脏肥大 / DB21 气胸 等 28 类) |
| SNOMED CT | 233604007 Pneumonia / 56717001 Tuberculosis / 13645005 COPD / 8186001 Cardiomegaly / 111895007 Atelectasis 等 28 类映射(详见 §2.2) |
| 数据模态 | 影像(胸部 X 光,成人 PA 后前位,DICOM 16-bit 灰度) |
| AI 任务类型 | 目标检测(22 类病灶定位)、图像多标签分类(28 类)、异常筛查、长尾识别、多标注者/噪声标签学习、基础模型评测 |
| 样本总数 | 18,000 张(训练 15,000 + 测试 3,000);22 类定位框 + 6 类图像级标签 |
| 数据大小 | ~192 GB(训练 161 GB + 测试 31.3 GB,论文 Table 2) |
| 数据格式 | DICOM(16-bit,中位尺寸 2,788 × 2,446 px)/ CSV(4 个标注文件) |
| 许可证 | PhysioNet Credentialed Health Data License 1.5.0 |
| 访问级别 | 申请审核(注册 PhysioNet + 完成 CITI 培训 + 签署 DUA);Kaggle 竞赛页另有镜像 |
| DUO 标签 | HMB, NPUNCU |
| 语言 | 英文(标签类别名;无放射报告文本) |
| 首发日期 | 2020-12-30(arXiv:2012.15029)/ 2021-06-22(PhysioNet v1.0.0)/ 2022-07-20(Scientific Data 论文) |
| 最后更新 | 2021-06-22(v1.0.0,迄今唯一版本) |
| 发布机构 | Vingroup 大数据研究院(VinBigdata)& VinUniversity & 河内医科大学医院(HMUH)& 108 医院(H108) |
| 官方主页 | https://physionet.org/content/vindr-cxr/ |
| 下载地址 | https://physionet.org/content/vindr-cxr/1.0.0/ / Kaggle VinBigData 竞赛页(镜像) |
| DOI | 10.13026/3akn-b287(数据集)/ 10.1038/s41597-022-01498-w(论文) |
| 引用次数 | 576+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方 train/test 划分 + 测试集 5 医师共识金标准 + 定位框标注;扣分项:训练集 3 人独立标注无共识、长尾极端、无官方验证集、192 GB DICOM 需自行预处理 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、28 标签临床定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(标注 CSV 字段、DICOM 标签)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 VinBigdata、VinBrain、Vingroup、PhysioNet、河内医科大学医院及 108 医院无任何商业利益关联。本页面不销售 VinDr-CXR 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。VinDr-CXR 要求用户完成 CITI Program 的 “Data or Specimens Only Research” 培训并通过 PhysioNet 凭证化申请、签署数据使用协议(DUA)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
VinDr-CXR 是越南 Vingroup 大数据研究院(VinBigdata)联合河内两家大型医院发布的胸部 X 光公开数据集,包含 18,000 张成人后前位胸片 DICOM(2018-2020 年采集),由 17 名至少 8 年经验的放射科医师手工标注了 22 类病灶的边界框和 6 类疾病标签。
它的独特价值在于标注质量:当 CheXpert、MIMIC-CXR 等主流胸片数据集依赖 NLP 从报告中自动抽取标签(噪声率高)时,VinDr-CXR 的训练集每张图由 3 名医师独立标注、测试集每张图由 5 名医师共识裁决——这是全球首个训练与测试集全部采用放射科医师人工标注的大规模胸片数据集。2025 年的系统性基准发现,同一模型在 VinDr-CXR 上的 AUROC 比在 NLP 标注数据集上高出约 8 个百分点,标签质量差异第一次被量化。
你可以用它来:训练胸片病灶检测与定位模型(这是它最不可替代的用途)、在医师共识金标准上评测基础模型、研究多标注者噪声下的鲁棒学习、或者复现 Kaggle VinBigData 竞赛(1,277 支队伍)的经典方案。
§1.1 摘要
VinDr-CXR 由 VinBigdata 团队从河内医科大学医院(HMUH)与 108 医院(H108)的 PACS 中回顾性收集 100,000 余张 DICOM 原始影像起步,先用轻量 CNN 分类器自动剔除儿童片、侧位片、低质量与非胸部影像,再由 10 名人工审核员逐例复核去标识化质量,最终抽样 18,000 张成人 PA 位影像进入标注。标注在团队自研的 VinDr Lab 平台上完成:训练集 15,000 张每张由 3 名医师独立盲标(无共识),测试集 3,000 张每张经"3 人初标 + 2 名资深医师复核裁决"的两阶段流程产出共识金标准。标签体系共 28 类——22 个局部标签(对应放射报告的 Findings,逐病灶画出边界框)与 6 个全局标签(对应 Impressions,图像级疾病印象),由两院最资深的放射科医师委员会按"临床高发 + 胸片可鉴别"两条原则圈定。数据以原始 DICOM(16-bit,中位尺寸约 2,788 × 2,446 px)加 4 个 CSV 标注文件的形式发布于 PhysioNet, v1.0.0 为迄今唯一版本。
§1.2 战略价值分析
标注范式维度:VinDr-CXR 把胸片数据集的标注标准从"报告文本弱监督"拉回到"医师阅片金标准"。CheXpert(22.4 万张)与 MIMIC-CXR(37.7 万张)的规模远大于它,但标签来自 NLP 标注器;此前带定位框的胸片数据集(如 NIH ChestX-ray14 的 BBox 子集,仅 880 张)又小到无法训练检测器。VinDr-CXR 在 1.8 万张的规模上同时给出框级标注与医师共识测试集,恰好填补了"够大"与"够准"之间的空档——它至今仍是胸片检测任务最常用的公开基准。
评测锚点维度:测试集 5 医师共识标签使 VinDr-CXR 成为基础模型时代最可靠的"试金石"之一。2025 年的跨数据集系统评测显示,同一编码器在 VinDr-CXR 测试集上的平均 AUROC(约 90.5%)显著高于 CheXpert(82.5%)与 MIMIC-CXR(82.7%)——差距被归因于标注质量而非任务难度,这让 VinDr-CXR 成为衡量"模型真实上限"的首选标尺。CheXWorld、RAD-DINO 等 2025 年前沿基础模型均将其纳入核心评测集。
生态推动维度:2020-2021 年的 Kaggle VinBigData 竞赛(1,277 支队伍、60 余国、5 万美元奖金)围绕该数据集沉淀了一整套胸片检测工程范式——WBF 多标注者框融合、14 类长尾合并、mAP@0.4 评估协议——这些做法随后被几乎所有使用该数据集的论文沿用。VinDr 系列(PCXR/Mammo/SpineXR/RibCXR)也以此为模板扩展,构成了医学影像领域少有的"同体系数据集家族"。
§1.3 横向对比
| 数据集 | 样本量 | 模态 | 标注方式 | 核心差异化 |
|---|---|---|---|---|
| VinDr-CXR | 18,000 | X 光(PA,DICOM) | 17 名放射科医师;训练 3 人独立 + 测试 5 人共识;22 类框级标注 | 训练+测试全医师精标;定位框与疾病标签双体系 |
| CheXpert | 224,316 | X 光(JPEG) | NLP 标注器 + 不确定性标签 | 不确定性建模范式,规模最大梯队 |
| MIMIC-CXR | 377,110 | X 光(DICOM/JPEG) | 同 CheXpert 标注器 | 附带放射报告,可做图文多模态 |
| NIH ChestX-ray14 | 112,120 | X 光(PNG) | NLP 弱监督;880 张人工框 | 首个大规模胸片集,框标注极少 |
| PadChest | 160,000+ | X 光(DICOM) | 报告标签 + 部分医师复核 | 西班牙语报告,解剖-病理双层标签 |
| VinDr-PCXR | 约 9,100 | X 光(DICOM) | 同 VinDr 医师标注体系 | VinDr 儿童版(18 岁以下) |
VinDr-CXR 的不可替代性不在规模,而在三点:测试集医师共识金标准(横评模型时的"硬尺子")、22 类病灶框级标注(检测/定位研究的刚需)、以及训练集 3 人独立标注所天然携带的多标注者信息(噪声学习研究的独特素材)。
§1.4 版本演进时间轴
| 时间 | 事件 |
|---|---|
| 2018-2020 | 从 HMUH 与 H108 两院 PACS 回顾性收集 100,000+ 张 CXR DICOM |
| 2020-12-30 | arXiv:2012.15029 预印本首发 |
| 2020-12-31 | Kaggle VinBigData Chest X-ray Abnormalities Detection 竞赛开赛(14 类检测,mAP@0.4) |
| 2021-03-31 | 竞赛收官:1,277 支队伍、60 余国参赛,冠军 ℳS²Ƒ 私有榜 0.314 |
| 2021-04-01 | VinDr Lab 标注平台开源 |
| 2021-06-22 | PhysioNet v1.0.0 发布(18,000 张 DICOM + 训练/测试全部标签,DOI: 10.13026/3akn-b287) |
| 2022-07-20 | Scientific Data 论文正式发表(Sci Data 9:429,DOI: 10.1038/s41597-022-01498-w) |
| 2022-03 | 姊妹数据集 VinDr-PCXR(儿童胸片)与 VinDr-Mammo(乳腺钼靶)上线 PhysioNet |
| 2023-2024 | VinDr-SpineXR、VinDr-RibCXR 相继发布,VinDr 家族成型 |
| 2024-2025 | CheXWorld、RAD-DINO 等基础模型将 VinDr-CXR 纳入核心评测集 |
§1.5 典型 AI 应用场景
- 胸片病灶检测与定位:22 类边界框 + mAP@0.4 协议,是 YOLO/Faster R-CNN/EfficientDet 等检测器在医学影像领域最常用的公开练兵场。
- 基础模型外部评测:测试集 5 医师共识标签是检验 CXR 基础模型(CheXWorld、RAD-DINO 等)真实泛化能力的硬标尺。
- 多标注者与噪声标签学习:训练集每图 3 名医师独立标注、无共识,天然适合研究标注者建模、WBF 融合、共识学习(如 EARL)。
- 长尾识别与类别不平衡研究:训练集中 Clavicle fracture 仅 1 例、Edema 仅 1 例,极端长尾分布是检验重采样、类别合并策略的真实场景。
- 结核病与高发地区疾病谱研究:越南结核负担高,数据集中 Tuberculosis(训练 479 例)等标签为胸片结核 AI 筛查提供稀缺的医师标注资源。
§2 医学背景
§2.1 ICD-11 疾病分类锚定
VinDr-CXR 覆盖 28 类胸部异常与疾病。核心标签到 ICD-11 的映射如下(映射为近似对应,供检索与编码对齐参考):
| 数据集标签(英文) | 中文名称 | ICD-11 对应 | 训练集阳性数(多数投票) |
|---|---|---|---|
| Pneumonia | 肺炎 | CA40–CA4Z 肺炎 | 469(3.13%) |
| Tuberculosis | 结核病 | 1B10 呼吸道结核 | 479(3.19%) |
| COPD | 慢性阻塞性肺疾病 | CA22 慢性阻塞性肺疾病 | 7(0.05%) |
| Lung tumor | 肺肿瘤 | 2C25 肺恶性肿瘤(近似) | 132(0.88%) |
| Cardiomegaly | 心脏肥大 | CB24 心脏肥大 | 1,817(12.11%) |
| Aortic enlargement | 主动脉扩张 | BD50.Z 主动脉瘤与夹层,未特指(近似) | 2,348(15.65%) |
| Pulmonary fibrosis | 肺纤维化 | CB03.4 特发性肺纤维化(近似) | 1,017(6.78%) |
| Pleural thickening | 胸膜增厚 | DB91.Z 胸膜疾病,未特指(近似) | 882(5.88%) |
| Pleural effusion | 胸腔积液 | DB98.Z 胸腔积液,未特指 | 634(4.23%) |
| Lung opacity | 肺内阴影 | CB40.Y 其他特指的呼吸异常影像(近似) | 547(3.65%) |
| Nodule/Mass | 结节/肿块 | NF0A.Z 孤立性肺结节(近似) | 410(2.73%) |
| Pneumothorax | 气胸 | DB21 气胸 | 58(0.39%) |
| Atelectasis | 肺不张 | CA41.0 肺不张 | 62(0.41%) |
| ILD | 间质性肺病 | CB03 弥漫性间质性肺疾病 | 152(1.01%) |
| No finding | 未见异常 | QA02.Z 无异常发现(近似) | 10,606(70.71%) |
为什么这套标签体系值得注意:28 个标签由两院资深放射科医师委员会按"高发 + 胸片可鉴别"圈定,刻意避开了胸片上难以鉴别的疾病(如肺栓塞)。局部/全局的划分对应标准放射报告的 Findings 与 Impressions 两节——局部标签必须画框定位,全局标签表达诊断印象,同一张图可同时携带多个局部框与多个全局标签。
§2.2 SNOMED CT 映射
| 数据集标签 | ICD-11 | SNOMED CT | SNOMED CT 术语 |
|---|---|---|---|
| Pneumonia | CA40 | 233604007 | Pneumonia (disorder) |
| Tuberculosis | 1B10 | 56717001 | Tuberculosis (disorder) |
| COPD | CA22 | 13645005 | Chronic obstructive pulmonary disease (disorder) |
| Lung tumor | 2C25 | 126952004 | Neoplasm of lung (disorder) |
| Cardiomegaly | CB24 | 8186001 | Cardiomegaly (finding) |
| Atelectasis | CA41.0 | 111895007 | Atelectasis (disorder) |
| Consolidation | CA41.1(近似) | 233603008 | Pulmonary consolidation (finding) |
| Pulmonary fibrosis | CB03.4 | 51615001 | Fibrosis of lung (disorder) |
| ILD | CB03 | 233703007 | Interstitial lung disease (disorder) |
| Pneumothorax | DB21 | 36118008 | Pneumothorax (disorder) |
| Pleural effusion | DB98.Z | 60046008 | Pleural effusion (disorder) |
| Emphysema | CA23(近似) | 87433001 | Pulmonary emphysema (disorder) |
| Edema | CB41.0(近似) | 19242006 | Pulmonary edema (disorder) |
| Nodule/Mass | NF0A.Z(近似) | 27925004 | Pulmonary nodule (finding) |
| Rib fracture | NA82(近似) | 423125000 | Closed fracture of rib (disorder) |
| Clavicle fracture | NC42(近似) | 58150001 | Fracture of clavicle (disorder) |
| No finding | QA02.Z(近似) | 169553000 | No abnormal finding (finding) |
§2.3 疾病简介
胸部 X 光片(CXR)是全球年检查量最大的医学影像检查,用于筛查与诊断肺炎、结核、慢阻肺、肺癌、心力衰竭等高发疾病。越南属于结核病高负担国家,胸片是基层筛查的第一道防线;同时该国放射科医师资源紧张,单院日均阅片量大,计算机辅助诊断(CAD)的临床价值直接。VinDr-CXR 的疾病谱正是这一临床现实的镜像:主动脉扩张(15.65%)、心脏肥大(12.11%)、肺纤维化(6.78%)等慢性结构性改变占主导,结核(3.19%)与肺炎(3.13%)等感染性疾病构成重要长尾,气胸(0.39%)、肺不张(0.41%)等急症样本稀少。数据集明确不含 COVID-19 阳性病例(采集窗口 2018-2020 年且经人工复核)。
§2.4 临床任务定义
| AI 任务 | 临床定义 | 标准参考 | 在 VinDr-CXR 中的操作化 |
|---|---|---|---|
| 病灶检出(Detection) | 在影像上定位并分类异常征象 | 放射报告 Findings 节 | 22 类局部标签 + 边界框,mAP@IoU=0.4 |
| 疾病分类(Classification) | 图像级疾病印象判断 | 放射报告 Impressions 节 | 6 类全局标签 + 22 类局部标签均可作多标签分类目标 |
| 异常筛查(Screening) | 正常/异常二分 | 分诊场景 | 以"是否存在任一局部框"或 No finding 全局标签定义正常(口径须声明,见 §6.5 坑点 7) |
| 结核筛查 | 胸片结核征象识别 | WHO 胸片筛查路径 | Tuberculosis 全局标签(训练 479 例) |
§2.5 患者人群特征
| 维度 | 特征 |
|---|---|
| 数据来源 | 双中心:河内医科大学医院(HMUH)与 108 医院(H108),越南河内两家最大型医院 |
| 采集时间 | 2018-2020 年(回顾性采集;去标识化移除了具体检查日期) |
| 人群 | 仅成人(儿童片在过滤阶段被 CNN 分类器剔除) |
| 年龄 | 论文 Table 2 报告值:训练集 43.77 / 测试集 31.80(仅基于年龄已知的扫描;DICOM 年龄标签仅部分保留) |
| 性别 | 训练集 男 52.21% / 女 47.79%;测试集 男 55.90% / 女 44.10%(仅基于性别已知的扫描) |
| 种族/地域 | 越南人群,城市三级医院就诊者 |
| 设备来源 | Philips、GE、Fujifilm、Siemens、Toshiba、Canon、Samsung、Carestream 等 8 家厂商 |
| 特殊声明 | 不含 COVID-19 阳性病例;不含儿科病例 |
注意:患者级 ID 未发布(文件名为 SOP Instance UID 的哈希),因此无法统计"独立患者数",也无法验证同一患者是否跨训练/测试集出现——这是本数据集在泄漏控制上的结构性限制(见 §6.5 坑点 6)。
§2.6 金标准/参考标准
| 数据划分 | 标注方式 | 标注者 | 金标准性质 |
|---|---|---|---|
| Train(15,000 张) | 每张 3 名放射科医师独立盲标(无共识),22 类画框 + 6 类全局标签 | 17 名 ≥8 年经验、越南卫生部认证的放射科医师中的 3 人 | 多标注者标签(非单一金标准);论文统计口径为多数投票 |
| Test(3,000 张) | 两阶段共识:3 名医师初标 → 2 名更资深医师复审并与初标者讨论,分歧经裁决后定稿 | 5 名放射科医师 | 医师共识金标准(CSV 中不含 rad_id) |
标注流程的质控设计:图像随机打乱后分配,保证标注者间完全盲态;VinDr Lab 平台内置自动校验规则,拦截"漏选全局标签""已画框却勾选 No finding"等机械性错误;所有标注者对临床信息保持盲态(仅凭影像判断)。论文未报告 Kappa 等量化一致性指标——多标注者分歧以补充材料中的示例定性呈现,这也是后续 EARL 等研究把该数据集当作多标注者学习基准的原因。
脱敏规则:DICOM 中全部 PHI 标签(姓名、出生日期、患者 ID、采集时间等)由脚本移除或随机化,仅保留图像处理必需标签(清单见随数据集发布的 supplemental_file_DICOM_tags.pdf);像素级文字经自动检测算法清除,10 名人工审核员逐例复核并剔除残余隐私样本;流程按 HIPAA、GDPR 及越南当地隐私法规设计,两院 IRB 批准并免除知情同意。
§3 数据集规格
§3.0 版本抉择矩阵
VinDr-CXR 只有一个官方版本(PhysioNet v1.0.0),但存在两个获取渠道与两种标签口径。30 秒选型:
| 你的需求 | 推荐渠道/口径 | 大小 | 理由 |
|---|---|---|---|
| 科研发表、复现论文、需要测试集标签 | PhysioNet v1.0.0 官方版 | ~192 GB | 唯一含 train+test 完整标签的官方源;DUA 合规路径;引用三件套以此为准 |
| 快速跑通管道、复现竞赛方案 | Kaggle VinBigData 竞赛页镜像 | 同源 DICOM | 竞赛社区数百个公开 Notebook 可直接复用;注意竞赛期测试集标签未公开,最终评测仍须回到 PhysioNet 标签 |
| 目标检测/定位任务 | annotations_*.csv(框级标签) | — | 22 类边界框;训练集含 rad_id 可做标注者建模 |
| 图像级分类/筛查任务 | image_labels_*.csv(图像级标签) | — | 28 个 0/1 标签列;训练集每图 3 行(3 名标注者),测试集为共识单行 |
一句话结论:无论从哪下载,做研究请以 PhysioNet v1.0.0 为准并在论文中注明;Kaggle 镜像适合工程起步,但其"14 类竞赛口径"与原论文"28 标签口径"的映射关系必须先弄清楚(见 §6.5 坑点 8)。
§3.1 模态详细说明
VinDr-CXR 为单一影像模态数据集:
- 影像:18,000 张成人 PA 后前位胸片,原始 DICOM 格式,16-bit 灰度,中位尺寸 2,788 × 2,446 px(训练)/ 2,748 × 2,394 px(测试),来自 8 家厂商的数字 X 线摄影设备。文件名为 SOP Instance UID 经 hashlib 编码后的匿名哈希(如
000434271f63a053c4128a0ba6352c7f.dicom)。 - 标注:4 个 CSV——
annotations_train.csv/annotations_test.csv(框级,每行一个边界框:image_id、rad_id、class_name、x_min、y_min、x_max、y_max)与image_labels_train.csv/image_labels_test.csv(图像级,每行 image_id + rad_ID + 28 个 0/1 标签列;测试集文件无 rad_id)。
不含:放射报告文本、侧位片、CT/其他模态、患者级人口学表(年龄/性别仅存于部分 DICOM 保留标签中)、患者级 ID、检查时间戳。
§3.2 样本量拆分
| 划分 | 扫描数 | 正常(无局部框) | 异常(≥1 局部框) | 每图标注者数 |
|---|---|---|---|---|
| Train | 15,000 | 10,606 | 4,394 | 3(独立) |
| Test | 3,000 | 2,052 | 948 | 5(共识) |
- 图像尺寸中位数:训练 2,788 × 2,446 px / 测试 2,748 × 2,394 px。
- 数据体积:训练 161 GB / 测试 31.3 GB(论文 Table 2)。
- 训练集图像级标签行数:15,000 × 3 名标注者 = 45,000 行(image_labels_train.csv)。
- 全局标签分布(训练/测试,多数投票口径):No finding 10,606 / 2,051;Other diseases 4,002 / 657;Tuberculosis 479 / 164;Pneumonia 469 / 246;Lung tumor 132 / 80;COPD 7 / 2。
§3.3 数据格式详情
| 形态 | 格式 | 说明 |
|---|---|---|
| 影像 | DICOM(.dicom) | 16-bit 灰度;Photometric Interpretation、VOI LUT 等显示标签因设备而异,读取时必须处理(见 §6.5 坑点 3) |
| 框级标注 | CSV | 坐标为原始像素坐标(左上角 x_min/y_min + 右下角 x_max/y_max),未做归一化 |
| 图像级标注 | CSV | 28 个 0/1 列;训练集含 rad_ID 列(R1-R17),测试集无 |
| 补充文档 | supplemental_file_DICOM_tags.pdf(保留的 DICOM 标签清单) | |
| 竞赛镜像 | DICOM + CSV | Kaggle 竞赛页同源文件;竞赛口径 14 类 + No finding |
§3.4 存储大小
| 形态 | 大小 | 备注 |
|---|---|---|
| 训练集 DICOM | ~161 GB | 15,000 张(论文 Table 2) |
| 测试集 DICOM | ~31.3 GB | 3,000 张(论文 Table 2) |
| 合计 | ~192 GB | 下载与解压建议预留 250 GB 磁盘 |
| 标注 CSV | < 50 MB | 4 个文件 |
§3.5 标注方式
全人工标注,无 NLP 弱监督——这是 VinDr-CXR 与 CheXpert/MIMIC-CXR 的根本差异。流程分三步:
PACS 原始影像(100,000+ 张,2018-2020)
└─ ① CNN 二分类器自动过滤(剔除儿童/侧位/低质/非胸部/方向错误)
└─ ② 10 名人工审核员逐例复核(隐私文字 + CNN 漏检离群样本)
└─ ③ VinDr Lab 平台标注(图像随机打乱分配,保证盲态)
├─ 训练集 15,000 张 × 3 名医师独立盲标
└─ 测试集 3,000 张 × 5 名医师两阶段共识(3 初标 + 2 复核裁决)
平台内置规则引擎自动拦截机械性错误(漏选全局标签、框与 No finding 矛盾等)。唯一用到的自动化工具是过滤阶段的 CNN 分类器与隐私文字检测算法——疾病标签本身 100% 由医师产生。
§3.6 标注者资质
| 维度 | 说明 |
|---|---|
| 人数 | 17 名放射科医师(标注)+ 10 名人工审核员(脱敏复核) |
| 资质 | 全部 ≥8 年经验,持越南卫生部诊断放射学执业证书 |
| 任务分配 | 图像随机打乱后分发;训练集每图 3 人独立,测试集每图 5 人(3 初标 + 2 资深复核) |
| 一致性检验 | 论文未报告 Kappa 等量化指标;分歧示例见论文补充材料 |
| 已知标注者偏斜 | 训练集 94.28% 的异常图(3,315/3,516)由 R8/R9/R10 三名医师标注(IEEE Access 2023 分析,见 §7.1) |
§3.7 数据采集时间范围
2018-2020 年回顾性采集。具体检查日期作为 PHI 已移除,仅知年份区间;数据集明确不含 COVID-19 阳性病例。
§3.8 地理覆盖
双中心——河内医科大学医院(HMUH)与 108 医院(H108),均位于越南河内,为该国最大型医院。越南城市三级医院人群是本数据集最核心的泛化边界(详见 §7.3)。
§3.9 采集设备规格
| 维度 | 说明 |
|---|---|
| 设备厂商 | Philips、GE、Fujifilm、Siemens、Toshiba、Canon、Samsung、Carestream(8 家) |
| 成像方式 | 数字 X 线摄影(DR),PA 后前位 |
| 位深/尺寸 | 16-bit 灰度;中位 2,788 × 2,446 px(各图尺寸不一) |
| 具体型号/参数 | 未公开(DICOM 设备标签未在保留清单中) |
§3.10 深度溯源链
| 环节 | 系统/方法 | 关键转换 |
|---|---|---|
| 1. 数据源系统 | HMUH 与 H108 的 PACS | 临床常规检查产生 DICOM 影像(2018-2020) |
| 2. 数据汇集 | VinBigdata 回顾性提取 | 汇集 100,000+ 张原始 CXR |
| 3. 自动过滤 | 轻量 CNN 二分类器 | 剔除儿童片、侧位片、低质量、非胸部、方向错误影像,仅留成人 PA 位 |
| 4. 去标识化 | Python 脚本(PHI 标签移除/随机化)+ 像素文字检测 + 10 人逐例复核 | 满足 HIPAA/GDPR/越南法规;少量残余隐私样本被人工剔除 |
| 5. 标注 | VinDr Lab 平台(17 名医师) | 训练集 3 人独立 / 测试集 5 人共识;规则引擎拦截机械错误 |
| 6. 公开发布 | PhysioNet v1.0.0(2021-06-22) | 18,000 张 DICOM + 4 个 CSV;凭证化访问 + DUA |
§4 数据结构详解
§4.0 目录结构预览
vindr-cxr-1.0.0/
├── Train/ # 训练集影像(15,000 个 .dicom,~161 GB)
│ ├── 000434271f63a053c4128a0ba6352c7f.dicom
│ ├── 00053190460d56c53cc3e57321387478.dicom
│ └── ...(文件名为 SOP Instance UID 的匿名哈希)
├── Test/ # 测试集影像(3,000 个 .dicom,~31.3 GB)
│ ├── 002a34c58c5b758217ed1f584ccbcfe9.dicom
│ └── ...
├── Annotations/ # 标注文件(4 个 CSV)
│ ├── annotations_train.csv # 训练集框级标注(含 rad_id,每行一个框)
│ ├── annotations_test.csv # 测试集框级标注(共识,无 rad_id)
│ ├── image_labels_train.csv # 训练集图像级标签(每图 3 行,28 个 0/1 列)
│ └── image_labels_test.csv # 测试集图像级标签(共识单行,28 个 0/1 列)
└── supplemental_file_DICOM_tags.pdf # 保留的 DICOM 标签清单
§4.1 DAIMS 标准化字段描述表
annotations_train.csv(框级标注,每行一个边界框)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| image_id | TEXT | 图像匿名哈希 ID | “000434271f63…” | 关联 DICOM 文件 | 无 | 不允许缺失 | 32 位十六进制哈希 |
| rad_id | TEXT | 标注医师 ID | “R8” | 标注者建模/分层 | 异常图 94% 集中于 R8-R10 | 不允许缺失 | R1–R17 |
| class_name | TEXT | 22 类局部标签之一 | “Aortic enlargement” | 检测目标类别 | 医师间判断差异 | 不允许缺失 | 22 个枚举值 |
| x_min / y_min | FLOAT | 边界框左上角坐标(原始像素) | 512.0 / 300.0 | 检测框回归目标 | 医师画框松紧不一 | 不允许缺失 | 0 ≤ x < 图宽 |
| x_max / y_max | FLOAT | 边界框右下角坐标(原始像素) | 1200.0 / 980.0 | 检测框回归目标 | 同上 | 不允许缺失 | x_min < x ≤ 图宽 |
image_labels_train.csv(图像级标签,每图 3 行 × 3 名标注者)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| image_id | TEXT | 图像匿名哈希 ID | “000434271f63…” | 关联 DICOM 文件 | 无 | 不允许缺失 | 32 位十六进制哈希 |
| rad_ID | TEXT | 标注医师 ID | “R10” | 标注者建模 | 同上 | 不允许缺失 | R1–R17 |
| 28 个标签列 | INT | 22 局部 + 6 全局,0/1 二值 | “Cardiomegaly” = 1 | 多标签分类目标 | 独立标注无共识,存在标注者间冲突 | 阴性 = 0(非缺失) | 0 / 1 |
测试集文件:annotations_test.csv 与 image_labels_test.csv 结构相同,但无 rad_id 列(5 人共识后的单一标签),每图仅 1 行图像级标签。
DICOM 保留标签(与 AI 相关的部分):Rows / Columns(图像尺寸)、BitsAllocated(16)、PhotometricInterpretation(MONOCHROME1/2,决定灰度方向)、VOI LUT(窗宽窗位变换)、PatientSex / PatientAge(部分存在)。PHI 标签(姓名、出生日期、患者 ID、采集时间)已全部移除。
§4.2 标签分布统计
⚠️ 三种计数口径,引用数字前必须分清:
- 多数投票图像级口径(论文 Table 2):一张图被多数标注者判阳才计 1。下表即此口径。
- 原始标注行口径:训练集每图 3 名医师各标一次,框总数约 2-3 倍于口径 1(如 Aortic enlargement 框行数 3,073 vs 图像数 2,348)。
- Kaggle 14 类竞赛口径:8 个罕见局部类并入 Other lesion(见 §6.5 坑点 8)。
22 个局部标签(多数投票口径,训练集 / 测试集):
| 标签 | 训练集 | 测试集 | 标签 | 训练集 | 测试集 |
|---|---|---|---|---|---|
| Aortic enlargement | 2,348 (15.65%) | 220 (7.33%) | Lung opacity | 547 (3.65%) | 84 (2.80%) |
| Cardiomegaly | 1,817 (12.11%) | 309 (10.30%) | Infiltration | 245 (1.63%) | 58 (1.93%) |
| Pulmonary fibrosis | 1,017 (6.78%) | 217 (7.23%) | Calcification | 177 (1.18%) | 194 (6.47%) |
| Pleural thickening | 882 (5.88%) | 169 (5.63%) | ILD | 152 (1.01%) | 221 (7.37%) |
| Pleural effusion | 634 (4.23%) | 111 (3.70%) | Consolidation | 121 (0.81%) | 96 (3.20%) |
| Nodule/Mass | 410 (2.73%) | 176 (5.87%) | Mediastinal shift | 85 (0.57%) | 20 (0.67%) |
| Other lesion | 363 (2.42%) | 94 (3.13%) | Atelectasis | 62 (0.41%) | 86 (2.87%) |
| Pneumothorax | 58 (0.39%) | 18 (0.60%) | Rib fracture | 41 (0.27%) | 11 (0.37%) |
| Enlarged PA | 21 (0.14%) | 8 (0.27%) | Lung cavity | 21 (0.14%) | 9 (0.30%) |
| Emphysema | 14 (0.09%) | 3 (0.10%) | Lung cyst | 4 (0.03%) | 2 (0.07%) |
| Clavicle fracture | 1 (0.01%) | 2 (0.07%) | Edema | 1 (0.01%) | 0 (0%) |
6 个全局标签(多数投票口径,训练集 / 测试集):
| 标签 | 训练集 | 测试集 |
|---|---|---|
| No finding | 10,606 (70.71%) | 2,051 (68.37%) |
| Other diseases | 4,002 (26.68%) | 657 (21.90%) |
| Tuberculosis | 479 (3.19%) | 164 (5.47%) |
| Pneumonia | 469 (3.13%) | 246 (8.20%) |
| Lung tumor | 132 (0.88%) | 80 (2.67%) |
| COPD | 7 (0.05%) | 2 (0.07%) |
分布要点:(1) 训练/测试分布差异显著——Atelectasis 0.41% vs 2.87%、Pneumonia 3.13% vs 8.20%,以训练集分布估计先验会系统性失真;(2) 极端长尾——Clavicle fracture 与 Edema 训练集各仅 1 例,COPD 仅 7 例;(3) 论文存在一处小不一致:正文称测试集正常 2,052 例,Table 2 测试集 No finding 为 2,051 例(见 §6.5 坑点 7)。
§4.3 关键字段描述性统计
- 训练集图像级标签共 45,000 行(15,000 图 × 3 标注者);测试集 3,000 行(共识)。
- 框级标注仅存在于异常图:训练集 4,394 张异常图 × 3 标注者,平均每异常图约 1.5-2 个框(按类别而异)。
- 高频类别中主动脉扩张与胸膜增厚在框行口径下分别达 3,073 与 3,365 行(Kaggle 14 类口径)。
- 单类别 AP 跨度极大(Kaggle 第 37 名方案本地 5 折 CV):Cardiomegaly 0.891 vs Other lesion 0.159 vs Pneumothorax 0.470——类别难度而非样本量主导检测难度。
§4.4 数据层级关系
DICOM 影像(image_id,18,000 张;Train/ 与 Test/ 两目录即官方划分)
├─ annotations_*.csv(框级:image_id → 0..N 个框;训练集每框带 rad_id)
│ └─ 同一 image_id × 3 名 rad_id → 最多 3 套独立框(训练集)
└─ image_labels_*.csv(图像级:image_id → 28 个 0/1 列)
└─ 训练集同一 image_id 3 行(rad_ID R1-R17);测试集 1 行(共识)
- 无患者级 ID:文件名为 SOP Instance UID 哈希,无法聚合"同一患者的多次检查",也无法构建患者级划分。
- 局部框与全局标签非严格对齐:有全局疾病标签(如 Pneumonia)的图未必有对应局部框;有局部框的图其全局标签也可能是 “Other diseases”——两套标签表达"征象"与"印象"两个层级,不可互相推导。
§4.5 缺失值情况与信息性缺失编码
| 缺失类型 | 字段示例 | 缺失原因 | 信息性缺失编码 | 对 AI 的影响 |
|---|---|---|---|---|
| 结构性缺失 | 正常图的边界框 | 正常图本无框 | 无框行 = 阴性(非缺失) | 检测训练中作为负样本,勿当缺失剔除 |
| 人口学缺失 | PatientAge / PatientSex | 仅部分 DICOM 保留 | 论文统计仅基于已知者 | 公平性分析受限,须报告覆盖率 |
| 结构性零 | Edema(测试集 0 例) | 类别本身极罕见 | 测试集无阳性 | 该类别无法评估,训练集也仅 1 例 |
| 标注者缺失 | 测试集 rad_id | 共识流程不保留个体标注 | 列不存在 | 测试集无法做标注者建模 |
| 时间信息缺失 | 检查日期 | PHI 移除 | 仅存年份区间 2018-2020 | 无法做时间外验证 |
§5 数据划分与使用建议
§5.1 官方数据划分
官方划分为 Train 15,000 / Test 3,000(目录结构即划分),无官方验证集。测试集标签(5 医师共识)已在 PhysioNet 完整公开——这是该数据集区别于 Kaggle 竞赛镜像的关键。划分随机性说明:论文未明确声明是否按患者去重后划分,由于无患者级 ID,无法验证训练/测试集患者级独立。
§5.2 推荐划分策略
- 从训练集自建验证集:随机切 10-15%(约 1,500-2,000 张)作 val,保留官方测试集只做最终评测。由于无患者 ID,随机切分是可操作上限;论文复现时请注明"图像级随机划分"。
- 按标注者分层(进阶):训练集可用 rad_id 做标注者分层抽样,避免验证集被 R8-R10 主导的标注风格独占(94.28% 异常图出自该三人组)。
- 类别分层:长尾类别(Pneumothorax 58 例、Rib fracture 41 例等)在随机切 val 时极易出现 0 阳性,建议按"是否存在罕见类"分层。
- Kaggle 复现口径:复现竞赛方案时使用其 14 类映射与 mAP@0.4 协议,以 5 折 CV 在训练集内比较(竞赛测试标签当时保密;现在可直接用官方测试集复评)。
import pandas as pd
from sklearn.model_selection import train_test_split
labels = pd.read_csv("Annotations/image_labels_test.csv") # 先看官方测试集长什么样
train_boxes = pd.read_csv("Annotations/annotations_train.csv")
# 以图像为单位自建 train/val(注意:无患者级 ID,这是图像级划分)
image_ids = train_boxes["image_id"].unique()
tr_ids, val_ids = train_test_split(image_ids, test_size=0.1, random_state=42)
§5.3 数据泄漏风险防御
| # | 泄漏模式 | 严重程度 | 防御措施 |
|---|---|---|---|
| 1 | 同一患者多次检查可能跨 train/test(无患者 ID 无法排除) | 中(不可控) | 论文中如实声明;勿声称"患者级独立" |
| 2 | 训练集 3 名标注者的框被同时放入训练与验证(按框行切分而非按图切分) | 高 | 一切划分以 image_id 为单位 |
| 3 | 用测试集反复调参(测试标签已公开,社区普遍直接在 test 上报告) | 中高 | 严格区分 val(调参)与 test(一次性报告) |
| 4 | 把全局标签(如 Pneumonia)当检测框监督信号 | 高 | 全局标签无定位信息,仅作图像级目标 |
§5.4 交叉验证建议
- 标准:训练集内 5 折图像级 CV(Kaggle 社区惯例),最终模型在官方测试集上一次性评估。
- 标注者稳健性:以 rad_id 为轴做"留一标注者"实验,检验模型对标注风格的敏感性。
§5.5 外部验证
在 VinDr-CXR 上训练的模型,经典外部验证路径为:CheXpert / MIMIC-CXR(NLP 标签,验证跨标注范式泛化)、NIH ChestX-ray14(跨人群)、PadChest(跨地域,西班牙)。反向地,VinDr-CXR 测试集本身也是其他数据集训练模型的优质外部验证场(§7.8 矩阵已汇总实证结果)。
§6 AI 就绪指南
§6.0 云端快速启动
Kaggle 零配置起步:Kaggle VinBigData 竞赛页托管了同源数据与数百个公开 Notebook(数据加载、WBF 融合、YOLOv5/Detectron2 训练全流程),在 Kaggle 免费 GPU 环境中可直接 fork 运行,是绕过 192 GB 本地下载的最快路径。注意竞赛页不含测试集标签,最终评测须回 PhysioNet 官方标签。
本地起步建议:先用 Kaggle Notebook 跑通管道,再申请 PhysioNet 凭证化访问下载完整数据做正式实验。
§6.1 快速上手(PyTorch 版)
# ========================================
# VinDr-CXR 快速上手 — PyTorch 版
# 环境要求: pydicom>=2.3, torch>=2.0, pandas, opencv-python
#
# 目录结构预期(PhysioNet v1.0.0 解压后):
# ./data/vindr-cxr-1.0.0/
# ├── Train/ # 15,000 个 .dicom(~161 GB)
# ├── Test/ # 3,000 个 .dicom(~31.3 GB)
# └── Annotations/
# ├── annotations_train.csv # 框级(image_id, rad_id, class_name, x_min..y_max)
# ├── image_labels_train.csv # 图像级(每图 3 行,28 个 0/1 列)
# ├── annotations_test.csv # 测试集框级(共识,无 rad_id)
# └── image_labels_test.csv # 测试集图像级(共识)
#
# image_id 即 DICOM 文件名(去后缀),直接拼接路径读取:
# path = os.path.join(data_root, split, image_id + ".dicom")
# ========================================
import os
import pydicom
import numpy as np
import pandas as pd
from pydicom.pixel_data_handlers.util import apply_voi_lut
data_root = "./data/vindr-cxr-1.0.0"
def load_dicom_image(image_id, split="Train"):
"""读取并标准化一张 DICOM:VOI LUT + MONOCHROME1 反色校正 + 16-bit → [0,1]"""
path = os.path.join(data_root, split, f"{image_id}.dicom")
ds = pydicom.dcmread(path)
img = apply_voi_lut(ds.pixel_array, ds) # 应用窗宽窗位
if ds.PhotometricInterpretation == "MONOCHROME1": # 反色校正(关键!)
img = img.max() - img
img = img.astype(np.float32)
img = (img - img.min()) / (img.max() - img.min() + 1e-6)
return img
# 读取框级标注并按图聚合(训练集:3 名医师的框先合并)
boxes = pd.read_csv(os.path.join(data_root, "Annotations/annotations_train.csv"))
one_image = boxes[boxes["image_id"] == boxes["image_id"].iloc[0]]
print(one_image[["class_name", "rad_id", "x_min", "y_min", "x_max", "y_max"]])
§6.2 数据获取流程
| 获取方式 | 链接/位置 | 大小 | 流程 |
|---|---|---|---|
| PhysioNet 官方版(推荐) | https://physionet.org/content/vindr-cxr/1.0.0/ | ~192 GB | ① 注册 PhysioNet 账号;② 完成 CITI Program 的 Data or Specimens Only Research 课程(约 2-4 小时,须提交 Completion Report);③ 提交凭证化申请(学生/博士后须提供导师作为推荐人);④ 审核通过(数个工作日至 1-2 周)后签署 DUA 下载 |
| Kaggle 竞赛镜像 | Kaggle “VinBigData Chest X-ray Abnormalities Detection” 竞赛页 | 同源 DICOM | Kaggle 账号即可下载;适合跑通管道;测试集标签不在内 |
DUA 核心义务:不得尝试重识别任何个人或机构、不得分享给未签 DUA 者、安全存储、仅限科研与教学用途、发表时引用原始论文(三件套见 §9),并鼓励公开代码与模型。
§6.3 预处理 Pipeline
<details>
<summary><b>点击展开完整的 5 步预处理代码(检测任务,含 WBF 多标注者框融合)</b></summary>
import os, ast
import numpy as np
import pandas as pd
import pydicom
from pydicom.pixel_data_handlers.util import apply_voi_lut
# 步骤 1:读取标注并做 14 类映射(复现 Kaggle 口径;原始 22 类见 §4.2)
RARE_TO_OTHER = {"Clavicle fracture", "Edema", "Emphysema", "Enlarged PA",
"Lung cavity", "Lung cyst", "Mediastinal shift", "Rib fracture"}
boxes = pd.read_csv("Annotations/annotations_train.csv")
boxes["class_name"] = boxes["class_name"].replace({c: "Other lesion" for c in RARE_TO_OTHER})
# 步骤 2:WBF 融合 3 名医师的框(ensemble_boxes 库;竞赛社区标准做法)
from ensemble_boxes import weighted_boxes_fusion
def fuse_one_image(df, iou_thr=0.55):
bboxes, scores, labels = [], [], []
classes = sorted(df["class_name"].unique())
for _, r in df.iterrows():
# 坐标归一化到 [0,1](WBF 要求);需先读 DICOM 拿真实宽高
ds = pydicom.dcmread(f"Train/{r['image_id']}.dicom", stop_before_pixels=True)
W, H = ds.Columns, ds.Rows
bboxes.append([r["x_min"]/W, r["y_min"]/H, r["x_max"]/W, r["y_max"]/H])
scores.append(1.0)
labels.append(classes.index(r["class_name"]))
# 注意:WBF 应在"同类别"内融合,实际使用按 class_name 分组调用
return bboxes, scores, labels
# 步骤 3:DICOM → 标准化像素(VOI LUT + 反色校正 + 归一化)
def load_image(image_id, split="Train", size=1024):
ds = pydicom.dcmread(f"{split}/{image_id}.dicom")
img = apply_voi_lut(ds.pixel_array, ds)
if ds.PhotometricInterpretation == "MONOCHROME1":
img = img.max() - img
img = img.astype(np.float32)
img = (img - img.min()) / (img.max() - img.min() + 1e-6)
return img, ds.Columns, ds.Rows # 返回原始宽高用于坐标变换
# 步骤 4:resize 时同步变换框坐标(坑点 5 的核心)
def resize_with_boxes(img, boxes_xyxy, orig_wh, size):
import cv2
W, H = orig_wh
img_r = cv2.resize(img, (size, size), interpolation=cv2.INTER_LINEAR)
sx, sy = size / W, size / H
boxes_r = boxes_xyxy * np.array([sx, sy, sx, sy])
return img_r, boxes_r
# 步骤 5:类别不平衡——按类别频率构造 WeightedRandomSampler
counts = boxes.groupby("class_name")["image_id"].nunique()
print(counts.sort_values()) # 长尾一目了然:Clavicle fracture 合并前仅 1 例
</details>
推荐直接复用社区成熟管道:Kaggle 竞赛页高票 Notebook(数据加载 + WBF + YOLOv5/Detectron2)、ZFTurbo/Weighted-Boxes-Fusion(框融合事实标准)、TorchXRayVision(含 VinDr-CXR 加载器与预训练模型)。
§6.4 框架加载
import torch
from torch.utils.data import Dataset, DataLoader
class VinDrCXRDataset(Dataset):
"""图像级多标签分类示例(28 类);检测任务建议用 torchvision/mmdet 的检测 Dataset"""
def __init__(self, label_df, split="Train", transform=None):
self.df = label_df
self.split = split
self.transform = transform
self.label_cols = [c for c in label_df.columns
if c not in ("image_id", "rad_ID")]
def __len__(self):
return len(self.df)
def __getitem__(self, i):
row = self.df.iloc[i]
img = load_image(row["image_id"], self.split)[0] # §6.3 的 load_image
img = torch.from_numpy(img).unsqueeze(0) # [1, H, W]
y = torch.tensor(row[self.label_cols].values.astype("float32"))
return img, y
# 训练集:每图 3 行(3 名医师),可先按多数投票合并成单行,或保留 3 行做标注者建模
labels = pd.read_csv("Annotations/image_labels_train.csv")
mv = labels.drop(columns=["rad_ID"]).groupby("image_id").mean().ge(0.5).astype(int).reset_index()
loader = DataLoader(VinDrCXRDataset(mv), batch_size=8, shuffle=True, num_workers=4)
§6.5 常见坑点
⚠️ 坑点 1:训练集标签是 3 名医师"独立标注、无共识"——直接当单一金标准训练会放大噪声(分类:标签理解)
问题:训练集每张图的 3 套框与 3 行图像级标签来自 3 名独立医师,彼此未达成任何共识。同一病灶可能被 1 人画出、2 人漏画,框的松紧与类别判断也存在系统性差异。
症状:直接合并所有框训练,检测器召回虚高但精确率崩塌;图像级分类若把 3 行都当独立样本,等于用冲突标签监督同一输入。
解决:(1) 框级用 Weighted Boxes Fusion(WBF) 按类别融合 3 套框(IoU 阈值 0.55 为社区惯例);(2) 图像级用多数投票(≥2/3 判阳才为 1)或软标签(阳性比例作目标);(3) 进阶:把标注者 ID 作为条件输入做标注者建模(EARL,IEEE Access 2023)。
参考:Kaggle 冠军方案 writeup(WBF+p_sum);Learning From Multiple Expert Annotators(arXiv:2203.10611);ZFTurbo/Weighted-Boxes-Fusion。
⚠️ 坑点 2:极端长尾——Clavicle fracture 与 Edema 训练集各仅 1 例(分类:标签理解)
问题:训练集 22 个局部类中 9 类阳性数 <100,Clavicle fracture、Edema 各仅 1 例,COPD 全局标签仅 7 例。对这些类别,任何训练/验证切分都可能导致验证集 0 阳性。
症状:小类 AP≈0 或直接 NaN;macro 指标被小类拖垮;验证集上小类指标无意义。
解决:(1) 采用 Kaggle 14 类合并方案——8 个罕见局部类(Clavicle fracture、Edema、Emphysema、Enlarged PA、Lung cavity、Lung cyst、Mediastinal shift、Rib fracture)并入 Other lesion;(2) 分类任务对小类做过采样/类别加权;(3) 报告指标时对小类给出样本量警告或剔除 macro 计算。
参考:论文 Table 2;Mamba-YOLOvX(Expert Systems with Applications 2025)的 14 类分组说明。
⚠️ 坑点 3:DICOM 显示陷阱——MONOCHROME1 反色 + VOI LUT + 16-bit 值域(分类:预处理陷阱)
问题:原始
pixel_array未经 VOI LUT 变换时对比度错误;部分设备输出 MONOCHROME1(值越大越黑),直接喂模型相当于用反色图训练;16-bit 值域不归一化则与 ImageNet 预训练分布不匹配。症状:胸片"看起来发黑/发白";模型 loss 不下降;迁移预训练权重后性能远低于预期。
解决:
apply_voi_lut()变换 → 判断PhotometricInterpretation == "MONOCHROME1"则反色 → min-max 归一化到 [0,1](§6.1 代码已含全部三步)。参考:Kaggle 高票数据处理 Notebook(VOI-LUT transform and monochrome fixing);pydicom 官方文档。
⚠️ 坑点 4:高分辨率 vs 小病灶——缩到 224/512 会抹掉结节与细微骨折(分类:预处理陷阱)
问题:中位尺寸 2,788 × 2,446 px,Nodule/Mass、Rib fracture 等病灶可能只占几十像素。暴力缩放到 224 × 224 后小病灶物理消失。
症状:Nodule/Mass 等小目标类别 AP 异常低;放大原图可见病灶但模型检不出。
解决:(1) 检测任务输入 ≥1024 px(竞赛方案普遍 512-1024);(2) 两阶段方案:整图粗检 + 高分辨率 crop 精检;(3) 报告输入分辨率以便复现。
参考:Kaggle 前列方案(YOLOv5/EfficientDet 均用 512-1024);Beaver48 方案 README(1,024 × 1,024)。
⚠️ 坑点 5:bbox 是原始像素坐标且各图尺寸不一——resize/letterbox 后框全偏(分类:工程陷阱)
问题:CSV 中坐标绑定每张图的原始宽高(各图不同),图像缩放、padding、letterbox 后若未同步变换坐标,所有框错位。
症状:可视化时框明显偏离病灶;训练后 AP 趋近于 0。
解决:每次几何变换同步变换框坐标(§6.3 步骤 4 给出 resize 示例);用
albumentations(bbox_params)等库自动联动;WBF 前先归一化到 [0,1]。参考:albumentations 文档(bbox_params);ensemble_boxes 库输入约定。
⚠️ 坑点 6:image_id 是哈希、无患者级 ID——患者级划分不可行,泄漏不可排除(分类:数据泄漏)
问题:文件名为 SOP Instance UID 的哈希,同一患者多次拍片无法识别。官方 15,000/3,000 随机划分是否患者级独立不可验证;自建 val 时也无法按患者分组。
症状:测试性能可能含轻微"同人泄漏"红利,幅度不可量化;论文中无法声明患者级独立。
解决:(1) 使用官方划分,不自行重切后声称更严格;(2) 方法学中如实声明该限制;(3) 外部验证(跨数据集)才是可信的泛化证据(§7.8)。
参考:论文 Data Records(image_id 编码方式);§5.3 泄漏风险表。
⚠️ 坑点 7:"正常/异常"口径混乱——局部框、全局 No finding 与论文数字存在三处不对齐(分类:评估误用)
问题:(1) 有全局疾病标签(如 Pneumonia)的图未必有局部框;(2) 全局 No finding 的图按规则不应有任何框;(3) 论文正文称测试集正常 2,052 例,Table 2 的测试集 No finding 为 2,051 例——官方材料内部即存在 1 例口径差。
症状:用 image_labels 的 No finding 列与用 annotations 的"无框"定义正常,得到两个不同的阴性集;二分筛查指标无法与他人复现对齐。
解决:(1) 检测任务以 annotations_.csv(有/无框)定义异常;(2) 分类任务以 image_labels_.csv 为准;(3) 论文中写明所用口径与样本数;(4) 引用"正常 2,052/2,051"时注明官方材料的不一致。
参考:论文 Table 2 与正文 Data labeling 节;VinDr Lab 规则引擎(框与 No finding 互斥)。
⚠️ 坑点 8:Kaggle 14 类竞赛口径 vs 原论文 28 标签口径混淆(分类:标签理解)
问题:竞赛把 8 个罕见局部类并入 Other lesion 且只用局部类(不用全局标签),而论文与 PhysioNet 发布的是完整 28 标签。直接照搬竞赛 Notebook 到官方 CSV 上会出现类别对不上、Other lesion 语义翻倍的问题。另外竞赛期测试标签保密,Kaggle 镜像内没有测试标签。
症状:复现竞赛分数时类别数对不上(14 vs 22);评估 mAP 时 Other lesion 的构成与竞赛版不同导致分数不可比。
解决:(1) 明确声明所用口径(14 类竞赛口径 or 22+6 原论文口径);(2) 竞赛口径复现时先执行 §6.3 步骤 1 的合并映射;(3) 测试标签一律以 PhysioNet
Annotations/目录为准。参考:Kaggle 竞赛 Data 页;论文 Table 2;§4.2 三种计数口径说明。
§6.6 数据增强
| ✅ 安全增强 | ❌ 危险增强(禁止) |
|---|---|
| 水平翻转(框坐标同步镜像;注意心脏在左侧,若做左/右敏感任务需谨慎) | 垂直翻转(破坏胸片解剖结构) |
| 小幅旋转(±7°)、平移(≤5%) | 大幅旋转/透视变换(框与病灶语义失真) |
| 亮度/对比度/伽马抖动(模拟设备差异) | 弹性形变(改变病灶形态学,对结节/骨折是伪标签) |
| Mixup / Mosaic(检测任务,竞赛常用) | 对框坐标做任何"抖动式"增强而不更新类别 |
| CLAHE(限对比度直方图均衡,竞赛高票方案常用) | 随意添加高斯噪声模拟"低剂量"(剂量-噪声关系非线性) |
§6.7 模型推荐
| 任务 | 推荐 backbone | 输入/协议 | 预期性能(官方测试集) |
|---|---|---|---|
| 病灶检测基线 | YOLOv5-S / EfficientDet-D2 | 640-1024 px,WBF 融合训练框 | mAP@0.4 约 0.20-0.27 |
| 病灶检测进阶 | 多模型集成 + WBF(YOLOv5 + Detectron2 R101 + EffDet) | 多尺度 + TTA | mAP@0.4 约 0.29-0.31(竞赛头部水平) |
| 图像级分类基线 | DenseNet-121 / ResNet-50(ImageNet 初始化) | 512 px,14 类或 28 类 | mean AUROC 约 0.85-0.90 |
| 图像级分类 SOTA 口径 | CXR 基础模型(CheXWorld / RAD-DINO)微调 | 按各模型协议 | mean AUROC 约 0.95(见 §8.1) |
| 多标注者学习 | YOLOv5-S + EARL | 640 px | mAP@0.4 = 0.200(基线 0.190) |
§6.8 计算资源需求
| 硬件 | 最小配置 | 推荐配置 |
|---|---|---|
| 磁盘 | 250 GB(DICOM + 缓存 PNG) | 500 GB(多分辨率缓存 + 多折模型) |
| 内存 | 32 GB | 64 GB(批量 DICOM 解码) |
| GPU | 1 × 16 GB 显存(YOLOv5-S @640) | 1-2 × 24 GB(1024 px 检测或 4 卡集成) |
| 训练时间 | 单模型 50 epoch 约 8-15 小时(1 × 2080Ti 参考:YOLOv5 约 7 小时、FasterRCNN 约 9.5 小时、EfficientDet 约 12 小时) | 竞赛级集成 30+ 小时 |
| 云端替代 | Kaggle 免费 GPU(30 小时/周配额) | 适合管道验证与小规模实验 |
§6.9 评估指标
检测任务:官方/竞赛协议为 mAP@IoU=0.4(预测框与真值框 IoU ≥ 0.4 计为 TP;各类别 AP 取 101 点插值后宏平均)。
from torchmetrics.detection import MeanAveragePrecision
metric = MeanAveragePrecision(iou_thresholds=[0.4], class_metrics=True)
# preds/targets 为 torchvision 检测格式:
# [{"boxes": Tensor[N,4](xyxy), "scores": Tensor[N], "labels": Tensor[N]}]
metric.update(preds, targets)
result = metric.compute()
print(f"mAP@0.4: {result['map']:.4f}")
print(result["map_per_class"]) # 各类别 AP——长尾类别务必单列
分类任务:多标签报 macro-AUROC + AUPRC;长尾类别必须附阳性样本数。
from sklearn.metrics import roc_auc_score, average_precision_score
auroc = roc_auc_score(y_true, y_prob, average="macro")
auprc = average_precision_score(y_true, y_prob, average="macro")
社区共识:检测报 mAP@0.4(勿用 COCO 的 mAP@[.5:.95] 与竞赛分数混报);分类报 macro-AUROC;所有结果注明标签口径(14 类竞赛版 / 22+6 原论文版)与输入分辨率。
§6.10 MLOps 笔记
- 版本锁定:论文方法部分注明 "VinDr-CXR v1.0.0(PhysioNet, DOI: 10.13026/3akn-b287)"与访问日期;目前仅此一版,无更新计划公告。
- 引用三件套:Scientific Data 论文(10.1038/s41597-022-01498-w)+ PhysioNet 数据集本体(10.13026/3akn-b287)+ PhysioNet 平台引用——DUA 要求引用原始论文,缺一不可(见 §9)。
- 口径声明:标签口径(14/28)、计数口径(多数投票/原始行)、输入分辨率、框融合方式四要素必须在实验部分写清,否则结果不可复现。
- 数据完整性:下载后核对 Train/ 15,000 个与 Test/ 3,000 个 DICOM 文件数;
image_labels_train.csv应为 45,000 行。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 地域/人群偏倚 | 越南河内两家三级医院,城市就诊人群;不代表其他国家、农村或社区筛查人群 | 高 | 跨地域外部验证(§7.8);部署前本地校准 |
| 标注者偏倚 | 训练集 94.28% 异常图由 R8/R9/R10 三名医师标注,标注风格集中于三人 | 高 | rad_id 分层训练/评估;WBF 融合;标注者建模 |
| 训练/测试分布偏倚 | 多类患病率差异显著(Atelectasis 0.41% vs 2.87%;Pneumonia 3.13% vs 8.20%) | 中高 | 以测试集分布报告先验;勿用训练集分布校准阈值 |
| 疾病谱偏倚 | 反映当地疾病谱:结核负担高、无 COVID-19、无儿科 | 中 | 明确适用人群(成人、结核高负担地区) |
| 选择偏倚 | 仅 PA 位、仅成人、经质量过滤——剔除了卧位 AP 片与低质量片,而临床急诊场景恰多此类 | 中 | 部署到急诊/床旁场景前需额外验证 |
| 长尾结构偏倚 | 9 个局部类训练阳性 <100,2 类仅 1 例 | 中 | 类别合并;小类不纳入 macro 指标 |
§7.2 标注质量评估
| 标注类型 | 可靠性 | 一致性 | 局限性 |
|---|---|---|---|
| 测试集共识标签(5 医师) | 极高(医师共识金标准) | 两阶段裁决流程 | 未报告量化一致性;共识仍非病理确诊 |
| 训练集标签(3 医师独立) | 高(医师级)但含标注者间噪声 | 无共识步骤,分歧保留 | 论文未报告 Kappa;94% 异常图集中于 3 名标注者 |
| 边界框定位 | 医师手绘,矩形框 | 框松紧存在个体风格 | 矩形框对弥散性病灶(ILD、纤维化)边界表达有限 |
| 全局疾病标签 | 医师印象级 | 同上 | 非病理/微生物学确诊;“Other diseases” 语义宽泛 |
§7.3 泛化性讨论
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨地域(越南 → 欧美/非洲) | 中高 | 疾病谱与设备协议差异;基础模型评测显示跨数据集 AUROC 波动可达 8 个百分点(§7.8) |
| 跨标注范式(医师精标 → NLP 标签) | 高 | 同一编码器在 VinDr-CXR(精标)上 AUROC 约 90.5%,在 CheXpert/MIMIC-CXR(NLP 标签)上约 82.5%——标签体系差异主导性能差 |
| 跨人群(成人 → 儿童) | 极高 | 官方明示不适用儿科;儿科请用 VinDr-PCXR |
| 跨体位(PA → 床旁 AP) | 中高 | 数据集仅 PA 位;床旁 AP 片心影放大、肺野形态不同 |
| 跨设备 | 低中 | 8 家厂商设备已提供一定设备多样性;DICOM 显示标签差异仍须处理(坑点 3) |
§7.4 伦理考量
- 数据来自越南两家医院真实患者,回顾性研究经两院 IRB 批准并免除知情同意;使用者应遵守同样的研究伦理边界。
- DUA 明确禁止任何重识别尝试(包括对医院与医师的识别),发现疑似残余隐私信息应向 PHI-report@physionet.org 报告。
- 年龄/性别仅部分可用,公平性分析受限于覆盖率;越南单一人群训练的模型不应直接外推至其他族群而不加验证。
- 结核等标签涉及公共卫生敏感疾病,模型输出用于筛查场景时应配合当地指南与人工复核。
§7.5 公平性评估
from fairlearn.metrics import MetricFrame
from sklearn.metrics import roc_auc_score
# 年龄/性别仅存于部分 DICOM 标签,先提取
meta = extract_sex_age_from_dicom(image_ids) # 自行实现:读 DICOM PatientSex/PatientAge
frame = MetricFrame(
metrics={"AUROC": roc_auc_score},
y_true=y_test, y_pred=y_prob,
sensitive_features=meta["PatientSex"] # 注意覆盖率(仅已知者)
)
print(frame.by_group)
已知公平性差异:训练/测试集性别比例略有偏移(男 52.21% → 55.90%);年龄统计口径(论文 Table 2:43.77 vs 31.80)提示两子集人群构成不同,分亚群报告指标时应注明覆盖率与分布差。
§7.6 数据漂移提示
- 采集窗口为 2018-2020 年且不含 COVID-19:疫情后人群胸片疾病谱(病毒性肺炎、肺纤维化后遗症)与本数据集分布存在结构性差异。
- 设备更新(DR 探测器迭代)带来的像素值域漂移:部署时监控输入直方图 PSI。
- 标签本身无时间戳,无法做时间外验证——这是不可修复的结构性限制。
§7.7 DAIMS 24 项数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本/事件) | ✅ | 框级 CSV 每行一个框;图像级 CSV 每行一套 28 标签 |
| 2 | 有唯一标识符列 | ✅ | image_id(SOP Instance UID 哈希);rad_id |
| 3 | 无 Unicode 或特殊字符 | ✅ | CSV 为 ASCII;class_name 为标准英文短语 |
| 4 | 无重复行 | ⚠️ | 同图 3 名医师可能画出高度重叠的框——属标注信息而非错误,但需 WBF/投票处理 |
| 5 | 缺失值已识别并编码 | ✅ | §4.5 结构性缺失与信息性缺失编码表 |
| 6 | 标签列被明确标识 | ✅ | 22 局部 + 6 全局,0/1 编码清晰 |
| 7 | 已对罕见类别(<3%)进行分组 | ❌ | 官方未合并(Clavicle fracture 1 例、Edema 1 例、COPD 7 例);Kaggle 14 类口径为社区补位方案 |
| 8 | 偏倚评估已完成 | ✅ | §7.1 六类偏倚与缓解措施 |
| 9 | 有完整的数据字典 | ✅ | 论文 Table 1/补充材料含 28 标签定义;DICOM 保留标签清单 PDF 随数据集发布 |
| 10 | 对"信息性缺失"有明确编码解释 | ⚠️ | 年龄/性别缺失仅以脚注说明(“仅基于已知者”),无机制分析 |
| 11 | 数据采集设备和设置已记录 | ⚠️ | 8 家厂商已记录,但具体型号与曝光参数未公开 |
| 12 | 已移除完全共线性变量 | ⚠️ | 未执行,发布数据保留全部原始标签列 |
| 13 | 对编码的映射标准已说明 | ⚠️ | 自有 28 标签体系,官方未映射 RadLex/SNOMED CT;本百科 §2.2 补充映射 |
| 14 | 对时间戳的处理已明确说明 | ⚠️ | 检查日期作为 PHI 移除,仅知 2018-2020 区间 |
| 15 | 训练/验证/测试划分建议已给出 | ⚠️ | 有官方 train/test,无官方 val;§5.2 补位建议 |
| 16 | 数据泄漏风险已被讨论 | ✅ | §5.3 四种 VinDr-CXR 特有泄漏模式 |
| 17 | 标签分布已被分析 | ✅ | §4.2 三种计数口径完整分布 |
| 18 | 选择性测量偏倚已被讨论 | ✅ | §7.1 选择偏倚(仅成人 PA、质量过滤) |
| 19 | 外部验证建议已给出 | ✅ | §5.5 + §7.8 实证矩阵 |
| 20 | 数据更新和版本信息已记录 | ⚠️ | 仅 v1.0.0 单版本;无更新路线图公告 |
| 21 | 最小必要预处理脚本已提供 | ⚠️ | 官方 GitHub 仅有去标识/过滤代码;训练管道依赖 Kaggle 社区 Notebook 补位 |
| 22 | 合规使用要求已明确 | ✅ | CITI 培训 + 凭证化申请 + DUA + 引用要求 |
| 23 | 多模态对齐方法已说明 | ⚠️ | 单模态影像 + 结构化标签;无报告文本可对齐 |
| 24 | 去标识化方法已被记录 | ✅ | PHI 标签脚本移除 + 像素文字检测 + 10 人复核,HIPAA/GDPR/当地法规 |
DAIMS 评分:19 / 24
评分解读:良好偏优——标注质量与去标识化文档是顶级水准,扣分集中在结构性短板:罕见类别未分组、无官方验证集、无患者级 ID、编码未映射标准术语。
对你意味着什么:VinDr-CXR 的 13 个 ✅ 项几乎全部来自其标注与合规工程——17 名医师、两阶段共识、10 人脱敏复核、完整 DUA 链路,在胸片数据集中属于第一梯队。扣分项大多有明确的社区补位方案:罕见类别用 Kaggle 14 类合并(§6.3 步骤 1)、无验证集按 §5.2 自建、无标准术语映射用本百科 §2.2 的 ICD-11/SNOMED CT 表。建议训练前必做三件事:(1) 用 WBF 融合训练集 3 人标注框;(2) 按 §6.5 坑点 3 处理 DICOM 显示标签;(3) 声明所用标签口径(14 类 vs 28 类)。与 NLP 弱监督数据集(CheXpert/MIMIC-CXR)相比,你省下的最大成本是"标签噪声审计"——但要以 192 GB DICOM 预处理工作量为代价。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部测试集变化 | 关键发现 |
|---|---|---|---|---|---|
| VinDr-CXR 测试集(TorchXRayVision 多数据集预训练模型) | Cohen Lab 等 | 图像多标签分类 | AUROC 87.9 | N/A(外部模型→VinDr) | 多数据集迁移预训练在医师精标标签上保持稳定性能(CodeSOTA 快照,截至 2025-12) |
| VinDr-CXR 测试集(CheXWorld,0.5M X-ray 预训练 ViT-B) | CheXWorld 团队(2025) | 图像多标签分类 | AUROC 95.24 | N/A | 基础模型在精标测试集上的当前最高水平(sota2.com 快照,截至 2025-04) |
| VinDr-CXR 测试集(RAD-DINO,ViT-B) | Microsoft Health Futures(2024-12) | 图像多标签分类 | AUROC 95.16 / 91.2(两种口径) | N/A | 自监督放射基础模型无需文本监督即可达精标标签高分(arXiv:2412.14529) |
| 跨数据集横评(DINOv3 初始化 ConvNeXt-B,512 px) | 2025 年 CXR 编码器系统基准 | 多标签分类 | VinDr-CXR 90.49 ± 0.48 vs CheXpert 82.50 / MIMIC-CXR 82.66 | +8 个百分点 | 同一模型在精标与 NLP 标签数据集间的系统性差距首次被量化——标注质量构成性能上限 |
| MIMIC-CXR → VinDr-CXR 迁移 | 学术界迁移学习基准 | 5 类发现分类(Atelectasis/Cardiomegaly/Consolidation/Edema/Pleural Effusion) | 测试集各类阳性 86/309/96/10/111 | N/A | VinDr-CXR 常作为迁移学习的目标域;Edema 等类阳性过少(10 例)使该口径评估不可靠 |
为什么 VinDr-CXR 是"外部验证的试金石":NLP 弱监督数据集之间的互相验证存在"同源噪声"问题——标注器错误相似,性能被系统性高估。VinDr-CXR 的医师共识测试集打破了这种同源噪声,2024 年以来 CheXWorld、RAD-DINO 等基础模型均选择在此报告关键结果。阅读任何胸片模型的论文时,优先看它在 VinDr-CXR 测试集上的数字,而非在另一个 NLP 标注数据集上的数字。
§8 基准性能与生态
§8.1 排行榜
VinDr-CXR 有两条互不兼容的排行榜脉络:检测(mAP@0.4)与分类(AUROC),且各自内部还存在口径差异——绝对数值只可在同口径内比较。
检测口径(Kaggle VinBigData 竞赛私有榜,14 类 + No finding,mAP@0.4,2021-04 收官):
| 排名 | 队伍 | mAP@0.4 | 年份 | 关键技术 | 引用/链接 |
|---|---|---|---|---|---|
| 1 | ℳS²Ƒ | 0.314 | 2021 | Detectron2 R101 + YOLOv5 + EffDetD2 多模型集成 + WBF+p_sum(模拟医师共识的框融合变体) | Kaggle 竞赛页 1st Place Solution writeup |
| 2 | SZI | 0.307 | 2021 | 多检测器集成 | Kaggle 竞赛页 Leaderboard |
| 3 | scumed | 0.305 | 2021 | 多检测器集成 | 同上 |
| 4 | fantastic_hirarin | 0.303 | 2021 | — | 同上 |
| 5 | Watercooled | 0.299 | 2021 | — | 同上 |
检测口径(学术论文,官方测试集):
| 模型 | mAP@0.4 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|
| 集成检测器 + EfficientNet 分类器 | 0.292 | 2021 | Faster R-CNN/YOLOv5/EfficientDet 集成 | Pham VT et al., ATC 2021. DOI: 10.1109/ATC54153.2021.9598342 | GitHub: CXRAbnormalityLocalization |
| WBF+EARL(多标注者学习) | 0.200 | 2023 | YOLOv5-S + 标注者共识建模 | IEEE Access 2023 / arXiv:2203.10611 | — |
| CXR-RefineDet | 0.162(⚠️ 口径不同) | 2022 | 单阶段 RefineDet + RRNet | Wang et al., Comput Math Methods Med 2022. DOI: 10.1155/2022/4182191 | — |
⚠️ 不同论文的 mAP 计算细节(IoU 匹配方式、类别集合、是否含 No finding、框融合口径)不同,跨行数值不可直接比较;竞赛私有榜分数还受"测试标签当时保密"的评测方式影响。
分类口径(VinDr-CXR 测试集,mean AUROC,基础模型评测快照):
| 排名 | 模型 | AUROC | 快照日期 | 关键技术 | 引用 |
|---|---|---|---|---|---|
| 1 | CheXWorld | 95.24 | 2025-04 | 0.5M X-ray 预训练 ViT-B | sota2.com 汇总快照 |
| 2 | RAD-DINO | 95.16 | 2025-04 | 大规模自监督放射编码器 | Pérez-García et al., arXiv:2412.14529 |
| 3 | SimMIM | 92.81 | 2025-04 | IN-21k + 0.9M X-ray,Swin-B | sota2.com 汇总快照 |
| 4 | MAE | 92.76 | 2025-04 | 0.5M X-ray 掩码自编码,ViT-B | 同上 |
| 5 | ConvNeXt-B + DINOv3 | 90.49 | 2025-10 | DINOv3 初始化,512 px 全量微调 | 2025 年 CXR 编码器系统基准 |
| — | TorchXRayVision | 87.9 | 2025-12 | 多数据集迁移预训练 | Cohen et al., PMLR 2022 |
§8.2 SOTA 总结与选型建议
| 如果你… | 推荐方案 | 为什么 |
|---|---|---|
| 复现竞赛/做检测基线 | YOLOv5/EfficientDet + WBF 框融合 + 14 类口径 | 社区资料最全,1 张 24 GB 卡可达 mAP@0.4 ≈ 0.25 |
| 冲击检测上限 | 多模型集成 + WBF+p_sum(冠军路线) | 竞赛验证的天花板约 0.31-0.32 |
| 做分类/筛查模型 | CXR 基础模型(CheXWorld/RAD-DINO)微调 | 精标测试集上 AUROC 已超 0.95,从零训练 CNN 无竞争力 |
| 研究标注噪声 | 保留 3 人原始标注 + EARL 式标注者建模 | VinDr-CXR 是少数自带多标注者结构的数据集 |
| 写论文报指标 | 检测报 mAP@0.4 + 分类报 macro-AUROC,双口径声明 | 审稿人最常质疑的就是口径不清 |
§8.3 官方评测协议
无官方发布的独立评测协议文档。社区事实标准(源自 Kaggle 竞赛):14 类(或 22 类)检测 + mAP@IoU=0.4;测试集为 PhysioNet 公布的 3,000 张共识标签集。分类任务无统一协议,各论文自行定义标签集合(常见为 6 全局标签或 14/22 局部类的图像级化),阅读时须核对。
§8.4 相关数据集
| 数据集 | 关系 | 说明 |
|---|---|---|
| VinDr-PCXR(PediCXR) | 同门儿童版 | 约 9,100 张儿童胸片,同标注体系;Sci Data 2023;10:240 |
| VinDr-Mammo | 同门乳腺版 | 5,000 例 × 4 视图钼靶;Sci Data 2023 |
| VinDr-SpineXR | 同门脊柱版 | 脊柱 X 光病灶检测分类(2023) |
| VinDr-RibCXR | 同门肋骨版 | 肋骨分割与标注基准(2024) |
| VinDr Lab | 配套平台 | 标注平台,2021-04 开源,vindr.ai/vindr-lab |
| CheXpert / MIMIC-CXR / NIH ChestX-ray14 | 同类/对照 | NLP 弱监督大规模胸片集,§7.8 横评对照组 |
| Kaggle VinBigData 竞赛页 | 镜像/社区 | 同源数据 + 数百公开 Notebook |
§8.5 关键论文 Top 10
- Nguyen HQ et al. (2022), Scientific Data 9:429. “VinDr-CXR: An open dataset of chest X-rays with radiologist’s annotations.” — 数据集本体,权威引用入口。DOI: 10.1038/s41597-022-01498-w
- Nguyen HQ et al. (2020), arXiv:2012.15029. — 预印本版本,方法细节与正式版一致,可开放获取。
- Kaggle VinBigData 竞赛冠军 writeup (2021). “1st Place Solution”(ℳS²Ƒ 队)— WBF+p_sum 集成范式的原始出处,检测工程必读。
- Pham VT et al. (2021), ATC (IEEE). “Chest X-ray abnormalities localization via ensemble of deep convolutional neural networks.” — 官方测试集上 0.292 mAP@0.4 的学术集成基线。DOI: 10.1109/ATC54153.2021.9598342
- Learning From Multiple Expert Annotators (2023), IEEE Access / arXiv:2203.10611. — 揭示 R8/R9/R10 标注者集中现象,提出 EARL 共识学习,多标注者研究范本。
- Wang et al. (2022), Comput Math Methods Med. “CXR-RefineDet.” — 系统化检测器对比表(RetinaNet/Faster R-CNN/Cascade/VFNet/ATSS)。DOI: 10.1155/2022/4182191
- Pérez-García F et al. (2024), arXiv:2412.14529. “RAD-DINO.” — 自监督放射基础模型,VinDr-CXR 为其关键外部评测集。
- Cohen JP et al. (2022), PMLR 172:231. “TorchXRayVision.” — 含 VinDr-CXR 加载器与多数据集迁移模型,跨数据集泛化研究基础设施。
- Pham HH et al. (2023), Scientific Data 10:240. “PediCXR.” — VinDr 儿童版,同体系儿科对照。DOI: 10.1038/s41597-023-02102-5
- Nguyen HT et al. (2023), Scientific Data. “VinDr-Mammo.” — VinDr 体系向乳腺钼靶的扩展。DOI: 10.1038/s41597-023-02177-0
§8.6 社区活跃度
| 维度 | 数据 |
|---|---|
| Google Scholar 引用(Sci Data 论文) | 576+(截至 2026-09) |
| Nature 官网引用计数 | 348(截至 2026-09,滞后口径) |
| Kaggle 竞赛 | 1,277 支队伍、60+ 国家(2020-12 至 2021-03),数百公开 Notebook |
| 竞赛奖金 | $50,000(冠军 $20,000,越南特别奖 $8,000) |
| 基础模型采用 | CheXWorld、RAD-DINO、TorchXRayVision 等核心评测集(2024-2025) |
| VinDr 家族 | PCXR / Mammo / SpineXR / RibCXR 四个同体系扩展 |
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/Fork(截至 2026-09) | 为什么值得关注 |
|---|---|---|---|---|
| vinbigdata-medical/vindr-cxr | 官方代码 | https://github.com/vinbigdata-medical/vindr-cxr | — | 官方去标识化与离群过滤代码,理解数据生产链的第一手材料 |
| Kaggle VinBigData 竞赛页 | 竞赛/镜像 | https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection | 1,277 队参赛 | 数百个公开 Notebook:数据加载、WBF、YOLOv5/Detectron2 全流程 |
| ZFTurbo/Weighted-Boxes-Fusion | 工具库 | https://github.com/ZFTurbo/Weighted-Boxes-Fusion | — | 多标注者框融合事实标准,竞赛与论文通用 |
| TorchXRayVision | 工具库 | https://github.com/mlmed/torchxrayvision | 900+ / 200+(截至 2026-07 快照) | 含 VinDr-CXR 加载器与预训练模型,跨数据集实验底座 |
| VinDr Lab | 标注平台 | https://vindr.ai/vindr-lab | — | 数据集的诞生平台,自建标注项目的参考实现 |
| sota2.com VinDr-CXR 榜 | 排行榜 | https://www.sota2.com/research/sota/classification-on-vindr-cxr-test | — | 基础模型 AUROC 快照持续更新 |
§9 相关资源与引用
官方资源
- 数据集主页:https://physionet.org/content/vindr-cxr/
- 下载(v1.0.0):https://physionet.org/content/vindr-cxr/1.0.0/
- DUA 文本:https://www.physionet.org/content/vindr-cxr/view-dua/1.0.0/
- 官方 GitHub:https://github.com/vinbigdata-medical/vindr-cxr
- 论文(开放获取):https://www.nature.com/articles/s41597-022-01498-w / PMC9300612
- Kaggle 竞赛镜像:https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection
- VinDr Lab 平台:https://vindr.ai/vindr-lab
- 许可证:PhysioNet Credentialed Health Data License 1.5.0
BibTeX 引用(三件套,DUA 硬性要求)
% 1) 数据集论文(期刊引用首选)
@article{nguyen2022vindr,
title={VinDr-CXR: An open dataset of chest X-rays with radiologist's annotations},
author={Nguyen, Ha Q. and Lam, Khanh and Le, Linh T. and Pham, Hieu H. and
Tran, Dat Q. and Nguyen, Dung B. and Le, Dung D. and Pham, Chi M. and
Tong, Hang T. T. and Dinh, Diep H. and Do, Cuong D. and Doan, Luu T. and
Nguyen, Cuong N. and Nguyen, Binh T. and Nguyen, Que V. and Hoang, Au D. and
Phan, Hien N. and Nguyen, Anh T. and Ho, Phuong H. and Ngo, Dat T. and
Nguyen, Nghia T. and Nguyen, Nhan T. and Dao, Minh and Vu, Van},
journal={Scientific Data},
volume={9},
number={1},
pages={429},
year={2022},
doi={10.1038/s41597-022-01498-w}
}
% 2) 数据集本体(PhysioNet 版本引用)
@misc{physionet-vindr-cxr-1.0.0,
author={Nguyen, Ha Quy and Pham, Hieu Huy and Le, Tuan Linh and Dao, Minh and Lam, Khanh},
title={{VinDr-CXR: An open dataset of chest X-rays with radiologist annotations}},
year={2021},
note={PhysioNet, version 1.0.0, RRID:SCR_007345},
doi={10.13026/3akn-b287}
}
% 3) PhysioNet 平台(官方要求同时引用)
@article{goldberger2000physionet,
title={PhysioBank, PhysioToolkit, and PhysioNet: Components of a new research
resource for complex physiologic signals},
author={Goldberger, Ary L and Amaral, Luis AN and Glass, Leon and Hausdorff, Jeffrey M
and Ivanov, Plamen Ch and Mark, Roger G and Mietus, Joseph E and Moody, George B
and Peng, Chung-Kang and Stanley, H Eugene},
journal={Circulation},
volume={101},
number={23},
pages={e215--e220},
year={2000}
}
许多论文漏引第 2、3 条——这违反 DUA。投稿前请逐项核对。
教程与学习资源
- Kaggle 竞赛高票 Notebook(搜索 “VinBigData”):DICOM 读取、WBF 融合、YOLOv5/Detectron2 训练全流程
- 竞赛冠军方案 writeup:Kaggle 竞赛页 Writeups 区 “1st Place Solution”
- TorchXRayVision 文档:VinDr-CXR 加载器与跨数据集评估示例
- 论文补充材料(PMC9300612):28 标签定义、DICOM 保留标签清单、标注分歧示例
原始论文
- Nguyen HQ et al. (2022). “VinDr-CXR: An open dataset of chest X-rays with radiologist’s annotations.” Scientific Data 9:429. DOI: 10.1038/s41597-022-01498-w. PMID: 35858929. PMCID: PMC9300612.
- Nguyen HQ et al. (2020). 同题预印本. arXiv:2012.15029.
- Goldberger AL et al. (2000). “PhysioBank, PhysioToolkit, and PhysioNet.” Circulation 101(23):e215-e220.
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| deep-model(WorkBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09-05 | 6 组检索:论文与 PhysioNet 页面核实、标签分布复核、Kaggle 竞赛结果、SOTA 快照、引用量交叉验证 |
| WebFetch(页面提取) | 2026-09-05 | 2 次提取:PhysioNet v1.0.0 页面字段、PMC9300612 论文 Table 2 精确数字 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从 Scientific Data 原始论文、PhysioNet 官方页面、Kaggle 竞赛页与社区资源中整理结构化信息;(2) 生成 §6 的 Python 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。
§10.3 输入来源
- Nguyen et al. (2022), Scientific Data 9:429 — VinDr-CXR 原始论文(DOI: 10.1038/s41597-022-01498-w,PMC9300612 全文)
- PhysioNet VinDr-CXR v1.0.0 页面(含文件结构、Usage Notes、Release Notes、利益冲突声明)
- PhysioNet VinDr-CXR DUA 页面(PhysioNet Credentialed Health Data License 1.5.0 全文)
- Nguyen et al. (2020), arXiv:2012.15029(ar5iv 全文:Data Records 字段定义、标注平台细节)
- Kaggle VinBigData Chest X-ray Abnormalities Detection 竞赛页(Leaderboard、1st Place Solution writeup)
- VinBigdata 官方公告(2021-04-07,竞赛结果与 1,277 支队伍统计)
- Springer Nature Research Communities 博文(VinDr-CXR 团队自述,2023)
- Learning From Multiple Expert Annotators(IEEE Access 2023 / arXiv:2203.10611,R8-R10 标注者集中现象与 EARL)
- Pham VT et al. (2021), ATC(DOI: 10.1109/ATC54153.2021.9598342,集成检测基线)
- Wang et al. (2022), CXR-RefineDet(DOI: 10.1155/2022/4182191,检测器对比)
- Mamba-YOLOvX(Expert Systems with Applications 2025,14 类合并口径与跨数据集标签分布)
- Beaver48/kaggle-chest-xray-abnormalities(Kaggle 第 37 名方案:14 类框行数与分类别 AP)
- sota2.com / CodeSOTA VinDr-CXR 排行榜快照(2025-04 / 2025-10 / 2025-12 评估结果)
- Pérez-García et al. (2024), RAD-DINO(arXiv:2412.14529)
- Cohen et al. (2022), TorchXRayVision(PMLR 172:231)
- Google Scholar 引用快照(截至 2026-09-05)
- CLIMB 数据表(访问与许可要求交叉验证)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED CT 映射、标签临床定义、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(样本量、数据大小、标注者信息) | 千方病案医学编辑部 | 与 PhysioNet 页面及论文 Table 2 交叉比对 | ✅ 已验证 |
| §4 数据结构(CSV 字段、标签分布三口径) | 千方病案医学编辑部 | 与论文 Data Records 及社区方案交叉比对 | ✅ 已验证 |
| §5 数据划分策略 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与 Kaggle 社区实践比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与竞赛页及 Scholar 快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema v3.9 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.5 公平性评估代码、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
