信息速览

COVIDx CXR — 全球最大开放新冠胸片基准 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | COVIDx CXR Dataset |
| 英文全称 | COVIDx Chest Radiography Dataset(COVID-Net Open Source Initiative) |
| 别名/简称 | COVIDx、COVIDx8B、COVIDx CXR-3 |
| 疾病分类 | ICD-11 1D07(COVID-19)、CA40(肺炎);正常图像无编码 |
| SNOMED CT | 840539006(COVID-19)、233604007(Pneumonia)、17621005(Normal) |
| 数据模态 | 胸部 X 光(CXR,PA/AP 位为主,灰度) |
| AI 任务类型 | 图像三分类(正常/非新冠肺炎/COVID-19)与二分类(阳性/阴性) |
| 样本总数 | CXR-3B 共 30,386 张(训练 29,986 + 测试 400);CXR-3A 训练 29,634 张 |
| 数据大小 | 约 3 万张 PNG/JPEG 灰度图像,分辨率多集中于 1,000×1,000 附近 |
| 数据格式 | PNG/JPEG 图像 + 空格分隔 TXT 标签文件(patientId 文件路径 类别) |
| 许可证 | AGPL-3.0(代码仓库);数据经 Kaggle 开放分发,继承各上游来源条款 |
| 访问级别 | 开放(Kaggle 账号即可下载) |
| DUO 标签 | GRU(通用研究使用) |
| 语言 | 影像数据为主,文档与标签文件为英文 |
| 首发日期 | 2020-03(arXiv:2003.09871 随 COVID-Net 首发) |
| 最后更新 | 2022-06-02(COVIDx CXR-3 清洗版) |
| 发布机构 | 滑铁卢大学 Vision and Image Processing 研究组 / DarwinAI Corp.(加拿大) |
| 官方主页 | https://github.com/lindawangg/COVID-Net |
| 下载地址 | https://www.kaggle.com/andyczhao/covidx-cxr2 |
| DOI | 10.1038/s41598-020-76550-z(配套论文);数据集本身无 DOI |
| 引用次数 | 3,700+(Google Scholar,截至 2025,为 Scientific Reports 2020-2024 最高被引论文) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方 patient-level 划分、标签文件与重建脚本齐备,但需自行实现加载、统一尺寸与版本对齐 |
| 页面状态 | published |
§0 E-E-A-T 审核与声明
医学审核:千方病案医学编辑部交叉审核:§2 医学背景(COVID-19 与肺炎的 ICD-11/SNOMED 映射、流行病学、临床任务与金标准)、§7 偏倚分析。
数据工程审核:千方病案医学编辑部交叉审核 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。COVIDx 代码仓库采用 AGPL-3.0,数据经 Kaggle 开放下载,但其上游来源(RSNA、TCIA RICORD、COVID-19 Radiography Database 等)各自保留许可条款,商用与再分发前需逐源核查。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? COVIDx CXR 是新冠疫情期间由加拿大滑铁卢大学与 DarwinAI 公司发起的 COVID-Net 开源计划配套建设的开放胸部 X 光(CXR)基准数据集。它把 8 个分散的开放影像来源整合成一套带统一标签、统一划分的基准:最新 COVIDx CXR-3 版本包含 30,386 张胸片、约 1.7 万名患者,阳性病例来自至少 51 个国家。
为什么重要? 2020 年初,全球可供训练的 COVID-19 阳性胸片几乎为零,各研究团队只能用小样本自训模型,结果无法相互比较。COVIDx 是首批(也是最长期的)把“新冠阳性/阴性”问题做成可复现公开基准的努力:从 2020 年 3 月到 2022 年 6 月持续迭代 9 个大版本,配套论文发表于 Scientific Reports,被引超过 3,700 次,是疫情期间被引用最多的医学影像 AI 数据集之一。
我能用它做什么? 训练与评测新冠胸片分类模型(三分类:正常/非新冠肺炎/COVID-19;或二分类:阳性/阴性)、研究多来源数据聚合下的域偏移与 shortcut 学习、做可解释性审计(官方即配套 GSInquire 归因工具)、以及作为域泛化研究的“内部基准”,再配合外部医院数据做泛化差距分析。注意:它不是临床诊断工具,其已知偏倚见 §7。
§1.1 摘要
COVIDx 由 Wang、Lin 与 Wong 在 COVID-Net 论文(Scientific Reports, 2020)中首次提出,核心方法是“开放来源聚合 + patient-level 整理”:将 Cohen/MILA 新冠影像库、Figure1 与 Actualmed 采集计划、COVID-19 Radiography Database、RSNA 肺炎挑战赛(源自 NIH ChestX-ray14)、TCIA RICORD 以及后来的 BIMCV-COVID19 等来源,经官方 curation notebook 去重、清理、去burn-in 文本后合并,并按患者维度划分训练/测试集,保证同一患者的影像不跨集。标签文件为空格分隔的 TXT(patientId、图像路径、类别),2021-01 起拆分为 A(三分类)/B(二分类)双任务体系,2022-06 发布清洗版 CXR-3(移除数百张非典型训练图)。官方配套模型(COVID-Net、COVIDNet-CXR-2/3)以生成式合成机器驱动架构设计著称,并持续使用可解释性方法(Grad-CAM 系的 GSInquire)审计决策依据。该数据集的价值不仅在于规模,更在于它完整记录了疫情期间“多源聚合型基准”的版本演进史,使其成为研究数据偏倚与基准漂移的经典案例。
§1.2 战略价值
维度一:疫情时代最大、最多元的开放新冠 CXR 基准。 COVID-Net CXR-2 论文(Frontiers in Medicine, 2022)明确将 COVIDx 定位为“开放获取形式下最大、最多元的新冠 CXR 数据集”——19,203 张图像、16,656 名患者、至少 51 国。与其主要竞争者 COVID-19 Radiography Database(单点收集为主)相比,COVIDx 的多中心来源使其阳/阴两类的地理与设备覆盖更广,也因此在论文中被大量用作预训练与评测底座。对希望复现疫情期间主流基线的团队而言,它几乎是必经之路。
维度二:多源聚合偏倚的“活体标本”。 也正因为多源聚合,COVIDx 成为 shortcut 学习研究的关键素材:DeGrave 等人在 Nature Machine Intelligence(2021)证明,按 COVIDx 式来源聚合方式训练的模型会把文字标记、体位等来源特征当作疾病信号,外部测试准确率腰斩。这使 COVIDx 成为讲授“数据来源与标签相关即最坏混淆”的标准教学案例——使用它的每一个团队都应同时使用 §7 的偏倚分析与 §6.5 的坑点清单。
维度三:官方工程配套完整。 与大多数“只有数据”的学术数据集不同,COVIDx 提供从上游 8 源重建数据集的 notebook、各版本标签文件、预处理与训练/推理脚本、预训练权重与可解释性工具,形成从数据到模型到审计的完整闭环,这也是其 AI 就绪度达到 4/5 的主要原因。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注 | 与 COVIDx 的差异化 |
|---|---|---|---|---|
| COVIDx CXR(本条目) | CXR-3:30,386 张 / 约 1.7 万患者,51+ 国 | 胸部 X 光 | 三分类 / 二分类,patient-level 划分 | 多源聚合 + 官方划分 + 版本演进记录完整 |
| COVID-19 Radiography Database | v3 含 21,165 张 COVID 阳性(COVIDx 取用) | 胸部 X 光 | COVID/肺部阴影/病毒性肺炎/正常 | 单点主导收集,量大但来源集中,无官方 patient-level 划分 |
| MIDRC-RICORD(TCIA) | 1,257 张(COVIDx 取用) | 胸部 X 光(DICOM) | 放射科医师逐例标注 | 标注质量最高、带临床数据,规模小,许可独立 |
| BIMCV-COVID19 | 大规模多中心(数千例) | CXR + CT | 影像报告 + 标注 | 元数据最丰富(含 DICOM 全字段),COVIDx CXR-3 阳性补充源 |
| NIH ChestX-ray14 / RSNA | 29,684 张(RSNA 供 COVIDx 阴性) | 胸部 X 光 | 肺炎标注(RSNA 挑战赛) | 历史阴性库,无 COVID 病例,供 COVIDx 负类 |
| CheXpert / PadChest | 数十万张 | 胸部 X 光 | 多标签放射学发现 | 规模更大但 COVID 病例少,任务为多标签而非新冠三分类 |
§1.4 版本时间轴
| 版本 | 发布日期 | 规模要点 | 关键变化 |
|---|---|---|---|
| v1 | 2020-03(arXiv)/ 2020-11(Sci Rep 终版) | 13,975 张 / 13,870 患者 | 首版,3 分类,Cohen + RSNA 双源 |
| v2 | 2020-04 | 16,756 张 / 13,645 患者 | 纳入 Figure1 等来源 |
| v3 | 2020-05-13 | 含 PA/AP 双视野 | 纳入 Actualmed 与 Radiography Database,测试集含 100 张 COVID |
| v4 | 2020-06-26 | 14,000+ 张 / 473 阳性训练 | 阳性扩充 |
| v5 | 2020-10-30 | 14,200+ 张 / 617 阳性训练 | 测试集保持固定以跨版本可比 |
| v6 | 2021-01-05 | 14,500+ 张 / 617 阳性 | 转向二分类(阳性/阴性) |
| v7 / v8A / v8B | 2021-01-28 / 2021-03-19 | v8:16,000+ 张 / 15,100+ 患者 / ≥51 国 | 拆分 A(三分类)/B(二分类)双体系;纳入 RICORD |
| v9A / v9B | 2021-11-28 | 30,000+ 张 / 16,400+ 患者 | 纳入 BIMCV 等源,阳性扩至 16,490 张 |
| COVIDx CXR-3 | 2022-06-02 | 训练 29,986 张 / 16,648 患者 | 清洗版:移除数百张非典型训练图(当前最新) |
§1.5 典型应用场景
- 新冠胸片分类基准评测:使用官方 400 张固定测试集与敏感度/PPV 口径复现 COVIDNet-CXR-2 等基线,或提交新架构对比(§8.1)。
- 域泛化与外部验证研究:以 COVIDx 为内部训练分布,在自建医院数据或其他来源上量化泛化差距(DeGrave 等报告准确率可减半)。
- shortcut 学习与可解释性审计:配合 Grad-CAM/GSInquire 类归因方法检查模型是否依赖文字标记、体位等伪信号(§6.5 坑点 2)。
- 多源数据聚合方法研究:8 个上游来源提供了天然的“来源标签”,可用于来源去混淆(deconfounding)、站点不变性学习等方法实验。
- 教学案例:数据集的 9 个大版本演进是讲授“基准漂移与版本管理”的现成教材。
§2 医学背景
§2.1 疾病与标签的 ICD-11 映射
| 标签 | ICD-11 编码 | ICD-11 中文名称 | 说明 |
|---|---|---|---|
| COVID-19(阳性) | 1D07 | COVID-19 | WHO ICD-11 收录的新冠病毒感染疾病(MMS 章节) |
| 肺炎(非 COVID) | CA40 | 肺炎 | 涵盖细菌性/病毒性/未特指病原体肺炎(CA40 子节点) |
| 正常(无肺炎) | 无对应编码 | — | 影像学阴性发现不构成疾病诊断编码 |
§2.1b 疾病与标签的 SNOMED CT 映射
| 标签 | SNOMED CT 码 | 术语 | 概念类型 |
|---|---|---|---|
| COVID-19(阳性) | 840539006 | COVID-19 | Disorder(疾病) |
| 肺炎(非 COVID) | 233604007 | Pneumonia | Disorder(疾病) |
| 正常(无肺炎) | 17621005 | Normal | Qualifier(定性值,指影像学正常) |
§2.2 疾病简介与流行病学
COVID-19 由 SARS-CoV-2 病毒引起,2020 年 3 月被 WHO 宣布为大流行,至 2024 年全球累计报告确诊病例超过 7.7 亿例、死亡超过 700 万例(WHO 新冠仪表板,截至 2024)。典型胸部 X 光表现为磨玻璃影(GGO)、双侧分布异常与间质异常(Pavlova 等, 2022 引用的临床证据链);但上述征象并非新冠特异,细菌性与病毒性肺炎、心力衰竭等亦可呈现相近影像,这正是 COVIDx 将“非新冠肺炎”设为独立类别的原因。
主要影像学征象与鉴别:
| 征象 | COVID-19 常见表现 | 鉴别要点 |
|---|---|---|
| 磨玻璃影(GGO) | 常见,多双侧、外周/胸膜下分布 | 亦见于其他病毒性肺炎与间质性肺病 |
| 实变 | 进展期可见 | 细菌性肺炎多为叶段分布伴支气管充气征 |
| 双侧异常 | 高频出现 | 非特异,心源性肺水肿呈对称蝶翼分布 |
| 间质异常 | 可见 | 需与间质性肺疾病鉴别 |
| 胸腔积液 | 相对少见 | 大量积液时需优先考虑其他病因 |
上述征象的重叠性直接决定了三分类任务的难度上界:COVIDx 的“肺炎”类混合了细菌性与病毒性肺炎,影像层面与 COVID-19 并无可靠分界,这也是官方论文强调 PPV(而非单纯敏感度)的原因之一。
肺炎(CA40)作为大类的全球负担常年居感染性疾病前列;在疫情期间,临床工作流的核心难题是:RT-PCR 核酸检测敏感度随采样时点与方式波动较大(Pavlova 等, 2022 在引言中综述了该证据),而胸片是呼吸主诉患者的常规检查,可及性高、便于隔离病房内使用(含便携设备)。因此“胸片辅助筛查新冠”成为疫情期间被最广泛研究的 AI 任务之一,COVIDx 即为此场景而设计。
需要强调的医学边界:影像表现与病毒学的对应关系存在天花板——同一张胸片无法可靠区分 COVID-19 与其他病毒性肺炎,这决定了该数据集模型的合理定位是“筛查辅助/分诊提示”而非“诊断”。影像学检出还依赖病程时点:发病早期(症状后 0-2 天)胸片可无明显异常,任何基于 COVIDx 训练的模型都隐式继承了“已就诊、已成像”人群的时点偏移。
§2.3 临床任务定义
| 任务维度 | 定义 | COVIDx 对应 |
|---|---|---|
| 筛查(screening) | 在 RT-PCR 之外提供快速影像学辅助判断 | 二分类(B 系):阳性/阴性 |
| 分诊(triage) | 区分无肺炎、普通肺炎与新冠,指导隔离与处置优先级 | 三分类(A 系):正常/肺炎/COVID-19 |
| 严重度分级 | 评估肺实变范围,辅助监护决策 | 不在 COVIDx 主基准内(官方另发布 COVIDxSev 数据集) |
| 预后预测 | 评估进展风险 | 不支持(标签文件不含结局变量) |
§2.4 患者人群构成
COVIDx 不在标签文件中分发人口学字段,下表为按可溯源的上游来源汇总的人群特征(来源:Breve, 2022 对源数据集的统计)。
| 来源子集 | 人群与时间 | 年龄 | 性别 | 地域 |
|---|---|---|---|---|
| Cohen/MILA covid-chestxray-dataset | 2020 疫情初期,全球汇集(含文献截图) | 平均约 54 岁 | 559 男 / 311 女 | 全球多国 |
| Figure1 Initiative | 2020 临床工作者匿名上传 | 大多未记录 | 少量已记录 | 北美为主 |
| Actualmed Initiative | 2020 医院合作采集 | 大多未记录 | 少量已记录 | 美国 |
| COVID-19 Radiography Database | 2020-2021 收集 | 未系统记录 | 未系统记录 | 全球(卡塔尔等机构主导) |
| RSNA / NIH 历史胸片 | 疫情前历史住院胸片(阴性) | 成人多年龄层 | 未随集分发 | 美国(NIH) |
| TCIA RICORD | 2020-2021 美国多中心 | 平均约 56 岁 | 645 男 / 353 女 | 美国 |
§2.5 临床价值定位
在真实工作流中,该数据集支撑的模型价值点有三:其一,在检测能力受限场景(大规模筛查、基层机构)提供秒级胸片预筛,提示优先复检对象;其二,辅助识别“RT-PCR 阴性但影像高度可疑”的复查线索(核酸检测窗口期问题);其三,作为分诊特征输入(如自动标记 COVID 可疑以触发隔离流程)。上述价值均以“辅助”为边界:DeGrave 等(2021)已证明此类模型在新医院环境可能系统性失效,任何临床落地前必须完成外部验证与可解释性审计(§7.8)。
从证据等级看,COVIDx 支撑的最强结论是“工程与基准方法学”(多源聚合、版本管理、可解释性审计流程),而非“临床有效性”——后者需要前瞻性、跨机构的设计与监管路径,该数据集及其官方模型(自述“绝非可用于生产的解决方案”)从未主张已达此标准。研究者引用 COVIDx 成绩时应同步引用其测试集构成与偏倚讨论,避免脱离语境的“准确率 95%+”式转述。
§2.6 标注金标准
| 维度 | 内容 |
|---|---|
| 划分 | 官方 train/test TXT 文件,patient-level(同患者不跨集),测试集自 2020-05 起固定 |
| 标注方式 | 继承上游来源标签 + 官方 curation notebook 人工清理;非“逐图重新读片”标注 |
| 标注者 | 上游各异:RICORD 为放射科医师逐例标注;Cohen 集依赖已发表文献与临床元数据;Radiography Database 为数据库作者整理 |
| 参考标准 | COVID-19 阳性以 RT-PCR/临床诊断链为参考(各源链路强度不一);阴性多为历史排除或常规影像 |
| 性质 | 弱监督式继承标注,非独立双盲金标准;此为该数据集最重要的标注学特征 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小/构成 | 理由 |
|---|---|---|---|
| 最新清洗版、继续研究的默认选择 | COVIDx CXR-3(Kaggle version 7) | 训练 29,986 张 / 16,648 患者 + 测试 400 张 | 官方移除了数百张非典型图像,标签质量最佳 |
| 复现 COVID-Net CXR-2 论文(2022) | COVIDx8B(论文基准 19,203 张) | 训练 + 固定测试 400 张 | 论文全部指标基于 8B 基准;CXR-3 未重训论文模型 |
| 三分类任务(正常/肺炎/COVID-19) | CXR-3A 或 v8A | CXR-3A 训练 29,634 张(8,085/5,555/15,994) | A 系标签文件独立提供 |
| 二分类任务(阳性/阴性) | CXR-3B 或 v8B | CXR-3B 训练 29,986 张(13,992/15,994) | B 系为官方主推检测任务 |
| 标注质量优先的小样本研究 | TCIA RICORD 子集(经 COVIDx 纳入) | 1,257 张 | 放射科医师逐例标注,可溯源 DICOM |
| 严重度分级研究 | COVIDxSev(2021-04-21) | 肺实变分级标注 | 独立任务,非本主基准范围 |
§3.1 模态详情
单一模态:胸部 X 光平片。视野以后前位(PA)与前位(AP)为主(v3 起同时纳入双视野,官方未提供逐图视野字段);灰度 8-bit 位图,多为 DICOM 转存 PNG/JPEG,分辨率参差(多数集中于 1,000×1,000 附近,亦有数百像素的压缩截图与超过 3,000 像素的高分辨率图)。部分历史图像带有烧录文字(侧别标记、技术参数、姓名片段),官方在训练 COVID-Net 时采用顶部 8% 裁剪以缓解(Wang 等, 2020),使用者的预处理策略必须处理该问题(§6.3、坑点 4)。
| 技术特征 | 实际情况 | 对建模的影响 |
|---|---|---|
| 投照视野 | PA/AP 为主,含少量非标准视野;无逐图视野字段 | 需启发式过滤 + 抽检(坑点 4) |
| 灰度深度 | 8-bit 灰度(个别源为伪彩色转灰度) | 统一 convert 灰度即可 |
| 分辨率 | 约 200-3,000+ 像素,集中 1,000×1,000 附近 | 统一 resize,注意低分辨率源的信息损失 |
| 后处理 | DICOM 转存、截图、文献扫描混杂 | 直方图检查 + 异常图过滤 |
| 烧录伪迹 | 文字标记、边框、 rulers | 顶部 8% 裁剪 + 边缘清理(官方口径) |
| 设备信息 | 未逐图记录 | 以来源簇作为站点代理(§7.6) |
§3.2 子集样本数
COVIDx CXR-3B(二分类,官方主表)
| 类型 | COVID-19 阴性 | COVID-19 阳性 | 合计 |
|---|---|---|---|
| 训练图像 | 13,992 | 15,994 | 29,986 |
| 测试图像 | 200 | 200 | 400 |
| 训练患者 | 13,850 | 2,808 | 16,648 |
| 测试患者 | 200 | 178 | 378 |
COVIDx CXR-3A(三分类)
| 类型 | 正常 | 肺炎 | COVID-19 | 合计 |
|---|---|---|---|---|
| 训练图像 | 8,085 | 5,555 | 15,994 | 29,634 |
| 测试图像 | 100 | 100 | 200 | 400 |
| 训练患者 | 8,085 | 5,531 | 2,808 | 16,424 |
| 测试患者 | 100 | 100 | 178 | 378 |
§3.3 数据格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 影像 | PNG/JPEG(灰度为主) | 各源转存产物,无统一分辨率 |
| 标签 | TXT,空格分隔三列 | patientId / 图像相对路径 / 类别 ID |
| 类别编码 | 整数 | A 系:0=normal、1=pneumonia、2=COVID-19;B 系:0=negative、1=positive |
| 重建脚本 | Jupyter Notebook | create_COVIDx.ipynb(A 系/旧版)、create_COVIDx_binary.ipynb(B 系)、create_ricord_dataset.ipynb(RICORD 预处理) |
| 模型权重 | TensorFlow(.h5) | COVIDNet-CXR 系列,官方 models.md 提供 |
§3.4 存储规模
全量影像约数 GB(随 Kaggle 版本不同而变化,官方未公布精确字节数)。注意 Kaggle covidx-cxr2 仓库的版本号与 COVIDx 版本号不同步:CXR-3 对应该 Kaggle 数据集的 version 7,下载前务必核对(坑点 7)。
若走官方重建路线(§3.10),磁盘需求远高于成品:需同时持有 8 个上游来源(其中 RSNA/NIH 单源即 29,684 张 DICOM,Radiography Database v3 达 21,165 张),加上中间产物与 notebook 输出,建议预留 50 GB 以上工作空间。成品与重建版的差异应在实验记录中显式声明——两者并非同一数据对象(坑点 5)。
§3.5 标注方式
三层结构:第一层为继承标注——COVIDx 的标签直接取自上游来源的既有标签(如 Radiography Database 的 PCR 确认阳性、RSNA 的肺炎框阴性定义);第二层为整理标注——官方 curation notebook 处理来源重叠、去除不可用图像、CXR-3 又移除数百张非典型训练图;第三层为专家标注——RICORD 子集由放射科医师逐例标注并附临床数据。因此 COVIDx 整体应视为“弱监督式继承标注”,而非全量独立双盲读片(§2.6)。
| 标注层 | 方式 | 代表子集 | 质量控制 |
|---|---|---|---|
| 继承标注 | 取上游数据集既有标签 | Radiography Database、RSNA 阴性 | 上游各自的质量流程,COVIDx 不重复验证 |
| 整理标注 | 官方 notebook 人工清理、去重、版本清洗 | 全集(v1→CXR-3 的每次更新) | CXR-3 移除数百张非典型图像 |
| 专家标注 | 放射科医师逐例读片 | RICORD 子集 | RSNA 组织的标注体系 |
| 模型侧验证 | 双放射科医师复核模型归因 | CXR-2 论文抽检例 | 10/19 年资医师一致性判断(非标签重标) |
§3.6 标注者资质与一致性
官方未发布 COVIDx 全集的标注者构成与标注者间一致性统计,此为已知信息缺口。可核查的锚点:RICORD 由 RSNA 组织的放射科医师标注体系产出;COVID-Net CXR-2 论文中,两名分别拥有 10 年与 19 年执业经验的美国执业放射科医师对模型关键归因区域进行了复核验证,认为其与影像学解读一致(Pavlova 等, 2022)——注意这验证的是模型行为而非数据集标签本身。
§3.7 采集周期
聚合形成期为 2020 年 3 月至 2022 年 6 月(9 个大版本);上游影像的原始采集时间跨度更大——阳性影像集中于 2020-2021 疫情期,阴性影像多为 NIH/RSNA 历史库(疫情前)。
§3.8 地域覆盖
COVID-Net CXR-2 论文口径:阳性患者来自至少 51 个国家。但分布高度不均衡:阴性类主要由美国 NIH/RSNA 历史库构成,阳性类以 pandemic 期全球汇集库(Cohen、Radiography Database、BIMCV 西班牙等)为主。任何“地域公平性”结论都需要谨慎(§7.5)。
需要特别注意:COVIDx 不分发逐图国别字段——“51 国”是官方对阳性来源的聚合口径,使用者无法在数据集内部按国家重分层或做国别消融。若研究确需地理粒度,应回到上游源集(BIMCV 可溯源至西班牙瓦伦西亚地区、RICORD 可溯源至美国多中心),并在论文中明确样本地域构成的近似性声明。
§3.9 设备规格
官方未记录逐图采集设备、投照参数与重建算法。可确认的是来源横跨经典固定机位与便携式床旁机(疫情期隔离病房大量使用便携设备,影像质量与后处理差异显著)。设备异质性是外部泛化研究中最常被引用的混杂因素之一(§7.3)。
§3.10 深度溯源链
| COVIDx 子集 | 上游来源 | 原始形态 | 官方处理 | 上游许可要点 |
|---|---|---|---|---|
| 阳性 + 部分阴性 | Cohen/MILA covid-chestxray-dataset | DICOM/PNG + 元数据 | 去重、去烧录文本 | 开放 GitHub 仓库 |
| 阳性 | Figure1 COVID-19 CXR Dataset Initiative | PNG | 整理合并 | 开放 GitHub 仓库 |
| 阳性 | Actualmed COVID-19 CXR Dataset Initiative | PNG | 整理合并 | 开放 GitHub 仓库 |
| 阳性/肺部阴影/正常 | COVID-19 Radiography Database v3 | PNG | v7/v8 用 v3、≤v6 用 v1;重叠去重 | Kaggle 分发,许可独立 |
| 阴性(正常 + 非新冠肺炎) | RSNA Pneumonia Detection Challenge(源自 NIH) | DICOM | 转存并取标签 | Kaggle 竞赛数据条款 |
| 阳性(专家标注) | MIDRC-RICORD(TCIA) | DICOM | create_ricord_dataset.ipynb 预处理 | TCIA 许可(数据引用 DOI: 10.7937/91ah-V663) |
| 阳性(CXR-3 新增) | BIMCV-COVID19 | DICOM/PNG | 纳入 v9/CXR-3 | BIMCV 开放条款 |
§4 数据结构
§4.0 目录树
Kaggle covidx-cxr2(CXR-3,version 7)解压后结构:
covidx-cxr2/
├── train/ # 训练集图像(PNG/JPEG,文件名为十六进制/UUID 式)
│ ├── 0a4b9...d21.png
│ ├── 1c8e7...f03.jpg
│ └── ...
├── test/ # 固定测试集图像(400 张)
│ ├── 8f2d1...a77.png
│ └── ...
├── train.txt # 训练标签:patientId 图像相对路径 类别ID(B 系 0/1)
└── test.txt # 测试标签(同上)
官方仓库另有成体系的版本化标签文件(labels/ 目录):
COVID-Net/
├── labels/
│ ├── train_COVIDx8A.txt / test_COVIDx8A.txt # v8 三分类(0/1/2)
│ ├── train_COVIDx8B.txt / test_COVIDx8B.txt # v8 二分类(0/1)
│ ├── train_COVIDx_CXR-3A.txt / test_COVIDx_CXR-3A.txt
│ └── train_COVIDx_CXR-3B.txt / test_COVIDx_CXR-3B.txt
├── create_COVIDx.ipynb # A 系/旧版重建脚本
├── create_COVIDx_binary.ipynb # B 系重建脚本
└── create_ricord_dataset/create_ricord_dataset.ipynb # RICORD DICOM 预处理
§4.1 DAIMS 字段字典
标签文件一行一条记录(一个图像实例),8 列 DAIMS 描述如下:
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| patientId | Text | 患者标识,同一患者多图同 ID | 0a4b9d21 | 分组划分/Guard 防泄漏 | 跨版本 ID 体系不一致 | 无缺失 | 字符串(十六进制/UUID 式) |
| filename(路径列) | Text | 图像相对路径 | train/1c8e7…f03.jpg | 图像定位 | 相对 data_root 拼接 | 无缺失 | *.png / *.jpg / *.jpeg |
| class | Integer | 类别 ID | 1 | 监督信号 | A/B 系映射不同(见 §3.3) | 无缺失 | A 系 {0,1,2};B 系 |
| 图像像素 | ImageObject | 灰度 8-bit 位图 | — | 模型输入 | 分辨率/视野不一 | — | 约 200-3,000+ 像素边长 |
| view(视野) | — | PA/AP 等 | 未提供 | 可作协变量 | — | 整体缺失(未分发) | — |
| 年龄/性别 | — | 人口学 | 未提供 | 公平性审计 | — | 整体缺失(未分发) | — |
| 采集时间 | — | 检查日期 | 未提供 | 时序漂移分析 | — | 整体缺失(未分发) | — |
| 设备/机构 | — | 采集设备与站点 | 未提供(可由文件名/来源簇间接推断) | 域适应研究 | — | 整体缺失(未分发) | — |
§4.2 标签分布
以官方主推的 CXR-3B 计:训练集阳性/阴性 = 15,994/13,992(约 1.14:1,接近平衡);测试集严格 200/200。三分类体系(CXR-3A)训练集为 8,085 正常 / 5,555 肺炎 / 15,994 COVID-19,COVID 类约为肺炎类的 2.9 倍——若以类别占比当作先验,会系统性高估 COVID 流行率(真实流行率随时期与地区在个位数到两位数百分比之间波动),评估时务必使用分层指标而非总体准确率。
患者层面:CXR-3B 训练集 16,648 名患者中阳性患者 2,808 名(约 16.9%),阳性患者人均图像数(约 5.7 张)显著高于阴性患者(约 1.0 张)——患者级与图像级先验差异巨大,做患者级聚合决策时必须按患者聚合概率(§5)。
| 先验口径 | 数值 | 差异来源 |
|---|---|---|
| 图像级阳性占比(CXR-3B 训练) | 15,994/29,986 ≈ 53.3% | 阳性患者贡献多张图 |
| 患者级阳性占比(CXR-3B 训练) | 2,808/16,648 ≈ 16.9% | 更接近真实队列构成 |
| 测试集图像级 | 200/400 = 50.0% | 官方刻意平衡 |
| 测试集患者级 | 178/378 ≈ 47.1% | 阳性患者人均张数更高所致 |
| A 系三分类最大类差 | COVID 15,994 vs 肺炎 5,555(2.9 倍) | 上游来源构成决定 |
在部署推演中若以图像级 53.3% 当作就诊人群流行率,将严重高估患病风险(真实流行率随时期与地区在个位数到两位数百分比之间波动);反之在患者级聚合评估时,若忽略阳性患者多图带来的方差减小,置信区间会被低估。两个方向的口径错误在已发表文献中均出现过,属于本数据集的高频统计陷阱。
§4.3 关键统计
- 训练集图像/患者比:29,986/16,648 ≈ 1.8 张每患者;阳性患者人均约 5.7 张 vs 阴性患者约 1.0 张。
- 测试集:400 张图像 / 378 名患者(22 名测试患者贡献超过 1 张图像),这是“测试集内也需 patient-level 聚合评估”的直接证据。
- 版本跨度:v1(2020-03)至 CXR-3(2022-06),共 9 个大版本、训练阳性图像从 183 张(v1 论文口径)增长至 15,994 张(CXR-3)。
- 地域跨度:阳性患者来自至少 51 国(Pavlova 等, 2022)。
COVID 类规模随版本的扩增(图像级训练阳性):
| 版本 | 时间 | 训练阳性图像 | 相对上版 |
|---|---|---|---|
| v1(论文口径) | 2020-11 | 183 张(152 训练 + 31 测试) | — |
| v3 | 2020-05-13 | 258 张训练 | 约 1.7 倍 |
| v4 | 2020-06-26 | 473 张 | 约 1.8 倍 |
| v5/v6 | 2020-10 / 2021-01 | 617 张 | 约 1.3 倍 |
| v7 | 2021-01-28 | 1,700+ | 约 2.8 倍 |
| v8A/v8B | 2021-03-19 | 2,300+(v8B 表 2,158) | 约 1.3 倍 |
| v9A/v9B | 2021-11-28 | 16,490 | 约 7 倍(纳入 BIMCV 等) |
| CXR-3 | 2022-06-02 | 15,994(清洗后) | 微降(清洗) |
该曲线直观呈现了疫情期间开放阳性影像的“从无到有”:v1 时代 183 张阳性已足以支撑论文发表,一年后同基准扩容约 87 倍——这也解释了为什么基于早期版本的模型结论几乎全部需要在新版本上重新验证。
§4.4 数据层级
数据层级为两级:患者(patientId)→ 图像(文件)。没有检查(study)与序列层字段;同一患者同日多张片与不同日复查片在文件中不可区分。DAIMS 建议:任何按图像随机打乱的划分都会把同一患者的复查片同时分入训练与测试(坑点 3),所有自建划分必须以 patientId 为分组键。
患者 patientId(如 0a4b9d21)
└── 图像文件(1 至多张,CXR-3B 训练阳性人均约 5.7 张)
└── 像素(无 study/series/时间戳/设备层)
层级扁平化的直接后果:凡需要“检查级”语义的研究(如纵向分析、同日多投照去冗余)都必须依赖 patientId 粗粒度近似,无法精确到检查。这与 RICORD/BIMCV 等保留 DICOM 层级的上游源集形成互补——需要完整层级时请使用上游原始数据。
§4.5 缺失值与信息性缺失
| 字段 | 缺失情况 | 信息性含义 | 处理建议 |
|---|---|---|---|
| 人口学(年龄/性别/种族) | 整体未分发 | 无法在 COVIDx 内做公平性审计,需回上游源集(Cohen/RICORD 元数据) | 公平性研究请用上游源而非 COVIDx |
| 视野(PA/AP) | 未分发 | 无法逐图过滤侧位/非常规视野 | 预处理中用启发式 + 人工抽检 |
| 采集时间 | 未分发 | 无法做时序漂移与时期分层 | 用来源簇近似时期(阳性多为 2020-2021) |
| 设备/机构 | 未分发 | 无法逐图控制站点效应 | 以“来源簇”作为站点代理变量 |
| 标签 | 无缺失 | 官方已清理(CXR-3 移除不确定样本) | 无需缺失标签处理 |
§5 划分与使用建议
§5.1 官方划分
官方提供固定 train/test TXT:测试集 400 张(B 系 200 阳性 + 200 阴性;A 系 100 正常 + 100 肺炎 + 200 COVID)、378 名患者,自 2020-05 起保持稳定以支持跨版本可比(官方更新日志,2020-10-30)。训练/测试划分在 patient 级完成。官方模型(COVIDNet-CXR 系列)全部报告于该固定测试集。
| 划分 | 图像数 | 患者数 | 构成 | 稳定性 |
|---|---|---|---|---|
| 训练集(CXR-3B) | 29,986 | 16,648 | 13,992 阴 / 15,994 阳 | 随版本更新(CXR-3 已清洗) |
| 测试集(B 系) | 400 | 378 | 200/200 | 自 2020-10 起固定 |
| 训练集(CXR-3A) | 29,634 | 16,424 | 8,085/5,555/15,994 | 同上,A 系标签 |
| 测试集(A 系) | 400 | 378 | 100/100/200 | 与 B 系同批图像 |
§5.2 社区惯例划分
社区常见三种做法:其一,直接使用官方划分并与已发表数字对比(最常见,也是可引用性最强的做法);其二,将官方训练集重新切出验证集(建议 patient-level 分层切分,留出 5-10% 做模型选择);其三,对官方训练集做 5 折 GroupKFold 交叉验证(以 patientId 为组键),用于超参选择与小样本消融。
选择建议:写论文对比官方基线 → 用法一;开发新模型需要模型选择 → 用法二(验证集绝不参与训练,且测试集仅最终评估一次);方法学研究(如去混淆算法)→ 用法三并报告折间方差。无论哪种,都不应重复使用测试集做迭代决策,400 张的固定测试集经不起“隐性复用”造成的评估过拟合。
§5.3 泄漏风险(重点)
| 风险 | 场景 | 缓解 |
|---|---|---|
| 患者跨集泄漏 | 自建划分时按图像随机切分 | 以 patientId 为分组键(GroupShuffleSplit/GroupKFold) |
| 上游来源重叠 | 自行从 8 源重建数据集(Radiography Database 与 Cohen 集存在已知重叠) | 使用官方 curation notebook 的去重逻辑,勿简单合并 |
| 训练/测试版本混用 | 用 CXR-3 图像配 v8 标签文件 | 文件名与患者 ID 体系跨版本不一致,务必版本对齐(坑点 1、7) |
| 阈值/预处理泄漏 | 在测试集上挑选裁剪比例、增强参数或决策阈值 | 预处理参数只在训练/验证集上确定 |
§5.4 交叉验证与外部验证建议
交叉验证:GroupKFold(5) + 分层(按类别比例),报告折间均值±标准差而非单折最优。外部验证:任何宣称临床可用性的模型都应在来源独立的医院数据上评估并附归因审计;仅报告 COVIDx 内部测试集指标的论文,其外部效度按 DeGrave 等(2021)的证据应视为未建立。更多结构化建议见 §7.8 外部验证矩阵。
# patient-level 分层交叉验证骨架(GroupKFold 无原生分层,按患者正例占比排序后分桶)
import numpy as np
from sklearn.model_selection import GroupKFold
pid_pos = {} # 每患者阳性图像比例
for pid, label in patient_label_pairs:
pid_pos.setdefault(pid, []).append(label)
pids = sorted(pid_pos, key=lambda p: np.mean(pid_pos[p])) # 按阳性率排序
buckets = np.array_split(pids, 5) # 等分为 5 桶 → 近似分层
gkf = GroupKFold(n_splits=5)
# 以桶号作为 group 交给 KFold,或直接逐桶轮换做验证集
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
Kaggle Notebook 内可直接挂载数据集(无需下载到本地):
# Kaggle Notebook:Add Input -> 搜索并挂载 andyczhao/covidx-cxr2
import os
DATA_ROOT = "/kaggle/input/covidx-cxr2" # 挂载后自动出现的根目录
print(os.listdir(DATA_ROOT)) # 预期输出含 train/ test/ train.txt test.txt
本地/自建集群用 Kaggle API:
# 前置:在 kaggle.com 账户设置页生成 API Token,放置于 ~/.kaggle/kaggle.json(权限 600)
pip install kaggle
kaggle datasets download -d andyczhao/covidx-cxr2 -p ./covidx-cxr2
unzip -q ./covidx-cxr2/covidx-cxr2.zip -d ./covidx-cxr2
# 下载完成后核对:train.txt 行数应为 29,986(CXR-3B 训练集)
wc -l ./covidx-cxr2/train.txt
§6.1 快速上手
以下代码假设目录结构与 §4.0 一致;data_root 指向解压根目录,标签文件内的图像路径为相对路径,直接与 data_root 拼接即可。最小可用子集:从 train.txt 随机抽 2,000 行即可跑通“读标签→读图→训练一步”的端到端流程。
import pathlib
import random
from collections import Counter
def load_labels(data_root, split="train"):
"""解析 COVIDx 标签文件。
文件为空格分隔:patientId 图像相对路径 类别ID
- B 系(CXR-3B / 8B):0=negative, 1=positive
- A 系(CXR-3A / 8A):0=normal, 1=pneumonia, 2=COVID-19
兼容个别行路径含空格的情况:取首列为 ID、末列为类别、中间为路径。
"""
records = []
with open(pathlib.Path(data_root) / f"{split}.txt", encoding="utf-8") as f:
for line in f:
parts = line.strip().split()
if len(parts) < 3:
continue
pid, label, rel_path = parts[0], int(parts[-1]), " ".join(parts[1:-1])
records.append({
"patientId": pid,
"path": pathlib.Path(data_root) / rel_path,
"label": label,
})
return records
data_root = "./covidx-cxr2" # <- 修改为你的解压根目录
train = load_labels(data_root, "train")
test = load_labels(data_root, "test")
print(f"train: {len(train)} images, labels={dict(Counter(r['label'] for r in train))}")
print(f"test : {len(test)} images, labels={dict(Counter(r['label'] for r in test))}")
# 最小可用子集(跑通 pipeline 用)
random.seed(42)
mini = random.sample(train, 2000)
print("patient-level check:", len({r['patientId'] for r in mini}), "unique patients in mini set")
§6.2 数据获取
| 途径 | 获取内容 | 版本对应 | 说明 |
|---|---|---|---|
| Kaggle:andyczhao/covidx-cxr2 | 全量图像 + train/test.txt | CXR-3 = Kaggle version 7 | 免费,需 Kaggle 账号;推荐主途径 |
| GitHub labels 目录 | 各版本标签 TXT | v8A/8B、CXR-3A/3B | 与图像配合使用,注意版本对齐 |
| 官方重建路线 | 从 8 上游源自建 | 任意历史版本 | 需逐源下载 + 官方 notebook,适合需要上游元数据的研究 |
重建路线要点(官方 COVIDx.md):v7/v8 使用 Radiography Database v3,v6 及以下使用 v1;RICORD 需先跑 create_ricord_dataset.ipynb 做 DICOM 预处理;各源下载地址见 §3.10 溯源链。
§6.3 预处理全流程
官方论文口径的预处理:顶部 8% 裁剪(去除烧录文字区)→ 尺寸归一 → 强度归一;训练期增强为平移 ±10%、旋转 ±10°、水平翻转、缩放 ±15%、强度偏移 ±10%(Wang 等, 2020)。以下是面向 PyTorch 的等价实现:
# 预处理假设:输入为任意分辨率灰度/三通道 PNG/JPEG;输出 224x224、RGB 三通道
# data_root 与 §6.1 一致;此模块只依赖 numpy/PIL/torch,不依赖官方 TF 代码
import numpy as np
import torch
from PIL import Image
def load_image(path):
""“读图并压为灰度:来源含 PNG/JPEG 与少量伪灰度 RGB。”""
img = Image.open(path)
return img.convert("L")
def crop_top(img, frac=0.08):
""“顶部 8% 裁剪:缓解烧录文字(官方 COVID-Net 论文做法)。”""
w, h = img.size
return img.crop((0, int(h * frac), w, h))
def to_tensor(img, size=224):
img = crop_top(img).resize((size, size), Image.BILINEAR)
arr = np.asarray(img, dtype=np.float32) / 255.0
arr = (arr - 0.5) / 0.5 # 归一化到 [-1, 1]
return torch.from_numpy(arr).unsqueeze(0) # [1, H, W] 单通道
# 需要三通道预训练骨干时:to_tensor(img).repeat(3, 1, 1)
可选增强(进阶):直方图均衡/CLAHE 可缓解设备间对比度差异,但会抹掉部分来源特征——对偏倚敏感的研究应做有无 CLAHE 的消融;侧位/非常规视野因无逐图视野字段,只能启发式过滤 + 抽检(坑点 4)。
§6.4 PyTorch DataLoader 完整示例
<details>
<summary>点击展开完整可运行代码(Dataset + patient-level 划分 + DataLoader)</summary>
# 依赖:torch >= 2.0、pillow、numpy
# 目录预期(data_root 拼接关系):
# data_root/train.txt 每行:patientId 图像相对路径 类别ID
# data_root/train/ 图像文件
# 最小可用子集:将 PatientCXRDataset 的 records 换成 §6.1 的 mini 即可
import pathlib
import random
import numpy as np
import torch
from PIL import Image
from torch.utils.data import DataLoader, Dataset
class PatientCXRDataset(Dataset):
"""COVIDx CXR-3B 二分类 Dataset(0=negative, 1=positive)。
A 系三分类使用时传入 label_map={0:0, 1:1, 2:2} 即可,无需改代码。
"""
def __init__(self, data_root, split="train", size=224, augment=False,
indices=None, label_map=None):
self.data_root = pathlib.Path(data_root)
self.records = self._read_split(split)
if indices is not None:
self.records = [self.records[i] for i in indices]
self.size = size
self.augment = augment
self.label_map = label_map or {0: 0, 1: 1}
def _read_split(self, split):
records = []
with open(self.data_root / f"{split}.txt", encoding="utf-8") as f:
for line in f:
parts = line.strip().split()
if len(parts) < 3:
continue
records.append((parts[0], " ".join(parts[1:-1]), int(parts[-1])))
return records
def __len__(self):
return len(self.records)
def _augment(self, arr):
# 与官方论文口径对齐的轻量实现:翻转/平移/强度
if random.random() < 0.5:
arr = arr[:, ::-1]
if random.random() < 0.5:
dx, dy = np.random.randint(-22, 23, 2)
arr = np.roll(np.roll(arr, dy, axis=0), dx, axis=1)
arr = np.clip(arr * (1 + random.uniform(-0.1, 0.1)), 0, 1)
return arr
def __getitem__(self, idx):
pid, rel_path, label = self.records[idx]
img = Image.open(self.data_root / rel_path).convert("L")
img = img.crop((0, int(img.size[1] * 0.08), img.size[0], img.size[1])) # 顶部 8% 裁剪
img = img.resize((self.size, self.size), Image.BILINEAR)
arr = np.asarray(img, dtype=np.float32) / 255.0
if self.augment:
arr = self._augment(arr)
arr = (arr - 0.5) / 0.5
x = torch.from_numpy(arr.copy()).unsqueeze(0).repeat(3, 1, 1) # 三通道适配预训练骨干
y = torch.tensor(self.label_map[label], dtype=torch.long)
return x, y, pid
def patient_val_split(dataset, val_ratio=0.1, seed=42):
""“patient-level 划分:同一患者绝不同时出现在训练与验证(坑点 3)。”""
patients = sorted({pid for pid, _, _ in dataset.records})
rng = random.Random(seed)
rng.shuffle(patients)
n_val = max(1, int(len(patients) * val_ratio))
val_pids = set(patients[:n_val])
val_idx = [i for i, (pid, _, _) in enumerate(dataset.records) if pid in val_pids]
tr_idx = [i for i, (pid, _, _) in enumerate(dataset.records) if pid not in val_pids]
return tr_idx, val_idx
data_root = "./covidx-cxr2"
base = PatientCXRDataset(data_root, "train", augment=False)
tr_idx, va_idx = patient_val_split(base, val_ratio=0.1)
train_ds = PatientCXRDataset(data_root, "train", augment=True, indices=tr_idx)
val_ds = PatientCXRDataset(data_root, "train", augment=False, indices=va_idx)
train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=8, pin_memory=True)
val_loader = DataLoader(val_ds, batch_size=128, shuffle=False, num_workers=8, pin_memory=True)
for x, y, pids in train_loader:
print(x.shape, y.shape, pids[:2]) # [B,3,224,224] [B] ['0a4b9...', ...]
break
</details>
§6.5 坑点清单(8 个)
⚠️ 坑点 1:跨版本混用导致标签漂移(分类:标签理解)
问题:COVIDx 有 9 个大版本,v6 起拆分 A(三分类)/B(二分类)双标签体系,CXR-3 又从训练集中移除了数百张非典型图像。把 CXR-3 的图像与 v8 的标签文件(或反过来)混用,或引用不同版本的结果做对比,会得到系统性错误。
症状:图像路径批量找不到文件;类别映射错乱(把“肺炎”当“阳性”);自训模型在旧测试集上的数字与论文不可比,复现审核失败。
解决:
- 简单方法:图像与标签文件取自同一版本同一 Kaggle 下载;代码中显式声明版本号常量并在读取时断言行数(CXR-3B 训练 29,986 行 / 测试 400 行)。
- 进阶方法:用官方 labels/ 目录的版本化 TXT 作为唯一标签源(train_COVIDx_CXR-3B.txt 等),启动脚本校验文件 hash;跨版本对比只在“固定测试集”口径内进行。
- SOTA 方法:实验管理系统中把 dataset version 作为 artifact 元数据(DVC/LakeFS),任何 run 必须声明 dataset_version + label_scheme(A/B)。
参考:官方版本更新日志 https://github.com/lindawangg/COVID-Net/blob/master/docs/COVIDx.md
⚠️ 坑点 2:来源-标签混淆与 shortcut 学习(分类:偏倚陷阱)
问题:COVIDx 的阴性图像主要来自 NIH/RSNA 历史库,阳性主要来自疫情期汇集库,“来源”与“标签”近乎完美相关(worst-case confounding)。模型可以仅凭文字标记、体位、设备特征等来源指纹预测标签,而不学习病理。
症状:内部测试准确率 95%+,换一家医院/一个外部数据集准确率腰斩;Grad-CAM 高亮区在图像角落、文字区或体位标记而非肺野;DeGrave 等人正是复现此类训练流程后得出上述结论(外部集准确率约减半)。
解决:
- 简单方法:训练前裁剪顶部 8% 与边缘烧录文字;可视化 Grad-CAM 逐批抽检归因是否落在肺野。
- 进阶方法:做“来源去混淆”训练——把可推断的来源簇作为协变量(按文件名/分辨率/长宽比聚类),用 IRM/GroupDRO 或来源平衡采样约束模型不依赖来源特征;报告内部/外部双指标。
- SOTA 方法:可解释性驱动验证(官方 GSInquire 思路):将归因图与放射科标注区域对齐,量化归因-病灶 IoU;不达标即拒绝上线。
参考:DeGrave AJ, Janizek JD, Lee S-I. Nature Machine Intelligence 3:610-619 (2021), DOI 10.1038/s42256-021-00338-7;Pavlova et al., 2022(GSInquire 审计)
⚠️ 坑点 3:图像级随机划分造成患者间泄漏(分类:数据泄漏)
问题:阳性患者人均约 5.7 张图像(CXR-3B),同一患者的复查片高度相似。若按图像随机打乱划分训练/验证/测试,同一患者的影像会同时出现在两侧,验证指标虚高且不可复现于临床。
症状:自建验证集准确率比官方测试集高 3-10 个百分点;同患者影像出现在两个集合(用 patientId 交叉表一查便知);论文审稿被指出泄漏。
解决:
- 简单方法:任何自建划分都按 patientId 分组(sklearn 的 GroupShuffleSplit / GroupKFold)。
- 进阶方法:分组后再按类别分层(保证每组阳性比例稳定),即“分层 + 分组”两步划分;代码见 §6.4 的 patient_val_split。
- SOTA 方法:评估时除图像级指标外,追加患者级聚合指标(患者内多图概率平均后判定),双口径报告。
参考:官方 patient-level 划分说明与 §4.3 统计(CXR-3B:测试集 400 张图像仅对应 378 名患者)
⚠️ 坑点 4:烧录文字与非常规视野混入(分类:预处理陷阱)
问题:历史来源图像含侧别/体位/技术参数烧录文字,部分为文献截图或裁剪图;且数据集不含逐图视野字段,侧位(lateral)与非标准视野可能混入。这些伪迹既是 shortcut 学习的入口,也直接破坏像素统计。
症状:模型对图像四角/顶部过拟合;强度直方图呈多峰异常;人工抽检发现侧位片被当 PA 位训练。
解决:
- 简单方法:统一执行顶部 8% 裁剪(官方做法)+ 边缘白边裁剪;按长宽比过滤明显异常样本并人工复核。
- 进阶方法:训练轻量视野分类器(PA/AP/lateral/其他)先过滤,再进主任务;对 OCR 检出的高密度文字图二次处理。
- SOTA 方法:把“视野/伪迹”作为独立评估分层报告(如仅 PA 位子集指标),量化伪迹对性能的贡献。
参考:Wang et al., 2020(顶部 8% 裁剪的动机);§3.1 模态详情
⚠️ 坑点 5:自行重建数据集引发来源重叠泄漏(分类:数据泄漏)
问题:COVIDx 由 8 个上游源聚合而成,其中 COVID-19 Radiography Database 与 Cohen/MILA 集存在已知重叠(同一影像在两源出现),官方 curation notebook 内部处理了这些重叠。若绕过官方脚本自行合并来源,重复影像可能同时进入训练与测试。
症状:测试指标异常漂亮(接近 99%+);用感知哈希(pHash)对 train/test 取交集能检出成对重复。
解决:
- 简单方法:直接用 Kaggle 官方成品,不走自建路线。
- 进阶方法:自建时完整复用 create_COVIDx*.ipynb 的去重顺序(先 RICORD 预处理、再重叠处理、后划分);交付前用 pHash/dHash 全库查重并把重复对全部归入同一侧。
- SOTA 方法:建立“来源-患者-图像”三级指纹(source ⊕ patientId ⊕ pHash)作为数据卡片字段,任何新版本重建自动跑查重门禁。
参考:官方重建说明 https://github.com/lindawangg/COVID-Net/blob/master/docs/COVIDx.md
⚠️ 坑点 6:固定 400 张测试集的统计功效陷阱(分类:评估误用)
问题:官方测试集仅 400 张(B 系 200/200),且多年固定不变。在 200 张阳性样本上,95% 置信区间半宽约 ±3 个百分点——论文间 1-2 个百分点的差异大多落在噪声区间内。
症状:同一模型跑多次因随机性得到 94.8%-96.5% 的波动;两篇论文“96.5% 优于 95.5%”的结论实际上不显著;刷榜式微调无意义。
解决:
- 简单方法:对所有比率指标报告 Wilson 置信区间(代码见 §6.9),差异未跨区间即视为不可区分。
- 进阶方法:用 bootstrap(按患者重采样)估计指标分布,做配对置换检验后再下结论。
- SOTA 方法:在自建外部集上做二次确认(样本量自定),内外双报,任何结论以外部集为准。
参考:官方测试集口径(COVIDx.md 分布表);Breve FA, 2022, PeerJ Comput Sci 8:e949(同集多架构对比)
⚠️ 坑点 7:Kaggle 版本号与 COVIDx 版本号不同步(分类:工程陷阱)
问题:Kaggle 数据集 andyczhao/covidx-cxr2 的 version 字段(当前 CXR-3 对应 version 7)与 COVIDx 数据集版本(v1-v9、CXR-3)是两套编号。按“最新版本”直觉下载可能拿到非预期代次;且 Kaggle 包内文件名为通用 train.txt/test.txt,不标注 A/B。
症状:行数对不上官方表(train.txt 不是 29,986 行);把二分类标签套到三分类代码上;引用时写错版本。
解决:
- 简单方法:下载后立即以行数 + 类别取值集合断言版本(29,986 行且标签 ∈ {0,1} → CXR-3B)。
- 进阶方法:在数据卡片中同时记录 kaggle_version 与 covidx_version 两个字段,禁止只记其一。
- SOTA 方法:CI 中固化“下载→断言→登记”三步数据准入 job,版本不符即失败。
参考:官方 COVIDx.md(Kaggle 链接与版本说明);§3.4
⚠️ 坑点 8:类别先验失真与评估口径错位(分类:评估误用)
问题:三分类训练集中 COVID 类(15,994)约为肺炎类(5,555)的 2.9 倍,患者级先验(阳性患者约 16.9%)与图像级先验(约 53% 阳性)差距巨大;且官方主推指标是各类敏感度与 PPV,而大量第三方论文只报总体准确率——两种口径不可互换。
症状:把模型输出概率当作流行率使用导致临床误判;复现时“准确率 96%”与官方“敏感度 95.5%/PPV 97.0%”对不上;少数类(肺炎)召回被掩盖。
解决:
- 简单方法:统一按官方口径报告各类敏感度/PPV + 混淆矩阵;三分类下同时报告宏平均。
- 进阶方法:患者级聚合后再算指标;训练期用加权采样或 focal loss 处理三分类不平衡,并报告有无加权消融。
- SOTA 方法:按目标场景设定决策阈值(筛查偏敏感、确诊偏特异),在 ROC/PR 曲线上按运行点报告而非单点。
参考:§4.2 标签分布;官方模型表 https://github.com/lindawangg/COVID-Net/wiki
§6.6 数据增强:安全与危险清单
| 处理 | 判定 | 理由 |
|---|---|---|
| 水平翻转 | ✅ 安全 | 胸片左右结构近对称(注意:心脏偏左,标注侧别任务时禁用,本任务无侧别标签) |
| 小角度旋转 ±10°、平移 ±10%、缩放 ±15% | ✅ 安全 | 与官方论文口径一致 |
| 强度偏移 ±10% / CLAHE | ✅ 安全(建议消融) | 缓解设备差异,但可能抹去来源指纹,偏倚研究需对照 |
| 垂直翻转 | ❌ 危险 | 破坏解剖方向性,产生不存在的影像 |
| 大角度旋转 >30° | ❌ 危险 | 破坏体位先验,等于伪造非常规投照 |
| Cutout 大面积遮挡肺野 | ❌ 危险 | 可能遮蔽病灶区域,且与筛查任务目标冲突 |
| 在测试集上拟合增强参数 | ❌ 危险 | 预处理泄漏(§5.3) |
§6.7 模型推荐
| 模型 | 适用场景 | 参考性能 | 备注 |
|---|---|---|---|
| COVIDNet-CXR-3(官方) | 直接复用官方基线 | COVIDx8B 测试:阳性敏感度 97.5% / PPV 99.0% | TF 权重公开,官方仓库 |
| COVID-Net CXR-2(官方) | 论文对标首选 | 阳性敏感度 95.5% / PPV 97.0%,AUC 99.41% | Front Med 2022,机器驱动设计 |
| ResNet50V2 微调 | 迁移学习快速基线 | 96.5%(Zhao 等, 2021) | 三通道输入,标准微调流程 |
| DenseNet121 | 密集连接利于病灶特征 | 同集可复现 | 注意与归因审计配合 |
| 六模型集成(VGG16/19、ResNet50、DenseNet121、Xception、BaseNet) | 刷上限 | 97.75%(阈值优化后 99.25%,Breve, 2022) | 推理成本高,阈值优化在验证集完成 |
§6.8 硬件需求
| 阶段 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 数据下载/预处理 | 4 核 CPU、20 GB 磁盘 | 8 核、100 GB SSD | 全量图像数 GB,解压后预留空间 |
| 训练(224×224,ResNet50 级) | 1× RTX 3060(12 GB),batch 32 | 1× A100(40 GB),batch 128+ | 3 万张图一个 epoch 数分钟级 |
| 交叉验证/集成 | — | 2-4× GPU 或多卡轮换 | GroupKFold 5 折约 5 倍训练时长 |
| 可解释性审计 | CPU 可跑 Grad-CAM | GPU + 批量归因导出 | 建议全测试集导出热图存档 |
§6.9 评估指标代码
与官方口径对齐(各类敏感度 + PPV),并输出 Wilson 置信区间与患者级聚合指标:
<details>
<summary>点击展开评估代码(敏感度/PPV/Wilson CI/患者级聚合)</summary>
# 输入:y_true/y_pred(图像级标签),pids(每张图对应患者ID),label_names 为类别名
# 口径对齐:官方模型表使用各类敏感度与 PPV(见 github.com/lindawangg/COVID-Net/wiki)
import math
from collections import defaultdict
def wilson_ci(k, n, z=1.96):
if n == 0:
return 0.0, 0.0, 0.0
p = k / n
denom = 1 + z**2 / n
center = (p + z**2 / (2 * n)) / denom
half = z * math.sqrt(p * (1 - p) / n + z**2 / (4 * n**2)) / denom
return p, max(0.0, center - half), min(1.0, center + half)
def per_class_report(y_true, y_pred, label_names):
report = {}
for c, name in enumerate(label_names):
tp = sum(1 for t, p in zip(y_true, y_pred) if t == c and p == c)
fn = sum(1 for t, p in zip(y_true, y_pred) if t == c and p != c)
fp = sum(1 for t, p in zip(y_true, y_pred) if t != c and p == c)
sens, lo, hi = wilson_ci(tp, tp + fn)
ppv, plo, phi = wilson_ci(tp, tp + fp)
report[name] = {
"sensitivity": (round(sens, 4), round(lo, 4), round(hi, 4)),
"ppv": (round(ppv, 4), round(plo, 4), round(phi, 4)),
}
return report
def patient_level_report(records, label_names):
""“患者级聚合:患者内多图概率平均后判定(records 含 pid/prob/true)。”""
by_pid = defaultdict(list)
for r in records:
by_pid[r["pid"]].append(r)
agg = []
for pid, rs in by_pid.items():
prob = sum(x["prob"] for x in rs) / len(rs)
pred = int(prob >= 0.5)
agg.append((rs[0]["true"], pred))
return per_class_report([t for t, _ in agg], [p for _, p in agg], label_names)
label_names = ["negative", "positive“] # B 系;A 系用 [”normal", "pneumonia", "COVID-19"]
y_true = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 0, 1]
print(per_class_report(y_true, y_pred, label_names))
# 预期输出形如:positive sensitivity ≈ 0.667(95% CI 约 0.21-0.94)——小样本下区间极宽
</details>
§6.10 MLOps 笔记
- 数据版本化:COVIDx 版本必须作为一等元数据(covidx_version + label_scheme + kaggle_version 三字段,见坑点 1、7),训练 run 与数据版本绑定。
- 固定口径回归:每次改预处理/划分后,重跑官方 400 张测试集并将敏感度/PPV 与历史 run 对比,异常波动即回滚。
- 偏倚监控:线上若部署于新站点,按站点分层监控敏感度漂移,并周期性导出 Grad-CAM 抽检归因区域(坑点 2)。
- 评估审计留痕:保存混淆矩阵、各类 CI 与患者级指标为 run artifact,避免“只有总体准确率”的不可审计报告。
- 许可合规流水线:再分发或商用前将 §3.10 的逐源许可核查固化为 checklist 工单(AGPL 触发条件为代码而非影像本身,但上游来源各异)。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 来源-标签混淆 | 阴性主要来自 NIH/RSNA 历史库、阳性来自疫情期汇集库,来源与标签近乎完美相关,模型可学来源指纹(DeGrave 等, 2021) | 高 | 来源平衡采样、去混淆训练、归因审计(坑点 2) |
| 地理偏倚 | 阴性以北美历史库为主,阳性多国但分布未知细节 | 高 | 外部本地数据验证后再解读 |
| 设备/采集异质性 | 便携床旁机与固定机位混杂,无逐图设备记录 | 中 | 视野/伪迹过滤(坑点 4)、CLAHE 消融 |
| 类别先验失真 | 图像级与患者级阳性先验差异巨大(约 53% vs 16.9%) | 中 | 患者级聚合评估、按场景设阈值(坑点 8) |
| 标签噪声 | 继承式弱监督标注,上游链路强度不一;CXR-3 已清洗训练集但未公开逐图置信度 | 中 | 高风险应用结合上游源集复核 |
| 时效偏倚 | 影像集中于 2020-2021 疫情期,毒株与诊疗规范已变迁 | 中 | 作为历史基准使用,勿直接外推当下 |
§7.2 标注质量评估
优点:官方持续清洗(CXR-3 移除数百张非典型训练图);RICORD 子集为放射科医师逐例标注;阳性标签多数可溯源至 RT-PCR 确认链。局限:全集无统一双盲读片、无标注者间一致性统计(Kappa 等)、无逐图标签置信度;测试集虽固定但未公开其标注复核流程。综合评级:中上——在疫情应急数据集中属第一梯队,但低于后来的专家标注专项集(如 RICORD 独立使用)。
| 质量维度 | 状况 | 对使用的影响 |
|---|---|---|
| 阳性标签溯源 | 多数可溯 RT-PCR/临床确诊链 | 阳性类标签可信度较高 |
| 阴性标签溯源 | 历史库排除逻辑,链路不均一 | 阴性类可能混入未检出病例 |
| 一致性统计 | 未公布 | 无法定量评估标签噪声水平 |
| 版本清洗 | CXR-3 公开声明移除数百张训练图 | 优先使用 CXR-3 训练 |
| 复现风险 | 测试集标签未见独立复核声明 | 高风险结论建议人工复核测试集 |
§7.3 泛化性评估
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 换医院/新设备 | 高:准确率可腰斩 | DeGrave 等, 2021(复现 COVIDx 式训练,外部集准确率约减半) |
| 分辨率/后处理差异大的机构 | 高:COVIDx 图像多为 1,000×1,000 附近,外部低分辨率(<480×480)设备差异显著 | HPC 用例研究(PMC9914706)中两源分辨率分布差异明显 |
| 非 COVID 肺炎高发期 | 中:三分类中“肺炎”类训练量最小(5,555 张),且不含细分病原 | 类别构成见 §4.2 |
| 儿科/特殊人群 | 高:人群构成偏成人,无人口学字段可查 | §2.4 人群表 |
| 毒株变迁后的当下 | 高:影像表现与流行率均已漂移 | §7.1 时效偏倚 |
§7.4 伦理考量
数据来自公开来源聚合与匿名化医院数据(RICORD 等经 TCIA 发布流程);COVIDx 自身仅分发数字患者 ID。需要审视的点:部分早期来源(文献截图、社交平台征集)的知情同意与撤回机制不完备;疫情期间的应急伦理审批与常规标准存在差异;阴性图像为历史临床影像,原始使用目的并非 ML 训练。使用者应遵守各上游来源条款,并避免将模型输出直接用于临床决策。
许可伦理需要单独说明:官方代码仓库采用 AGPL-3.0,其网络服务条款(第 13 条)要求修改版若对外提供网络服务须开放源代码——将官方模型封装为在线 API 时该条款可能被触发;数据层面无统一许可,逐源核查(§3.10)是唯一稳妥路径。官方同时提供替代许可协商渠道(README 联系方式),商业项目建议在立项阶段直接沟通。
§7.5 公平性
COVIDx 标签文件不含年龄、性别、种族与地域字段,无法在数据集内部完成分组公平性审计——这本身是重要的公平性局限。可溯源的人口学信息只存在于上游源集(如 Cohen 集男性 559/女性 311、RICORD 男性 645/女性 353,均偏男性样本)。任何跨人群性能均等性的主张都需要回到上游或在自建外部集上验证;直接以 COVIDx 训练并宣称“全人群适用”缺乏数据支撑。
§7.6 数据漂移
三类漂移需要监控:其一,版本漂移——9 个大版本的标签体系与样本构成变化(§1.4),跨版本模型迁移需重新校准;其二,人群漂移——疫情不同阶段就诊人群与流行率剧变,固定 200/200 的测试先验不对应任何真实场景;其三,采集漂移——便携机普及与影像后处理演进改变像素分布。官方未提供采集时间戳,时序监控只能以“来源簇”近似。
| 漂移类型 | 触发信号 | 监控手段 |
|---|---|---|
| 版本漂移 | 标签文件行数/映射变化 | 数据准入断言(坑点 1、7 的版本对齐) |
| 人群漂移 | 上线后阳性率偏离开发分布 | 按站点/时段监控预测阳性率 |
| 采集漂移 | 分辨率/长宽比/强度分布偏移 | 输入像素统计看板 + 异常报警 |
| 病原学漂移 | 优势毒株更替、临床指南变化 | 定期外部集重测 + 归因抽检 |
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | TXT 一行一样本,三列定长语义 |
| 2 | 唯一标识 | ✅ | patientId + 文件名二级标识,患者级分组可行 |
| 3 | 特殊字符 | ✅ | 文件名为十六进制/UUID 式,无路径注入风险 |
| 4 | 重复行 | ⚠️ | 官方成品已去重;自建 8 源合并时存在已知上游重叠(坑点 5) |
| 5 | 缺失编码 | ⚠️ | 无缺失编码体系;人口学/视野/时间整体缺失 |
| 6 | 标签标识 | ✅ | 类别 ID 语义明确(A 系 0/1/2,B 系 0/1) |
| 7 | 罕见类分组 | ⚠️ | 肺炎类不区分细菌性/病毒性,细分研究需回上游 |
| 8 | 偏倚评估 | ⚠️ | 官方未系统发布偏倚分析;第三方(DeGrave 2021)已证实 shortcut 风险 |
| 9 | 数据字典 | ⚠️ | 无正式数据字典文档,字段语义散见 docs/COVIDx.md |
| 10 | 信息性缺失解释 | ❌ | 人口学等字段缺失未附任何官方解释 |
| 11 | 设备记录 | ❌ | 无逐图设备/机构记录 |
| 12 | 共线性 | ✅ | 单模态图像任务,无特征共线性问题 |
| 13 | 编码映射 | ✅ | 类别映射简单明确,官方文档说明 |
| 14 | 时间戳处理 | ❌ | 无采集时间字段,时序分析不可行 |
| 15 | 划分建议 | ✅ | 官方固定 patient-level 测试集 + 跨版本可比声明 |
| 16 | 泄漏讨论 | ⚠️ | 官方划分 patient-level,但未讨论上游重叠与自建风险 |
| 17 | 标签分布 | ✅ | 各版本图像/患者级分布表完整公布 |
| 18 | 测量偏倚 | ⚠️ | 视野与设备未记录,测量变异不可量化 |
| 19 | 外部验证建议 | ✅ | 官方论文含放射科医师归因验证;社区有外部验证方法论(DeGrave) |
| 20 | 版本记录 | ✅ | v1→CXR-3 全程更新日志详尽,属同类最佳 |
| 21 | 预处理脚本 | ✅ | 官方重建/预处理/训练脚本全开放 |
| 22 | 合规要求 | ⚠️ | AGPL-3.0 + 多上游许可叠加,商用需逐源核查 |
| 23 | 多模态对齐 | ✅ | 单模态数据集,无跨模态对齐需求 |
| 24 | 去标识化 | ⚠️ | 上游各自去标识并分发数字 ID,但烧录文字残留风险由使用者处理 |
DAIMS 评分:16.5 / 24
评分解读:12 项 ✅、9 项 ⚠️、3 项 ❌。得分集中在“划分工程、版本管理、官方脚本与标签分布透明度”——这些是 COVID-Net 团队作为工程化开源项目的基本盘,20 项版本记录甚至属同类最佳。失分集中在三个不可修复的结构性缺口:无人口学、无设备/时间元数据、无正式数据字典——它们源自“多源聚合”这一数据集构建方式的先天约束,而非维护方的疏忽。与 MIMIC-III 这类单机构完整病历库(18.5/24)相比,COVIDx 用元数据深度换来了来源广度。
对你意味着什么:(1) 可以放心把官方 400 张测试集与标签文件当作稳定基准使用,pipeline 代码只需处理三列 TXT;(2) 必须自带“元数据补全层”——来源簇推断、视野过滤、患者级聚合,这些官方都不做;(3) 涉及人口学/时序/设备的研究请直接转向上游源集(Cohen/RICORD/BIMCV),不要试图从 COVIDx 榨取不存在的字段;(4) 任何对外宣称的性能都应附带归因审计与外部验证,该数据集的 shortcut 风险已有顶刊证据。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 模拟“新医院”外部集(复现 COVIDx 式训练) | 华盛顿大学(DeGrave 等, 2021) | 新冠阳性/阴性分类 | 外部集准确率约为内部的一半 | 大幅下降(约腰斩) | 归因显示模型依赖文字标记与体位等 shortcut;外部评估本身不足以暴露问题,必须加可解释性审计 |
| 自建外部医院数据(低分辨率设备) | 于利希研究中心等 HPC 用例研究(PMC9914706) | 新冠三分类迁移 | 未报告与内部统一的可比指标 | 显性退化(需重标定) | COVIDx 图像分辨率集中于 1,000×1,000 附近,外部多低于 480×480,直接迁移需分辨率适配 |
§8 基准性能与生态
§8.1 排行榜(官方测试集口径)
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | COVIDNet-CXR-3 | COVIDx8B 测试:阳性敏感度 97.5% / PPV 99.0%(阴性 99.0% / 97.5%) | 2022 | 机器驱动架构(PRPE 模式) | COVID-Net Open Source Initiative, 2022, 官方模型表(未单独发表论文) | 有(TF) |
| 2 | COVID-Net CXR-2 | COVIDx8B 测试:阳性敏感度 95.5% / PPV 97.0%,AUC 99.41% | 2022 | 生成式合成 + 可解释性审计 | Pavlova M, Terhljan N, Chung AG, et al., 2022, Frontiers in Medicine 9:861680. DOI 10.3389/fmed.2022.861680 | 有 |
| 3 | 六模型集成(阈值优化) | COVIDx8B:97.75%(阈值优化后 99.25%) | 2022 | VGG/ResNet/DenseNet/Xception/BaseNet 集成 | Breve FA, 2022, PeerJ Computer Science 8:e949. DOI 10.7717/peerj-cs.949 | 有 |
| 4 | ResNet50V2 微调 | COVIDx8B:96.5%(最优配置) | 2021 | 迁移学习微调 | Zhao W, Jiang W, Qiu X, 2021, Diagnostics 11(10):1887. DOI 10.3390/diagnostics11101887 | 有 |
| 5 | COVID-Net(初代) | COVIDx v1 三分类测试:93.3% | 2020 | 生成式合成人类-机器协同设计 | Wang L, Lin ZQ, Wong A, 2020, Scientific Reports 10:19549. DOI 10.1038/s41598-020-76550-z | 有 |
| — | COVIDNet-CXR-3 | 同一仓库内自训候选 | — | 可复现基线 | 官方训练脚本,未另发论文 | 有 |
数值不可直接比较的原因:第 1-4 行基于 COVIDx8B 二分类固定测试集,第 5 行基于 v1 三分类测试集(不同任务与年代);第 1 行为官方自报(无同行评审论文),第 3 行含阈值优化步骤(先验不同);各论文预处理(裁剪/增强)不完全一致。引用任何数字前请核对口径。
需要强调的第三方差异:Breve(2022)报告的最高数字(ensemble 阈值优化后 99.25%)是在其自身划分与阈值方案上取得,并非官方 400 张测试集的原生结果;DeGrave 等(2021)复现的模型在官方内部测试可达约 95% 但在外部降至一半——这条“高内部分数可能来自 shortcut”的警示应成为解读本表所有数字时的默认前提。
§8.2 SOTA 总结与选型建议
自 2022 年起该基准无持续维护的第三方排行榜(疫情期间的竞赛热度消退后,社区重心转向更大的通用胸片库)。实用建议:工程快速落地用 ResNet50V2/DenseNet121 微调即可进入 95%+ 区间;论文对标选 COVID-Net CXR-2(有同行评审数字与审计流程);研究域偏移/shortcut 者应把 §7.1 的偏倚表作为实验设计的先决约束,而非事后补丁。
| 选型目标 | 首选 | 备选 | 理由 |
|---|---|---|---|
| 快速基线 | ResNet50V2 微调 | DenseNet121 | 标准流程即达 96% 区间 |
| 论文对标官方 | COVID-Net CXR-2 | COVIDNet-CXR-3 | 前者有同行评审 + 审计流程可引 |
| shortcut/可解释性研究 | 任意白盒 + Grad-CAM/GSInquire | — | 关注归因而非纯指标 |
| 域偏移鲁棒 | IRM/GroupDRO + 来源协变量 | Ensemble | 需叠加外部验证 |
| 上限冲刺 | 多模型集成 + 阈值优化 | — | 在验证集做阈值,勿触测试集 |
§8.3 评测协议
官方协议:使用固定测试集(B 系 200 阳性 + 200 阴性;A 系 100/100/200),报告各类敏感度与 PPV(阳性类为核心),预处理与训练期一致(顶部 8% 裁剪)。社区扩展协议:追加 AUC、患者级聚合指标与 Wilson CI(§6.9);外部验证单独报告,不与内部混评。禁止行为:在测试集上调阈值/增强参数;把总体准确率当作唯一指标。
§8.4 相关数据集
| 数据集 | 关系 | 规模 | 适用补充场景 |
|---|---|---|---|
| NIH ChestX-ray14 / RSNA | COVIDx 阴性来源 | 29,684 张供 COVIDx | 多标签胸片病变研究 |
| MIDRC-RICORD(TCIA) | COVIDx 专家标注阳性来源 | 1,257 张供 COVIDx | 高质量标注、DICOM 原始数据 |
| COVID-19 Radiography Database | COVIDx 最大阳性来源 | 21,165 张供 COVIDx(v3) | 大规模阳性样本、四分类 |
| BIMCV-COVID19 | CXR-3 阳性补充来源 | 数千例多中心 | 富元数据、CXR+CT 配对 |
| CheXpert / PadChest | 同模态大盘 | 数十万张 | 预训练底座、多标签任务 |
| COVIDx-CT / COVIDxSev | 同团队姊妹数据集 | CT 104,009 张 / 严重度分级 | CT 模态与严重度任务 |
§8.5 关键论文 Top 8
- Wang L, Lin ZQ, Wong A. COVID-Net: a tailored deep convolutional neural network design for detection of COVID-19 cases from chest X-ray images. Scientific Reports, 10:19549, 2020. DOI 10.1038/s41598-020-76550-z — 提出 COVID-Net 与 COVIDx,首批开源新冠胸片检测网络,确立可解释性审计范式。
- Pavlova M, Terhljan N, Chung AG, Zhao A, Surana S, Aboutalebi H, Gunraj H, Sabri A, Alaref A, Wong A. COVID-Net CXR-2: An Enhanced Deep Convolutional Neural Network Design for Detection of COVID-19 Cases From Chest X-ray Images. Frontiers in Medicine, 9:861680, 2022. DOI 10.3389/fmed.2022.861680 — 发布 19,203 张 / 16,656 患者多国基准与 CXR-2 模型,附双放射科医师归因验证。
- DeGrave AJ, Janizek JD, Lee S-I. AI for radiographic COVID-19 detection selects shortcuts over signal. Nature Machine Intelligence, 3:610-619, 2021. DOI 10.1038/s42256-021-00338-7 — 证明 COVIDx 式多源聚合训练的模型依赖 shortcut,外部集准确率腰斩。
- Cohen JP, Morrison P, Dao L. COVID-19 Image Data Collection. arXiv:2003.11597, 2020 — COVIDx 首要阳性来源,疫情期最早的开放影像汇集工程。
- Chowdhury MEH, Rahman T, Khandakar A, et al. Can AI help in screening viral and COVID-19 pneumonia? IEEE Access, 8:132665-132676, 2020. DOI 10.1109/ACCESS.2020.3010287 — COVID-19 Radiography Database 官方论文(COVIDx 最大阳性来源)。
- Zhao W, Jiang W, Qiu X. Fine-tuning convolutional neural networks for COVID-19 detection from chest X-ray images. Diagnostics, 11(10):1887, 2021. DOI 10.3390/diagnostics11101887 — 系统微调研究,ResNet50V2 达 96.5%。
- Breve FA. COVID-19 detection on Chest X-ray images: A comparison of CNN architectures and ensembles. PeerJ Computer Science, 8:e949, 2022. DOI 10.7717/peerj-cs.949 — 同集多架构与集成对比,提供第三方可复现口径。
- Tsai E, Simpson S, Lungren M, et al. The MIDRC-RICORD Data Release 1C: Chest X-ray, COVID+. The Cancer Imaging Archive, 2021. DOI 10.7937/91ah-V663 — RICORD 专家标注数据集引用(COVIDx 专家标注子集来源)。
§8.6 社区活跃度
官方 GitHub 仓库 lindawangg/COVID-Net 约 1.2k stars / 472 forks(截至 2026-09),issue 区在疫情高峰期(2020-2021)高度活跃,现转入低频维护状态;Kaggle covidx-cxr2 页面留存大量公开 notebook(加载、训练、Grad-CAM 模板);学术热度虽较 2020-2021 回落,但作为 shortcut 学习与多源聚合偏倚的标准案例,仍持续出现在方法学论文中。
维护现状判断:官方已不再新增数据版本(CXR-3 为末版),issue 响应趋缓——这是“完成使命”式归档而非“废弃”。活跃的仍是社区层:第三方在 Kaggle 复现、学术论文持续引用其作为偏倚研究案例、衍生复刻仓库持续存在(GitHub 有多个镜像 fork,版本内容可能存在与官方不同的滞后,使用第三方复刻须谨慎)。对使用者而言,应把官方仓库当作“只读权威源”,技术答疑优先查阅已关闭的 issue 归档而非期待新回复。
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/热度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| lindawangg/COVID-Net | 官方代码仓库 | https://github.com/lindawangg/COVID-Net | 约 1.2k stars | 数据文档、标签、权重、脚本总入口 |
| Kaggle covidx-cxr2 | 官方分发渠道 | https://www.kaggle.com/andyczhao/covidx-cxr2 | Kaggle 热门医疗数据集 | 一键下载全量 CXR-3 |
| docs/COVIDx.md | 官方数据文档 | https://github.com/lindawangg/COVID-Net/blob/master/docs/COVIDx.md | — | 版本日志与分布表的唯一权威源 |
| COVIDNet-CT | 姊妹 CT 数据集 | https://github.com/haydengunraj/COVIDNet-CT | 同团队 | CT 模态 104,009 张图像 |
| GSInquire(含于官方审计流程) | 可解释性工具 | 官方仓库 docs 与论文 | — | 归因审计方法参考 |
| ieee8023/covid-chestxray-dataset | 上游源 | https://github.com/ieee8023/covid-chestxray-dataset | 千级 stars | 上游元数据(年龄/性别/结局)补充 |
§9 相关资源与引用
§9.1 官方资源列表
- 官方 GitHub 仓库(数据文档/标签/脚本/权重):https://github.com/lindawangg/COVID-Net
- 数据集官方文档(版本日志与分布表):https://github.com/lindawangg/COVID-Net/blob/master/docs/COVIDx.md
- Kaggle 下载页(CXR-3):https://www.kaggle.com/andyczhao/covidx-cxr2
- 官方模型清单:https://github.com/lindawangg/COVID-Net/blob/master/docs/models.md
- 上游源入口:https://github.com/ieee8023/covid-chestxray-dataset 、 https://wiki.cancerimagingarchive.net/pages/viewpage.action?pageId=70230281 (RICORD)
- 原始论文开放全文:https://doi.org/10.1038/s41598-020-76550-z (Sci Rep)、 https://doi.org/10.3389/fmed.2022.861680 (Front Med)
- 配套 CT 数据集 COVIDNet-CT:https://github.com/haydengunraj/COVIDNet-CT
| 资源 | 类型 | 用途优先级 |
|---|---|---|
| docs/COVIDx.md | 数据文档 | 版本/划分/下载权威源(先读) |
| labels/ 目录 | 标签文件 | 版本化标签唯一权威源 |
| Kaggle covidx-cxr2 | 数据分发 | 全量影像主下载渠道 |
| docs/models.md | 权重 | 预训练与评测基线 |
| 官方 arXiv/Sci Rep 全文 | 论文 | 方法与预处理口径 |
| LICENSE.md + README | 许可 | 商用前必读 |
§9.2 BibTeX 完整引用
@article{wang2020covidnet,
title = {COVID-Net: a tailored deep convolutional neural network design
for detection of COVID-19 cases from chest X-ray images},
author = {Wang, Linda and Lin, Zhong Qiu and Wong, Alexander},
journal = {Scientific Reports},
volume = {10},
pages = {19549},
year = {2020},
doi = {10.1038/s41598-020-76550-z}
}
@article{pavlova2022covidnetcxr2,
title = {COVID-Net CXR-2: An Enhanced Deep Convolutional Neural Network
Design for Detection of COVID-19 Cases From Chest X-ray Images},
author = {Pavlova, Maya and Terhljan, Naomi and Chung, Audrey G. and
Zhao, Andy and Surana, Siddharth and Aboutalebi, Hossein and
Gunraj, Hayden and Sabri, Ali and Alaref, Amer and Wong, Alexander},
journal = {Frontiers in Medicine},
volume = {9},
pages = {861680},
year = {2022},
doi = {10.3389/fmed.2022.861680}
}
@article{degrave2021shortcuts,
title = {AI for radiographic COVID-19 detection selects shortcuts over signal},
author = {DeGrave, Alex J. and Janizek, Joseph D. and Lee, Su-In},
journal = {Nature Machine Intelligence},
volume = {3},
pages = {610--619},
year = {2021},
doi = {10.1038/s42256-021-00338-7}
}
@article{cohen2020imagedata,
title = {COVID-19 Image Data Collection},
author = {Cohen, Joseph Paul and Morrison, Paul and Dao, Lan},
journal = {arXiv preprint arXiv:2003.11597},
year = {2020}
}
@article{chowdhury2020radiography,
title = {Can AI help in screening viral and COVID-19 pneumonia?},
author = {Chowdhury, Muhammad E. H. and Rahman, Tawsifur and
Khandakar, Amith and others},
journal = {IEEE Access},
volume = {8},
pages = {132665--132676},
year = {2020},
doi = {10.1109/ACCESS.2020.3010287}
}
@article{breve2022covidensembles,
title = {COVID-19 detection on Chest X-ray images: A comparison of
CNN architectures and ensembles},
author = {Breve, Fabricio Aparecido},
journal = {PeerJ Computer Science},
volume = {8},
pages = {e949},
year = {2022},
doi = {10.7717/peerj-cs.949}
}
@article{zhao2021finetuning,
title = {Fine-tuning convolutional neural networks for COVID-19
detection from chest X-ray images},
author = {Zhao, Wenhui and Jiang, Wei and Qiu, Xinguo},
journal = {Diagnostics},
volume = {11},
number = {10},
pages = {1887},
year = {2021},
doi = {10.3390/diagnostics11101887}
}
§9.3 引用指南
使用 COVIDx 数据集本身:引用 Wang 等(2020)与(若使用 v8B/CXR-2 基准)Pavlova 等(2022);使用 RICORD 子集时追加 TCIA 数据引用(DOI 10.7937/91ah-V663);使用上游其他来源的原始元数据时,按 §3.10 逐源引用。引用本页面格式:千方病案医数集「COVIDx CXR — 全球最大开放新冠胸片基准 AI-Ready Wikipedia」,qianfanghub.com,2026。
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| fast-model(CodeBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09-08 | 6 组检索与 4 次定点抓取:官方 COVIDx.md 与 LICENSE 核实、论文引用、基准数字、shortcut 研究与第三方对比 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从官方 GitHub 文档(COVIDx.md、LICENSE.md、仓库 wiki)、Kaggle 页面与同行评审论文中整理结构化信息;(2) 生成 §6 的 Python/Bash 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。
§10.3 输入来源
- Wang L, Lin ZQ, Wong A (2020), Scientific Reports 10:19549 — COVID-Net 与 COVIDx 原始论文(DOI: 10.1038/s41598-020-76550-z)
- 官方数据文档 docs/COVIDx.md(版本更新日志、CXR-3 分布表、下载与重建流程)
- 官方仓库 LICENSE.md(AGPL-3.0 全文核实)
- 官方仓库 wiki/模型表(COVIDNet-CXR-2/3 官方测试指标、star/fork 快照)
- Pavlova M, et al. (2022), Frontiers in Medicine 9:861680 — COVID-Net CXR-2 论文(19,203 张 / 16,656 患者基准、AUC 99.41%、放射科医师验证)
- DeGrave AJ, Janizek JD, Lee S-I (2021), Nature Machine Intelligence 3:610-619 — shortcut 学习研究
- Breve FA (2022), PeerJ Computer Science 8:e949 — 源数据集构成表(v8B 六源规模)、ensemble 与第三方对比数字
- Zhao W, Jiang W, Qiu X (2021), Diagnostics 11(10):1887 — ResNet50V2 微调 96.5%
- Cohen JP, Morrison P, Dao L (2020), arXiv:2003.11597 — COVID-19 Image Data Collection
- Chowdhury MEH, et al. (2020), IEEE Access 8:132665-132676 — COVID-19 Radiography Database
- Tsai E, et al. (2021), MIDRC-RICORD Release 1C(TCIA,DOI: 10.7937/91ah-V663)— RICORD 数据引用
- HPC 用例研究(PMC9914706)— COVIDx v8A 构成、分辨率分布与外部医院数据差异
- 滑铁卢大学工程学院新闻(COVID-Net 论文 3,700+ 引用、Sci Rep 2020-2024 最高被引)
- EurekAlert/GeekWire 报道(DeGrave 研究解读、COVID-Net 部署情况)
- Kaggle covidx-cxr2 数据集页(下载渠道与版本对应关系)
- WHO COVID-19 仪表板(全球累计确诊与死亡数字,截至 2024)
§10.4 人工校验
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、人群统计、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(版本矩阵、溯源链、分布表) | 千方病案医学编辑部 | 与官方 COVIDx.md 及 Breve 2022 逐表比对 | ✅ 已验证 |
| §4 数据结构(目录树、DAIMS 字段字典) | 千方病案医学编辑部 | 与官方标签文件格式交叉比对 | ✅ 已验证 |
| §5 数据划分策略 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与官方预处理口径比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与原文及 Scholar 快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema v3.9 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
本页面全文由 AI 生成初稿,经人工交叉审核后发布。其中 §6.5 坑点与 §7.1 偏倚表在 AI 初稿基础上对照 DeGrave 等(2021)与官方文档逐条核实;§8.1 排行榜所有数字逐一对回原始论文与官方模型表。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
