信息速览

MIDRC-RICORD — 多国专家标注新冠影像库 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | MIDRC-RICORD(RSNA 国际新冠开放放射学数据库) |
| 英文全称 | The RSNA International COVID-19 Open Radiology Database (RICORD),随 Medical Imaging and Data Resource Center (MIDRC) 发布 |
| 别名/简称 | RICORD;MIDRC-RICORD-1A / 1B / 1C |
| 疾病分类(ICD-11) | RA01.1(COVID-19,病毒已鉴定);CA40(肺炎) |
| SNOMED CT | 840539006(COVID-19);233604007(Pneumonia) |
| 数据模态 | 胸部 CT(1A 阳性 / 1B 阴性)+ 胸部 X 光 CR/DX(1C 阳性)+ RT-PCR 检测标签 |
| AI 任务类型 | 新冠肺炎分类、感染性磨玻璃影/实变分割、严重度分级、外部验证基准 |
| 样本总数 | 1,238 项检查(120 CT+ / 120 CT− / 998 CXR+);588 例患者;54,333 张图像 |
| 数据大小 | 影像约 32.6 GB(DICOM);标注 JSON 约 16 MB;临床表约 0.14 MB |
| 数据格式 | DICOM(影像);MD.ai JSON(标注);CSV / XLSX(临床变量) |
| 许可证 | CC BY-NC 4.0(三个集合统一) |
| 访问级别 | 开放(TCIA 公开直接下载,无需申请;MIDRC 平台注册后开放) |
| DUO 标签 | NPUNCU(非商业非营利使用) |
| 语言 | 英语(元数据、标注与文档) |
| 首发日期 | 2020-12-18(1A 发布于 TCIA) |
| 最后更新 | 2021-02-05(1B 补充发布);MIDRC 平台持续更新(截至 2026-09) |
| 发布机构 | RSNA × Society of Thoracic Radiology(STR);MIDRC 联盟(RSNA / ACR / AAPM) |
| 官方主页 | RSNA RICORD |
| 下载地址 | TCIA 1A · 1B · 1C |
| DOI | 10.7937/VTW4-X588(1A);10.7937/31V8-4A40(1B);10.7937/91ah-v663(1C) |
| 引用次数 | 118+(Scopus,截至 2026-09,经 Weill Cornell VIVO 记录) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— DICOM 影像即开即用、标注协议完备,但标注为 MD.ai JSON 专有格式需转换为 DICOM-SEG/NIfTI,且无官方训练/测试划分 |
| 页面状态 | published |
§0 E-E-A-T 审核与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、COVID-19 影像学特征与临床任务定义)、§7 偏倚分析。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。MIDRC-RICORD 三个集合均采用 CC BY-NC 4.0 许可,并要求使用者遵守 TCIA Data Usage Policy 与数据引用要求(数据 DOI 必须署名)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? 2020 年新冠大流行初期,AI 团队最缺的不是算力,而是有可靠标签的新冠影像。RSNA(北美放射学会)联合胸科放射学会(STR)组织多个国际学术医疗中心,把经 RT-PCR 确认的新冠阳性胸部 CT、阴性对照 CT 和新冠阳性胸片整理成一个免费开放数据集——RICORD,并由 NCI 癌症影像档案(TCIA)分三个子集(1A/1B/1C)发布,随后汇入美国 NIH 资助的 MIDRC 数据平台。
为什么重要? 它是第一个多机构、多国、由胸部放射亚专科专家按多学会共识标准逐片标注的新冠影像库:CT 有像素级的感染病灶分割和「典型/不确定/不典型」诊断标签,胸片有四级分类加 6 肺区严重度分级。这意味着模型训练有高质量标签,模型评测有干净的基准,这在当时的新冠影像数据里极为稀缺。
我能用它做什么? 训练或评测新冠肺炎检测、分割与严重度分级模型;把你在自己数据上训练的模型拿来做一个严格的第三方外部验证;做教学与放射诊断培训;也可以把它当作多站点 DICOM 数据治理、专家标注流程设计的参考范本。注意:仅限非商业用途。
§1.1 技术摘要
RICORD Release 1 由三个 TCIA 集合构成:MIDRC-RICORD-1A(110 例患者、120 项新冠阳性胸部 CT 检查、229 个序列、31,856 张切片,11.68 GB),MIDRC-RICORD-1B(117 例患者、120 项新冠阴性对照 CT 检查、21,220 张切片,8.67 GB)与 MIDRC-RICORD-1C(361 例患者、998 项新冠阳性胸片检查、1,257 张图像,12.27 GB)(TCIA 集合页)。1A 的标注由 6 名胸部亚专科放射医师完成像素级体积分割,并辅以图像级、检查级诊断与操作/QA 三层标签,标注体系与 STR、EUSOMII、ACR、AAPM 的国际共识协调(Tsai et al., Radiology 2021);1C 的检查级分类由 3 名放射医师标注、委员会认证医师多数票裁决,严重度按 6 肺区分级。数据以 DICOM 为主格式,标注以 MD.ai JSON 格式发布,临床变量(年龄、性别、检测方法、标本来源等)以 CSV/XLSX 提供;整体采集窗口为 2020 年 4 月至 2021 年初,全部经站点端 DICOM 匿名化、MRN 与检查日期伪匿名化处理。数据纳入 MIDRC 平台后,可经 data.midrc.org 的 GraphQL 与 Jupyter 工作区按 DICOM 标签与临床变量构建队列(截至 2026-09 平台累计 202,222 项影像研究)。
§1.2 战略价值
价值维度一:外部验证的「公共标尺」。 新冠影像 AI 在 2020 年涌现了大量单中心模型,但普遍存在数据异质性与泛化性缺陷。RICORD 的价值恰恰在于它小而精:标签出自多学会共识 schema、出自亚专科专家、来自四个国际站点,因此非常适合作为外部验证集——你不必把模型训练在它上面,但你的模型应该在它上面被测过。Bai 与 Thomasian 在 Radiology 编辑评论中明确指出,临床放射组可以把 RICORD 用作检验自有算法的「pristine external validation set」(Bai & Thomasian, Radiology 2021)。
价值维度二:开放数据治理的流程范本。 RICORD 的完整管线——站点签署数据提交协议、统一 DICOM 匿名化、伪匿名 MRN/检查日期、TCIA 审核与 DOI 注册、汇入 NIH 资助的数据共享中心——为后来者提供了一套可复制的多中心影像共享模板。它同时保留了标注过程的可追溯性(标注者数量、经验、schema 出处全部公开),这在公开影像数据集中少见。对于正在筹建多中心影像库的中国医疗机构与研究团队,其数据协议文本、标注 schema 设计与版本化发布策略都值得直接借鉴(RSNA 新闻稿)。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注 | 与 RICORD 的差异化 |
|---|---|---|---|---|
| MIDRC-RICORD(本文) | 240 例 CT + 998 张胸片,588 例患者 | CT + CR/DX | 像素级分割 + 检查级四级分类 + 6 肺区分级(专家、多数票) | 唯一按多学会共识 schema、多国多站点、专家逐例标注的新冠影像集;RT-PCR 状态齐备 |
| RSNA Pneumonia Detection Challenge(Kaggle) | 上万张胸片 | CXR | 肺炎病灶框(放射医师) | 非新冠专门队列、无 RT-PCR 状态;常被用作阴性/非新冠补充集 |
| BIMCV-COVID19 | 数千例检查 | CT + CXR | PCR 状态 + 实验室/影像报告 | 西班牙瓦伦西亚地区;EHR 变量更丰富,但标注粒度与共识性弱于 RICORD |
| iCTCF | 1,500+ 例新冠患者 | CT | 诊断/临床特征 | 中国国家基因组科学数据中心托管;无像素级分割 |
| STOIC 2021 | 2,000+ 例 CT | CT | PCR 状态 + 严重度(AI 竞赛) | 法国单国;测试集封闭,仅竞赛期可评 |
| COVID-19-AR | 105 项检查 | CT/CR/DX | 检查级标签 | 早期开源新冠影像,规模小,可作补充对照 |
§1.4 版本时间轴
| 时间 | 事件 |
|---|---|
| 2020 年年中 | RSNA 组建新冠 AI 特别工作组,启动 RICORD,目标建成世界最大开放新冠影像库 |
| 2020-12-18 | 首个子集 1A(120 例新冠阳性 CT)发布于 TCIA,为 RSNA 对 MIDRC 的首笔数据贡献 |
| 2021-01-05 | 方法论文在线发表于 Radiology(299 卷第 1 期,E204-E213) |
| 2021-01-15 | 1C 发布:361 例患者的 998 张新冠阳性胸片(论文口径 1,000 张,2 项检查后续移除) |
| 2021-02-05 | 1B 发布:120 例新冠阴性对照胸部 CT |
| 2021 年初 | 三个集合纳入 MIDRC 数据平台(Gen3),平台于 2021 年初全面上线 |
| 2023 | MIDRC 发布 mRALE Mastermind 挑战赛(2,079 张床旁胸片严重度标注)与机器标注生态 |
| 2025 | MIDRC 与 N3C、BioData Catalyst 互操作论文发表于 Scientific Data;平台开始纳入肿瘤等非新冠影像 |
| 截至 2026-09 | MIDRC 平台累计 84,768 例病例、202,222 项影像研究、43 万+ 序列 |
§1.5 典型应用场景
- 新冠肺炎检测与分类基准:用 1A+1B 构建阳/阴性 CT 二分类,用 1C 的四级标签训练胸片「典型/不确定/不典型/无肺炎」多分类,并以严格的患者级划分报告 AUC 与 F1。落地路径:§6.2 下载数据 → §6.3 预处理 → §6.4 DataLoader → §8.3 协议评测,全程约数天。
- 感染病灶分割:基于 1A 的像素级分割标签(感染性磨玻璃影、树芽征/微结节、空洞等)训练 2.5D/3D 分割网络,或用官方脚本把 MD.ai JSON 转成 DICOM-SEG 后送入 nnU-Net 类框架。先跑通坑点 2 的转换链是关键前置。
- 严重度分级与 ICU 风险预测:把 1C 的 6 肺区分级作为重症代理标签,研究影像严重度与临床结局(如 ICU 入住)的关联(Diagnostics 2025 已给出可复现基线)。注意代理标签的语义边界(坑点 7)。
- 模型外部验证:把在自有或公开数据(如 BIMCV、RSNA Pneumonia Challenge)上训练的新冠分类器拿到 RICORD 上测跨地域、跨设备的泛化性能。RICORD 小而精的特点恰好适合做这件事——评测成本一天以内。
- 教学与标注规范培训:用官方公开的标注 schema、放射共识文件与示例标注,训练住院医师按标准语言描述新冠胸部影像。1C 的四级分类定义(§3.5 表)可直接作为判读课的评分量规。
§2 医学背景
§2.1 ICD-11 编码映射
| 数据集标签/概念 | ICD-11 编码 | 中文名称 |
|---|---|---|
| COVID-19(RT-PCR 阳性) | RA01.1 | COVID-19,病毒已鉴定 |
| COVID-19(总体诊断) | RA01 | COVID-19(2019 冠状病毒病) |
| 新冠肺炎(肺部受累) | CA40 | 肺炎(Pneumonia,按病因与形态学可细分) |
§2.1b SNOMED CT 映射
| 数据集标签/概念 | SNOMED CT / LOINC 码 | 术语名称 |
|---|---|---|
| COVID-19(disorder) | 840539006 | COVID-19 |
| SARS-CoV-2(病原体) | 840533007 | SARS-CoV-2 |
| Pneumonia(disorder) | 233604007 | Pneumonia |
| SARS-CoV-2 RNA 检测(RT-PCR) | LOINC 94500-6 | SARS-CoV-2 (COVID-19) RNA [Presence] in Respiratory specimen by NAA with probe detection |
| 胸部 X 光检查(procedure) | 363679005 | Chest X-ray |
| 胸部 CT 检查(procedure) | 241598000 | Computed tomography of chest |
编码说明:以上映射按 ICD-11 MMS 与 SNOMED CT 国际版整理,供检索与数据字典对齐使用;MIDRC 平台在数据汇聚中采用 LOINC Playbook 对检查描述做标准化,标注术语另见 §2.6 的放射共识出处。
§2.2 疾病简介与流行病学
COVID-19 由 SARS-CoV-2 引起,2020 年 3 月 11 日世界卫生组织宣布其构成全球大流行。虽然 RT-PCR 是感染判定的参考标准,但核酸敏感性受采样时机、标本类型与病毒载量影响,胸部影像在诊断补充、病情评估与治疗监测中承担了重要角色。典型 CT 表现包括双肺外周分布、多发磨玻璃影(GGO),常伴小叶间隔增厚与实变,形态偏圆形;胸片敏感度低于 CT,但因可及性与床旁属性成为危重患者随访的主力工具。在疫情高峰期,ICU 资源紧张,影像严重度评分(如肺区分级、RALE 评分)被广泛用于分诊与预后讨论——这正是 RICORD 把「分类」与「分级」同时纳入标注 schema 的临床动机(Tsai et al., Radiology 2021)。
§2.3 临床任务定义
| 任务 | 定义 | RICORD 对应数据 | 输出 |
|---|---|---|---|
| 筛查/诊断分类 | 判定胸片或 CT 是否呈新冠肺炎典型表现,或患者是否为新冠阳性 | 1A+1B(CT 阳/阴性);1C 四级分类 | 二分类 / 四分类概率 |
| 病灶分割 | 勾画感染性磨玻璃影、实变、树芽征/微结节、空洞等区域 | 1A 像素级分割 | 逐切片掩膜 |
| 严重度分级 | 按 6 肺区统计渗出范围:轻(1-2 区)/中(3-4 区)/重(>4 区) | 1C 严重度标签 | 三级有序输出 |
| 预后/资源预测 | 以影像严重度代理 ICU 入住或死亡风险 | 1C 重症标签 + 外部临床结局 | 风险评分 |
§2.4 患者人群
| 维度 | 1A(CT 阳性) | 1B(CT 阴性对照) | 1C(胸片阳性) |
|---|---|---|---|
| 来源 | 四个国际站点(学术医疗中心) | 四个国际站点 | 四个国际站点(Lam 等描述为三家机构的 PA/AP/床旁片) |
| 时间窗 | 2020 年至 2021 年初 | 2020 年至 2021 年初 | 2020-04 起至 2021-03-05 前 |
| 入选标准 | ≥18 岁、RT-PCR 阳性 | ≥18 岁、RT-PCR 阴性 | ≥18 岁、RT-PCR 阳性 |
| 样本 | 110 例患者 / 120 项检查 | 117 例患者 / 120 项检查 | 361 例患者 / 998 项检查 |
| 人口学 | 年龄、性别等逐例提供于临床 CSV;集合层面未发布汇总分布 | 同左(含 Symptomatic 变量) | 同左 |
| 就医类型 | 疫情急性期就诊患者(急诊/住院为主) | 疑似就诊而核酸检测阴性者 | 疫情急性期就诊患者 |
§2.5 临床价值
对临床而言,RICORD 有两层价值。其一,它把「什么样的影像算典型新冠」用可执行的标注语言固化下来——1C 的四级分类直接对应 RSNA 胸片报告共识,1A 的检查级诊断标签对应 RSNA/STR/ACR 联合的 CT 报告共识,这使不同医院、不同医师的描述可以互相比较。其二,它为 AI 工具的临床验证提供了带有人群多样性的公共测试床:模型开发者与监管机构都可以在相同的数据上复现性能,从而把「AI 辅助新冠诊断」从单中心自证推向可审计的外部验证。MIDRC 平台在此基础上进一步把影像与临床数据(如 PETAL RED CORAL 队列的 1,477 例匹配患者)打通,使影像-结局联合建模成为可能(Scientific Data 2025)。
§2.6 金标准定义
| 任务 | 官方划分 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|---|
| CT 像素级分割 | 无 | 逐切片手工轮廓(仅 >1 cm 病灶) | 6 名胸部亚专科放射医师(平均 6 年经验) | 参考标准(分割) |
| CT 检查级诊断/操作标签 | 无 | 检查级标注(典型/不确定/不典型/无肺炎 + 25 项伴随征象与 QA 标签) | 标注 schema 由 5 名资深胸部放射医师委员会制定(平均 15 年经验) | 参考标准(分类) |
| CXR 分类与分级 | 无 | 检查级标注 + 多数票裁决 | 3 名放射医师标注,委员会认证医师裁决 | 参考标准(分类) |
| 感染状态 | 无 | RT-PCR 实验室检测 | 各站点实验室 | 生物学金标准(存在已知假阴/假阳) |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 训练新冠 CT 阳/阴二分类 | 1A + 1B 合并 | 20.35 GB | 官方唯一成对的阳性/阴性 CT 对照,同站点来源可减少域差 |
| 训练胸片分类/分级模型 | 1C(阴性类需外补) | 12.27 GB | 专家四级分类 + 6 肺区分级;注意 1C 全部为新冠阳性 |
| 训练感染病灶分割模型 | 1A | 11.68 GB + 13.62 MB 标注 | 唯一提供像素级体积分割的子集 |
| 大规模预训练/队列研究 | MIDRC 平台(data.midrc.org) | 202,222 项研究(截至 2026-09) | 注册后 GraphQL 队列构建,规模远超 RICORD 三集合 |
| 商业产品开发 | 无 | — | CC BY-NC 4.0 禁止商业用途,需另行联系版权方 |
§3.1 模态详情
- 胸部 CT(1A/1B):轴位序列(任意采集协议),1A 仅收录轴位序列以保证与逐切片标注对齐;1A 侧标注要求病灶大于 1 cm 才被勾画,检查级标签另记录 IV 对比使用与 QA 状态(运动伪影、吸气不足等)。DICOM 保留原始 HU 值与 Rescale 标签。
- 胸部 X 光(1C):CR 与 DX 两种模态混杂(1,241 序列对应 1,257 张图像,绝大多数检查为单图),投照包含 PA、AP 与床旁(portable)位;1,000 张论文口径中有 2 项检查后因故移除,现存 998 项。
- 检测标签:三集合均携带 SARS-CoV-2 检测结果(TestingResult)与标本来源(SpecimenSource)变量,构成影像标签的「生物学锚点」。
§3.2 子集样本数
| 子集 | 患者 | 检查 | 序列 | 图像 | 影像大小 | 标注 | DOI |
|---|---|---|---|---|---|---|---|
| MIDRC-RICORD-1A(CT 新冠+) | 110 | 120 | 229 | 31,856 | 11.68 GB | 分割 + 图像级 + 检查级 + 操作/QA | 10.7937/VTW4-X588 |
| MIDRC-RICORD-1B(CT 新冠−) | 117 | 120 | 120 | 21,220 | 8.67 GB | 无标注(阴性对照 + 临床变量) | 10.7937/31V8-4A40 |
| MIDRC-RICORD-1C(CXR 新冠+) | 361 | 998 | 1,241 | 1,257 | 12.27 GB | 检查级四级分类 + 6 肺区分级 | 10.7937/91ah-v663 |
| 合计 | 588 | 1,238 | 1,590 | 54,333 | 32.62 GB | — | — |
§3.3 数据格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 影像 | DICOM(.dcm) | TCIA 主格式;NBIA 下载文件按「采集号-实例号」命名(如 1-1.dcm) |
| 标注(1A/1C) | MD.ai JSON(application/json) | 专有但文档化(docs.md.ai);可经 QIICR/dcmqi 的 mdai2dcm.py 转为 DICOM-SEG |
| 临床变量(1A/1C) | CSV | MRN、检查日期为伪匿名值;含年龄、性别、检查描述、模态、检测结果、标本来源 |
| 临床变量(1B) | XLSX | 另含 Symptomatic(是否有症状)变量 |
§3.4 存储大小
三个集合影像合计约 32.6 GB;标注 JSON 合计约 16 MB;临床表合计约 0.14 MB。完整镜像(含标注与临床表)预留 40 GB 磁盘即可。若经 MIDRC 平台构建大队列(含 CT/DX/CR/MR 多模态),体量以 TB 计,建议使用平台 Jupyter 工作区在线分析而非整库下载(平台侧 2023-12 统计为 423,366 个数据文件,见 re3data)。
磁盘规划的两点提醒:其一,NBIA 下载目录与解压目标建议同盘(其续传逻辑依赖目录内已下载文件的完整性);其二,1A 的 13.62 MB JSON 解析后在内存中的 DataFrame 与字典结构会膨胀至数百 MB,64 GB 内存以下的工作站在做分割标签渲染时建议按序列分批处理。
§3.5 标注方式
- 人工专家标注(回顾性):1A 的分割与 1C 的分类均由放射医师在回顾性队列上完成;1C 采用「3 名医师独立 + 多数票」的检查级标注流程。
- 委员会共识 schema:两套 schema 分别锚定 RSNA CT 报告共识与 J Thoracic Imaging 胸片报告指南(DOI 10.1097/RTI.0000000000000541),并与 EUSOMII、ACR、AAPM 的平行标注工作协调,避免各国际数据集术语打架。
- 机器标注(Helper AI,MIDRC 生态补充):MIDRC 平台另提供 SIFT/MOM ClasSeg 胸片 65 类 ROI 机器标注、lungmask/BodyPartRegression 肺分割与体位识别(389 个 CT 序列)等衍生标注,均声明「未经专家验证」,不可与 RICORD 专家标注混用(midrc.org/annotations)。
1A 检查级诊断标签全量取值(25 项,除四级分类外的伴随征象与鉴别线索):
| 组别 | 标签取值 |
|---|---|
| COVID 表现四级 | Typical / Indeterminate / Atypical / Negative for pneumonia |
| 感染相关征象 | Halo sign / Reversed halo sign / Reticular pattern without parenchymal opacity / Perilesional vessel enlargement |
| 气道与间质 | Bronchial wall thickening / Bronchiectasis / Subpleural curvilinear line |
| 胸膜与其他 | Effusion / Pleural thickening / Pneumothorax / Pericardial effusion / Lymphadenopathy / Pulmonary embolism |
| 鉴别诊断归类 | Normal lung / Infectious lung disease / Emphysema / Oncologic lung disease / Non-infectious inflammatory lung disease / Non-infectious interstitial / Fibrotic lung disease / Other lung disease |
1A 检查级操作与 QA 标签全量取值:
| 组别 | 标签取值 |
|---|---|
| 对比剂 | With IV contrast / Without IV contrast |
| 图像质量 QA | QA-inadequate motion/breathing / QA-inadequate insufficient inspiration / QA-inadequate low resolution / QA-inadequate incomplete lungs / QA-inadequate wrong body part/modality |
| 支持装置 | Endotracheal tube / Central venous/arterial line / Nasogastric tube / Sternotomy wires / Pacemaker / Other support apparatus |
§3.6 标注者资质与一致性
1A 分割由 6 名胸部亚专科放射医师完成(平均 6 年经验);标注体系由 5 名资深胸部放射医师(Kanne、Wu、Tsai、Simpson、Stein,平均 15 年经验)组成的委员会设计(论文全文)。1C 由 3 名放射医师独立标注后以多数票定稿。需要如实说明:官方页面与论文公开了标注者资质与流程,但未随集合发布逐例间一致性统计(如 Dice/κ 值),使用者在做高 stakes 评测前应自行抽检复标。
§3.7 采集周期
数据采集始于 2020 年 4 月(疫情急性期),1C 采集于 2021-03-05 前结束;三个集合的发布窗口为 2020-12-18 至 2021-02-05。因此全部影像反映的是早期毒株流行阶段的疾病谱与诊疗模式(QIMS 2022 对 1C 采集窗口的描述)。
§3.8 地域覆盖
四个国际站点参与贡献,均为学术医疗中心;论文作者网络覆盖北美、欧洲与亚洲多家机构,但官方页面未逐项列出站点与国别清单。1C 的外部验证研究(香港两院)表明其跨地域可用性,同时提示预处理(如骨抑制)会显著改变跨域表现。
§3.9 设备规格
数据集未随集合发布逐例设备厂商/型号统计;设备信息保留在 DICOM 头(Manufacturer、ManufacturerModelName 等)中逐例可查,MIDRC 平台亦支持按 DICOM 标签过滤构建队列。已知协议层面:1A 限轴位序列、任意采集协议(含/不含 IV 对比以检查级标签记录);1C 混合 CR/DX 与 PA/AP/床旁投照,这对模型鲁棒性既是资产也是陷阱(见坑点 6)。
实践建议:训练前用 pydicom 扫一遍全库的 Modality、Manufacturer、PhotometricInterpretation 与 RescaleIntercept,产出一张设备/协议分布表——这既是 §7.1 偏倚分析的证据,也是分层评估(§8.3)的分层依据。1C 中 CR(计算机放射)与 DX(数字放射)的动态范围与噪声特性不同,混训时至少要在结果表中分开报告;床旁片还常出现裁切与侧标文字,建议在预处理阶段统一检测并裁除边框。
§3.10 深度溯源链
| 层级 | 环节 | 说明 |
|---|---|---|
| L1 | 贡献站点 | 站点签署 RSNA 数据提交协议;使用 RSNA 提供的 DICOM 匿名化工具去标识;MRN/检查日期伪匿名 |
| L2 | RSNA 协调 | 新冠 AI 特别工作组统一入选标准、标注 schema 与法律协议 |
| L3 | TCIA 托管 | NCI 服务审核、去标识复核、版本化发布并注册数据 DOI |
| L4 | MIDRC 汇聚 | Gen3 平台接入,LOINC Playbook 标准化检查描述,开放 GraphQL/Jupyter |
| L5 | 标注链 | 胸部亚专科医师经 MD.ai 平台标注;JSON 随集合发布;转换工具链公开(dcmqi) |
| L6 | 镜像分发 | NCI Imaging Data Commons(IDC)同步提供影像的云访问 |
§4 数据结构
§4.0 目录树
NBIA Data Retriever 下载并解压后的典型布局(患者/检查/序列目录名由 UID 片段与检查描述拼接,逐例不同):
data_root/
├── MIDRC-RICORD-1C/ # 集合根目录(与 TCIA 集合名一致)
│ ├── {PatientID}/ # 匿名患者目录(361 例)
│ │ └── {Study 目录}/ # 目录名含检查日期/描述片段 + StudyUID 后 5 位
│ │ └── {Series 目录}/ # 目录名含序列描述 + SeriesUID 后 5 位
│ │ ├── 1-1.dcm # 采集号-实例号命名(同一检查多图时为 1-1、1-2…)
│ │ └── ...
│ └── manifest-xxxx.tcia # NBIA 下载清单(保留可断点续传/校验)
├── ricord_1c_annotations.json # 检查级标注(2.34 MB,MD.ai 格式,单独下载)
├── ricord_1c_clinical.csv # 临床变量(88 kB,单独下载)
├── MIDRC-RICORD-1A/
│ ├── {PatientID}/
│ │ └── {Study 目录}/
│ │ └── {轴位 CT 序列目录}/
│ │ ├── 1-1.dcm # 31,856 张切片
│ │ └── ...
│ ├── ricord_1a_annotations.json # 分割 + 图像级/检查级标签(13.62 MB)
│ └── ricord_1a_clinical.csv # 24.15 kB
└── MIDRC-RICORD-1B/
├── {PatientID}/ # 117 例阴性对照
│ └── {Study 目录}/
│ └── {CT 序列目录}/
│ └── 1-1.dcm ... # 21,220 张切片
└── ricord_1b_clinical.xlsx # 25.39 kB
§4.1 DAIMS 字段字典
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| PatientID(目录名) | string | 伪匿名患者标识 | MIDRC-RICORD-… | 患者级分组防泄漏 | 目录命名含 UID 片段,勿当真实 ID 解析 | 无 | 588 个唯一值 |
| StudyInstanceUID | string | 检查唯一键,标注 JSON 的 join 键 | 1.2.826.0.1.3680043… | 标签对齐、防检查级泄漏 | JSON 中残留 2 个已移除检查(见坑点 1) | 无 | 1,238 个唯一值 |
| SeriesInstanceUID | string | 序列唯一键 | 1.2.826.0.1.3680043… | 3D 重建分组 | — | 无 | 1,590 个唯一值 |
| SOPInstanceUID | string | 单图唯一键(分割对齐用) | 1.2.840.113619… | 逐切片掩膜对齐 | — | 无 | 54,333 个唯一值 |
| Modality | string | 设备模态 | CT / CR / DX | 模态路由预处理 | 1C 内 CR/DX 混杂 | 无 | |
| StudyDate | date | 检查日期(伪匿名化) | 2020-XX-XX 形式 | 时序分析受限使用 | 已脱敏,时序精度受限 | 无 | 2020/2021 |
| Age | string/integer | 年龄(部分以区间字符串记录) | 057Y | 人口学分层 | 个别记录格式不一 | 空值=未知 | 成人 ≥18 |
| Sex | string | 性别 | M / F | 公平性分析 | 以临床表为准 | 空值=未知 | |
| TestingResult | string | SARS-CoV-2 检测结论 | Positive / Negative | 生物学金标准锚点 | RT-PCR 有假阴/假阳 | 无 | 集合内分组常量 |
| SpecimenSource | string | 检测标本来源 | Nasopharyngeal… | 检测质量分析 | 自由文本 | 无 | 见临床表 |
| Symptomatic(仅 1B) | boolean | 阴性对照是否有症状 | True/False | 构建「非新冠疾病」对照组 | 仅 1B 提供 | 缺失=未记录 | |
| classification(1C) | category | 检查级四级分类 | Typical Appearance | 多分类主任务 | 检查级标签,多图检查需广播 | 无 | |
| severity(1C) | category | 6 肺区严重度分级 | Moderate(3-4 区) | 有序回归/重症代理 | 阴性肺炎时无分级 | 无(未分级=无肺炎) | |
| segmentation(1A) | polygon JSON | 感染性/非感染性病灶逐片轮廓 | 感染性磨玻璃影多边形 | 分割监督 | 仅 >1 cm 病灶;仅轴位 | 无 | 逐标注异构 |
§4.2 标签体系与取值空间
| 标签组 | 层级 | 取值 | 适用子集 |
|---|---|---|---|
| 检查级 COVID 表现分类 | 检查 | Typical / Indeterminate / Atypical / Negative for Pneumonia | 1C(另覆盖 1A 检查级诊断标签) |
| 肺区严重度 | 检查 | Mild(1-2 区)/ Moderate(3-4 区)/ Severe(>4 区);双肺按 6 区划分 | 1C(非「无肺炎」时必填) |
| 图像级病灶标签 | 切片 | 感染性磨玻璃影、感染性树芽征/微结节、感染性空洞、非感染性结节/肿块、肺不张、其他非感染性渗出 | 1A |
| 检查级伴随征象(25 项) | 检查 | Halo sign、反 Halo sign、网状影、支气管壁增厚、支气管扩张、胸腔积液、肺栓塞、淋巴结肿大等 | 1A |
| 操作/QA 标签 | 检查 | 含/不含 IV 对比;运动伪影、吸气不足、分辨率不足、肺野不全等 QA;气管插管、中心静脉置管、起搏器等支持装置 | 1A |
官方未发布各标签的频数分布表;四类/三级的具体分布需从标注 JSON 解析后自行统计(见 §6.1 代码),这也意味着任何声称「按官方划分」的论文都值得复核。
§4.3 关键统计
| 统计维度 | 1A | 1B | 1C | 说明 |
|---|---|---|---|---|
| 每检查平均切片/图像数 | 265.5(31,856/120) | 176.8(21,220/120) | 1.26(1,257/998) | CT 连续切片冗余极高;胸片多为单图 |
| 人均检查数 | 1.09(120/110) | 1.03(120/117) | 2.76(998/361) | 1C 患者内泄漏风险最高 |
| 序列/检查比 | 1.91(229/120) | 1.00(120/120) | 1.24(1,241/998) | 1A 多序列(定位片+轴位) |
| 模态构成 | 纯 CT(轴位) | 纯 CT | CR + DX 混合 | 预处理需分别适配 |
| 标注密度 | 像素级(仅 >1 cm 病灶) | 无标注 | 检查级(四级+三级) | 见 §4.2 |
§4.4 数据层级
患者 Patient(588)
└── 检查 Study(1,238:120+120+998) ← 1C 的分类/分级标签挂在此层
└── 序列 Series(1,590:229+120+1,241)
└── 图像 Image/Slice(54,333) ← 1A 的图像级标签与分割挂在此层
§4.5 缺失值与信息性缺失
| 情形 | 表现 | 处理建议 |
|---|---|---|
| 1C 严重度未分级 | 检查被标为 Negative for Pneumonia | 属信息性缺失(无肺炎故无分级),二分类/分级任务中映射为 0 级 |
| 1B Symptomatic 缺失 | 个别临床表记录为空 | 视为「未记录」而非「无症状」 |
| 年龄区间字符串 | 如 057Y 形式 | 解析时统一转数值;缺失行直接剔除并记录数量 |
| 标注 JSON 与影像不同步 | JSON 残留已移除检查 | join 前按影像实际 UID 过滤(坑点 1) |
| 检查描述自由文本 | Exam Description 拼写/缩写不一 | 不要作为特征直接使用;需要时映射 RadLex Playbook |
§5 数据划分与使用建议
§5.1 官方划分
RICORD 不提供官方训练/验证/测试划分。三个集合按「模态 × 感染状态」切分(1A 阳性 CT、1B 阴性 CT、1C 阳性胸片),属于资源型数据集而非竞赛型数据集。任何文献中的性能数字都应先确认其划分方式再解读。
§5.2 社区惯例划分
- 外部验证用途(最常见):模型在他处训练,把 RICORD 全量或其子集作为独立测试集;1C 常与 RSNA Pneumonia Challenge 胸片合并构造「新冠 vs 非新冠/正常」三分类(QIMS 2022 的做法:8 折交叉验证 + 内部测试 + 香港外部测试)。
- CT 二分类:1A 阳性 + 1B 阴性,按患者 8:2 划分;常用 GroupShuffleSplit 或分层采样。
- 重症代理任务:将 1C 严重度 >4 区映射为 ICU/重症正类(Diagnostics 2025 的 417 张子集方案)。
患者级 5 折分组交叉验证的参考实现(与 §6.4 的 Dataset 配合使用):
# 依赖:pip install scikit-learn pandas numpy
import numpy as np
from sklearn.model_selection import GroupKFold
def grouped_folds(df, n_splits=5, seed=42):
"""患者级 GroupKFold:同一患者的所有检查只出现在同一侧。
df 需含列:StudyInstanceUID、patient、label。返回 (train_df, val_df) 生成器。"""
df = df.sample(frac=1.0, random_state=seed).reset_index(drop=True)
gkf = GroupKFold(n_splits=n_splits)
for tr_idx, va_idx in gkf.split(df, groups=df["patient"]):
yield df.iloc[tr_idx], df.iloc[va_idx]
def assert_no_leakage(train_df, val_df):
"""泄漏断言:写入 CI,任何划分失败立即终止实验。"""
overlap = set(train_df["patient"]) & set(val_df["patient"])
assert not overlap, f"患者级泄漏:{len(overlap)} 例同时出现在两侧"
for fold, (tr, va) in enumerate(grouped_folds(df)):
assert_no_leakage(tr, va)
print(f"fold {fold}: train {tr['patient'].nunique()} 例 / val {va['patient'].nunique()} 例")
§5.3 泄漏风险(重点)
- 患者内泄漏:1C 的 361 例患者贡献 998 项检查(人均 2.8 次),同一患者的系列胸片高度相似;按「检查」随机划分会把同一患者的检查同时放进训练与测试集,AUC 虚高。必须按 PatientID 分组划分。
- 序列内冗余:1A 每检查平均 265 张连续切片,相邻切片几乎相同;逐切片随机划分等价于把测试集拷贝进训练集。3D 模型按检查划分,2.5D 模型按患者划分。
- 站点泄漏:四个站点的设备与协议差异明显;若训练与测试集站点重叠,模型可能学到「站点指纹」。建议做留一站点(L1O)交叉验证估计跨域下限。
- 外部补充集的域偏移:用 RSNA Pneumonia Challenge(1992-2015 年 NIH 数据)补阴性时,时代与设备与 2020 年的新冠胸片完全不同——模型极易按「图像风格」而非病理分类(坑点 7)。
§5.4 交叉验证建议
小样本下推荐 5 折患者级分组交叉验证(GroupKFold, groups=PatientID),每折内再做站点分层;报告跨折均值 ± 标准差而非单折最优。分割任务(1A)推荐按检查分组做 5 折,并用 Dice + 表面距离(HD95)双指标。
§5.5 外部验证建议
优先顺序:BIMCV-COVID19(含 EHR 变量、欧洲人群)→ STOIC 2021 CT(法国,竞赛数据需遵守其协议)→ COVID-19-AR(小规模快评)→ 自建院内队列。MIDRC 平台内的 SBU、PETAL RED CORAL、N3C-MIDRC 子集(1,384 / 1,480 / 3,000 例)可经注册后获取,用于更大规模的跨域验证(PMC 2023 综述)。
§6 AI 就绪指南
§6.0 云端快速启动
- MIDRC Data Commons(data.midrc.org):注册后在 Exploration 工具中按模态/检测结果/采集年份构建队列,GraphQL 查询导出,或在 Jupyter Workspace 直接挂载分析;官方示例见 MIDRC/tutorial_notebooks。
- NCI Imaging Data Commons(IDC):RICORD 三集合镜像于 IDC,适合在 Google Colab/云存储上按 DICOM 实例流式取数,免整库下载。
- TCIA 页面直下:三个集合的标注 JSON 与临床表无需任何工具,浏览器直接下载(合计 <16 MB),适合先做数据探索再决定是否拉全量影像。
MIDRC 平台侧的最小可用路径(注册后):
1. 访问 data.midrc.org 并注册账号(学术邮箱即可)
2. 进入 Exploration 工具 → 按筛选条件构建队列:
collection = MIDRC-RICORD-1C · Modality = CR/DX · 检测结果 = Positive
3. 导出两种形态之一:
a) 案例清单(CSV,含 Study/Series UID 与临床变量)→ 回 TCIA/IDC 拉影像
b) 在 Jupyter Workspace 内用官方 GraphQL 客户端直接拉取(见 tutorial_notebooks)
4. 需要影像-临床联合队列时,可在平台内直接 join 放射报告(14,215 份)与
临床变量,避免本地重建索引
提示:MIDRC 平台的数据模型与查询字段以官方 Data Dictionary(GitHub 仓库 midrc_dictionary)为准;本节仅描述工作流,不复制字段清单。
§6.1 快速上手
以下代码演示最小可用子集(1C:998 张胸片 + 2.34 MB 标注)的加载。目录结构预期与 data_root 拼接关系见 §4.0:影像在 data_root/MIDRC-RICORD-1C/**/1-*.dcm,标注与临床表平级放在 data_root/ 下。
# 环境依赖:pip install pydicom pandas
import json
from pathlib import Path
import pandas as pd
import pydicom
data_root = Path("data_root") # ← 改为你的下载根目录
json_path = data_root / "ricord_1c_annotations.json"
# MD.ai JSON 顶层为 {"studies": [...]};检查级标签挂在 study 节点的 annotations。
# 字段命名以 docs.md.ai 文档为准,此处解析骨架覆盖常见情形。
with open(json_path, encoding="utf-8") as f:
doc = json.load(f)
rows = []
for study in doc.get("studies", []):
for ann in study.get("annotations", []):
rows.append({
"StudyInstanceUID": study.get("studyInstanceUid"),
"labelName": ann.get("labelName"), # 四级分类与 6 肺区分级混在同一层
})
labels = pd.DataFrame(rows)
print(labels["labelName"].value_counts()) # 官方未发布分布,先自己数一遍
# 读取一张 DICOM:胸片集合里 1-1.dcm 即整幅图像
sample = next(data_root.rglob("1-1.dcm"))
dcm = pydicom.dcmread(sample)
print(dcm.Modality, dcm.pixel_array.shape) # 期望 DX 或 CR,1024 级分辨率
§6.2 数据获取
| 集合 | 内容 | 影像 | 标注/临床 | 获取方式 |
|---|---|---|---|---|
| 1A | 110 例 / 120 项 CT+ | 11.68 GB DICOM | JSON 13.62 MB + CSV 24.15 kB | NBIA 下载影像;JSON/CSV 页面直下 |
| 1B | 117 例 / 120 项 CT− | 8.67 GB DICOM | XLSX 25.39 kB | NBIA 下载影像;XLSX 页面直下 |
| 1C | 361 例 / 998 项 CXR+ | 12.27 GB DICOM | JSON 2.34 MB + CSV 88 kB | NBIA 下载影像;JSON/CSV 页面直下 |
# 1) 安装 NBIA Data Retriever(Windows .msi / macOS App Store / Linux .deb 或 .rpm)
# Linux(Ubuntu)示例:
sudo dpkg -i nbia-data-retriever-4.4.1.deb
# 2) 在 TCIA 集合页点击 Download,浏览器得到 manifest-xxxx.tcia 清单文件
# 3) 用 Data Retriever 打开清单开始下载(GUI 双击清单文件亦可):
nbia-data-retriever manifest-xxxx.tcia
# 4) 建议:File > Checksum Verification 开启逐文件校验;
# 中断后重启时选择 Download missing series 只补缺失序列(选 Download all 会整目录覆盖)
申请流程零门槛:TCIA 页面公开直下,无需注册、无需 DUA;但下载数据即视为接受 TCIA Data Usage Policy(数据引用强制)。MIDRC 平台侧(Gen3)则需注册账号后访问。
§6.3 预处理全流程
格式转换 → 清洗 → 标准化 → 增强四步。CT 先转 HU 并做肺窗;胸片做反片归一化;MD.ai JSON 建议转成标准 DICOM-SEG 或 NIfTI 后再进训练框架。
# 依赖:pip install pydicom numpy
import numpy as np
import pydicom
def load_ct_slice(path, window=(-1000, 200)):
"""读 CT 切片 → HU → 肺窗窗宽窗位 → 归一化 [0,1]。
(-1000, 200) 为常用肺窗;评估纵隔结构可换 (50, 350)。"""
ds = pydicom.dcmread(path)
hu = ds.pixel_array.astype(np.float32) * float(getattr(ds, "RescaleSlope", 1)) \
+ float(getattr(ds, "RescaleIntercept", -1024))
lo, hi = window
return (np.clip(hu, lo, hi) - lo) / (hi - lo)
def load_cxr(path):
"""读胸片 → 反片统一(MONOCHROME1 → 正片)→ 归一化 [0,1]。"""
ds = pydicom.dcmread(path)
px = ds.pixel_array.astype(np.float32)
if str(ds.get("PhotometricInterpretation", "")) == "MONOCHROME1":
px = px.max() - px # 反片转正片(黑=低值)
return (px - px.min()) / (px.max() - px.min() + 1e-8)
MD.ai JSON 轮廓转掩膜的骨架实现(生产环境建议直接用官方转换链):
# 依赖:pip install pydicom numpy opencv-python-headless
import cv2
def render_mask(dcm_path, annotations, keep_labels=None):
"""把 1A 标注 JSON 中某张切片的多边形轮廓渲染成二值掩膜。
注意:MD.ai JSON 的字段命名以 docs.md.ai 为准,此处为解析骨架。"""
ds = pydicom.dcmread(dcm_path)
mask = np.zeros(ds.pixel_array.shape[:2], np.uint8)
for ann in annotations:
if str(ann.get("type", "")) != "segmentation":
continue
if keep_labels and ann.get("labelName") not in keep_labels:
continue
for poly in ann.get("data", []):
pts = np.array([[p["x"], p["y"]] for p in poly], np.int32)
cv2.fillPoly(mask, [pts], 1)
return mask
# 官方推荐转换链:QIICR/dcmqi 的 mdai2dcm.py(分支 add-mdai-converter)
# 将 MD.ai JSON 转为标准 DICOM-SEG,之后可用任何 DICOM-SEG 读取器进入 nnU-Net/ITK 生态
git clone -b add-mdai-converter https://github.com/QIICR/dcmqi
# 具体调用参数见仓库 README 与脚本头部注释:
# https://github.com/QIICR/dcmqi/blob/add-mdai-converter/util/mdai2dcm.py
清洗要点:1C 的 JSON 在 join 前先按影像实际 Study/Series UID 过滤(坑点 1);1A 只保留轴位序列目录(集合本身已限轴位,但站点目录可能含定位片);1C 的 CR/DX 统一反片与尺寸(如 1024×1024 等比缩放)。标准化:CT 用固定肺窗而非逐图 min-max;胸片用亮度归一化 + 可选 CLAHE。
常用窗宽窗位速查(CT 任务按目标结构选择,切勿逐图自适应):
| 目标结构 | 窗宽/窗位(WW/WL → HU 范围) | 用途 |
|---|---|---|
| 肺窗 | W 1200 / L -600(等价约 -1000~200) | GGO、实变、树芽征(本数据集主任务) |
| 纵隔窗 | W 350 / L 50 | 淋巴结、胸腔积液、血管结构 |
| 骨窗 | W 2000 / L 400 | 骨破坏、辅助定位(一般不用于本数据集任务) |
进阶:把 1A 转成 NIfTI 后可直接接入 nnU-Net。推荐路径是先经 dcmqi 转 DICOM-SEG(掩膜侧),影像侧用 dcm2niix 批量转换,再以 StudyInstanceUID 为键把影像与 SEG 配对;配对脚本输出一张「UID → NIfTI 路径 → SEG 路径」索引表,供 DataLoader 直接消费。
§6.4 PyTorch DataLoader 完整示例
以 1C 四级分类为例(患者级划分 + 类别不均衡采样):
# 依赖:pip install torch torchvision pandas pydicom scikit-learn
import numpy as np
import pandas as pd
import pydicom
import torch
from pathlib import Path
from PIL import Image
from sklearn.model_selection import GroupShuffleSplit
from torch.utils.data import DataLoader, Dataset, WeightedRandomSampler
from torchvision import transforms
class RicordCxrDataset(Dataset):
"""MIDRC-RICORD-1C 检查级分类数据集。
输入 df 需含列:StudyInstanceUID、patient(分组用)、label(四级之一)。
data_root 指向 NBIA 下载的 MIDRC-RICORD-1C 根目录。
"""
def __init__(self, df, data_root, transform=None):
self.df = df.reset_index(drop=True)
self.transform = transform
self.classes = sorted(df["label"].unique())
self.class_to_idx = {c: i for i, c in enumerate(self.classes)}
# 一次性建立 Study UID → 文件列表 索引(正式项目建议缓存到本地 parquet)
self.by_study = {}
for f in Path(data_root).rglob("*.dcm"):
uid = str(pydicom.dcmread(f, stop_before_pixels=True).StudyInstanceUID)
self.by_study.setdefault(uid, []).append(f)
def __len__(self):
return len(self.df)
def __getitem__(self, idx):
row = self.df.iloc[idx]
arr = load_cxr(self.by_study[row.StudyInstanceUID][0]) # 多图检查取首图
img = Image.fromarray((arr * 255).astype(np.uint8)).convert("RGB")
if self.transform:
img = self.transform(img)
return img, self.class_to_idx[row.label]
tfm = transforms.Compose([
transforms.Resize((224, 224)),
transforms.RandomHorizontalFlip(p=0.5),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
# df 构造:labels 见 §6.1;patient 列由临床 CSV 或 DICOM 目录路径解析
df = pd.read_csv("ricord_1c_index.csv") # StudyInstanceUID, patient, label
gss = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
tr_idx, va_idx = next(gss.split(df, groups=df["patient"])) # 患者级划分,防泄漏
train_df, val_df = df.iloc[tr_idx], df.iloc[va_idx]
train_ds = RicordCxrDataset(train_df, "data_root", transform=tfm)
val_ds = RicordCxrDataset(val_df, "data_root",
transform=transforms.Compose([
transforms.Resize((224, 224)), transforms.ToTensor()]))
# 类别不均衡 → 按类频反加权采样
counts = train_df["label"].value_counts().to_dict()
weights = train_df["label"].map(lambda c: 1.0 / counts[c]).tolist()
sampler = WeightedRandomSampler(weights, num_samples=len(weights), replacement=True)
train_loader = DataLoader(train_ds, batch_size=16, sampler=sampler,
num_workers=4, pin_memory=True)
val_loader = DataLoader(val_ds, batch_size=16, shuffle=False,
num_workers=4, pin_memory=True)
import torchvision.models as tvm
model = tvm.densenet121(weights=tvm.DenseNet121_Weights.IMAGENET1K_V1)
model.classifier = torch.nn.Linear(model.classifier.in_features, len(train_ds.classes))
# 训练循环(小样本配方:AdamW + 余弦退火 + 早停)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
optimizer = torch.optim.AdamW(model.parameters(), lr=3e-4, weight_decay=1e-4)
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=30)
criterion = torch.nn.CrossEntropyLoss()
best_auc, patience = 0.0, 0
for epoch in range(30):
model.train()
for x, y in train_loader:
x, y = x.to(device), y.to(device)
optimizer.zero_grad()
loss = criterion(model(x), y)
loss.backward()
optimizer.step()
scheduler.step()
# 验证:以 AUC 选模型(多分类取宏平均 OVR AUC)
from sklearn.metrics import roc_auc_score
model.eval()
ys, ps = [], []
with torch.no_grad():
for x, y in val_loader:
prob = torch.softmax(model(x.to(device)), dim=1).cpu().numpy()
ps += prob.tolist()
ys += y.tolist()
auc = roc_auc_score(ys, np.array(ps), multi_class="ovr", average="macro")
if auc > best_auc:
best_auc, patience = auc, 0
torch.save(model.state_dict(), f"best_fold.pt") # 保存最优权重
else:
patience += 1
if patience >= 5:
print(f"早停于 epoch {epoch},最佳宏平均 AUC={best_auc:.4f}")
break
§6.5 坑点清单(8 个真实失败模式)
⚠️ 坑点 1:标注 JSON 残留已移除的检查(分类:标签理解)
问题:论文口径 1C 为 1,000 张胸片,正式发布为 998 项——有 2 项检查在数据集定稿时被移除,但标注 JSON 中仍保留对它们的引用,且 TCIA wiki 明确列出了这两个 Study UID。
症状:直接用 JSON 全量 join 影像后,一部分标签找不到影像、或对 UID 做「左连接」后产生 NaN 行;统计标签分布时比官方口径多出「幽灵检查」。
解决:
- 简单方法:join 后立刻断言
labels.StudyInstanceUID ⊆ 实际影像 UID 集合,多出的行直接丢弃并打印清单。- 进阶方法:以 DICOM 侧 UID 为基准做内连接;在数据版本管理中记录被剔除 UID(官方 wiki 已给出),保证复现。
- SOTA 方法:把 UID 白名单写成配置文件随代码入库,任何一次数据刷新都先跑 UID 一致性校验脚本。
参考:TCIA RICORD-1C wiki 页
⚠️ 坑点 2:MD.ai JSON 不是 DICOM-SEG,直接读会「有标签无掩膜」(分类:预处理陷阱)
问题:1A/1C 的标注以 MD.ai 平台的专有 JSON 发布,分割信息是逐切片多边形坐标,主流医学影像框架(ITK/nnU-Net/MONAI)无法直接读取。
症状:用常规 SEG 读取器报错或读不到掩膜;自己写解析时因字段命名理解错误得到空掩膜、或上下颠倒的掩膜。
解决:
- 简单方法:按 §6.3 的骨架代码用
cv2.fillPoly自行渲染掩膜,注意与 DICOMpixel_array的行列顺序对齐。- 进阶方法:用官方推荐的 QIICR/dcmqi
mdai2dcm.py(add-mdai-converter 分支)把 JSON 转成标准 DICOM-SEG,再进 MONAI/nnU-Net 生态。- SOTA 方法:转换后立即做「掩膜叠加原片可视化」抽查 20 例,确认轮廓与磨玻璃影肉眼对齐后再批量转换。
参考:docs.md.ai JSON 文档;dcmqi 转换脚本
⚠️ 坑点 3:患者级泄漏——人均 2.8 次检查的 1C(分类:数据泄漏)
问题:1C 的 361 例患者贡献了 998 项检查,同一患者的多次床旁随访胸片高度相似;按检查随机划分会让「同一患者的 yesterday 片」出现在训练集、today 片出现在测试集。
症状:测试 AUC 异常漂亮(常见虚高 0.05-0.15);换到真正的外部数据(如香港队列)性能跳水。
解决:
- 简单方法:
GroupShuffleSplit(groups=PatientID)或 GroupKFold,划分粒度永远是患者。- 进阶方法:在 §6.4 的 DataLoader 中断言 train/val 的患者集合交集为空,并把该断言写进 CI。
- SOTA 方法:直接采用「留一站点」评估报告跨域性能,把患者级划分作为域内基线同时呈现。
参考:QIMS 2022 的 8 折 + 外部验证设计
⚠️ 坑点 4:NBIA 断点续传的两难选择(分类:工程陷阱)
问题:NBIA Data Retriever 中断后重启会问「只下缺失序列」还是「按清单全部重下(覆盖)」;选错会导致目录混入半新半旧的序列,或已下好的 11.68 GB 被清空重来。未开启 Checksum 时仅按文件大小粗校验。
症状:序列目录下切片计数与元数据对不上;训练时 pydicom 读到截断文件抛InvalidDicomError。
解决:
- 简单方法:每次续传选 Download missing series;下载完成后用清单核对每序列文件数。
- 进阶方法:开启 File > Checksum Verification;下载后用脚本遍历统计「Patient/Study/Series 数 = 110/120/229(1A)」等锚点数字再入库。
- SOTA 方法:把 TCIA 清单转成 manifest 校验脚本进流水线,任何文件缺失/截断在下载数据接入层就被拦截。
参考:NCI Wiki:Downloading NBIA Images
⚠️ 坑点 5:1A 的两个「only」——仅轴位、仅大于 1 cm(分类:标签理解)
问题:官方协议明确 1A 仅收录轴位序列,且只有大于 1 cm 的渗出与结节才被勾画;分割标签的「空白」不等于「无病灶」。
症状:把未标注区域当负样本训练分割器后,小病灶敏感度异常低;用非轴位重建序列对齐标签时坐标全错。
解决:
- 简单方法:训练与评估都只用被标注过的序列;把「<1 cm 病灶未标注」写进模型卡的限制声明。
- 进阶方法:分割损失中把「未标注区域」设为 ignore index 而非背景类。
- SOTA 方法:用部分监督/弱标注分割框架(如 Co-learning)显式建模「未标注≠阴性」。
参考:Tsai et al., Radiology 2021 标注章节
⚠️ 坑点 6:CR/DX 与 PA/AP/床旁混杂(分类:偏倚陷阱)
问题:1C 混合 CR 与 DX 两种模态、PA/AP 与床旁多种投照;床旁片视野裁切、曝光与体位差异巨大,模型很容易把「采集条件」学成「疾病证据」。
症状:在 1C 内部交叉验证表现良好,外部集(统一投照的门诊片)性能骤降;Grad-CAM 高亮区域落在影像边缘/文字区。
解决:
- 简单方法:预处理统一反片、等比缩放居中裁切,去掉影像边框与侧标。
- 进阶方法:把 Modality/投照类型作为分层变量做分组评估,报告分层 AUC 而非只报总体。
- SOTA 方法:训练时按站点/投照做域对抗或混合范式(如 CORAL),或至少做 L1O 站点评估。
参考:QIMS 2022 对 1C 投照类型的描述
⚠️ 坑点 7:拿「COVID 阳性中的无肺炎片」当健康对照(分类:偏倚陷阱)
问题:1C 全部为新冠阳性患者,其中一部分检查被标为 Negative for Pneumonia(无肺部渗出)。这些片子是「新冠感染但影像阴性」,不是健康人胸片;1B 的阴性对照也「非新冠但可能有其他疾病」(含 Symptomatic 变量)。
症状:构造「正常 vs 肺炎」二分类后 AUC 虚高——模型学到的是采集场景而非病理;文献复现时数字对不上。
解决:
- 简单方法:二分类任务的正/负定义写清楚:影像级表现(四级标签)与感染状态(RT-PCR)是两个不同的标签体系。
- 进阶方法:阴性对照优先用 1B(同为 2020 年 CT 协议),胸片阴性用 RSNA Pneumonia Challenge 的 normal 类并做域偏移评估。
- SOTA 方法:三分类设计「新冠典型 / 不确定+不典型 / 无肺炎」并报告混淆矩阵,让标签体系的边界显式化。
参考:TCIA 1C 标注 schema
⚠️ 坑点 8:CC BY-NC 4.0 的商业边界(分类:工程陷阱)
问题:三个集合统一采用 CC BY-NC 4.0——署名 + 非商业。这意味着不仅数据本身不能进商业产品,用它训练/微调的模型权重在商用时也可能触及许可边界;同时 TCIA 要求任何分发附带数据 DOI 引用。
症状:法务审查时发现模型管线含 NC 数据来源而无法商用;论文/产品未注明数据 DOI 被要求整改。
解决:
- 简单方法:商用模型只用 NC 数据做内部评测(外部验证),训练集改用可商用许可的数据。
- 进阶方法:在模型卡与数据声明中明确列出 NC 数据的使用环节(训练/验证/测试),并保留数据 DOI 引用。
- SOTA 方法:建立数据许可台账(license ledger),把每个权重/制品的数据来源与许可自动写入模型卡。
参考:TCIA Data Usage Policy 与各集合 License 列
§6.6 数据增强
| 类别 | 操作 | 说明 |
|---|---|---|
| ✅ 安全 | 小角度旋转(±10°)、平移(≤5%)、缩放(0.9-1.1)、轻度对比度扰动、CLAHE | 模拟投照与曝光差异,不破坏病理形态 |
| ✅ 安全 | 水平翻转(胸片,带审慎) | 双侧渗出类任务通常可接受;侧别敏感任务(如单侧病灶定位)勿用 |
| ❌ 危险 | 垂直翻转、90°/180° 旋转 | 破坏解剖方向与重力分布(胸腔积液/床旁片) |
| ❌ 危险 | 强噪声、大幅弹性形变 | 模拟出的「伪 GGO/伪实变」会被模型当成疾病特征 |
| ❌ 危险 | CT 上做逐图 min-max 归一化后增强 | 破坏 HU 物理意义;应先窗宽窗位再增强 |
| ❌ 危险 | 按站点风格迁移合成数据 | 放大站点指纹,恰恰学错域差 |
可复制的增强配置(albumentations,1C 分类任务):
# 依赖:pip install albumentations opencv-python-headless
import cv2
import albumentations as A
train_tfm = A.Compose([
A.Rotate(limit=10, border_mode=cv2.BORDER_CONSTANT, p=0.5), # 小角度,保护解剖方向
A.Affine(scale=(0.9, 1.1), translate_percent=(0.0, 0.05), p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.1, contrast_limit=0.1, p=0.5),
A.CLAHE(clip_limit=2.0, p=0.3), # 模拟曝光差异的温和手段
])
# 注意:A.HorizontalFlip 未放入——1C 含侧别相关的判读线索与边缘文字,
# 若任务涉及单侧病灶请勿水平翻转;双侧渗出粗分类任务可自行实验决定。
val_tfm = A.Compose([]) # 验证侧不做增强
§6.7 模型推荐
| 任务 | 推荐架构 | 预训练起点 | 理由 |
|---|---|---|---|
| 1C 四级分类 | DenseNet121 / ResNet50(2D) | ImageNet 或 TorchXRayVision 胸片权重 | 998 张的小样本场景,强预训练是第一杠杆(社区基线常用,见 Diagnostics 2025) |
| 1A 分割 | 2.5D U-Net / nnU-Net | 医学分割预训练 | 建议先用 dcmqi 转 DICOM-SEG;2.5D 在 229 序列上比 3D 更稳 |
| 1A+1B CT 二分类 | 2.5D ResNet 或 3D ResNet-18 | ImageNet/医学 3D 权重 | 每检查约 265 张切片,2.5D 多实例聚合即可达到 3D 相当性能 |
| 严重度有序回归 | 分类头 + 有序损失(CORAL/CORN) | 同分类 | 三级有序标签用普通交叉熵浪费序信息 |
§6.8 硬件需求
| 任务 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 1C 分类/分级 | 单卡 8 GB(RTX 3060 级) | 单卡 16-24 GB | 数据仅 1,257 张,瓶颈在数据管线而非算力 |
| 1A 2.5D 分割 | 单卡 16 GB | 单卡 24-40 GB | 逐切片训练 8 GB 可跑;3D 训练需 24 GB+ |
| 1A+1B 3D 二分类 | 单卡 24 GB | 双卡 / A100 40 GB | 3D 体素显存开销大 |
| MIDRC 平台大队列 | — | 平台 Jupyter Workspace | 数据免下载,云端直接跑 |
§6.9 评估指标代码
# 依赖:pip install scikit-learn torch numpy
import numpy as np
import torch
from sklearn.metrics import (cohen_kappa_score, confusion_matrix, f1_score,
roc_auc_score)
@torch.no_grad()
def evaluate_binary(model, loader, device):
"""二分类:AUC / F1 / 灵敏度 / 特异度(正类概率取 softmax 第 1 列)。"""
model.eval()
ys, ps = [], []
for x, y in loader:
p = torch.softmax(model(x.to(device)), dim=1)[:, 1]
ys += y.tolist()
ps += p.cpu().tolist()
pred = (np.array(ps) > 0.5).astype(int)
tn, fp, fn, tp = confusion_matrix(ys, pred).ravel()
return {
"AUC": roc_auc_score(ys, ps),
"F1": f1_score(ys, pred),
"Sensitivity": tp / (tp + fn + 1e-8),
"Specificity": tn / (tn + fp + 1e-8),
}
def evaluate_severity(y_true, y_pred):
"""严重度分级:除精度外必须报告二次加权 kappa(序信息 + 类不均衡下更稳健)。"""
return {
"Accuracy": float(np.mean(np.asarray(y_true) == np.asarray(y_pred))),
"QuadraticWeightedKappa": cohen_kappa_score(y_true, y_pred, weights="quadratic"),
}
def evaluate_multiclass(y_true, prob, class_names):
"""四级分类(1C):宏平均指标 + 逐类 OVR AUC,输出混淆矩阵定位混淆对。"""
import pandas as pd
pred = np.asarray(prob).argmax(axis=1)
out = {
"MacroF1": f1_score(y_true, pred, average="macro"),
"MacroAUC": roc_auc_score(y_true, prob, multi_class="ovr", average="macro"),
"PerClassAUC": {
name: roc_auc_score((np.asarray(y_true) == i).astype(int), prob[:, i])
for i, name in enumerate(class_names)
},
"ConfusionMatrix": pd.crosstab(
pd.Series(y_true, name="true"), pd.Series(pred, name="pred")
).to_dict(),
}
return out
§6.10 MLOps 笔记
- 数据版本化:以三个 DOI(1A/1B/1C)为版本锚点,配合 UID 白名单清单(坑点 1)做接入校验;每次重下影像后跑集合级锚点统计(患者/检查/序列数)。
- 预处理缓存:把 DICOM 解码 + 窗宽窗位结果缓存为优化格式(NIfTI/PNG),训练吞吐可提升数倍;缓存键包含窗宽窗位参数,避免「缓存了错误窗」的静默错误。
- 分层监控:上线后按站点/模态/投照类型拆分监控指标;MIDRC 开源的 MIDRC-REACT(代表性探索工具)与 MIDRC_MELODY(子组级鲁棒性评估)可直接复用其思路。
- 许可合规进流水线:NC 数据产物打标(坑点 8),模型卡自动继承数据来源与许可信息。
- 复现包:论文/报告交付时附 UID 级划分清单——RICORD 无官方划分,划分即实验协议的一部分。
- 审计与回滚:数据接入层保留「下载日期 + 清单校验和 + 锚点统计」三元组日志;RICORD 这类有版本内修正史的数据集(1C 曾移除检查),任何一次数据刷新都应触发训练集重建与模型重评,而不是热替换文件。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 检测可得性偏倚 | 入选前提是有 RT-PCR 结果,检测资源紧张期阴性/轻症可能未被检测,人群分布被扭曲(官方限制声明明确承认) | 高 | 任务限定为影像表现建模,勿用于流行率推断 |
| 时相偏倚 | 全部采集于 2020 年 4 月至 2021 年初,对应早期毒株与早期诊疗模式 | 高 | 后期变异株/疫苗接种人群上需重新验证 |
| 站点/设备偏倚 | 四个学术中心、设备与协议不一;1C 内 CR/DX、PA/AP/床旁混杂 | 中 | L1O 站点评估;模态/投照分层报告 |
| 标签粒度偏倚 | 1C 为检查级多数票标签,无像素级胸片掩膜;1A 仅 >1 cm 病灶被勾画 | 中 | 分割任务只选 1A;胸片定位任务另寻数据 |
| 类构成偏倚 | 1A/1C 无阴性对照;1B 阴性「非新冠但可能患病」 | 中 | 按 §5.2 构造对照,明确标签体系 |
| 规模限制 | 588 例患者、1,238 项检查,对深度模型属小样本 | 中 | 强预训练、小模型、交叉验证、报告置信区间 |
§7.2 标注质量
标注流程(亚专科专家 + 共识 schema + 多数票)在同代公开数据集中属最高规格,且标注者数量、经验与 schema 出处全部公开可溯。但官方未发布逐例间一致性统计(如 Dice/κ),多数学票标签也无法给出单人置信度;使用者对高 stakes 评测应自建抽检复标流程。1A 标注的 QA 标签(运动伪影、吸气不足等)是少见的透明设计,可直接用于质量分层评估。
自建复标的可操作建议:从 1A 抽 20-30 个序列、1C 抽 50-80 项检查,由 1-2 名放射科医师按公开 schema 独立重标,然后计算三类一致性——分割用 Dice(对照 1A JSON 渲染掩膜)、分类用多数票吻合率、分级用线性加权 κ。若吻合率显著低于预期,优先怀疑两件事:标签层级理解错位(把图像级标签当检查级用)或 JSON join 错误(坑点 1/2),其次才是标注本身的问题。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨地域(亚洲外部医院) | 中:地域/人群变化,但骨抑制等预处理会显著改变结果 | Lam 等 2022 用香港 838 张胸片做外部测试,性能随预处理显著变化 |
| 跨时期(变异株/疫苗后) | 高:疾病谱与影像表现随时间演化 | 采集窗口 2020-04 至 2021 年初,官方限制声明 |
| 跨设备(基层便携机) | 高:床旁片域差大 | 1C 内即含床旁片,分层评估显示域差(§7.1) |
| 儿科(<18 岁) | 高:入选即排除未成年 | 患者选择标准 ≥18 岁 |
| 非新冠肺炎 | 中:1B 阴性组与其他病原肺炎分布不同 | 阴性对照定义见 TCIA 1B 页 |
§7.4 伦理与合规
数据为回顾性、去标识化后经多中心数据使用协议汇集:站点保留数据所有权、授予 RSNA 非排他公共许可;DICOM 匿名化流程统一,MRN 与检查日期伪匿名;TCIA 与 NCI 提供托管审核。三个集合均为 CC BY-NC 4.0,研究/教育用途免申请,商业用途被排除;引用数据 DOI 是硬性要求。无涉及儿童的样本;无知情同意再接触路径(数据已是不可逆去标识化状态)。
工程侧的三条落地建议:其一,任何衍生数据集(掩膜、缓存 PNG、特征向量)再分发时须继承 CC BY-NC 4.0 并附原 DOI,不要在分享时「洗掉」许可;其二,伪匿名 MRN 在论文与演示中应以占位形式呈现,避免把目录路径原样截图公开;其三,若把 RICORD 与其他数据集混合训练,产出模型的许可义务按最严格来源(本数据集 NC)认定,建议在项目启动时由法务确认一次边界。MIDRC 生态中的 Stanford_Penn_MIDRC_Deidentifier 是可复用的生产级去标识化参考实现,自建库时可对照其流程设计。
§7.5 公平性
年龄与性别逐例可得但集合层面未发布分布统计;种族/族裔变量未随集合发布,无法做细分公平性审计——这本身是公开新冠影像数据的普遍短板。缓解路径:用 MIDRC 平台的代表性工具(MIDRC-REACT,含 Jensen-Shannon 距离等人群代表性度量,Scientific Data 2025 中展示了其与 CDC 人群分布的对比方法)在更大平台上评估子群覆盖,再决定 RICORD 子集的适用边界。
§7.6 数据漂移
时间是该数据集最大的漂移轴:毒株更替、疫苗接种、诊疗常规变化都会改变影像-疾病映射。数据侧漂移还包括 1C 发布后移除 2 项检查(坑点 1)这类「版本内修正」。建议在一切纵向使用中记录数据 DOI 版本与下载日期;在模型监控中把「采集年份/毒株时期」作为外生变量跟踪性能衰减。
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式数据 | ✅ | 临床 CSV/XLSX 一行一检查,可直接读入 pandas |
| 2 | 唯一标识符 | ✅ | Patient/Study/Series/SOP 四级 DICOM UID 完整 |
| 3 | 特殊字符处理 | ⚠️ | Exam Description 等自由文本拼写/缩写不一,需清洗 |
| 4 | 重复行检查 | ✅ | UID 体系天然去重;NBIA 命名保证序列内有序 |
| 5 | 缺失值编码 | ⚠️ | 空值语义需自查(如 Symptomatic 空为未记录) |
| 6 | 标签标识清晰 | ✅ | 四层标签体系(分割/图像级/检查级/操作)文档化 |
| 7 | 罕见类分组 | ⚠️ | 25 项检查级伴随征象多数为稀有类,分布未发布 |
| 8 | 偏倚评估 | ✅ | 官方限制声明(RT-PCR 假阴/假阳、入选扭曲)直接可引 |
| 9 | 数据字典 | ✅ | TCIA 集合页 + MIDRC Data Dictionary(GitHub) |
| 10 | 信息性缺失解释 | ⚠️ | 「无肺炎故无分级」等语义需使用者自行理解 |
| 11 | 设备信息记录 | ⚠️ | DICOM 头逐例保留但未做集合级设备统计 |
| 12 | 共线性风险 | ✅ | 表格变量少、维度低,无共线性结构问题 |
| 13 | 编码映射 | ✅ | MIDRC 用 LOINC Playbook 标准化检查描述 |
| 14 | 时间戳处理 | ⚠️ | 检查日期伪匿名化,纵向时序分析精度受限 |
| 15 | 划分建议 | ✅ | 官方未划分,但 §5.2-5.3 社区协议与泄漏风险已充分讨论 |
| 16 | 泄漏讨论 | ✅ | 人均 2.8 检查的患者内泄漏是显性风险(§5.3) |
| 17 | 标签分布 | ⚠️ | 官方未发布标签频数表,需自行解析 JSON 统计 |
| 18 | 测量偏倚 | ✅ | 1A 附测量类标注(病灶测量),标注协议透明 |
| 19 | 外部验证建议 | ✅ | 官方定位即外部验证集;IDC/BIMCV/STOIC 路径清晰 |
| 20 | 版本记录 | ✅ | 三集合独立 DOI + TCIA Versions 页签,修订可溯 |
| 21 | 预处理脚本 | ✅ | 官方提供 mdai2dcm 转换脚本与 MIDRC tutorial_notebooks |
| 22 | 合规要求 | ✅ | CC BY-NC 4.0 + TCIA 使用政策 + 引用要求明确 |
| 23 | 多模态对齐 | ⚠️ | 影像-JSON-临床表三源 join 需 UID 白名单校验(坑点 1/2) |
| 24 | 去标识化 | ✅ | 统一 DICOM 匿名化流程 + 伪匿名 MRN/日期 + TCIA 复核 |
DAIMS 评分:20.0 / 24
评分解读:16 项 ✅ 与 8 项 ⚠️、0 项 ❌ 的组合,反映了「学术共同体精工细作」的典型画像——标识体系、版本管理、合规与偏倚透明度都达到公开数据集的一流水准;扣分集中在「下游易用性」:标签分布需自算、自由文本需清洗、JSON 格式需转换、日期伪匿名化限制了纵向分析。没有 ❌ 项意味着没有阻断性缺陷,所有 ⚠️ 都有明确且低成本的工程解法。
对你意味着什么:第一,接入成本低——直接下载即可起步,标签转换有一条官方脚本路径(坑点 2),半天可完成;第二,防泄漏是你自己的责任——官方不给划分,患者级分组(坑点 3)必须写进代码与 CI;第三,做严肃评测前先自建两个校验——UID 一致性断言(坑点 1)与标签分布统计(§4.2),它们成本不足一天,却能挡住绝大多数复现事故;第四,若目标是商用,从第一天就按坑点 8 隔离 NC 数据的使用环节。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 香港两院 838 张胸片(320 阳性 / 518 阴性) | Queen Elizabeth Hospital 与 Pamela Youde Nethersole Eastern Hospital(香港) | 新冠二分类(1C + RSNA Challenge 训练) | AUC/灵敏度/特异度(按骨抑制前后比较) | 骨抑制使性能显著变化(P≤0.05,架构相关;Rajaraman 法在一个架构中显著提升) | 跨域泛化对预处理敏感,骨抑制可作为域适配手段(Lam et al., QIMS 2022) |
| 1C 重症分级 → ICU 代理 | 研究者自选 1C 子集(417 张:118 ICU/299 非 ICU) | ICU 入住二分类(迁移学习) | 以 6 肺区分级 >4 区为正类 | — | 严重度分级可作为 ICU 风险的影像代理,需肺分割 + CLAHE 预处理(Diagnostics 2025) |
仅收录有同行评审支撑的验证;RICORD 无官方排行榜,下列 §8.1 的研究性能数字不可直接横向比较。
§8 基准性能与生态
§8.1 代表性研究(无官方排行榜)
RICORD 不设官方排行榜。下表列出经同行评审、明确使用 RICORD 数据的代表性研究;各研究划分、预处理与任务定义不同,数值不可直接比较。
| 序 | 模型/方法 | 性能(原文口径) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | 骨抑制 + 双架构分类器(VGG16-Modified 等) | 外部测试集(320 阳性/518 阴性)上骨抑制显著改变性能;Rajaraman 骨抑制在一个架构中显著提升(P≤0.05) | 2022 | 骨抑制预处理 + 8 折交叉验证 + 外部验证 | Lam NF, Sun H, Song L, et al. Quantitative Imaging in Medicine and Surgery. 2022;12(7):3917-3931. DOI: 10.21037/qims-21-791 | 部分预训练模型发布于作者 GitHub(github.com/danielnflam) |
| 2 | 迁移学习 ICU 分类(DenseNet/ResNet 系列骨干) | 以 1C 重症分级代理 ICU 标签(118/299)完成二分类,与 SBU 队列对照 | 2025 | U-net 肺分割 + CLAHE + 少数类过采样 | Diagnostics. 2025;15(7):845(MDPI). https://www.mdpi.com/2075-4418/15/7/845 | 论文内给出预处理与划分细节 |
| 3 | MIDRC mRALE Mastermind 挑战赛参赛模型 | 2,079 张床旁胸片 mRALE 严重度回归/分级 | 2023 | 专家 mRALE 标注 + 挑战赛封闭评测 | MIDRC COVID19_Challenges 仓库(Challenge_2023_mRALE Mastermind). https://github.com/MIDRC/COVID19_Challenges | 官方仓库公开 |
§8.2 SOTA 总结与选型建议
RICORD 生态没有「一统天下」的 SOTA:它的历史角色是标尺与外部验证床,而非刷榜地。给实践者三条选型建议:其一,胸片任务优先复用 TorchXRayVision 类大规模预训练,再以 1C 精调,小样本下这是投入产出比最高的一步;其二,CT 分割任务直接进 nnU-Net 流程(先把 JSON 转 DICOM-SEG),不要自造训练轮子;其三,把「在 RICORD 上测过」作为模型卡的标准条目,用它的多站点 + 专家标注给自家模型背书。
§8.3 评测协议建议
| 协议要素 | 建议取值 | 理由 |
|---|---|---|
| 划分 | 患者级 GroupKFold 5 折(胸片);检查级 5 折(CT 分割) | 人均 2.8 检查、每检查约 265 切片的结构决定划分粒度 |
| 二分类指标 | AUC + 灵敏度 + 特异度 + F1 | 单报 AUC 会掩盖类不均衡下的召回塌陷 |
| 四级分类指标 | 宏平均 F1 + 混淆矩阵 + 逐类 AUC | Indeterminate/Atypical 类少且语义相邻,混淆矩阵必须公开 |
| 分级指标 | QWK + 逐级召回 | 有序标签用普通准确率会浪费序信息 |
| 分割指标 | Dice + HD95 | 仅 Dice 无法暴露边缘泄漏型错误 |
| 分层报告 | 按站点、CR/DX、PA/AP/床旁 | 域差即本数据集的核心泛化议题 |
| 必含基线 | ImageNet 预训练精调 + TorchXRayVision 零样本 | 区分「数据贡献」与「预训练贡献」 |
| 显著性 | 跨折均值 ± 标准差 | RICORD 规模下单折最优不可信 |
| 复现件 | UID 级划分清单 + 随机种子 | 无官方划分时,划分即协议 |
§8.4 相关数据集
| 数据集 | 规模 | 模态 | 获取 | 与 RICORD 的关系 |
|---|---|---|---|---|
| RSNA Pneumonia Detection Challenge | 上万张胸片 | CXR | Kaggle | 常用阴性/非新冠补充集(Lam 2022 即如此组合) |
| MIDRC 平台全库 | 202,222 项研究(截至 2026-09) | CT/DX/CR/MR | data.midrc.org 注册 | RICORD 的放大版母平台,含 SBU(1,384)、PETAL(1,480)、N3C(3,000)等子集 |
| BIMCV-COVID19 | 数千例检查 | CT + CXR | BIMCV(西班牙 CIPF) | 含 EHR/实验室/报告,跨域验证首选 |
| iCTCF | 1,500+ 例新冠患者 | CT | CNCB | 中国人群对照 |
| STOIC 2021 | 2,000+ 例 CT | CT | grand-challenge | 法国单国、竞赛协议 |
| COVID-19-AR | 105 项检查 | CT/CR/DX | TCIA | 小规模快速对照 |
§8.5 关键论文 Top 6
- Tsai EB, Simpson S, Lungren MP, et al. The RSNA International COVID-19 Open Annotated Radiology Database (RICORD). Radiology. 2021;299(1):E204-E213. DOI: 10.1148/radiol.2021203957 — 数据集方法论文:标注 schema、专家流程与集合构成的一手出处。
- Bai HX, Thomasian NM. RICORD: A Precedent for Open AI in COVID-19 Image Analytics. Radiology. 2021;299(1). DOI: 10.1148/radiol.2020204214 — 编辑评论:论述 RICORD 作为外部验证公共标尺的定位。
- Clark K, Vendt B, Smith K, et al. The Cancer Imaging Archive (TCIA): Maintaining and Operating a Public Information Repository. Journal of Digital Imaging. 2013;26(6):1045-1057. DOI: 10.1007/s10278-013-9622-7 — 托管基础设施论文,引用 RICORD 数据时建议同引。
- Multimodal data curation via interoperability: use cases with the Medical Imaging and Data Resource Center. Scientific Data. 2025. DOI: 10.1038/s41597-025-05678-2 — MIDRC 与 N3C/BioData Catalyst 互操作与人群代表性方法。
- Lam NF, Sun H, Song L, et al. Development and validation of bone-suppressed deep learning classification of COVID-19 presentation in chest radiographs. Quantitative Imaging in Medicine and Surgery. 2022;12(7):3917-3931. DOI: 10.21037/qims-21-791 — 以 1C 为训练源、含严格外部验证的代表作。
- Willemink MJ, Koszek WA, Hardell C, et al. Preparing Medical Imaging Data for Machine Learning. Radiology. 2020. DOI: 10.1148/radiol.2019192224 — 由 RICORD 核心作者撰写的医学影像 AI 数据准备方法论。
§8.6 社区活跃度
- 原始论文获 Scopus 收录被引 118+(截至 2026-09,Weill Cornell VIVO 记录),是新冠影像数据方向的锚点引用之一。
- MIDRC GitHub 组织维护 18 个仓库;官方教程 tutorial_notebooks 33 stars(截至 2026-09),脱敏工具 Stanford_Penn_MIDRC_Deidentifier 105 stars(截至 2026-09)。
- MIDRC 每月第三个周二举办公开研讨会(含 Q&A),并设邮件列表通报数据更新;TCIA 设 helpdesk(help@cancerimagingarchive.net)处理数据问题。
- 挑战赛生态:2023 年 mRALE Mastermind(2,079 张床旁胸片严重度标注)等持续在 MIDRC 数据上运行。
§8.7 生态快照
| 资源 | 类型 | 链接 | 热度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| MIDRC tutorial_notebooks | 官方教程 | https://github.com/MIDRC/tutorial_notebooks | 33 stars | GraphQL/Jupyter 访问 MIDRC 数据的标准范式 |
| Stanford_Penn_MIDRC_Deidentifier | 脱敏工具 | https://github.com/MIDRC | 105 stars | 生产级 DICOM 去标识化管线,可复用于自建库 |
| QIICR/dcmqi(mdai2dcm.py) | 转换工具 | https://github.com/QIICR/dcmqi | — | 官方指定的 MD.ai JSON → DICOM-SEG 转换链 |
| MIDRC Data Commons | 数据门户 | https://data.midrc.org | 202,222 项研究 | 队列构建、GraphQL 查询、云端 Jupyter |
| NCI Imaging Data Commons | 镜像平台 | https://imaging.datacommons.cancer.gov | — | RICORD 云端流式访问,免整库下载 |
| RSNA RICORD 资源页 | 官方文档 | https://www.rsna.org/covid-19/covid-19-ricord | — | 数据协议、贡献路径与更新公告的权威入口 |
§9 相关资源与引用
§9.1 官方资源索引
- 官方主页:RSNA RICORD(数据协议、贡献路径、更新公告)
- 下载页:TCIA 1A · TCIA 1B · TCIA 1C
- 平台入口:MIDRC Data Commons(队列构建/GraphQL/Jupyter)
- 标注汇总:MIDRC Annotations(专家标注与 Helper AI 机器标注索引)
- 标注 JSON 文档:docs.md.ai;转换脚本:dcmqi mdai2dcm.py
- NBIA 下载文档:NCI Wiki - Downloading NBIA Images
- 官方教程:MIDRC/tutorial_notebooks;挑战赛仓库:MIDRC/COVID19_Challenges
- 首发新闻稿:RSNA 宣布首个 MIDRC-RICORD 数据集发布(2020-12-18)
§9.2 BibTeX 完整引用
@article{tsai2021ricord,
title = {The RSNA International COVID-19 Open Annotated Radiology Database (RICORD)},
author = {Tsai, Emily B. and Simpson, Scott and Lungren, Matthew P. and Hershman, Michelle and Roshkovan, Leonid and Colak, Errol and Erickson, Bradley J. and Shih, George and Stein, Anouk and Kalpathy-Cramer, Jayashree and Shen, Jody and Hafez, Mona and John, Susan and Rajiah, Prabhakar and Pogatchnik, Brian P. and Mongan, John and Altinmakas, Emre and Ranschaert, Erik R. and Kitamura, Felipe C. and Topff, Laurens and Moy, Linda and Kanne, Jeffrey P. and Wu, Carol C.},
journal = {Radiology},
volume = {299},
number = {1},
pages = {E204--E213},
year = {2021},
doi = {10.1148/radiol.2021203957}
}
@data{tsai2020ricord1a,
title = {Medical Imaging Data Resource Center (MIDRC) - RSNA International COVID Radiology Database Release 1a - Chest CT Covid+ (MIDRC-RICORD-1A)},
author = {Tsai, E. and Simpson, S. and Lungren, M.P. and Hershman, M. and Roshkovan, L. and Colak, E. and Erickson, B.J. and Shih, G. and Stein, A. and Kalpathy-Cramer, J. and Shen, J. and Hafez, M.A.F. and John, S. and Rajiah, P. and Pogatchnik, B.P. and Mongan, J.T. and Altinmakas, E. and Ranschaert, E. and Kitamura, F.C. and Topff, L. and Moy, L. and Kanne, J.P. and Wu, C.},
year = {2020},
publisher = {The Cancer Imaging Archive},
doi = {10.7937/VTW4-X588}
}
@data{tsai2021ricord1b,
title = {Medical Imaging Data Resource Center (MIDRC) - RSNA International COVID-19 Open Radiology Database (RICORD) Release 1b - Chest CT Covid- (MIDRC-RICORD-1B)},
author = {Tsai, E. B. and Simpson, S. and Lungren, M. P. and Wu, C.},
year = {2021},
publisher = {The Cancer Imaging Archive},
doi = {10.7937/31V8-4A40}
}
@data{tsai2021ricord1c,
title = {Medical Imaging Data Resource Center (MIDRC) - RSNA International COVID Radiology Database (RICORD) Release 1c - Chest x-ray, Covid+ (MIDRC-RICORD-1C)},
author = {Tsai, E. and Simpson, S. and Lungren, M.P. and Wu, C.},
year = {2021},
publisher = {The Cancer Imaging Archive},
doi = {10.7937/91ah-v663}
}
@article{clark2013tcia,
title = {The Cancer Imaging Archive (TCIA): Maintaining and Operating a Public Information Repository},
author = {Clark, Kenneth and Vendt, Bruce and Smith, Kirk and Freymann, John and Kirby, Justin and Koppel, Paul and Moore, Stephen and Phillips, Stanley and Maffitt, David and Pringle, Michael and Tarbox, Lawrence and Prior, Fred},
journal = {Journal of Digital Imaging},
volume = {26},
number = {6},
pages = {1045--1057},
year = {2013},
doi = {10.1007/s10278-013-9622-7}
}
@article{bai2021ricord,
title = {RICORD: A Precedent for Open AI in COVID-19 Image Analytics},
author = {Bai, Harrison X. and Thomasian, Nicole M.},
journal = {Radiology},
volume = {299},
number = {1},
year = {2021},
doi = {10.1148/radiol.2020204214}
}
@article{lam2022bonesuppression,
title = {Development and validation of bone-suppressed deep learning classification of COVID-19 presentation in chest radiographs},
author = {Lam, Ngo Fung Daniel and Sun, Hongfei and Song, Liming and Yang, Dongrong and Zhi, Shaohua and Ren, Ge and Chou, Pak Hei and Wan, Shiu Bun Nelson and Wong, Man Fung Esther and Chan, King Kwong and Tsang, Hoi Ching Hailey and Kong, Feng-Ming (Spring) and Wang, Yi Xiang J. and Qin, Jing and Chan, Lawrence Wing Chi and Ying, Michael and Cai, Jing},
journal = {Quantitative Imaging in Medicine and Surgery},
volume = {12},
number = {7},
pages = {3917--3931},
year = {2022},
doi = {10.21037/qims-21-791}
}
@article{midrc2025interoperability,
title = {Multimodal data curation via interoperability: use cases with the Medical Imaging and Data Resource Center},
journal = {Scientific Data},
year = {2025},
doi = {10.1038/s41597-025-05678-2}
}
§9.3 引用指南
引用 RICORD 时请同时给出:方法论文(Tsai et al. 2021)+ 所用子集的数据 DOI(1A/1B/1C 之一)+ TCIA 基础设施论文(Clark et al. 2013)。若经 MIDRC 平台获取扩展队列,请按 MIDRC 致谢页 的要求署名。任何再分发(包括衍生掩膜)须保留 CC BY-NC 4.0 声明与原 DOI。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 用途 | 版本/说明 |
|---|---|---|
| 大语言模型(CodeBuddy Code 内置模型) | 本条目的初稿撰写、结构组织、代码示例起草 | 由千方病案医学编辑部在 2026-09 工作流中使用 |
§10.2 AI 参与范围
AI 负责资料汇总、章节起草与代码骨架生成;事实性内容(规模数字、日期、许可、标注协议、DOI)全部来自 §10.3 所列公开来源并逐条核对;医学映射表与临床任务定义由编辑部审核;8 个坑点全部取自官方文档、TCIA wiki 与同行评审文献中的真实失败模式,AI 仅做结构化改写。
§10.3 输入来源列表
- Tsai EB, et al. The RSNA International COVID-19 Open Annotated Radiology Database (RICORD). Radiology. 2021;299(1):E204-E213. DOI: 10.1148/radiol.2021203957
- TCIA 集合页 MIDRC-RICORD-1A:https://www.cancerimagingarchive.net/collection/midrc-ricord-1a/
- TCIA 集合页 MIDRC-RICORD-1B:https://stage.cancerimagingarchive.net?p=42799/(DOI 10.7937/31V8-4A40)
- TCIA 集合页 MIDRC-RICORD-1C 及 wiki 版本:http://wiki.cancerimagingarchive.net/plugins/viewsource/viewpagesrc.action?pageId=70230281
- RSNA 新闻稿:RSNA Announces Publication of First MIDRC-RICORD COVID-19 Data Set(2020-12-18)
- Bai HX, Thomasian NM. RICORD: A Precedent for Open AI in COVID-19 Image Analytics. Radiology. 2021. DOI: 10.1148/radiol.2020204214
- Weill Cornell VIVO 论文记录(Scopus 被引 118):https://vivo.med.cornell.edu/display/pubid33399506
- MIDRC Data Commons 首页统计:https://data.midrc.org/(截至 2026-09-08)
- MIDRC Annotations 页:http://www.midrc.org/annotations
- RSNA RICORD 官方页:https://www.rsna.org/covid-19/covid-19-ricord
- Lam NF, et al. Quantitative Imaging in Medicine and Surgery. 2022;12(7):3917-3931. DOI: 10.21037/qims-21-791
- Diagnostics. 2025;15(7):845. https://www.mdpi.com/2075-4418/15/7/845
- Multimodal data curation via interoperability. Scientific Data. 2025. DOI: 10.1038/s41597-025-05678-2
- Machine learning with multimodal data for COVID-19(MIDRC 规模口径 ~105,000 项研究):https://preview.ncbi.nlm.nih.gov/pmc/articles/PMC10362086/
- NCI Wiki: Downloading NBIA Images:https://wiki.nci.nih.gov/pages/viewpage.action?pageId=488308870
- re3data MIDRC 记录:http://www.re3data.org/repository/r3d100014283
- MIDRC GitHub 组织:https://github.com/MIDRC
- JMIRx Med 2025;3:e75015(数据集对比综述):https://xmed.jmir.org/2025/1/e75015
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 INFOBOX 规模数字/DOI | 千方病案医学编辑部 | 逐项对照 TCIA 集合页与 DOI 注册记录 | ✅ 已通过/已验证 |
| §2 医学背景与编码映射 | 千方病案医学编辑部 | 对照 ICD-11 MMS/SNOMED CT 惯用码及文献 | ✅ 已通过/已验证 |
| §4 数据字典与目录树 | 千方病案医学编辑部(数据工程) | 对照 TCIA 数据访问表与 NBIA 命名文档 | ✅ 已通过/已验证 |
| §6 代码示例 | 千方病案医学编辑部(数据工程) | 逻辑复核与 API 用法核对 | ✅ 已通过/已验证 |
| §6.5 坑点 8 项 | 千方病案医学编辑部 | 逐条回溯官方 wiki/论文出处 | ✅ 已通过/已验证 |
| §8 基准与生态信息 | 千方病案医学编辑部 | 对照原始论文与 GitHub 仓库元数据 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
本条目全部章节由 AI 辅助起草;其中 §1.0 速览、§1.2 战略价值、§2.5 临床价值、§6.10 MLOps 笔记、§8.2 选型建议为 AI 综合来源后的分析性写作,编辑部已按 §10.4 方式核校其事实底座;引用与数字部分(frontmatter、INFOBOX、§3、§7.7、§8.5、§9.2)为逐条核对后的结构化转录。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
