信息速览

COVID-19 放射学影像数据库 — 多源聚合胸部 X 光库 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | COVID-19 Radiography Database(COVID-19 放射学影像数据库) |
| 英文全称 | COVID-19 Chest X-ray images and Lung masks Database |
| 别名/简称 | COVID-19 Radiography Dataset、COVQU、COVID-19 CXR Dataset、covid19-radiography-database |
| 疾病分类 | 肺部感染与肺炎(ICD-11:CA40 肺炎 / CA40.1 病毒性肺炎 / 1D6Y COVID-19 相关;见 §2.1) |
| SNOMED CT | 233604007 Pneumonia / 700257005 Viral pneumonia / 840539006 COVID-19(见 §2.1b) |
| 数据模态 | 胸部 X 光(CXR)2D 图像 + 肺分割二值掩膜 |
| AI 任务类型 | 图像分类(COVID vs 正常 vs 肺密度影 vs 病毒性肺炎)、肺部分割、增强消融、二分类筛查 |
| 样本总数 | 21,165 张 CXR(3,616 COVID / 10,192 Normal / 6,012 Lung Opacity / 1,345 Viral Pneumonia)+ 掩膜 |
| 数据大小 | 约 1.15 GB(含掩膜全量;单版本约 564 MB,镜像间有差异) |
| 数据格式 | PNG 图像(多 299×299)/ PNG 掩膜(256×256)/ xlsx 元数据 |
| 许可证 | 学术/非商业使用(镜像不一:CC BY-NC-SA 4.0 或 Open Database) |
| 访问级别 | 开放(Kaggle 免费下载) |
| DUO 标签 | NCU, NRES(非商业、无特别限制;各镜像不一致,以官方为准) |
| 语言 | 无自然语言(图像库);元数据英文 |
| 首发日期 | 2020-03(IEEE Access 论文,DOI 10.1109/ACCESS.2020.3010287) |
| 最后更新 | 2021(四分类含掩膜第二次更新版后基本停更,团队转向 COVID-QU-Ex) |
| 发布机构 | 卡塔尔大学、达卡大学 及 巴基斯坦/马来西亚合作团队(Kaggle 账号 tawsifurrahman) |
| 官方主页 | https://www.kaggle.com/datasets/tawsifurrahman/covid19-radiography-database |
| 下载地址 | https://www.kaggle.com/datasets/tawsifurrahman/covid19-radiography-database |
| DOI | 无独立数据集 DOI(描述论文 DOI 10.1109/ACCESS.2020.3010287;后继 COVID-QU-Ex 为 10.34740/kaggle/dsv/3122958) |
| 引用次数 | 1,500+(主论文 Chowdhury 2020,Semantic Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 免费开放、版本清晰、用途广;扣分项:无官方划分与去重、无患者级 ID、多源标签混杂偏倚严重、镜像间数字不一致 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、COVID-19 与病毒性/细菌性肺炎的影像学差异、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(目录结构与来源溯源)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与卡塔尔大学、达卡大学、Kaggle 及原作者团队无任何商业利益关联。本页面不销售该数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。该数据集在 Kaggle 标注为学术/非商业用途,但各再发布镜像许可证不一致(CC BY-NC-SA 4.0 或 Open Database),请以你实际下载版本的授权声明为准。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? COVID-19 放射学影像数据库(COVID-19 Radiography Database)是新冠疫情期间由卡塔尔大学、孟加拉国达卡大学研究团队牵头,联合巴基斯坦、马来西亚合作者与临床医生,在 Kaggle 上分批发布的胸部 X 光(CXR)图像库。它把散落在 SIRM、Cohen covid-chestxray、RSNA、PadChest 等多个公开库及约 43 篇论文里的 X 光图聚合、去重拼接、统一裁剪成 PNG 白底 299×299 的格式,并按 COVID-19 / 正常(Normal)/ 肺密度影(Lung Opacity)/ 病毒性肺炎(Viral Pneumonia)四类归档。
为什么重要? 疫情早期,公开可用的带标签 COVID 胸部 X 光严重稀缺,且各来源格式不一、难以下载。这个库把多来源整合成「一个文件夹一个类」的规整结构,并给整库配了肺分割掩膜,极大降低了研究者做分类与分割实验的门槛,因而获得 Kaggle 社区 COVID-19 Dataset Award,成为 COVIDx 之外被引最多的多源聚合 COVID CXR 库之一。
我能用它做什么? 你可以用它训练 COVID vs 肺炎/正常的分类模型、做肺部分割、比较 CLAHE/伽马校正等图像增强对识别的影响,或复现那批 2020-2021 年的筛查论文。但请记住它的根本局限——标签来自上游公开库、各来源与类别完全混杂、无患者级去重,任何模型都可能学到「区分图片来源」而不是「识别病变」。用它做方法论对照、预处理研究、教学演示是合适的;宣称临床诊断能力则不恰当。
§1.1 摘要
COVID-19 Radiography Database 是卡塔尔大学 Muhammad E. H. Chowdhury、Tawsifur Rahman 等人牵头建立的多源聚合 CXR 图像库(Kaggle 仓库)。它分阶段发布:首发仅 219 张 COVID、1,341 张正常、1,345 张病毒性肺炎;第一次更新把 COVID 增至 1,200 张;第二次更新(当前主流四分类版本)扩到 3,616 张 COVID、10,192 张正常、6,012 张肺密度影、1,345 张病毒性肺炎,合计 21,165 张,并配套肺分割掩膜。图像统一转 PNG、白底、多为 299×299;掩膜为 256×256 二值图。
COVID 图源拆解(据 Kaggle 数据说明):约 2,473 张来自 PadChest、183 张来自德国某医学院、559 张来自 SIRM / GitHub / Kaggle / Twitter、400 张来自另一 GitHub 源;正常图源为 8,851 张 RSNA + 1,341 张 Kaggle pneumonia(儿科 ChestX-ray 数据集);肺密度影 6,012 张全来自 RSNA;病毒性肺炎 1,345 张来自 Kaggle Chest X-Ray(pneumonia)。两张描述性论文分别为 Chowdhury 等 2020 年 IEEE Access(DOI 10.1109/ACCESS.2020.3010287,引用 1,500+)与 Rahman 等 2021 年 Computers in Biology and Medicine(DOI 10.1016/j.compbiomed.2021.104319)。
§1.2 战略价值
历史研究价值——定义疫情早期「多源聚合」范式的标本。该库是 COVIDx 之外理解 2020 年「聚合公共 CXR 做筛查」这一研究风潮的关键样本。它集中体现了聚合库的优点(量大、免费、规整)与致命软肋(来源混杂、无去重、标签继承自上游而非复读),是研究「数据集偏倚如何污染结果」的最佳教学案例。引用主论文已超 1,500 次,是后续大量筛查论文的共同数据底座。
方法论对照价值——图像增强与分割消融的标准化试场。Rahman 等 2021 年论文系统对比了直方图均衡、CLAHE、图像补色、伽马校正、BCET 五种增强手段在识别 COVID 上的效果,并训练了分割用的 U-Net(分割 Dice 96.94%)。后续大量论文在此库上做增强、重采样、类别不平衡与自监督对比实验。若你要验证某种预处理或分割方法在「多源混杂」图像上的鲁棒性,这个库是现成的、可下载的真实压力测试集。
§1.3 同类数据集横向对比
| 数据集 | 规模(COVID 张) | 模态 | 标注/来源 | 定位与差异化 |
|---|---|---|---|---|
| COVID-19 Radiography Database(本文) | 21,165 总(3,616 COVID) | CXR 分类 + 掩膜 | 四类标签继承自上游公开库,多源 | 多源聚合、免费、白底统一、带肺掩膜;来源混杂无去重 |
| COVIDx CXR(COVID-Net) | 因版本而变(早期 3,027 COVID 级别) | CXR 分类 | 多源分层抽样子集 | 有官方划分与代码生态,社区最常用作训练 |
| BIMCV-COVID-19(多镜像) | 数千级 | CXR/CT + 元数据 | 西班牙巴伦西亚医学影像库,专家标注 | 有真实医院流程与病灶框/掩膜,单中心 |
| Cohen covid-chestxray | 数百张 | CXR/CT 混合 | 网页众包聚合 | 最早期 COVID CXR,来源杂、颗粒小 |
| CheXpert / MIMIC-CXR | 无 COVID 标签 | CXR + 报告 | NLP 标签 + 报告文本 | 大样本胸部病变库,作为对照/迁移源 |
| COVID-QU-Ex | 33,920 总(11,956 COVID) | CXR + 全量掩膜 | 本文团队的扩展后继集 | 更大、掩膜更全,可作为本文库的升级替代 |
何时选本库、何时换别家?
| 你的需求 | 首选 | 理由 |
|---|---|---|
| 需 4 类 + 免费 + 掩膜 | 本库 | 现成、可下载、生态多 |
| 需官方划分/去重/患者级 | 换库(COVIDx 有生态;医院库更严) | 本库无官方划分 |
| 需结论级临床性能 | 换真实医院库(BIMCV/RICORD 等) | 本库无法支撑临床声明 |
| 需最大掩膜集 | COVID-QU-Ex | 33,920 张全掩膜,官方后继 |
定位总结:本库是快速开放的聚合实验场,不是「更高质量」的替代——它适合方法学、分割与增强消融,不适合作为临床可信结论的唯一数据来源。
§1.4 版本时间轴
| 版本/阶段 | 时间(约) | 类别与数量 | 说明 |
|---|---|---|---|
| 首次发布 | 2020-03 | 219 COVID / 1,341 Normal / 1,345 Viral Pneumonia | 三分类雏形,配合 IEEE Access 论文 |
| 第一次更新 | 2020-中期 | COVID 增至 1,200 | 扩 COVID 正类样本 |
| 第二次更新(四分类主流版) | 2020-末期~2021 | 3,616 COVID / 10,192 Normal / 6,012 Lung Opacity / 1,345 Viral Pneumonia = 21,165 | 新增 Lung Opacity 类与肺分割掩膜;此后基本停更 |
| COVID-QU-Ex(后继集) | 2021-2022 | 33,920(11,956 COVID / 11,263 非 COVID 感染 / 10,701 Normal) | 官方团队新的更大掩膜集,DOI 10.34740/kaggle/dsv/3122958 |
§1.5 典型应用场景
- 多分类筛查研究对照:对比 COVID / 正常 / 病毒性肺炎 / 肺密度影四分类架构,验证模型是否能从多源混杂图像中稳定识别。
- 图像增强消融:复现 Rahman 2021 的思路,量化 CLAHE、伽马校正、BCET 对分类/分割的影响。
- 肺部分割与预处理研究:利用整库 256×256 掩膜训练 U-Net,验证分割后再分类是否提升可靠性。
- 类别不平衡与重采样方法学:以 COVID(~17%)与病毒性肺炎(~6%)的极端不平衡为试场,比较过采样/欠采样/加权损失。
- 「来源偏倚」教学与审计:作为负面教材展示 CNN 如何仅凭图像边框识别来源库(识别率可 >90%),用于数据伦理与偏倚教学。
应用场景 → 推荐协议对照:
| 场景 | 任务类型 | 划分策略 | 是否需外部集 | 关键指标 |
|---|---|---|---|---|
| 方法对照 / 复现 | 分类 | 图像级分层 | 否(内部即可) | acc、加权 F1 |
| 增强 / 分割消融 | 分割+分类 | 来源隔离或去重 | 可选 | Dice、IoU、分割后 acc |
| 不平衡方法研究 | 分类 | 去重 + 分层 | 否 | AUC、HM、少数类 recall |
| 偏倚/来源审计 | 来源分类 | 任意 | 否 | 来源分类 acc(>90% 即警讯) |
| 临床可用性主张 | 筛查 | 患者/来源级严格 | 必须 | 外部 sensitivity/specificity |
上表强调:同一份 21,165 张库,因「任务目标」不同应采用截然不同的划分与验证强度。把「临床可用性」建立在仅内部随机划分上,是本站反复提醒避免的最大评估误区。
§2 医学背景
§2.1 ICD-11 编码映射
| 标签/概念 | ICD-11 编码 | ICD-11 中文名 | 说明 |
|---|---|---|---|
| COVID 类(COVID-19) | 1D6Y(感染性病原体相关编码下的 COVID-19) | COVID-19 感染 | 本库用 RT-PCR/放射学确认的阳性 X 光 |
| Viral Pneumonia 类 | CA40.1 | 病毒性肺炎 | 非 COVID 的病毒性肺炎(本库沿用上游儿科标签) |
| Lung Opacity 类 | CA4Z / MD3Z | 肺炎未特指 / 异常胸部影像 | 放射学所见肺密度影(本库多源自 RSNA 的 opacity 标注) |
| 正常对照 | 无(健康/正常) | 无异常发现 | 对照组,本库含大量儿科正常影像 |
§2.1b SNOMED CT 映射
| 标签 | ICD-11 | SNOMED CT 码 | 术语 |
|---|---|---|---|
| COVID-19 | 1D6Y | 840539006 | Disease caused by severe acute respiratory syndrome coronavirus 2 |
| 病毒性肺炎 | CA40.1 | 700257005 | Viral pneumonia |
| 肺炎(通用) | CA40 | 233604007 | Pneumonia |
| 肺密度影 | — | 129160005 | Pulmonary opacity (finding) |
| 正常 X 光 | — | 260413007 | No abnormality detected(normal 对照) |
§2.2 疾病简介与流行病学
COVID-19 由严重急性呼吸综合征冠状病毒 2(SARS-CoV-2)引起,2019 年末爆发并迅速演变为全球大流行。胸部 X 光是初筛与病情监测中最易获得、成本最低的影像手段之一;COVID 典型 X 光表现为双肺外周为主的磨玻璃样影、斑片状实变,但与其他病毒性/细菌性肺炎在影像上高度重叠。正因影像重叠、且 RT-PCR 早期有假阴性,「能否用 AI 在 X 光上区分 COVID 与其他肺炎」成为 2020 年医疗 AI 的焦点课题。
本库的关键医学背景是:它的类别标签本质上混合了「实验室诊断标签」与「放射学所见标签」。COVID 类多来自 RT-PCR 阳性病例或文献标注,而 Lung Opacity 类是纯放射学标签,Normal 类混入大量儿科正常影像,Viral Pneumonia 类沿用上游儿科肺炎标签。不同标签语义混用,会直接误导模型学习目标——这在本库偏倚分析中反复出现。
从影像病理学看,COVID 早期 X 光常呈外周性、多灶、斑片状磨玻璃影(GGO),进展期出现实变;重症表现为双肺白肺样弥漫影。但磨玻璃影与实变并非 COVID 独有——细菌性肺炎多呈叶段性实变伴空气支气管征,病毒性肺炎则可呈间质纹理增粗或 GGO。这种影像重叠是放射诊断内在的「类不可分性」。本库把这个不可分性问题放大了:它把来自不同设备、不同年代、不同判读标准的图像强行归入四个离散桶,而桶与桶之间的真实边界远比文件夹名所暗示的模糊。因此,任何声称「在库上达到高准确率」的结果,都需要警惕它是否只是记住了来源差异而非真在解决影像重叠。
§2.2b 影像标签 vs 临床诊断的关键区别
| 层面 | COVID(RT-PCR) | Lung Opacity(RSNA) | Viral Pneumonia(儿科) | Normal |
|---|---|---|---|---|
| 判读对象 | 实验室/临床 | 影像所见 | 影像+临床 | 影像 |
| 是否含时间点 | 可转阴 | 静态所见 | 静态 | — |
| 与 X 光相关 | 间接(可不显影) | 直接(必须显影) | 直接 | 直接 |
| 库内来源 | PadChest/SIRM 等 | RSNA | Kaggle 儿科 | RSNA + 儿科 |
模型若把「RT-PCR 阳性」当学习目标,而输入又只有 X 光,本质上是在学「X 光与 PCR 阳性的弱相关」——这正是该库诊断结论被批评的根源。做研究时须明示你用的是「放射学任务」还是「感染学任务」。
§2.3 临床任务定义
| 任务 | 定义 | 本库适用性 | 注意事项 |
|---|---|---|---|
| 筛查(筛查分诊) | 从大量待检者中挑出疑似 COVID | 中(研究用) | 需真实患病率与独立外部验证 |
| 鉴别诊断 | 区分 COVID / 其他肺炎 | 中(方法对照) | 类间重叠大,需注意标签语义混用 |
| 肺部分割 | 从 X 光勾出肺野 | 高 | 掩膜由原团队训练模型生成,非医师逐张手绘 |
| 严重度分级 | 评估病变范围/分级 | 低 | 本库无严重度标签(后继集才有) |
| 预后/结局 | 关联转归 | 低 | 无随访与结局数据 |
§2.4 患者人群
| 维度 | 说明 |
|---|---|
| 来源 | 多国多机构公开库聚合,非单一医院队列 |
| 覆盖地域 | 意大利(SIRM)、巴基斯坦、孟加拉(达卡)、卡塔尔、美国(RSNA / NIH ChestXray14)等 |
| 时间 | 主要为 2019-2021 疫情早期 |
| 年龄 | 无系统记录;正常对照组含大量儿科影像,存在年龄混杂 |
| 性别 | 无系统记录(各上游库不一) |
| 人群代表性 | 不可知;无法追溯患者级人口学 |
| 就医类型 | 门诊/急诊/住院混杂,无法区分 |
§2.5 临床价值
从临床角度看,该库的直接诊断价值有限:它无法支撑任何「某模型在医院真实场景灵敏度/特异度」的结论。它的间接价值在于方法学——用于训练分割、检验增强与重采样方法、以及研究聚合库偏倚如何影响下游模型。要落地临床,务必配合真实医院数据(如 RICORD、Leeds 教学医院队列)做外部验证,正如《The pitfalls of using open data to develop deep learning solutions for COVID-19 detection in chest X-rays》一文所指出的那样。
该库适合与不适合的临床相关任务:
| 场景 | 库内是否可用 | 替代/补充 |
|---|---|---|
| 方法学验证(算法是否可训练) | ✅ 可用 | 作为研究基准 |
| 筛查分诊的研发预研 | ⚠️ 仅内部对照 | 需独立医院外部集 |
| 结论级灵敏度/特异度 | ❌ 不可 | RICORD / Leeds / 医院队列 |
| 严重度与转归 | ❌ 无标签 | 用含分级标签的库(如后继严重度库) |
| 快速原型/教学演示 | ✅ 可用 | 训练生态、分割示例 |
§2.6 金标准
| 维度 | 说明 |
|---|---|
| 划分方式 | 无官方划分(社区自定,普遍随机 8:2 或 7:1.5:1.5) |
| 标注方式 | 标签继承自上游公开库/论文,未逐张独立复读 |
| 标注者 | 各上游来源(非本库独立影像医师标注) |
| 性质 | 弱金标准:COVID 为 RT-PCR 相关性/文献,其他类多为放射学或儿科标签,存在混用 |
| 掩膜来源 | 肺掩膜由原团队分割模型生成,非逐张医师手绘 |
| 去重 | 无患者级去重;镜像需自行近重复删除(21,165 → 约 19,133 唯一) |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本/子集 | 规模 | 理由 |
|---|---|---|---|
| 四分类筛查方法对照 | Kaggle 四分类主流版(第二次更新) | 21,165 张 | 类别全、最常用、社区复现可比 |
| 三分类复现 IEEE Access 论文 | 首次/第一次更新版本 | 219/1,200 COVID 三分类 | 与原论文口径一致 |
| 肺分割模型训练 | 含掩膜的第二次更新版 | 21,165 + 256×256 掩膜 | 整库掩膜配套 |
| 更大更干净的分割/分类 | COVID-QU-Ex(后继集) | 33,920 + 全量掩膜 | 官方团队新版本,掩膜更全更规范 |
| 纯研究避免混杂偏倚 | 需配合外部真实医院集 | 自定义 | 切勿单独用本库下临床结论 |
§3.1 模态详情
胸部 X 光(CXR)二维投影图像,采集自不同设备(不同机构/年代),随后被统一转码为 PNG 并多为白底裁剪、缩放到 299×299(个别早期说明提到 1024×1024 或 224)。因此模态层面存在两大系统性失真:其一,白底裁剪会去掉原图的周边暗区与部分背景结构,模型可能学到「裁剪方式」而非病变;其二,不同来源图像本身对比度、标记、分辨率差异巨大。配套掩膜为 256×256 二值 PNG(0/255),表示肺野区域,与图像文件名一一对应。
§3.2 按子集样本数
| 子集/类 | 图像数 | 占比 | 掩膜 | 上游主要来源 |
|---|---|---|---|---|
| Normal(正常) | 10,192 | ~48% | 有 | RSNA(8,851)+ Kaggle ChestX-ray pneumonia(1,341) |
| Lung Opacity(肺密度影) | 6,012 | ~28% | 有 | RSNA 全部 |
| COVID-19 | 3,616 | ~17% | 有 | PadChest、德国、SIRM/GitHub/Kaggle/Twitter 等 |
| Viral Pneumonia(病毒性肺炎) | 1,345 | ~6% | 有 | Kaggle ChestX-ray(儿科) |
| 合计 | 21,165 | 100% | 全配 | 多源 |
注:个别镜像或仓库把合计记为 21,175,与多数同行评审论文引用的 21,165 不一致——差异来自再打包时是否含掩膜/误放文件,务必锁定你下载的具体版本。
§3.3 格式
| 内容 | 格式 | 尺寸 | 说明 |
|---|---|---|---|
| CXR 图像 | PNG | 多为 299×299 | 灰度/单通道,白底 |
| 肺掩膜 | PNG | 256×256 | 二值 0/255 |
| 元数据 | xlsx / csv | — | 记录每图参考来源 |
| 目录结构 | 按类分文件夹 | — | COVID / Lung_Opacity / Normal / Viral Pneumonia |
格式细节补充:多数图像是「白底 + 黑/灰肺野」的灰度 PNG,通道为单通道;不少版本虽以 RGB 保存但三通道数值相同。加载时按单通道读入、再复制为 3 通道喂 CNN 即可省显存。掩膜是 0/255 的硬二值图,训练分割时应归一化为 0/1 float,并用 sigmoid + Dice 损失而非软标签。
§3.4 存储大小
全量(四分类含掩膜)约 1.15 GB;单版本镜像约 564 MB;部分整理镜像约 816 MB。尺寸因是否含掩膜、是否重压、格式转换而异,下载前请核对 Kaggle 页面标注。
下载后务必先核对计数与尺寸,再动工。常见错误是假设合计 21,165 而实际镜像含掩膜目录结构不同导致读不全:
import os
from pathlib import Path
root = Path("./COVID-19_Radiography_Dataset")
for cls_dir in sorted(root.iterdir()):
if not cls_dir.is_dir():
continue
# 探测真实图像路径(可能是 类/images 或直接类/*.png)
sub = cls_dir / "images" if (cls_dir / "images").is_dir() else cls_dir
pngs = list(sub.glob("*.png"))
# 掩膜子目录探测
masks = list((cls_dir / "masks").glob("*.png")) if (cls_dir / "masks").is_dir() else []
total_bytes = sum(f.stat().st_size for f in pngs)
print(f"{cls_dir.name:16s} 图 {len(pngs):6d} 掩膜 {len(masks):6d} 约 {total_bytes/1e6:7.1f} MB")
§3.5 标注方式
标注为自动/弱监督 + 继承模式:类别标签并未由本库团队用独立影像医师逐张复读,而是继承自各上游公开库(RSNA 的 radiologist 标注、Kaggle pneumonia 的儿科标签、Cohen/SIRM 的疫情收集等)及同行评审论文图片说明。这意味着标签质量高度依赖上游,且存在「RSNA opacity 与 normal 边界模糊」「儿科正常影像混入」等系统性标签问题。
- COVID 标签:多数来自 RT-PCR 阳性患者或文献已报告病例,属于「感染学金标准」而非「放射学金标准」;X 光上可见性不等于 PCR 阳性。
- Lung Opacity 标签:纯放射学所见标签(RSNA),语义是「肺野存在密度增高影」,与 COVID/肺炎的病理不完全等价。
- Normal 标签:放射学「无异常」判断,来自 RSNA 正常例 + 儿科 pneumonia 库正常子集,年龄构成异质。
- Viral Pneumonia 标签:沿用儿科肺炎数据集标签,多为「病毒性肺炎」临床/影像综合判断。
| 类别 | 标签语义来源 | 性质 | 潜在问题 |
|---|---|---|---|
| COVID | RT-PCR / 文献确认 | 感染学标签 | X 光与 PCR 阳性不完全一致 |
| Lung Opacity | RSNA 放射学 | 放射所见标签 | 边界宽泛,与 Normal/COVID 易混 |
| Normal | RSNA / 儿科库 | 无异常判断 | 儿科混杂年龄 |
| Viral Pneumonia | 儿科肺炎库 | 临床+影像标签 | 可能非 COVID、非成人 |
§3.5 标注方式
标注为自动/弱监督 + 继承模式:类别标签并未由本库团队用独立影像医师逐张复读,而是继承自各上游公开库(RSNA 的 radiologist 标注、Kaggle pneumonia 的儿科标签、Cohen/SIRM 的疫情收集等)及同行评审论文图片说明。这意味着标签质量高度依赖上游,且存在「RSNA opacity 与 normal 边界模糊」「儿科正常影像混入」等系统性标签问题。
§3.6 标注者资质与一致性
由于标注由多源上游提供且无统一复读,标注者资质、判读标准、语言/语义口径均不一致。RSNA 部分源自其 Detection Challenge 的标注(有影像医师参与),而 viral pneumonia 来自儿科数据集(可能为儿童肺炎而非成人)。跨类之间缺乏统一判读协议,也未公布类间一致性(kappa)数据——这是本库与单中心专家标注数据集(如 BIMCV-COVID)的本质差别。
§3.7 采集周期
新冠疫情早期(约 2019-2021)集中聚合,分阶段发布更新;第二次更新完成后主库基本停更,团队后续转向 COVID-QU-Ex。因此本库反映的是疫情早期影像与当时公开库的构成,不代表当下临床。
§3.8 地域覆盖
多源聚合覆盖意大利、巴基斯坦、孟加拉、卡塔尔、美国等多地公开库。地域多样是本库优点(设备差异大、可测鲁棒性),也带来混杂(来源与国家、设备、年代耦合)。严格说它并非单一可界定的人群队列,无法给出确定的地域人口学。
§3.9 设备规格
无统一设备信息。上游图像来自不同厂商/年代的 X 光机与 DR/CR 系统,采集协议(kVp/mAs、后处理)各异,且无法追溯到个体设备型号。对设备敏感的鲁棒性实验需意识到:设备差异已被编码进图像并可能与标签混杂。
§3.10 深度溯源链
COVID 图源:约 2,473 张 PadChest、183 张德国某医学院、559 张 SIRM/GitHub/Kaggle/Twitter、400 张另一 GitHub;Normal:8,851 张 RSNA + 1,341 张 Kaggle pneumonia;Lung Opacity:6,012 张 RSNA;Viral Pneumonia:1,345 张 Kaggle ChestX-ray。COVID 图像早期还源自 Cohen covid-chestxray/SIRM 及约 43 篇出版物,各图参考来源记录于 metadata。可追溯性仅到「来源库」一级,无法到患者或具体采集机构内部。
§4 数据结构
§4.0 目录树
COVID-19_Radiography_Dataset/
├── COVID/ # 3,616 张
│ ├── images/ # (部分镜像结构)299×299 PNG
│ └── masks/ # 256×256 二值肺掩膜(文件名与图像对应)
├── Lung_Opacity/ # 6,012 张
│ ├── images/
│ └── masks/
├── Normal/ # 10,192 张
│ ├── images/
│ └── masks/
├── Viral Pneumonia/ # 1,345 张
│ ├── images/
│ └── masks/
├── README.md.txt # 数据说明(版本、来源、引用)
├── COVID.metadata.xlsx # 每图参考来源元数据
├── Normal.metadata.xlsx
└── Viral Pneumonia.metadata.xlsx
注:不同镜像/再打包版本目录结构可能不同(有的类目录下直接放 PNG,无 images/masks 子目录)。使用前先
find确认真实层级。
§4.1 DAIMS 字段字典
核心字段主要来自 xlsx 元数据与文件名。以文件名 + 类目录为最小样本单元。
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| filename | Text | 图像文件名(PNG) | COVID-1234.png | 主键/加载 | 低 | 缺图则整行删 | 库内唯一文件名 |
| class | Text(目录) | 类别标签 | COVID / Normal / Lung_Opacity / Viral Pneumonia | 分类标签 | 高(多源语义混用) | 无 | 四值 |
| source_reference | Text | 上游来源/文献引用 | PadChest / RSNA / 论文 PMID | 溯源/去重审计 | 中(部分缺失) | 空值常见 | 自由文本 |
| mask_present | Bool | 是否含肺掩膜 | True | 分割训练开关 | 低 | — | True/False |
| image_width/height | Integer | 像素尺寸 | 299×299 | resize 校验 | 低 | 多为 299 | 因源而异 |
| mask_size | Integer | 掩膜尺寸 | 256 | 对齐 | 低 | 常为 256 | 256 |
| modality | Text | 影像视图 | PA / AP | 分层分析 | 中(大量缺失) | 缺失 | PA/AP/未知 |
| device/model | Text | 采集设备 | 未知 | 域分析 | 高(基本缺失) | 缺失 | 未知 |
| acquisition_site | Text | 采集机构 | RSNA / PadChest / SIRM | 来源隔离划分 | 中(部分缺失) | 缺失 | 来源名 |
| study/patient | Text | 患者/检查级标识 | 无 | 去重审计 | 高(结构性缺失) | 缺失 | 无 |
关键提示:本库的「信息」大多附着在类目录与文件名上,而非一张规整关系表。xlsx 元数据主要为 COVID / Normal / Viral Pneumonia 三类提供参考来源,Lung Opacity 类往往没有对应详细元数据。因此做数据字典时,最可靠的最小单元是「(类目录, 文件名)」二元组。
§4.1b 读取元数据示例
import pandas as pd
from pathlib import Path
root = Path("./COVID-19_Radiography_Dataset")
# metadata 文件通常在根目录,文件名按类命名,如 COVID.metadata.xlsx
for meta in sorted(root.glob("*.xlsx")):
df = pd.read_excel(meta)
print(meta.name, "→", df.shape, "列:", list(df.columns)[:8])
# 观察 source_reference 缺失率,评估来源可追溯性
if "source_reference" in df.columns or "FILE NAME" in df.columns:
col = "source_reference" if "source_reference" in df.columns else df.columns[1]
print(" reference 缺失率:", float(df[col].isna().mean()))
各版本 xlsx 的列名不一致(有的叫 FILE NAME、有的叫 Reference),勿硬编码列名;用位置/关键词探测最稳妥。
§4.2 标签分布
| 标签 | 计数 | 相对频率 | 性质 |
|---|---|---|---|
| Normal | 10,192 | ~48% | 放射学「无异常」对照 |
| Lung Opacity | 6,012 | ~28% | 放射学「肺密度影」标签 |
| COVID-19 | 3,616 | ~17% | RT-PCR 相关/文献确认 |
| Viral Pneumonia | 1,345 | ~6% | 儿科病毒性肺炎标签 |
数据在「正常 vs 异常」上相对平衡(约 48% vs 52%),但类别间严重失衡,Viral Pneumonia 与 COVID 是少数类。直接用准确率会被多数类主导,必须看灵敏/特异/调和均值与 AUC。
处理类别失衡的可选项:
| 方法 | 做法 | 适用 | 副作用 |
|---|---|---|---|
| 加权损失 | CE 权重按 1/频率 |
四分类 | 需调权,极端类易过拟合 |
| Class-balanced sampler | batch 内均匀采样各类 | 通用 | 改变数据分布,配合早停 |
| 过采样(复制/增强少数类) | SMOTE(图像难用)或增强复制 | 少样本 | 慎防过拟合 |
| 欠采样多数类 | 抽 Normal | 快速实验 | 丢信息 |
| 阈值移动 | 后验按患病率调阈值 | 二分类 | 需外部校准 |
# 加权 CE 示例(按类别频率反比)
import torch.nn as nn
counts = torch.tensor([10192, 6012, 3616, 1345], dtype=torch.float32) # 按你的类顺序
weights = (1.0 / counts) * counts.sum() / 4.0
criterion = nn.CrossEntropyLoss(weight=weights)
说明:上述四类的计数请按你下载版本实际探测的结果填写,并让代码从目录统计自动生成,避免硬编码版本差异。类别失衡的缓解只是「训练技巧」,不能消除来源混杂这一结构性偏倚。
§4.3 关键统计
- 总图像 21,165 张(主流口径),掩膜整库配套。
- 尺寸主流 299×299(图像)/256×256(掩膜)。
- 无患者级 ID、无年龄/性别/随访列、无时间戳系统列。
- 来源级可追溯(metadata),患者级不可追溯。
- 各镜像去重后唯一图像约 19,133(21,165 中剔除近重复)。
§4.4 数据层级
层级极简:患者 → 图像(一图一标签)→ 像素级掩膜。库内不设患者→检查→序列→切片的医院层级;缺失的是「患者」这一级——这是本库结构性缺口,也是它无法支撑患者级流行病学与真实泛化评估的根本原因。掩膜作为图像的像素级附属存在,可支撑分割任务。
§4.5 缺失值
| 信息 | 缺失程度 | 性质/编码建议 |
|---|---|---|
| 患者 ID | 全部缺失 | 结构性缺失(无此设计),不可推断 |
| 人口学(年龄/性别) | 绝大部分缺失 | 非随机缺失;儿科与成人混杂但无标记 |
| 来源 reference | 部分缺失 | 部分图像无来源标注,无法补全 |
| 掩膜 | 与图像对应 | 主流版逐图配套 |
| 采集设备/时间 | 全部缺失 | 无记录 |
缺失多为结构性(库设计层面就没采集),处理时不应臆测填充;尤其在年龄混杂下,正常类儿科影像无法靠「缺年龄」字段识别。
§5 划分与使用建议
§5.1 官方划分
无官方训练/验证/测试划分。Kaggle 页面仅按类分文件夹,未提供跨病人隔离的划分文件。
§5.2 社区惯例划分
社区普遍采用随机划分:图像级 8:2(训练:测试)或 7:1.5:1.5(训练:验证:测试),按类分层(stratified)。个别复现用 8:1:1。由于无患者级 ID,这些划分本质是图像级随机划分,存在同一患者多张图跨集泄漏的隐患(镜像须先自行去重)。
§5.3 泄漏风险(重点)
这是本库最大方法学风险,至少三层:
- 图像级泄漏:无患者级 ID,同一患者/同源图可能同时出现在训练与测试,使指标虚高。缓解:先用感知哈希/MD5 去重(镜像实践表明 21,165 → 约 19,133 唯一),再做图像级划分,勿做纯随机全库划分。
- 来源泄漏(更隐蔽):各源图在亮度、边框、标记、分辨率上可被模型轻易识别,模型可能在「学识别来源」而非「学识别病变」。缓解:做「按来源分组留一源出测试」的划分,或裁剪边框只留肺野。
- 跨库复用泄漏:本库大量复用 RSNA/Cohen/ChestX-ray14 等库,若外部验证集也来自这些库,会出现「训练/验证同源」的假泛化。缓解:外部验证务必用全新独立医院数据。
§5.4 交叉验证建议
用按来源分层的 K 折(K=5)交叉验证,并在每折内报告类加权 F1 与调和均值(Sens+Spec 的 HM)。仅在训练折内做数据标准化参数拟合(均值/方差),严禁整库一起归一化。记录每一折的类混淆矩阵,重点看 COVID ↔ Viral Pneumonia、Lung Opacity ↔ Normal 的混淆。
由于本库无来源列可用作 sklearn 的 group,实际做法是从文件名/来源 metadata 反查来源库归属后构造 group 数组,再调用 GroupKFold 或 StratifiedGroupKFold(见 §5.6 代码)。
§5.5 外部验证建议
结论级实验必须外部验证。外部测试可用 RICORD(RSNA 国际 COVID 开放放射学库)、CheXpert/MIMIC-CXR(胸部病变)、以及真实医院 PCR 对照队列(如 Leeds 教学医院集)。性能相对内部通常显著下降——这是多源聚合库的常态,报告时要区分「内部报告」与「外部泛化」两组数字。
§5.6 划分实现示例
场景分级:要做严谨的结论实验 → 用 GroupKFold(按来源分组)+ phash 去重;只做快速复现 → 图像级分层随机即可,但别把结果当临床性能。
import numpy as np
import pandas as pd
from pathlib import Path
from sklearn.model_selection import StratifiedGroupKFold
# 1) 建表:每行 = (path, class, source_group)
records = []
root = Path("./COVID-19_Radiography_Dataset")
for cls_dir in sorted(root.iterdir()):
if not cls_dir.is_dir():
continue
img_dir = cls_dir / "images" if (cls_dir / "images").is_dir() else cls_dir
for p in img_dir.glob("*.png"):
# 无真实来源列时,用文件名前缀近似分组(按源库命名习惯)
src = infer_source(p.name) # 你自定义的溯源函数
records.append((str(p), cls_dir.name, src))
df = pd.DataFrame(records, columns=["path", "label", "source"])
# 2) StratifiedGroupKFold:既按类别分层,又保证同来源不进不同折
sgkf = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=42)
for fold, (tr, te) in enumerate(sgkf.split(df["path"], df["label"], df["source"])):
print(f"fold {fold}: train {len(tr)} / test {len(te)}")
若无法可靠推断来源,至少用 phash 去重后做随机分层划分,并明确报告「未做来源隔离」这一局限。
§6 AI 就绪指南
§6.0 云端快速启动
Kaggle Notebook / Colab 可直接读取该数据集,无需本地下载:Kaggle 上 input/covid19-radiography-database 即挂载为类目录。本地使用建议先下载全量(约 1.15 GB)再按需解析。GPU 建议至少 6 GB 显存(单卡即可跑主流 CNN 分类),进阶分割训练建议 10-16 GB。
§6.1 快速上手
目录结构预期:下载解压后根目录含四类文件夹 + metadata;部分镜像把图像放进
images/、掩膜放进masks/,先find确认真实层级。
data_root 拼接关系:data_root/类名/图像名.png。
最小可用子集:若只想快速验证,每类抽 100-200 张即可跑通流程,不必等全量下载。
import os
from pathlib import Path
# 关键:先探明真实目录结构(不同镜像/版本可能不同)
data_root = Path("./COVID-19_Radiography_Dataset") # 改成你的解压路径
classes = sorted([p.name for p in data_root.iterdir() if p.is_dir()])
print("找到的类目录:", classes)
# 用 min() 每类只取 200 张做冒烟测试,避免首次跑读全量 2.1 万张
mini_samples = {}
for c in classes:
img_dir = data_root / c
if (img_dir / "images").exists():
img_dir = img_dir / "images"
files = sorted(img_dir.glob("*.png"))[:200]
mini_samples[c] = files
print(c, "→ 冒烟样本", len(files), "张")
§6.2 数据获取
| 项目 | 说明 |
|---|---|
| 下载渠道 | Kaggle 主仓库免费下载(约 1.15 GB 含掩膜) |
| 镜像 | Hugging Face / GitHub 有整理镜像(含去重版,约 816 MB) |
| 需账户 | Kaggle 下载需登录 Kaggle 账号;HF 可匿名 |
| 授权 | 学术/非商业用途(镜像许可不一,见 §0 合规免责) |
| 引用 | 使用须引用 Chowdhury 2020 与 Rahman 2021 两篇论文 |
# Kaggle API 下载示例(先 pip install kaggle 并配置 ~/.kaggle/kaggle.json)
# 命令行:
# kaggle datasets download -d tawsifurrahman/covid19-radiography-database
# unzip -q covid19-radiography-database.zip -d ./COVID-19_Radiography_Dataset
依赖版本建议:
torch>=2.0、torchvision、opencv-python、pandas、scikit-learn、Pillow。掩膜读取用PIL.Image,二值化后转 float32。
§6.3 预处理全流程
流程:格式确认 → 清洗(去近重复)→ 标准化(白底裁剪/归一化)→ 增强。本库最需要的清洗步骤是「来源去重」与「边框裁剪」。
import cv2
import numpy as np
from pathlib import Path
def load_cxr(path, size=(299, 299), gray=True):
"""加载并统一为标准化输入。"""
img = cv2.imread(str(path), cv2.IMREAD_GRAYSCALE if gray else cv2.IMREAD_COLOR)
img = cv2.resize(img, size, interpolation=cv2.INTER_AREA) # 统一尺寸
return img
def to_float(img):
"""灰度 -> 0..1 float,可选做 CLAHE 增强。"""
img = img.astype(np.float32) / 255.0
return img
# 去近重复:用感知哈希去重(镜像实践从 21165 去重到约 19133 张)
import imagehash
from PIL import Image
def phash_dedup(file_paths, hash_size=8, cutoff=5):
seen, keep = {}, []
for p in file_paths:
h = imagehash.phash(Image.open(p).convert("L"), hash_size=hash_size)
if not any(h - o <= cutoff for o in seen.values()):
seen[str(p)] = h
keep.append(str(p))
return keep
# 数据标准化:均值/方差拟合必须在训练折上完成,勿全库一起算
推荐的标准增强/标准化管线(训练态):用 CLAHE 统一对比度、翻转做几何增强、随机亮度/对比度微调。注意增强参数写进 config 并在论文声明,否则复现困难:
import albumentations as A
from albumentations.pytorch import ToTensorV2
train_tf = A.Compose([
A.Resize(299, 299),
A.CLAHE(clip_limit=2.0, tile_grid_size=(8, 8), always_apply=True), # 统一对比度
A.HorizontalFlip(p=0.5),
A.ShiftScaleRotate(shift_limit=0.05, scale_limit=0.1, rotate_limit=10, p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.1, contrast_limit=0.1, p=0.5),
A.Normalize(mean=(0.5,), std=(0.5,)),
ToTensorV2(),
])
可选:肺野裁剪。为消除背景/边框捷径,用自带掩膜把肺野裁剪到统一尺寸再分类:
def crop_to_lung(img_gray, mask_bin, margin=10):
"""img_gray, mask_bin 为同尺寸 numpy 灰度/二值图,返回肺野 bounding box 内裁剪。"""
ys, xs = np.where(mask_bin > 0)
if len(xs) == 0:
return img_gray # 无掩膜时退回原图
x0, x1 = xs.min(), xs.max(); y0, y1 = ys.min(), ys.max()
return img_gray[max(y0-margin,0):y1+margin, max(x0-margin,0):x1+margin]
小结:清洗(去重)≥ 标准化(只留肺野/归一化)≥ 增强。许多 2020-2021 论文跳过了去重与来源隔离,这正是库内指标虚高的主因;先把去重与肺野裁剪做对,再谈增强。
§6.4 PyTorch DataLoader
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
from PIL import Image
class CovidCXR(Dataset):
"""按类目录读取,返回图像 + 标签。data_root 下每个子目录名即类名。"""
def __init__(self, root, transform=None):
self.root = Path(root)
self.classes = sorted([p.name for p in self.root.iterdir() if p.is_dir()])
self.class2idx = {c: i for i, c in enumerate(self.classes)}
self.samples = []
for c in self.classes:
img_dir = self.root / c / "images" if (self.root / c / "images").exists() else self.root / c
for f in sorted(img_dir.glob("*.png")):
self.samples.append((str(f), self.class2idx[c]))
def __len__(self):
return len(self.samples)
def __getitem__(self, i):
path, label = self.samples[i]
img = Image.open(path).convert("L").convert("RGB") # 灰度转 3 通道喂 CNN
if self.transform:
img = self.transform(img)
return img, label
# 标准化 + 轻增强
transform = transforms.Compose([
transforms.Resize((299, 299)),
transforms.RandomHorizontalFlip(p=0.5),
transforms.ToTensor(),
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]),
])
ds = CovidCXR("./COVID-19_Radiography_Dataset/Normal_Subset", transform=transform) # 先跑小子集
dl = DataLoader(ds, batch_size=32, shuffle=True, num_workers=2)
print("子集样本数", len(ds))
若要做肺部分割,需要同时读取图像与其同名掩膜。掩膜常单独放在
类/masks/下,文件名与图像一致。下面给出返回(image, mask)的分割版 Dataset:
class CovidSeg(Dataset):
"""返回 (image, binary_mask),图像与掩膜文件名一致。"""
def __init__(self, img_root, mask_root, size=(256, 256), img_tf=None):
self.imgs = sorted(Path(img_root).glob("*.png"))
self.mask_root = Path(mask_root)
self.size = size
self.img_tf = img_tf
def __len__(self):
return len(self.imgs)
def __getitem__(self, i):
img = Image.open(self.imgs[i]).convert("L").resize(self.size)
m_path = self.mask_root / self.imgs[i].name # 同名掩膜
if not m_path.exists():
m_path = self.mask_root / self.imgs[i].stem.replace("_image", "") + ".png"
mask = Image.open(m_path).convert("L").resize(self.size)
# 图像归一化到 0..1,掩膜二值化到 0/1
img = np.array(img).astype(np.float32) / 255.0
mask = (np.array(mask) > 127).astype(np.float32)
img_t = torch.from_numpy(img).unsqueeze(0) # (1,H,W)
mask_t = torch.from_numpy(mask).unsqueeze(0)
return img_t, mask_t
# 用 DataLoader 组合
seg_dl = DataLoader(CovidSeg("./COVID-19_Radiography_Dataset/COVID/images",
"./COVID-19_Radiography_Dataset/COVID/masks"),
batch_size=16, shuffle=True)
掩膜文件名与图像名的对应关系在不同镜像有差异(有的需去掉
_image后缀、有的完全相同)。先打印一对核对,再写进 Dataset,避免静默错配导致分割标签全错。
§6.5 坑点 8 个
⚠️ 坑点 1:标签与来源完全混杂——模型学的可能不是疾病而是「来源库」(分类:数据泄漏 / 偏倚陷阱)
问题:本库的 COVID、Normal、Lung Opacity 图分别来自不同来源库,类别标签与来源数据集完全耦合。深度模型极容易学到「按来源区分」的捷径,而不是按病变识别,从而虚高在库内测试的性能。
症状:库内测试 AUROC 虚高(甚至近完美);换到真实医院外部数据后性能断崖式下跌;模型高亮的是图像边框/空白区而非肺野。
解决:
- 简单方法:训练一个「来源分类器」做 sanity check——若它仅凭图像就能 >90% 分出来源,说明存在严重来源捷径,切勿直接信任分类指标。
- 进阶方法:裁剪掉图像四周边框只留肺野(用自带掩膜 crop 后训练),或做「按来源分组、留一源出测试」的严格划分,报告跨源性能。
- SOTA 方法:报告时同时给出域泛化结果,并用 Grad-CAM/可解释性检查高亮是否落在肺野内,避免仅用库内指标下结论。
参考:https://arxiv-vanity.com/papers/2008.11572 ;https://www.alphaxiv.org/abs/2109.08020
⚠️ 坑点 2:无患者级去重——同一患者/同源图跨训练与测试泄漏(分类:数据泄漏)
问题:库内不设患者级 ID,也无患者级去重;各来源库图存在重复或近重复(同一影像在不同来源重复打包)。直接随机划分会让相似图同时进训练与测试,指标虚高。
症状:划分后验证/测试 AUROC 异常高(>0.99);换镜像/换来源子集后复现不出结果。
解决:
- 简单方法:按文件名去重(删完全同名),再随机划分。
- 进阶方法:用感知哈希(phash/pHash 或 MD5+影象哈希)剔除近重复,镜像实践表明 21,165 张去重后仅约 19,133 张唯一。
- SOTA 方法:在论文中明确报告「去重前后」两套指标,让读者看到泄漏对结果的贡献。
⚠️ 坑点 3:Lung Opacity 与 Normal 类边界模糊、标签噪声(分类:标签理解)
问题:Lung Opacity 类几乎全部来自 RSNA,标签是「肺密度影」这一较宽泛放射学所见;它与 Normal、COVID 的影像边界本就不清,且元数据存在来源错标(已有文献指出 RSNA 数据并入后部分标签与原始 ChestX-ray8 标签错位)。
症状:模型频繁把 Normal 判成 Lung Opacity、把 Lung Opacity 判成 COVID;混淆矩阵在这几类上极不干净。
解决:
- 简单方法:先做二分类(正常 vs 异常)而非四分类,规避边界类纠缠。
- 进阶方法:人工抽验 Lung Opacity 子集的标签纯度,剔除置信度低的模糊样本;或采用标签噪声鲁棒的损失(如对称 CE、peer loss)。
- SOTA 方法:重定义任务为「异常检出/肺野异常定位」,把 Lung Opacity 并入「非 COVID 异常」大类,减少对模糊边界的依赖。
参考:https://www.alphaxiv.org/abs/2109.08020 ;https://pmc.ncbi.nlm.nih.gov/articles/PMC9975856
⚠️ 坑点 4:白底裁剪与来源预处理差异——边框和背景成为泄漏信号(分类:预处理陷阱)
问题:图像被统一白底裁剪、缩放成 299×299,各来源的原始视野、暗边、文本标记(AP/PORTABLE/SUPINE)处理方式不一。CNN 可仅凭图像边框(不含病理信息)以 >90% 准确率识别来源库。
症状:Grad-CAM 高亮集中在边缘/角落;去掉边框后准确率骤降;跨库泛化差。
解决:
- 简单方法:集中裁剪掉四周固定比例的空白边缘,统一视野。
- 进阶方法:用自带肺掩膜 mask 掉背景只留肺野,把图像归一化为纯肺野,消除背景与标记干扰。
- SOTA 方法:对整库做统一的对比度与几何校正(CLAHE + 居中对齐),并在报告里声明预处理管线,保证可复现。
⚠️ 坑点 5:把库内高准确率当作临床性能——真实场景灵敏度被高估(分类:评估误用)
问题:大量 2020-2021 论文报告 96-99% 准确率,但多源聚合、无去重、来源混杂使这些库内数字被系统性高估。用它们宣传「AI 能诊断 COVID」有误导风险。
症状:库内 acc/AUC 接近 99%,外部真实医院数据上大幅回落(已有研究显示多个知名公开训练模型在独立医院数据上泛化差)。
解决:
- 简单方法:区分「内部报告」与「外部验证」,正文同时给两组数字。
- 进阶方法:用独立医院外部集(如 RICORD、Leeds 队列)评估,报告 sensitivity/specificity 而非只报 accuracy。
- SOTA 方法:遵循 Wynants 等系统性批判的规范——报告患者级而非图像级、做前瞻性验证、声明适用人群与阈值。
参考:https://www.alphaxiv.org/abs/2109.08020 ;http://www.findingbouken.com/chexnet-with-covid-19
⚠️ 坑点 6:儿科正常对照与成人病例混用——年龄成为强混杂(分类:偏倚陷阱)
问题:Normal 与 Viral Pneumonia 大量取自 Kaggle ChestX-ray(pneumonia),该库是广州妇女儿童医疗中心的儿科影像。COVID 阳性则多为成人。模型可能靠胸廓大小/形态等「儿科 vs 成人」特征分类,而非病变。
症状:在成人真实数据上假阳性/假阴性偏高;模型把儿童正常 X 光判成非 COVID 肺炎的概率异常。
解决:
- 简单方法:年龄/来源不可得时,至少剔除来自儿科源(Kaggle pneumonia)的正常对照,或对成人源做子集实验。
- 进阶方法:按来源库分层做消融,报告「排除儿科源后」的性能变化。
- SOTA 方法:改用成年人均匀覆盖的真实医院对照(如 CheXpert/MIMIC-CXR 成人子集)重建对照组,避免儿科混杂。
参考:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8086233 ;https://pmc.ncbi.nlm.nih.gov/articles/PMC9975856
⚠️ 坑点 7:版本与镜像数字不一致——21,165 还是 21,175?(分类:工程陷阱)
问题:主版本合计通常记 21,165,但个别 Kaggle 再打包、GitHub 仓库、教程里记成 21,175;部分版本含掩膜、部分不含,目录结构也不同。数字与结构差异会导致复现失败。
症状:复现他人论文时样本数与报告对不上;代码假设
images/子目录但实际图在类目录根下,报 FileNotFoundError。解决:
- 简单方法:锁定具体版本与来源(Kaggle 原始四分类含掩膜版),记录其 SHA/大小。
- 进阶方法:用
find/脚本探测真实目录与计数,把实际样本数写进实验配置(config),不硬编码 21,165。- SOTA 方法:用带版本哈希的镜像(如 Hugging Face 整理版)并记录 commit,确保他人可复现同一数据快照。
参考:https://github.com/ThuraAung1601/Deep-Chest-X-ray-Covid19-Classification ;https://huggingface.co/datasets/umairinayat/fyp-dataset
⚠️ 坑点 8:类别严重不平衡 + 评价指标只看 accuracy 会失真(分类:评估误用)
问题:COVID 仅占 ~17%、Viral Pneumonia 仅 ~6%,多数类 Normal 占 ~48%。只报 accuracy 会被多数类主导,模型可能对少数类灵敏度极低仍显示高准确率。
症状:acc 高但 COVID 召回率(sensitivity)低;新发疫情场景漏检增多。
解决:
- 简单方法:改用加权 F1、每类 recall、以及 Sens+Spec 的调和均值(HM)等指标,并给出混淆矩阵。
- 进阶方法:对 COVID/Viral 少数类做 SMOTE/过采样或重加权损失(weighted CE),并配合增强降低过拟合。
- SOTA 方法:用 AUC-ROC/AUC-PR 曲线下面积 + 阈值独立评估,并做类别不平衡敏感的交叉验证(见 §5.4)。
参考:https://doi.org/10.3390/app112210528 ;https://ar5iv.arxiv.org/html/2212.09276
§6.6 数据增强
安全 ✅:水平翻转、小幅随机缩放/平移、仿射旋转(±10°)、轻微对比度/亮度抖动、CLAHE、灰度归一化。这类增强符合 X 光几何对称性且不改变解剖含义。
危险 ❌:垂直翻转(破坏上下解剖)、大幅旋转/裁剪到丢肺、颜色通道置换到非 X 光语义、overly aggressive elastic 变形、以及在无肺掩膜时把增强作用到背景白区而引入伪影。对儿科混杂敏感的实验,增强也无法解决年龄混杂——那需数据侧修正。
§6.7 模型推荐
| 任务 | 推荐架构 | 说明 |
|---|---|---|
| 二分类筛查 | ResNet18/50、DenseNet121 | 轻量、易收敛,配合 CLAHE 效果稳 |
| 四分类 | DenseNet121、EfficientNet-B3 | 类别多需更大容量,注意类不平衡 |
| 肺部分割 | U-Net(原团队掩膜即基于 U-Net 训练) | 分割后分类可提升可解释可靠性 |
| 自监督预训练 | BYOL/SimCLR/SimSiam(文献基准已测) | 少量标注下提升少样本鲁棒性 |
选型与调参要点:
| 关注点 | 建议 |
|---|---|
| 冷启动 | 用 ImageNet 预训练权重 + 迁移学习;勿从零训练(样本有限) |
| 输入通道 | 灰度转 3 通道后按 ImageNet 归一化,或自算库内均值/方差 |
| 类别失衡 | 对 COVID/Viral 用加权 CE 或 focal loss;batch 内做 class-balanced sampler |
| 阈值 | 根据目标灵敏度/特异度调分类阈值,勿默认 0.5 |
| 过拟合 | 早停 + 轻增强 + dropout;去重后样本更少,正则更需加强 |
结论:模型选型不是这个库的核心难点,划分与去重才是。任何架构在「未去重随机划分」下都能刷出高 acc,却可能毫无临床意义。先固定严谨的评测协议(§5.6),再谈模型对比才公平。
§6.8 硬件需求
| 配置 | 用途 | 说明 |
|---|---|---|
| CPU + 8 GB RAM | 数据加载/去重/EDA | 足够,去重较慢 |
| 单 GPU 6-8 GB(T4) | 二/四分类训练 | 主流 CNN,batch 32 可行 |
| GPU 12-16 GB | 分割 + 全量微调 | U-Net 用自带掩膜 |
| 大内存 32 GB+ | 全库感知哈希去重 | 一次性载入哈希加速 |
§6.9 评估指标代码
类别失衡时,accuracy 会失真,务必同时给每类 recall、加权 F1 与 AUC。对二分类筛查,Sens+Spec 的调和均值(HM)比 accuracy 更贴近「既别漏 COVID、也别把正常人误判为异常」的临床需求。
from sklearn.metrics import (classification_report, confusion_matrix,
roc_auc_score, f1_score, recall_score)
import numpy as np
def evaluate(y_true, y_pred, y_score=None, class_names=None):
print(classification_report(y_true, y_pred, target_names=class_names, digits=3))
print("Confusion matrix:\n", confusion_matrix(y_true, y_pred))
# 少数类召回率(尤其 COVID 与 Viral Pneumonia)
labels = np.unique(y_true)
for lb in labels:
r = recall_score(y_true == lb, y_pred == lb)
print(f"class {lb} recall: {r:.3f}")
if y_score is not None and len(labels) == 2:
auc = roc_auc_score(y_true, y_score)
# 在最优/目标阈值下算 Sens 与 Spec 的调和均值
print("AUC-ROC: %.4f" % auc)
# 二分类「调和均值 HM」示例
def harmonic_mean(sens, spec):
return 2 * sens * spec / (sens + spec)
# sens = 95.11/100, spec = 95.59/100 → HM ≈ 95.35%
print("HM = %.2f%%" % (100 * harmonic_mean(0.9511, 0.9559)))
参考 Rahman 2021 报告口径:segmented-lung 结果 acc 95.11%、specificity 95.59%——报告时把这几个指标(acc/sens/spec/F1/HM/AUC)一并给出,而非只挑好看的。
§6.10 MLOps 笔记
- 数据版本化:固定 Kaggle 版本/镜像哈希,避免漂移。
- 复现性:把去重阈值、划分种子、增强开关、CLAHE 参数全部写入 config 与实验日志。
- 监控:记录来源级混淆(分来源报 recall),及早发现「模型依赖来源捷径」。
- 报告:任何面向外部的性能声明,必须附带外部验证集结果与患者级(非图像级)口径说明。
实验 Checklist(开跑前逐项确认):
| 项目 | 是否就绪 | 备注 |
|---|---|---|
| 版本已固定(含掩膜四分类 / 快照哈希) | ☐ | 避免 21,165 vs 21,175 漂移 |
| 已 phash 去重(去重后数量已记录) | ☐ | 消除图像级泄漏 |
| 划分含来源组 / 至少分层+固定种子 | ☐ | 控制来源混杂 |
| 已做「排除儿科源」的稳健性实验 | ☐ | 检验年龄混杂影响 |
| 指标含每类 recall + AUC + HM | ☐ | 不被 accuracy 误导 |
| 若有临床声明,已准备外部医院验证 | ☐ | 无外部则不下临床结论 |
完成此清单后,你对本库的结果在方法论上才算「站得住脚」。缺任一项,报告时都应在局限中如实说明。
§7 质量评估与局限性
§7.1 已知偏倚表
| 类型 | 描述 | 严重程度 | 缓解 |
|---|---|---|---|
| 来源混杂(confounding) | 标签与来源库完全耦合,模型学来源 | 高 | 按来源划分、边框裁剪、可解释性检查 |
| 标签噪声/语义混用 | RSNA opacity、儿科肺炎、RT-PCR 标签口径不一 | 高 | 子集重审、稳健损失、粗粒度任务 |
| 年龄混杂 | 正常/病毒肺炎多为儿科 | 中-高 | 剔除儿科源或重建成人对照 |
| 患者级泄漏 | 无去重、同源图跨集 | 中-高 | 感知哈希去重 |
| 类不平衡 | COVID ~17%、Viral ~6% | 中 | 重采样、加权损失、AUC/混淆矩阵 |
| 设备/后处理异质 | 多机构对比度标记不一 | 中 | CLAHE 统一、只留肺野 |
§7.2 标注质量
标注继承自多源上游、无统一复读协议、无类间一致性报告。RSNA 部分有影像医师参与,儿科 viral 标签为数据集沿用,COVID 为 RT-PCR 相关/文献标注。整体为弱金标准,标签与真实现象存在系统偏差;对结论型研究,标签纯度是最大不确定度来源。
§7.3 泛化性
| 场景 | 失效风险 | 证据/说明 |
|---|---|---|
| 库内随机划分 | 低(但虚高) | 来源混杂使库内指标乐观 |
| 跨来源(跨库) | 中-高 | 训练/验证同源则假泛化 |
| 真实医院外部数据 | 高 | 已有公开模型在独立医院集泛化差(见 §8.1/§7.8) |
| 不同地域/设备 | 中-高 | 多源本身含差异,但未在真实场景验证 |
| 时间推移(新变种/疫苗后) | 高 | 反映疫情早期影像,不代表当下 |
§7.4 伦理
- 隐私:图像聚合自公开库与文献,不附带患者 ID;但来源文档不全,需按各上游原始授权审慎使用。
- 误用风险:库内高准确率易被误读为「AI 可诊断 COVID」,须在论文中明确适用边界,避免放大临床误诊。
- 合规:学术/非商业用途 + 各镜像许可不一,商用与临床部署前必须获得正确授权。
§7.5 公平性
人群代表性无法追溯:无年龄/性别/种族的可靠标注;儿科对照混入加剧年龄不公。任何关于公平性的声明都缺数据支撑,应在论文中如实声明「未做人口学公平性评估」,而非隐瞒。
§7.6 数据漂移
本库为 2019-2021 疫情早期快照且已基本停更,作为静态训练语料必然随时间漂移(影像设备、疾病表现、纳入人群均变)。用于当下任务需配合新鲜数据做域适应与持续再训练。
§7.7 DAIMS 24 项评估表
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本) | ⚠️ | 以文件系统目录存储,无统一宽表;metadata 分散 |
| 2 | 有唯一标识符列 | ❌ | 仅文件名唯一,无患者级/样本级稳定 ID |
| 3 | 无 Unicode 或特殊字符 | ✅ | 类名为英文、图像 PNG 干净 |
| 4 | 无重复行 | ❌ | 存在跨源近重复,需自行去重(21,165→约 19,133) |
| 5 | 缺失值已识别并编码 | ❌ | 年龄/性别/来源大量缺失且无缺失标记 |
| 6 | 标签可标识且语义明确 | ⚠️ | 四类名清晰但语义混用、边界模糊 |
| 7 | 罕见类已分组处理 | ❌ | Viral Pneumonia ~6% 未给分组建议 |
| 8 | 偏倚已评估 | ⚠️ | 本库已有偏倚研究,但库本身无官方偏倚报告 |
| 9 | 数据字典存在 | ⚠️ | 无正式 schema;仅 metadata.xlsx + README |
| 10 | 信息性缺失有解释 | ❌ | 无官方对结构性缺失的说明 |
| 11 | 设备/采集信息记录 | ❌ | 无设备信息 |
| 12 | 共线性已分析 | ❌ | 来源与标签共线未官方说明 |
| 13 | 编码映射到标准(ICD/SNOMED) | ❌ | 未提供到 ICD/SNOMED 的官方映射 |
| 14 | 时间戳处理 | ❌ | 无系统时间戳列 |
| 15 | 划分建议 | ❌ | 无官方划分 |
| 16 | 泄漏已讨论 | ❌ | 无官方去重/泄漏声明(社区代劳) |
| 17 | 标签分布已给出 | ✅ | Kaggle 页面/README 有类计数 |
| 18 | 测量偏倚已讨论 | ⚠️ | 来源混杂偏倚被外部文献揭示,非官方 |
| 19 | 外部验证建议 | ❌ | 无官方外部验证方案 |
| 20 | 版本记录 | ⚠️ | 有发布历史但无版本号/DOI;数字在镜像间漂移 |
| 21 | 预处理脚本提供 | ⚠️ | GitHub 提供 Matlab 代码,Python 复现由社区补足 |
| 22 | 合规要求明确 | ⚠️ | 学术/非商业,但各镜像许可不一 |
| 23 | 多模态/多任务对齐 | ✅ | 分类图像与掩膜对齐,文件名一一对应 |
| 24 | 去标识化 | ⚠️ | 图像来自公开库/文献,无患者 ID,但上游去标识不一 |
DAIMS 评分:11.5 / 24
评分解读:该库作为「快速开放的聚合影像库」得分偏低是结构性的——它几乎完全不满足 DAIMS 中关于唯一标识、缺失编码、设备记录、映射、划分、泄漏与版本化的企业级要求。亮点集中在格式干净(目录规整、无特殊字符、图/掩膜对齐)与基础可用性(标签分布、版本历史有叙述)。
对你意味着什么:别把它当成可直接喂进生产的「合格数据产品」。它的正确用法是研究试场而非生产数据源——你要自己补做去重、划分、来源隔离与外部验证这些 DAIMS 缺口。每一条红色/橙色缺口都对应你实验里必须额外写的一步:去重脚本、按来源留一出测、外部医院验证、明确的许可确认。若你的目标是临床可信结论,请优先选择有患者级 ID、官方划分与专家标注的数据集(如单中心 BIMCV 或更新的 COVID-QU-Ex 仍不够——真正需要医院流程库)。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| RICORD + CheXpert | RSNA / Stanford | COVID 检测泛化 | Sensitivity / Spec | 明显下降 | 基于公开训练库的模型在独立库上泛化有限 |
| Leeds Teaching Hospital | UK NHS | COVID / 肺炎诊断 | Acc / Sens | 明显下降 | 公开库训练模型真实场景性能缩水,见 §8.1 |
| Cross-source(跨来源训练/测试) | 社区复现 | 来源隔离评测 | 分类 acc / AUC | 中度下降 | 按来源隔离后性能回落,说明模型依赖来源捷径 |
规律:任何声称「高泛化」的结论,必须用上表这类独立外部集重测。文献已反复证明,仅在本库内部随机划分得到的 acc/AUC 明显偏乐观,外部验证才是临床可信度的判据。
§8 基准性能与生态
§8.1 排行榜
⚠️ 下表数字不可直接跨论文比较:不同论文用不同版本(2 类/3 类/4 类、含/不含掩膜)、不同划分(有无去重、是否来源隔离)与不同指标,仅作生态参考。
| 排名 | 模型/方法 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| — | 原团队 CNN 集成(3 类) | acc 98.3% | 2020 | 迁移学习 + 增强 | Chowdhury et al., 2020, IEEE Access, DOI 10.1109/ACCESS.2020.3010287 | GitHub tawsifur |
| — | 集成 CNN + 重采样(v2) | acc 99.23% / AUC 99.97% | 2021 | 加权损失/重采样+集成 | Ensemble Deep Learning for COVID-19, 2021, Applied Sciences, DOI 10.3390/app112210528 | 见论文 |
| — | 分割后分类(Rahman 2021) | acc 95.11% | 2021 | U-Net 分割 + CLAHE | Rahman et al., 2021, Comput Biol Med, DOI 10.1016/j.compbiomed.2021.104319 | GitHub tawsifur |
| — | 自监督(BYOL/SimSiam/SimCLR 等) | 见原表 AUC/HM | 2022 | 自监督预训练 | COVID Detection Self-Supervised Transfer Learning, 2022 | arXiv 2212.09276 |
| — | DenseNet121(4 类去重重训) | acc ~96.17% | — | MD5+phash 去重 | Hugging Face 整理镜像 | huggingface umairinayat |
标注为何不可直接比较:各方法数据集版本、划分策略(去重 vs 不去重、来源隔离 vs 随机)、预处理(CLAHE、肺分割与否)与测试集规模差异极大,库内高 AUC(如 99.97%)多为未去重随机划分下的乐观值。
§8.2 SOTA 总结与选型建议
文献共识:库内高准确率(>97%)普遍来自未加去重与来源隔离的乐观评估;一旦做来源隔离、去重或外部医院验证,性能显著回落。选型建议:优先采用「肺野裁剪 + 来源隔离划分 + 外部验证」的稳健评估框架,而非追逐库内 AUC 峰值。分割辅助(U-Net 掩膜)能提升可解释可靠性而非必然提升原始 acc。
§8.3 评测协议
建议协议:感知哈希去重 → 按来源分层 K 折 → 只留肺野输入 → 报告加权 F1、每类 recall、AUC,以及「排除儿科源子集」的稳健性结果。论文必须声明数据集版本、去重阈值、划分种子,保证可复现。
推荐的「最小可信」协议清单(写论文时可逐条勾选报告):
| 步骤 | 必报参数 | 目的 |
|---|---|---|
| 版本 | Kaggle 版本 / 镜像 commit / 解压哈希 | 保证可复现 |
| 去重 | phash hash_size / 汉明阈值 / 去重后数量 | 消除图像级泄漏 |
| 划分 | K 折 / 种子 / 是否来源隔离 / 是否去儿科源 | 控制来源混杂与年龄混杂 |
| 输入 | 是否肺野裁剪 / CLAHE 参数 / 归一化口径 | 消除边框捷径、可比 |
| 指标 | acc + 加权 F1 + 每类 recall + AUC(+HM) | 避免 accuracy 失真 |
| 外部验证 | 外部集名称 / 性能 vs 内部 | 支撑临床相关性声明 |
只报告「acc 99%」而不给出上面任何一行的论文,其结论在科学上基本不可采信——这是社区批判该领域报告质量的核心点。
§8.4 相关数据集
| 数据集 | 定位 | 关系 |
|---|---|---|
| COVIDx CXR | 多源分层训练集 | 并列最常用;COVID-Net 生态 |
| BIMCV-COVID-19 | 西班牙单中心、专家标注 | 更干净、带框/掩膜 |
| Cohen covid-chestxray | 最早期聚合 | 本库部分 COVID 上游来源 |
| RSNA / NIH ChestXray14 | 大样本胸部库 | 本库 Normal/Lung Opacity 的上游 |
| Kaggle ChestX-ray (pneumonia) | 儿科肺炎库 | 本库 viral/normal 上游 |
| COVID-QU-Ex | 本库官方后继 | 33,920 张 + 全量掩膜 |
§8.5 关键论文 Top5
- Chowdhury et al., 2020, IEEE Access 8:132665-132676, DOI 10.1109/ACCESS.2020.3010287 — 提出本库并验证迁移学习筛查 COVID。
- Rahman et al., 2021, Comput Biol Med 132:104319, DOI 10.1016/j.compbiomed.2021.104319 — 系统性对比五种增强 + U-Net 分割,定义后续预处理范式。
- Ensembl Deep Learning(Applied Sciences 2021)DOI 10.3390/app112210528 — 处理类别不平衡并报告极高库内性能(反映乐观口径)。
- Self-Supervised Transfer Learning(arXiv 2212.09276) — 在 21,165 张上评估 BYOL/SimCLR 等自监督方法。
- CoVScreen / pitfalls paper(arXiv 2405.07674)— 揭示公开库图像质量/标记不均导致的偏倚,附预处理建议。
逐篇方法学补充(利于复现与批判性阅读):
| 论文 | 用哪个子集 | 划分/去重 | 主要结果 | 局限(阅读提示) |
|---|---|---|---|---|
| Chowdhury 2020 | 早期 3 类(423 COVID/1,485 viral/1,579 normal) | 内部随机 | acc 98.3% | 早期样本少、未去重、来源混杂 |
| Rahman 2021 | COVQU 3 类 18,479(8,851 normal/6,012 opacity/3,616 COVID) | 未公开划分细节 | 分割后 acc 95.11%、U-Net Dice 96.94% | 无来源隔离,结果偏乐观 |
| App Sci 2021 | v2 三分类 15,153 | 随机 | acc 99.23% / AUC 99.97% | 未去重;极端乐观值,勿当临床依据 |
| arXiv 2212.09276 | 四分类 21,165 | 随机 8:2 | 对比 BYOL/SimCLR 等 | 报告 Sens/Spec/HM 较全,仍为库内随机划分 |
| HF 去重镜像重训 | 去重后 19,133 | 分层 7:1.5:1.5、无泄漏 | DenseNet121 acc ~96.17% | 少有的自带去重基准,可作参考基线 |
读这些论文时,把它当作「在那份具体版本/划分下的算法结果」,而不是「这个库的 SOTA」。数据版本与划分差异远大于算法差异,跨论文直接比 acc 没有意义。
§8.6 社区活跃度
疫情高峰(2020-2021)社区高度活跃,Kaggle 衍生 Notebook 众多;后随疫情降温而回落。讨论集中在分类复现、去重、来源偏倚与掩膜使用。官方 GitHub(tawsifur/COVID-19-Chest-X-ray-Detection)提供 Matlab 代码与模型;主维护者随后转向 COVID-QU-Ex。
活跃度时间线(定性):
| 阶段 | 时间(约) | 活跃特征 |
|---|---|---|
| 爆发期 | 2020 | Kaggle Notebook 爆发式增长,筛查方法论文井喷 |
| 平台期 | 2021-2022 | 讨论转向掩膜使用、四分类、来源偏倚批判 |
| 降温期 | 2023 至今 | 新增研究减少;镜像/教程仍在被引用与再打包 |
| 维持期 | 现在 | 作为历史基准与教学库持续被引用,活跃更新少 |
现状提示:主库已基本停更,社区创新已转向 COVID-QU-Ex 与真实医院库。使用本库时应把它视作「冻结的历史快照」,而非仍在演进的数据集。
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/活跃(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| Kaggle 主仓库 | 数据 | kaggle.com/datasets/tawsifurrahman | 下载量大、持续被引用 | 一手来源 |
| Hugging Face 整理镜像 | 数据(去重) | huggingface umairinayat/fyp-dataset | 月下载 30+ | 自带去重与模型卡 |
| GitHub tawsifur 模型库 | 代码 | github.com/tawsifur/COVID-19-… | 学术使用 | 官方 Matlab 代码 |
| CoVScreen 预处理综述 | 论文 | arXiv 2405.07674 | — | 偏倚与清洗指南 |
§9 资源与引用
§9.1 官方资源
- 数据仓库:https://www.kaggle.com/datasets/tawsifurrahman/covid19-radiography-database
- GitHub 代码与模型:https://github.com/tawsifur/COVID-19-Chest-X-ray-Detection
- 后继数据集 COVID-QU-Ex:DOI 10.34740/kaggle/dsv/3122958
- 论文资料库(Qatar University QSpace):DOI 10.1016/j.compbiomed.2021.104319
研究/复现辅助资源速查:
| 资源 | 类型 | 用途 | 备注 |
|---|---|---|---|
| Kaggle 主仓库讨论 | 数据社区 | 看用户反馈/坑 | 评论较少,社区结论多在 Notebook |
| Hugging Face umairinayat/fyp-dataset | 去重镜像 + 模型卡 | 直接复现分类/分割 | 附 DenseNet121 与 UNet 权重说明 |
| GitHub tawsifur/COVID-19-Chest-X-ray-Detection | 官方代码 | Matlab 训练/推理 | 迁移到 Python 需自己实现 |
| COVID-QU-Ex | 升级数据 | 需要更大库/全掩膜时 | 需单独申请/下载 |
| CoVScreen 预处理综述 | 论文代码 | 图像清洗参考 | arXiv 2405.07674 |
下载/复现建议:固定「Kaggle 原始四分类含掩膜版 + 记录解压目录哈希」,避免镜像间数字(21,165 vs 21,175)与目录结构漂移导致的结果不可复现。对需要干净数据的严肃研究,优先用已做 phash 去重的 HF 镜像再自己划分。
§9.2 BibTeX
@article{chowdhury2020aicanhelp,
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{rahman2021imageenhance,
title = {Exploring the Effect of Image Enhancement Techniques on COVID-19 Detection using Chest X-ray Images},
author = {Rahman, Tawsifur and Khandakar, Amith and Qiblawey, Yazan and others},
journal = {Computers in Biology and Medicine},
volume = {132},
pages = {104319},
year = {2021},
doi = {10.1016/j.compbiomed.2021.104319}
}
§9.3 引用指南
Kaggle 页面要求使用本库做科研须引用以上两篇论文。若你基于镜像整理版本,请在方法一节注明镜像 commit/版本哈希。引用格式建议 IEEE/ACM,并把所用子集(3 类 or 4 类、是否含掩膜、是否去重)一并写清,方便他人复现。
推荐的方法节自述模板(可直接改写):
We used the COVID-19 Radiography Database (Chowdhury et al., 2020; Rahman et al., 2021), the 4-class release with 21,165 chest X-ray images (3,616 COVID-19, 10,192 normal, 6,012 lung opacity, 1,345 viral pneumonia) and lung masks, downloaded from the Kaggle repository tawsifurrahman/covid19-radiography-database (snapshot hash …). We de-duplicated near-duplicates via perceptual hashing (… unique images) and split stratified by class with a fixed seed … . Because class labels are confounded with source datasets, results should be interpreted as methodology benchmarks rather than clinical diagnostic performance.
引用习惯建议:
- 数据引用:用 Chowdhury 2020(IEEE Access)作主引用;涉及增强/掩膜再加 Rahman 2021。
- 提及局限:凡下临床相关性结论,补引 CoVScreen(arXiv 2405.07674)与 pitfalls(arXiv 2109.08020)。
- 复现:方法节给出所用镜像/版本、去重与划分参数,便于他人对照。
§10 AI 使用声明卡
10.1 AI 模型列表
本文由大语言模型(LLM)辅助生成,结合人工医学与数据工程审核完成。主要使用通用文本生成与事实核查能力;未使用医学影像诊断模型产出本文的任何临床结论。
10.2 AI 参与范围
AI 用于:检索整理公开事实、撰写结构草稿、生成示例代码、组织 DAIMS 与坑点结构。所有关键数字(样本量、DOI、版本历史、引用量)均由写作代理经 WebSearch 交叉核验后落盘,并在 §0 经人工交叉审核。
10.3 输入来源列表
- Kaggle 主仓库数据说明 — https://www.kaggle.com/datasets/tawsifurrahman/covid19-radiography-database
- Kaggle Notebook input 页(数据说明)— https://www.kaggle.com/code/adityamukati/covid-detection-with-efficientnet/input
- Kaggle 镜像页(license)— https://www.kaggle.com/datasets/ahmadalmahsiri/covid19-radiography-database
- Rahman et al. 2021 PMC — https://europepmc.org/articles/PMC7946571
- Chowdhury et al. 2020 ResearchGate — https://www.researchgate.net/publication/343094700
- 自监督论文(21,165 口径)— https://ar5iv.arxiv.org/html/2212.09276
- 偏倚综述 arXiv 2008.11572 — https://arxiv-vanity.com/papers/2008.11572
- pitfalls of open data arXiv 2109.08020 — https://www.alphaxiv.org/abs/2109.08020
- CoVScreen arXiv 2405.07674 — https://ar5iv.arxiv.org/html/2405.07674
- bias Sci Reports PMC — https://pmc.ncbi.nlm.nih.gov/articles/PMC9975856
- 儿科混杂批判 PMC — https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8086233
- CheXNet+COVID 分析 — http://www.findingbouken.com/chexnet-with-covid-19
- Hugging Face 整理镜像(去重)— https://huggingface.co/datasets/umairinayat/fyp-dataset
- 版本 21,175 差异仓库 — https://github.com/ThuraAung1601/Deep-Chest-X-ray-Covid19-Classification
- 类分布论文(Applied Sciences)— https://doi.org/10.3390/app112210528
10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED) | 医学审核者 | 交叉审核 | ✅ 已通过 |
| §7 偏倚与 DAIMS | 医学/数据审核者 | 交叉审核 | ✅ 已通过 |
| §4/§5 结构字段与划分 | 数据工程审核者 | 交叉审核 | ✅ 已通过 |
| §6 代码与坑点 | 数据工程审核者 | 交叉审核 | ✅ 已通过 |
| 数字与 DOI | 写作代理 + 编辑 | WebSearch 核验 | ✅ 已验证 |
10.5 AI 生成章节标注
§1-§10 正文为 AI 起草 + 人工交叉审核成稿;示例代码由 AI 编写并人工复核。§0 免责与合规声明为模板化的固定文本。
10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
