把报告拆成四层 — CAD-Chest 疾病标注集

65,379 名患者 / 227,827 次检查 / 18 种疾病四层标注

来源 https://physionet.org/content/cad-chest/1.0/发布时间: 2026-10-28最后更新: 2026-10-28 阅读 9
把报告拆成四层 — CAD-Chest 疾病标注集

信息速览

数据集名称把报告拆成四层 — CAD-Chest 疾病标注集
数据类型结构化标签,NLP标注,衍生数据,受限获取
规模65,379 名患者 / 227,827 次影像检查
接入方式https://physionet.org/content/cad-chest/1.0/
AI 就绪度

胸部 X 光片的公开标注,十年来几乎停在同一句话上:「这个病,有还是没有」。十四个二值标签、一套阴性阳性不确定的三分类、一张按研究分好的训练测试表,就构成了一整代模型的监督信号。可放射科医生写报告时根本不是这样工作的。他们写「左下肺少许胸腔积液可能」「中度心影增大」「不除外肺炎」——一句话里同时给出疾病、位置、程度、以及自己有多确定。把这四件事压成一个 0 或 1,等于把报告里最有临床价值的部分直接丢掉。

CAD-Chest 就是为了把丢掉的那部分捡回来。它不拍片、不标框、也不重新请医生读片,而是拿 MIMIC-CXR 已经公开的自由文本放射报告,用规则把每一句里的疾病实体、严重度词、不确定度词和解剖位置词抽出来,组织成一个四层的 JSON 结构,再用 subject_id、study_id、dicom_id 三个键挂回原有的影像与元数据。它因此能回答一个别处很难回答的问题:同一份「肺水肿」标签下面,医生到底是肯定地写了重度肺水肿,还是含糊地写了一句不除外肺水肿——这两种情况在二值标签里长得一模一样,在临床决策里却完全不是一回事。

它的代价同样明确:标注来自文本规则而不是医生重读,图像本体不在包里,访问要签协议并完成培训,而且它只在正位(AP)与后前位(PA)两种体位上做了统计。它不是「更大的训练集」,是一件用来把粗标签拆细的工具。一屏速览见下表。

维度 内容
全名 CAD-Chest: Comprehensive Annotation of Diseases based on MIMIC-CXR Radiology Report
发布方 PhysioNet(原始数据由德克萨斯大学阿灵顿分校、东京大学、理化学研究所、日本国立癌症研究中心、NIH 临床中心等团队贡献)
首次发布 2023 年 12 月 8 日,版本 1.0
最近改动 官方版本历史仅 1.0 一条,未见修订记录
患者数 65,379 个 subject_id
检查数 227,827 个 study_id
正侧位子集 AP 与 PA 体位下 63,903 个 subject_id、217,982 个 study_id
疾病种类 官方统计表覆盖 18 种疾病
图像本体 不随包提供;须从 MIMIC-CXR-JPG(377,110 张 JPG)按 dicom_id 取
标注规模 四层标注:疾病名称 / 严重度 / 不确定度 / 解剖位置
标注方式 规则法从自由文本抽取(NLTK 与 spaCy),500 份报告医师抽样评估
文件格式 JSON 标注(cad_disease.json)+ 四个纯文本词表(.txt)
许可 PhysioNet Credentialed Health Data License 1.5.0,需签 DUA 1.5.0 并完成 CITI 培训
典型用途 严重度感知分类、不确定度建模、报告级弱监督标签细化、影像-文本对齐研究

§1 它要解决的具体麻烦

1.1 一个二值标签压掉了四件事

放射报告是半结构化文本,医生的判读落在「检查所见」与「印象」两节里。一句话承载的信息通常有四条:疾病是什么(肺水肿、气胸、心脏扩大)、在哪个位置(左下肺、右侧、肺底)、有多重(轻度、中度、重度、急性、大量)、医生有多确定(明确、可能、或许、不能排除)。

主流的公开标签体系只保留第一条,并把第三条和第四条折叠进一个三值或二值的框架里。CheXpert 的做法是阴性、阳性、不确定三类,且约束三者概率和为 1;MIMIC-CXR-JPG 附带的 CheXpert 与 NegBio 标签也是研究级的二值与不确定标记。这类设计的目标从来就是「有没有病」这个二分类,严重度与确定程度只是过程中的副产品,用完即弃。

后果是具体的。一个标注为「肺水肿 = 1」的样本,可能是报告里明确写的「重度肺水肿」,也可能是「不除外轻度肺水肿」。前者的影像征象清晰、临床处理紧急;后者可能只是一句防御性表述。把两者当作同一类样本喂给模型,模型学到的不是肺水肿的影像特征,而是「肺水肿」这个词在报告里出现的平均语境。

1.2 CAD-Chest 把四层拆开存

它把每一次检查的标注存成一个字典,疾病名是键,四层信息是值。以官方页面给出的例子为例,一次检查里同时出现了气胸、肺不张与肺水肿三个疾病实体,各自带自己的位置、严重度与概率:

疾病 位置 严重度 概率词 概率分值
pneumothorax(气胸) left minimal positive 3
atelectasis(肺不张) left、basal mild positive 3
edema(肺水肿) — — without -3

注意第三行:它是一个「无」的记录,而不是「没有这条记录」。规则抽到报告里出现了「without pulmonary edema」这样的表述,就把肺水肿作为一个显式实体写进去,严重度标记为无、概率分值为负。这一点很关键——它让「报告提到了但否认了」和「报告压根没提」成为两种可区分的状态,而二值标签体系把前者也压成了 0。

1.3 三条常见的错误期待

第一条,期待它是「带图像的完整数据集」。它不是。包里只有标注与词表,图像要按 dicom_id 去 MIMIC-CXR-JPG 取,报告原文与元数据要按 subject_id、study_id 去 MIMIC-CXR 取。它是挂在两个上游库之上的一层标注,不是独立的数据集。

第二条,期待它是「医生重新标注的金标准」。它的方法是基于规则的文本抽取,官方页面写得很清楚:用 NLTK 与 spaCy 做生物医学文本处理,靠词表匹配与语法分析抽实体,再请医生对抽样结果做评估。它的标签是「从报告里读出来的」,不是「对着片子重新判读的」。报告错,标签就跟着错。

第三条,期待它能直接当分类任务的标签用。四层标注不是一条 0/1 向量。要用它训练模型,必须先自己定义口径:概率分值取多少算阳性、严重度四档要不要合并、位置词要不要编码。官方明确说概率分值可以由使用者按自己的需要设阈值——这既给了自由,也意味着不同论文的口径未必可比。

1.4 它能给到的与给不到的

你的需求 它给的 够不够
区分「确定的重度」与「不确定的轻度」 四层标注齐全,概率分值可分档 够,这是它唯一的设计目的
严重度感知的影像分类 严重度分四档,含 mild/moderate/severe/no 可做,但严重度在报告里的覆盖并不均衡
不确定度建模与校准 概率词带 1.0 / 0.7 / 0.5 / 0.3 四级赋值 够,且赋值是官方给的,不用自己猜
解剖位置相关的弱监督 位置词支持 location 与 location2 双位点 够做粗粒度,没有像素级或框级定位
目标检测与病灶框 — 不够,全文没有任何框或掩膜
影像本体 — 不够,须另取 MIMIC-CXR-JPG
报告原文与整个病程 — 不够,须另取 MIMIC-CXR
儿科或体检人群 — 不够,上游是急诊与住院场景的成人胸片
多中心泛化验证 单一上游来源 不够,只能做「跨标注体系」而非「跨机构」

1.5 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
你用 CheXpert 标签训了一个分类器,想知道不确定样本到底该怎么处理 提供同一批影像上带不确定度赋值的替代标签 把 CheXpert 的不确定类按概率分值的四档拆开重训,比较校准曲线
你在做严重度分级,苦于没有分级标签 提供四档严重度,且是从真实报告里抽的 先确定四档映射(§2.4),再按患者划分评估
你想证明「把不确定样本当阴性」会损失信息 提供可对照的两套标签口径 固定划分,跑「不确定=阴性」与「按概率分值加权」两版对比
你在做报告生成,想要结构化的事实字段 提供疾病、位置、严重度、确定性的结构化抽取结果 用四层标注当生成结果的校验集,而不是当训练目标
你想研究影像与文本的一致性 一次检查同时有影像、报告与四层结构化标注 按 dicom_id 对齐后做双通道一致性分析
你要做一个能直接上临床的模型 基本帮不上 它是研究用标签,且受凭证访问限制(§5.1)

1.6 一句话判断

它不是「又一个胸片标签集」,而是一把把粗标签拆细的螺丝刀:当你的研究问题里出现「程度」或「确定与否」这两个词时,它才有意义;当你的问题只是「有或没有」时,用它反而会把事情变复杂。

1.7 不适合谁:四条边界

不适合拿来做目标检测或分割。 全程没有框、没有掩膜、没有像素级标注。位置字段是「left」「basal」这样的词,不是坐标。

不适合拿来当临床金标准。 标签继承自报告文本,报告里的笔误、模板残留、前后不一致都会原样带进来。官方的医师评估只覆盖了 500 份报告(§7.2)。

不适合拿来独立使用。 没有图像、没有报告全文,它只是中间层。任何一次实验都要同时具备 MIMIC-CXR 与 MIMIC-CXR-JPG 的访问权。

不适合拿来直接投产。 许可为 PhysioNet 凭证访问协议,且官方明确要求完成 CITI 培训。研究用数据集的身份写在许可里,不是靠声明能改的。

§2 数据构成与规格

2.1 包里有什么

官方页面在「数据描述」一节点名了五个文件,其中只有一个是数据本体,另外四个是规则用到的词表:

文件 角色 内容
cad_disease.json 标注本体 逐次检查的四层疾病标注
disease_list.txt 疾病词表 每种疾病的多种写法,例如肺不张同时收录 atelectasis 与 collapse
severity_words.txt 严重度词表 描述程度的词,官方按语义合并为四个等级
uncertainty_words.txt 不确定度词表 描述确定与否的词,每个词带一个概率分值
location_words.txt 位置词表 描述解剖位置的词,例如 left、right、lower

这个结构值得留意:四个词表不是附属文档,而是抽取规则的本体。改一个词表就等于改一遍标注口径。想复现或改动它的标签,第一步是读词表而不是读代码——因为官方页面并没有发布抽取代码,只有词表与结果。

2.2 一条记录的完整解剖

官方给出的示例结构如下,为便于中文读者理解,字段含义在注释里说明:

{
  "study_id": "55088298",
  "subject_id": "18936629",
  "dicom_id": "61976388-5e534624-f6465079-76ea9caf-116f9938",
  "view": "antero-posterior",
  "study_order": 5,
  "entity": {
    "atelectasis": {
      "id": 1,
      "entity_name": "atelectasis",
      "report_name": "atelectasis",
      "location": ["left", "basal"],
      "level": ["mild"],
      "location2": null,
      "level2": null,
      "probability": "positive",
      "probability_score": 3
    }
  }
}

三个标识键的含义各不相同:study_id 唯一标识一次影像检查(对应一份放射报告,可能含一张或多张影像);subject_id 唯一标识一名患者;dicom_id 标识具体的 DICOM 文件,MIMIC-CXR-JPG 里每个 .jpg 文件的文件名主干就等于 dicom_id。这三者的关系决定了整个数据集的对齐方式——它是靠 dicom_id 落到像素、靠 study_id 落到报告、靠 subject_id 落到人。

2.3 字段字典

字段 层级 取值形态 含义 使用注意
study_id 顶层 整数字符串 一次影像检查 与 MIMIC-CXR 的 study_id 同义,是连报告的主键
subject_id 顶层 整数字符串 一名患者 划分数据集必须按它分组(§5.5)
dicom_id 顶层 带连字符的十六进制串 一个 DICOM 文件 JPG 文件名主干,是连像素的主键
view 顶层 antero-posterior、postero-anterior、lateral 等 投照体位 与 MIMIC-CXR-JPG 的 ViewCodeSequence_CodeMeaning 同源
study_order 顶层 整数 该检查在这名患者序列中的次序 做纵向研究时用它排序,而不是用日期
entity 顶层 字典 本次检查抽出的全部疾病 键是疾病名,值是四层标注
id 疾病内 整数 疾病在词表中的序号 仅作顺序标识
entity_name 疾病内 字符串 规范化后的疾病名 做标签列名时用它
report_name 疾病内 字符串 报告里实际出现的写法 与 entity_name 可能不同,例如肺水肿在报告里写作 pulmonary edema
location 疾病内 字符串数组或 null 解剖位置词 可能多个,也可能为空
level 疾病内 字符串数组或 null 严重度词 取词表里的原始词,不是等级名
location2 疾病内 字符串数组或 null 第二处位置 一种疾病出现在多处时使用
level2 疾病内 字符串数组或 null 第二处对应的严重度 与 location2 配对
probability 疾病内 字符串 不确定度词 例如 positive、without
probability_score 疾病内 数值 不确定度赋值 分值越大越确定,阈值由使用者自定

两个容易读错的字段是 level 与 probability_score。level 存的是词表里的原始词(mild、minimal、severe),不是合并后的等级名;要拿到等级,必须自己按官方的合并表映射(§2.4)。probability_score 也不是概率,官方的说明只是「分值越大表示越确定」,示例里 positive 对应 3、without 对应 -3,其余取值由词表给出。

2.4 严重度的四档合并

官方把语义相近的词合并成四个等级,词表文件里记的是原始词,合并关系如下:

合并等级 收录的原始词
Mild mild、small、trace、minor、minimal、minimally、subtle、mildly
Moderate moderate、moderately、mild to moderate
Severe severe、acute、massive、moderate to severe、moderate to large
No no、without、clear of、negative、exclude、lack of、rule out

四档合并里有两处需要在使用时想清楚。第一,No 这一档不是「没有严重度」,而是「报告明确否认了这个疾病」——它把否定表达也编进了严重度体系,所以 No 与 location 为空是两回事。第二,Severe 档里混入了 acute(急性)与 massive(大量),前者是时间属性、后者是范围属性,与「重度」并不严格同义。把它们当作一个等级用,等于接受了一种官方给定的语义压缩。

2.5 不确定度的四级赋值

与别处把不确定简单打成一个类别不同,这里按确定程度给了连续的分值,分值越大越确定:

概率词 赋值
positive、change in 1.0
probable、likely、may、could、potential 0.7
might、possible 0.5
not exclude、difficult exclude、cannot be assessed、cannot be identified、impossible exclude、not rule out、cannot be evaluated 0.3

官方页面在疾病统计表里还留了一个取值为 0 的列,对应报告明确否认的情形。把这张表与 §1.2 的示例对照着看会更清楚:示例里 probability 是 positive、probability_score 是 3,而 without 对应 -3——也就是说 probability_score 与这里的 1.0/0.7/0.5/0.3 是两套标度,前者是整数分值、后者是概率赋值,官方没有给出两者的换算公式。用的时候只能选一套,且要在方法节里写清用的是哪一套。

2.6 与同类标注体系的字段差异

对比项 CAD-Chest MIMIC-CXR-JPG 自带标签 CheXpert 式体系
标签形态 四层:疾病、严重度、不确定度、位置 逐研究一列标签的二值与不确定标记 阴性 / 阳性 / 不确定三类
疾病数量口径 官方统计表覆盖 18 种 上游标注 14 个类别(含 No Finding) 常见为 14 个类别
不确定度 连续赋值 1.0 / 0.7 / 0.5 / 0.3 单值不确定标记 单类,且与阴性阳性归一
严重度 四档合并 无 无
解剖位置 位置词,支持双位点 无 无
生成方式 规则抽取(NLTK 与 spaCy) NegBio 与 CheXpert 规则工具 规则工具加人工标注子集
是否含影像 否 是 视发布版本而定

这张表要说清的只有一件事:CAD-Chest 在「严重度」与「位置」两列上别人没有,在「影像」这一列上它没有。它的位置是补充层,不是替代层。

§3 它是谁的数据:一条跨太平洋的协作链

3.1 贡献者与机构

官方页面列出七位作者,分属五家机构,这条名单本身就说明了它的性质——它不是一家影像科的数据工程产物,而是一次「医学影像 AI 组 + 自然语言处理组 + 国立研究机构」的拼装:

作者 机构
Mengliang Zhang 德克萨斯大学阿灵顿分校
Xinyue Hu 德克萨斯大学阿灵顿分校
Lin Gu 理化学研究所 AIP / 东京大学
Tatsuya Harada 东京大学 / 理化学研究所
Kazuma Kobayashi 日本国立癌症研究中心研究所
Ronald Summers NIH 临床中心
Yingying Zhu 德克萨斯大学阿灵顿分校

三家美国机构加两家日本机构,其中 NIH 临床中心长期做胸部影像的自动判读,日本一侧提供的是文本与表示学习的方法。这个组合解释了它的方法取向:先有影像研究的痛点(标签太粗),再借 NLP 的工具去解决(规则抽取),而不是反过来。

3.2 时间线

时间 事件 意义
2019 上游 MIMIC-CXR 与 MIMIC-CXR-JPG 发布 提供报告文本与影像,奠定可用基础
2023-12-08 CAD-Chest 版本 1.0 在 PhysioNet 上线 首次公开,DOI 为 10.13026/44pd-vz36
2025-01 配套论文发表于 IEEE Transactions on Medical Imaging 从数据集升级为带基准方法的工作
至今 版本历史仅 1.0 一条 无修订、无扩版

版本只有一条这件事本身是个信息:它从上线起就没有修补过标签,也没有随上游 MIMIC-CXR 的版本演进而重抽。用它的那一刻,你拿到的是 2023 年 12 月那一刻的抽取结果。

配套论文值得一并留意。官方页面之外,IEEE Transactions on Medical Imaging 2025 年 1 月第 44 卷第 1 期第 338–347 页发表的《A New Benchmark: Clinical Uncertainty and Severity Aware Labeled Chest X-Ray Images With Multi-Relationship Graph Learning》,作者名单与数据集高度重合,论文里明确把 PhysioNet 上的这个页面标为数据集地址。它给出的不只是一组标签,还有一个利用空间关系与语义关系、并用专门损失函数处理专家不确定性的多关系图学习框架——换句话说,作者自己在论文里演示了这批标签该怎么用(§8.2)。

3.3 采集场景:上游是一家波士顿医院的真实急诊与住院

要理解人群,必须回到上游。MIMIC-CXR v2.0.0 的影像与报告来自波士顿的贝斯以色列女执事医疗中心(Beth Israel Deaconess Medical Center),全部为 DICOM 格式的胸部 X 光片配自由文本报告,共 377,110 张影像。MIMIC-CXR-JPG 则把这批 DICOM 转成 377,110 张 JPG,并给出由报告导出的结构化标签。

这批影像来自常规临床流程,不是筛查队列也不是研究队列。含义很直接:

属性 取值 对使用者的含义
机构 一家美国学术医疗中心 设备、投照规范、报告模板都单一
场景 急诊与住院的常规胸片 阳性比例高于筛查人群,床旁片占比不低
影像格式 DICOM 原始,MIMIC-CXR-JPG 提供 JPG 16 位深度转成 12 位,做过全局对比度均衡并以质量 95 存为 JPEG
去标识 满足 HIPAA 安全港条款 日期被匿名化但保持时序一致
报告 半结构化自由文本,含所见与印象两节 模板化程度高,但也存在模板漂移与报告者差异

CAD-Chest 没有改变其中任何一项。它只是在这条链路的末端加了一层更细的标签,上游所有已知的选择偏倚都完整继承。

3.4 数据来源的三个层次

理解这份数据要先分清三层:报告文本层(原始,来自 MIMIC-CXR,未随包提供)、标注层(本次发布的核心,规则抽取的产物)、像素层(来自 MIMIC-CXR-JPG,未随包提供)。

第一层决定了标签的上限——报告里没写的疾病,再好的规则也抽不出来。第二层决定了标签的形态——四层结构、词表驱动、阈值可自定。第三层决定了它与影像的对齐方式——靠 dicom_id 一对一,且只对齐到「一次检查的一张图」,不对齐到病灶区域。

这三层各自有不同的获取条件。MIMIC-CXR 与 MIMIC-CXR-JPG 都是凭证访问,CAD-Chest 也是凭证访问,三份协议都要签。这也是它在工程上比一般公开标签集麻烦的地方:一次实验要跨三个项目页。

§4 它最独特的东西:把「有」拆成「有多重、在哪、有多确定」

4.1 稀缺性来自一个被长期忽略的事实

公开胸片标签的演进大致是:先有十四类二值标签,再有带不确定标记的标签,再到带报告原文的多模态版本。严重度与解剖位置这两项,一直停在论文的方法节里,从没进过公开发布的标签文件。原因不复杂——做这两项标注要么请医生重读(贵),要么建一套能稳定抽出来的规则(难),而两者的收益都不体现在「分类准确率」这个主指标上。

CAD-Chest 选的是第二条路,并且把规则本身也发布了:四个词表就是全部规则。这让它的稀缺性不是「有一批别人没有的标签」,而是「有一套别人没有的、可审查的标签口径」。你想改,改词表就行;你想复现,读词表就行。

4.2 差异化证据:不确定度不是一类,是一条刻度

这是它与 CheXpert 式体系最实质的分歧。CheXpert 把不确定当作独立的第三类,并约束阴性、阳性、不确定的概率和为 1;这在数学上很干净,但它隐含一个假设——所有不确定是同一种不确定。

临床不是这样。「可能」(probable/likely)与「不能排除」(not exclude / cannot be excluded)在报告里的分量完全不同:前者医生倾向有,后者医生只是不敢说没有。CAD-Chest 给这两组不同的赋值(0.7 与 0.3),等于承认了这条刻度。

表述强度 代表词 赋值 可以怎么用
明确 positive、change in 1.0 直接当阳性
倾向 probable、likely、may、could、potential 0.7 软标签或样本加权
弱可能 might、possible 0.5 半权,或单独成组观察
不敢排除 not exclude、cannot be assessed、not rule out 等 0.3 建议单独建模,不要并进阳性
明确否认 no、without 等在严重度词表中的对应项 0 显式阴性,与「未提及」区分

这张表最有用的两行是第二行与第四行。把 0.7 与 0.3 混成同一类「不确定」,等于把这条刻度又压回去了——那不如直接用上游自带的标签。

4.3 案例:同一句「肺水肿」的三种命运

设想三份报告都提到了肺水肿,二值标签体系给它们的标签完全一致(肺水肿 = 1)。在 CAD-Chest 的结构里,它们会变成三条完全不同的记录:

报告原文(示意) level probability probability_score 二值体系下的标签
There is severe pulmonary edema severe positive 正值 1
There may be mild pulmonary edema mild may 0.7 对应档 1
Pulmonary edema cannot be excluded — cannot be excluded 0.3 对应档 1

三行在二值体系里是同一个样本,在四层结构里是三个不同的监督信号。第一行可以用来学重度肺水肿的影像表现;第二行的影像征象可能很轻,用它当正样本会给模型注入噪声;第三行的影像甚至可能完全正常,把它当正样本等于教模型学会「什么都没有也是肺水肿」。

这不是一个假设性的担忧。MIMIC-CXR-JPG 自带的标签里,不确定类的处理策略(视作阴性、视作阳性、或单独成类)一直是这类研究的公开争议点,不同策略下模型排名会变。CAD-Chest 的价值就在于把选择的权利交还给使用者:官方只给赋值,不给阈值。

4.4 标注的粒度:疾病级清楚,空间级粗糙

疾病这一层的粒度是清楚的:每次检查一个字典,键是疾病名,值是四层信息,未抽到的疾病不出现,被报告明确否认的疾病会以严重度为「无」的形式出现。

空间这一层的粒度是粗的。location 存的是 left、basal、lower、lung 这类词,来自一份位置词表。它能回答「肺不张在左下肺」,不能回答「肺不张在图像的哪个区域」。而影像模型要的恰恰是后者。

粒度 它给的 影像模型常用要的 差距
检查级 一次检查一条记录 一次检查一条记录 无
疾病级 疾病名与四层属性 多标签向量 需自建映射
解剖级 位置词,最多两处 左右肺野、上中下野 可做粗对齐
区域级 — 边界框 缺
像素级 — 分割掩膜 缺

所以它能支撑的是「带条件的分类」(给定位置条件下的疾病分类、给定严重度条件下的特征学习),不是定位类任务。想做定位,得另外找带框的数据源,用这里的位置词做弱监督先验。

4.5 边界条件:什么情况下它不再适用

条件 是否适用 判断依据
你要做带严重度的影像分级 适用,且是少数选择 四档严重度来自真实报告
你要研究不确定样本的建模策略 适用 四级赋值给了可操作的刻度
你要做病灶检测或分割 不适用 无框无掩膜
你要在没有 MIMIC 访问权的环境里用 不适用 无影像无报告,标注孤立
你要跨机构验证泛化 不适用 上游单一机构
你要做纵向病程分析 谨慎 study_order 有序但日期需从上游取,且去标识后绝对时间不可用
你要做儿科胸片 不适用 上游为成人急诊与住院场景
你要把标签当金标准做临床结论 不适用 标签继承自报告文本,且评估只覆盖 500 份报告

§5 怎么拿到:三层许可下的对齐流程

5.1 获取前提与目录结构

它的访问门槛比一般公开标签集高一档,官方页面在「访问」区写得很明确:

项 内容
访问策略 仅签署数据使用协议的凭证用户可访问文件
许可 PhysioNet Credentialed Health Data License 1.5.0
数据使用协议 PhysioNet Credentialed Health Data Use Agreement 1.5.0
必需培训 CITI「Data or Specimens Only Research」课程
上游依赖 MIMIC-CXR Database v2.0.0(报告与元数据)、MIMIC-CXR-JPG(影像)
版本与 DOI 1.0,DOI 10.13026/44pd-vz36(最新版本 DOI 10.13026/kyfs-5608)

也就是说,一次完整的实验要同时持有三份凭证访问权。缺 MIMIC-CXR-JPG 就只有标注没有像素;缺 MIMIC-CXR 就只有标注没有报告原文与检查元数据。

标注包本身的结构很扁平:一个 JSON 数据文件加四个词表文本文件,没有按患者或年份分的子目录。官方的文件目录在部分地区会返回不可访问(本次核实时返回 403),因此下表列出的文件名全部来自项目页「数据描述」一节的正文,而不是目录遍历:

路径(相对项目根) 内容 说明
cad_disease.json 四层标注本体 唯一的数据文件
disease_list.txt 疾病词表 一种疾病多个写法,如 atelectasis 与 collapse
severity_words.txt 严重度词表 四档合并的原始词
uncertainty_words.txt 不确定度词表 词与赋值的对应
location_words.txt 位置词表 left、right、lower 等

5.2 批量下载

PhysioNet 的凭证项目不能用匿名 wget,必须先登录拿到会话 Cookie:

#-- 1. 登录并保存 Cookie(会提示输入 PhysioNet 用户名与密码)
curl -c cookies.txt -X POST https://physionet.org/login/ \
     -d "username=YOUR_USER&password=YOUR_PASS"

#-- 2. 用 Cookie 取标注文件;凭证项目的文件在 /files/ 下
curl -b cookies.txt -L \
     -o cad_disease.json \
     https://physionet.org/files/cad-chest/1.0/cad_disease.json

#-- 3. 四个词表同样逐个取
for f in disease_list severity_words uncertainty_words location_words; do
  curl -b cookies.txt -L -o "${f}.txt" \
       "https://physionet.org/files/cad-chest/1.0/${f}.txt"
done

第二段的 -L 不能省。凭证项目的文件请求会先跳到鉴权地址再回源,没有跟随重定向会拿到一个 HTML 页面而不是 JSON,而且返回码可能仍是 200——这是最容易浪费一小时的地方。取回文件后先确认第一行是 { 或词表内容,再往下走。

5.3 解析 JSON 并看清单条记录

import json

#-- 标注是逐次检查的列表;先确认顶层键与规模
with open('cad_disease.json') as f:
    data = json.load(f)

print(type(data), len(data))
rec = data[0] if isinstance(data, list) else next(iter(data.values()))
print(rec['study_id'], rec['subject_id'], rec['dicom_id'],
      rec['view'], rec['study_order'])

#-- 疾病实体是一个字典,键为疾病名
for name, ent in rec['entity'].items():
    print(name, '|', ent['level'], '|', ent['location'],
          '|', ent['probability'], ent['probability_score'])

官方示例给出的是「一位患者做一次检查」的结构,顶层字段共五项。真实文件是这结构的列表还是以 study_id 为键的字典,需要在下载后第一次读取时确认——这属于文件层的核验,官方页面没有说明外层容器形态。

5.4 转成通用的表结构

下游是常规训练管线时,通常要把四层标注摊成一个多标签矩阵。下面这段代码只做形态转换,不做任何统计:

import json
import pandas as pd

with open('cad_disease.json') as f:
    data = json.load(f)

rows = []
for r in data:
    for name, e in r.get('entity', {}).items():
        rows.append({
            'study_id': r['study_id'],
            'subject_id': r['subject_id'],
            'dicom_id': r['dicom_id'],
            'view': r['view'],
            'study_order': r['study_order'],
            'disease': e.get('entity_name'),
            'report_name': e.get('report_name'),
            'level': e.get('level'),
            'location': e.get('location'),
            'level2': e.get('level2'),
            'location2': e.get('location2'),
            'probability': e.get('probability'),
            'probability_score': e.get('probability_score'),
        })
long = pd.DataFrame(rows)
print(long.shape, long['disease'].nunique())

这里刻意保留「长表」而不是直接摊成宽表,原因有三:一是同一疾病在一次检查里可能有 location2 与 level2 两个位点,摊成宽表会丢掉第二位点;二是 level 与 location 是数组不是标量,直接当列会把 ['left','basal'] 变成一个字符串;三是概率口径还没定,摊表时就把阈值写死,后面改口径要重跑全量。

从长表到训练标签的这一步必须显式做,并把口径写进方法节:

#-- 口径 A:只认明确阳性(示例阈值,换口径请显式改)
POS = {'positive': 1.0, 'probable': 0.7, 'likely': 0.7}
long['y_soft'] = long['probability'].map(lambda p: POS.get(p, 0.0))
long['y_hard'] = (long['y_soft'] >= 0.7).astype(int)

#-- 口径 B:把 severe 与 moderate 合并成「有临床意义」
long['severe_flag'] = long['level'].apply(
    lambda lv: int(isinstance(lv, list)
                   and any(w in ('severe', 'massive', 'acute',
                                 'moderate', 'moderately',
                                 'moderate to severe', 'moderate to large')
                           for w in lv)))

5.5 与影像、报告的对齐

对齐靠三个键,且三者不能互相替代:

目标 用哪个键 上游来源 说明
像素 dicom_id MIMIC-CXR-JPG JPG 文件名主干等于 dicom_id
报告与检查元数据 study_id MIMIC-CXR 一次检查对应一份报告
患者分组 subject_id MIMIC-CXR 划分数据集必须按它分组

MIMIC-CXR-JPG 的目录是十顶层文件夹(p10 至 p19),每个下含约 6500 个以患者标识命名的子目录,再下一层是研究目录,JPG 文件以 dicom_id 命名。要把 subject_id 落到具体路径,得先读 MIMIC-CXR-JPG 的 mimic-cxr-2.0.0-metadata.csv.gz,它给出 dicom_id、subject_id、study_id 三者的对照,以及 Rows、Columns、ViewPosition、StudyDate 等字段。

import pandas as pd

#-- 上游元数据给出 dicom_id -> subject_id/study_id 与逐图尺寸
meta = pd.read_csv('mimic-cxr-2.0.0-metadata.csv.gz')
print(meta.columns.tolist())
print(meta[['dicom_id', 'subject_id', 'study_id',
            'Rows', 'Columns', 'ViewPosition']].head())

#-- 与标注按 dicom_id 对齐
lab = pd.DataFrame([{
    'dicom_id': r['dicom_id'], 'study_id': r['study_id'],
    'subject_id': r['subject_id'], 'view': r['view']}
    for r in data])
m = lab.merge(meta, on='dicom_id', how='left', suffixes=('', '_up'))
print(len(lab), len(m), m['Rows'].isna().sum())

最后一行打印的三件事分别是标注条数、对齐后条数、以及没对上的条数。这个数字必须看:只要它不为零,就说明有一批标注落不到像素,样本量也就不是你以为的那个数。

分辨率没有统一值。MIMIC-CXR-JPG 的元数据表里 Rows 与 Columns 是按图记录的像素高度与宽度,也就是说不同影像尺寸不同;CAD-Chest 官方页面没有给出统一的分辨率数值,这一点列入 §10 的未核验项。

5.6 五个最容易出错的地方

位置 错误写法 后果 正确做法
下载 匿名 wget 直接取文件 拿到登录页 HTML 且返回 200 带 Cookie 并跟随重定向,取回后校验首字符
划分 按 study_id 随机切分 同一患者的多次检查落在两侧,结果虚高 按 subject_id 分组切分
标签口径 把 probability 等于 uncertain 的全当阳性 把「不能排除」当成确诊 按 0.7 / 0.5 / 0.3 分级,口径写进方法节
严重度 直接把 level 当等级名用 mild 与 minimal 被当成两档 先按四档合并表映射
对齐 用 study_id 去取 JPG 一次检查可能含多张影像,取到错图 用 dicom_id 对齐到单张影像

§6 与库内条目的关系

6.1 关系图谱

CAD-Chest 在胸片类数据集里的位置,可以用「是否含影像 × 标签维度数」两个轴摆出来:

条目 影像 标签维度 与 CAD-Chest 的关系
MIMIC-CXR-Ext-MIMIC-CXR-DB 有(关联上游) 二值标签加报告 上游同一来源,它管关联、CAD-Chest 管细化
CheXpert Plus 有 二值与不确定,附报告文本 直接对照:同上游,标签形态不同
CXRGraph 有 实体与关系标注 同为报告结构化,一个做关系、一个做属性
ReXGradient-160K 有 报告驱动 同为报告派生的规模化版本
CRADI 有 多征象弱监督 同为弱监督标签,覆盖征象不同
OpenI IU X-Ray 有 报告配对 互补:规模小但含另一家机构
MIMIC-Ext-CXR-QBA 有 视觉问答三元组 同为 MIMIC-CXR 派生的结构化标注

这条关系线要说的是:同上游的派生集很多,绝大多数在「有没有影像」与「规模」上竞争,只有它在「标签维度」这一列上加码。

6.2 检索路径

你要找的东西 检索词 会落到哪里
同一个上游的其他派生 MIMIC-CXR、mimic-cxr-jpg §6.1 表与 §3.3
带不确定标记的对照 CheXpert、uncertain §2.6 与 §4.2
报告结构化的另一条路 RadGraph、CXRGraph、关系抽取 §6.1 表
带框或带掩膜的胸片标注 VinBigData、目标检测、分割 §4.4 的粒度表
视觉问答与多模态基准 VQA、report generation §6.1 表
凭证访问与协议细节 credentialed、DUA、CITI §5.1

6.3 与同上游条目的分工判据

任务 主粮仓该用什么 CAD-Chest 的位置 原因
常规多标签分类预训练 带影像的大规模胸片集 不参与 它不含影像,且标签是补充层
不确定样本处理策略研究 上游自带标签 主力 四级赋值是唯一可用的刻度
严重度分级 无可替代 主力 公开标签里几乎只有它给严重度
位置条件化分类 无可替代 主力 位置词支持,粗粒度但可用
报告生成 带报告原文的配对集 辅助 可当生成结果的校验集
病灶定位与分割 带框或带掩膜的集 不适用 无空间标注
跨机构泛化 多中心集 不适用 上游单一机构
影像-文本一致性 配对集 主力之一 四层标注可直接与报告原文对拍

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

先纠正一个常见的误判:把「规则抽取的标签」当成「质量差的同义词」。规则法在放射报告结构化这个具体任务上并不天然劣于人工——报告本身就是半结构化文本,模板化程度高,词表加语法分析能覆盖的表述空间是有限且可枚举的。真正的问题不在「用规则」,而在「规则错了没人改」:它上线至今只有一个版本,没有修订记录,也没有公开的勘误通道之外的更新。

这个校正会改变五维评分的读法。它在「标签维度」上拿高分,在「可独立使用」上拿低分。把这两件事混在一起看,会得出「不值得用」或「可以放心用」两种同样错误的结论。

7.1 五维评分

按数据集评价的常用维度打分,每项 1–5 分,分数针对「作为胸片影像研究的补充标签」这个用途:

维度 分数 理由
数据规模 5 65,379 名患者、227,827 次检查,覆盖上游全量
标注质量 3 规则抽取加 500 份报告医师评估,缺框级与像素级校验
任务适配 4 严重度与不确定度几乎无可替代,定位类任务完全不支持
文档完整 4 方法、词表、字段、示例齐全,但外层容器形态未说明
可获取性 2 凭证访问、需培训、须同时持有三份上游权限

五项合计 18 分(满分 25)。这个分数结构的含义是:它的门槛在「拿到」,价值在「拿到之后的标签维度」,风险在「标签本身的校验深度」。

7.2 标注质量的两层

第一层是官方做过的校验。作者请医生评估了随机抽出的 500 份放射报告及对应的异常、严重度、不确定度标签,从这 500 份里抽出约 2645 条异常描述,统计五类错标的出现次数:

错标类型 出现次数 含义
漏抽异常 59 报告里写了,方法没抽出来
漏抽严重度 16 异常抽对了,严重度没抽到
抽错异常 7 抽出报告里没有的异常
抽错严重度 2 异常抽对了,严重度判错
抽错不确定度 54 异常抽对了,不确定度判错

官方按 2645 条描述为分母给出了各项占比,最高的一项是漏抽异常,在百分之二量级;抽错严重度只有 2 次,是五项里最低的。结论是:标签在绝大多数情况下正确,错误集中在漏抽异常与不确定度判断两处。

第二层是官方没有做的校验。这里有三件事必须自己心里有数:

未校验之处 表现 影响
无影像侧校验 评估只比对报告文本与抽取结果 报告与影像不一致时,标签会忠实反映报告的错误
抽样只覆盖 500 份 相对 227,827 次检查是极小的一部分 罕见表述的错标率无法从这份评估推出
无跨读者一致性检验 未报告多名评估者之间的一致程度 「抽错不确定度」这一项的判断边界未被量化

第二层里最该记住的是第一行。它的全部标签都是报告的影子:报告漏写的 incidental 征象、模板里残留的上一次描述、前后两次检查的对比句被误读,都会原样进入标签。

7.3 已知的、可枚举的偏差

偏差 表现 影响
上游单一机构 全部来自波士顿一家医疗中心 设备、投照规范、报告风格单一
报告者差异 报告模板化程度高但存在漂移 同一表述在不同年份可能指向不同严重度
体位覆盖不均 官方统计只在 AP 与 PA 两种体位上做 侧位片的标注覆盖未在页面上说明
疾病覆盖不均 统计表覆盖 18 种疾病 表外疾病即使被抽出,也没有对应统计
患者内相关 一名患者可有多次检查 按检查随机切分会泄漏
标签无修订 只有 1.0 一个版本 已知错标不会被修正
影像不在包内 需另取 MIMIC-CXR-JPG 对齐失败会静默减少样本

7.4 外部验证矩阵

验证角色 做法 讲得通的地方 风险
与上游标签对拍 同一批影像上比较 CAD-Chest 与 CheXpert 式标签 来源相同,差异只来自口径 差异不能直接判谁对
不确定度建模消融 按 0.7 / 0.5 / 0.3 三档分别建模 刻度是官方给的,可复现 阈值选择会显著影响结果
严重度分级 用四档严重度训练分级头 公开标签里几乎唯一的选择 严重度在报告中的覆盖不均
报告生成结果校验 用四层标注检查生成报告的事实一致性 结构化字段便于自动比对 只能查被词表覆盖的疾病

配套论文给出的是第四行之外的一条路:作者用多关系图学习框架同时利用空间关系与语义关系,并用专门的损失函数处理专家不确定性,报告了在胸片诊断与模型可解释性上的改进。这说明这批标签在作者手里是被当作「带权监督信号」用的,而不是被压成二值用的——这恰恰是最容易被后来的使用者忽略的一点。

反过来也要防止把论文成绩当成标签质量的证明。论文报告的是「用这批标签加这个框架得到的成绩」,不是「这批标签有多准」;两者之间隔着一个方法设计,不能直接换算。

7.5 它为何只有一版却仍值得用

它没有修订、没有扩版、也没有社区维护记录,原因是它的价值不依赖于迭代:它占住的是「公开胸片标签里少数带严重度与不确定度刻度的一个」。上游 MIMIC-CXR 与 MIMIC-CXR-JPG 本身也长期停在 2.0.0 与 2.1.0,只要上游不变,重抽的收益就有限。

真正会让它过时的不是更好的规则,而是另一种标签来源——比如由大模型直接从报告抽取、或由多位医生重新判读的公开标注集出现。在那之前,它是这个细分位置上为数不多的选项。

§8 生态位与历史

8.1 历史沿革

时间 事件 说明
2019 上游 MIMIC-CXR 与 MIMIC-CXR-JPG 发布 报告与影像首次大规模开放,标签为二值加不确定
2019 CheXpert 提出不确定标签的三类处理 确立了「不确定是一类」的主流范式
2023-12-08 CAD-Chest 1.0 上线 把不确定拆成刻度、加上严重度与位置
2025-01 配套论文发表于 IEEE TMI 给出多关系图学习基准

它出现在 2023 年底,正是胸片大模型与视觉语言模型开始大量使用 MIMIC-CXR 的时段。这批工作共同暴露了一个问题:模型在报告生成与判读上的瓶颈,越来越不在「有没有标签」,而在「标签够不够细」。CAD-Chest 是对这个问题的直接回应。

官方指标页显示,项目自 2023 年 12 月开始统计访问,累计独立注册用户浏览 296 次;Scholar Data 提供的实验性指标里,被引 0 次、非学术提及 1 次、FAIR 评估 FUJI 得分 73.0、2025 年数据集影响力指数 0.9。这些数字的量级说明一件事:它在指标意义上的传播还很有限,与它的上游完全不在一个量级。把它当作「被广泛验证的基准」是不准确的。

8.2 与挑战赛及论文的关系

它没有充当任何公开挑战赛的官方数据来源,这一点与很多同期数据集不同。它的出场方式是「论文的配套资源」:先有论文方法与结果,再把标签以 PhysioNet 项目的形式发布,论文正文里直接给出项目地址。

这个顺序有实际影响。作为挑战赛来源的数据集,通常会有明确的任务定义、官方划分与评测脚本;作为论文配套资源发布的数据集,这三样都要使用者自己补。它的官方页面没有发布训练测试划分,也没有评测脚本——所有的口径工作都在下游。

8.3 生态位:补充层而不是底座

角色 底座 补充层
典型用法 大规模训练、预训练、基准评测 标签细化、条件化建模、校准研究
需要的前提 影像、规模、官方划分 标签维度、可审查的词表
代表 带影像的大规模胸片集 本数据集
失败模式 标签太粗无法回答细分问题 离不开底座,单独使用时无像素可用

它坐在右边这一列。把补充层当底座用,会立刻遇到「没有影像」;把底座当补充层用,会立刻遇到「没有严重度」。两者不能互换,正确用法是把它的四层标注 join 到底座上。

8.4 谁在用它,用来做什么

从公开可见的信息看,使用者集中在三类:做不确定度建模与校准的方法组(要它的四级赋值)、做严重度感知分类的影像组(要它的四档严重度)、做报告生成事实一致性的多模态组(要它的结构化字段做校验)。

第三类常被低估。报告生成模型最难评估的是「生成的内容与影像是否一致」,而四层标注恰好提供了一组可自动比对的结构化事实:抽出的疾病名、位置、严重度,都可以直接去生成文本里找对应表述。这个用法不需要影像参与,因此也是唯一绕开「必须持有三份凭证」的路径之一——只要你有标注文件与生成结果就能做。

§9 使用指引

9.1 三种角色的路径

角色 第一天 第一周 注意事项
影像算法研究者 读项目页方法与字段,跑通 §5.3 的解析 按 subject_id 分组,建立不确定度分档基线 先定概率口径再动手(§5.4)
报告 NLP 研究者 读四个词表,理解抽取口径 用四层标注校验抽取或生成结果 词表即规则,改词表等于改口径
临床决策支持工程师 确认三份凭证是否齐备 打通 dicom_id 到 JPG 的对齐并统计对不上率 别把标签当金标准(§7.2)

9.2 一条最短的可用流程

#-- 1. 三份凭证:CAD-Chest、MIMIC-CXR、MIMIC-CXR-JPG 都要签
#--    并确认 CITI 培训已完成

#-- 2. 取标注与词表(带 Cookie,跟随重定向)
curl -b cookies.txt -L -o cad_disease.json \
     https://physionet.org/files/cad-chest/1.0/cad_disease.json
head -c 200 cad_disease.json      #-- 确认不是 HTML

#-- 3. 取上游元数据,建立 dicom_id -> 路径 的对照
curl -b cookies.txt -L -o mimic-cxr-2.0.0-metadata.csv.gz \
     https://physionet.org/files/mimic-cxr-jpg/2.1.0/mimic-cxr-2.0.0-metadata.csv.gz
import json
import pandas as pd

with open('cad_disease.json') as f:
    data = json.load(f)

#-- 建长表,并按 subject_id 分组划分(示例:取模分组,换口径请显式改)
rows = [{'subject_id': r['subject_id'], 'study_id': r['study_id'],
         'dicom_id': r['dicom_id'], 'view': r['view'],
         'disease': e.get('entity_name'), 'level': e.get('level'),
         'probability': e.get('probability')}
        for r in data for e in r.get('entity', {}).values()]
long = pd.DataFrame(rows)

subs = long['subject_id'].unique()
fold = {s: (i % 5) for i, s in enumerate(sorted(subs))}
long['fold'] = long['subject_id'].map(fold)
print(long.groupby('fold')['study_id'].nunique())

最后一行打印每个折里的检查数,用来确认划分是按人而不是按检查落下去的。如果每个折的检查数与该折的患者数不成比例地悬殊,说明划分口径写错了。

9.3 引用方式

引用对象 内容
数据集 Zhang, M., Hu, X., Gu, L., Harada, T., Kobayashi, K., Summers, R., & Zhu, Y. (2023). CAD-Chest: Comprehensive Annotation of Diseases based on MIMIC-CXR Radiology Report (version 1.0). PhysioNet. doi:10.13026/44pd-vz36
上游 同时使用 MIMIC-CXR v2.0.0 与 MIMIC-CXR-JPG 时须一并引用,官方页面在 Parent Projects 一节明确要求
平台 PhysioNet 平台综述论文,按项目页 Cite 按钮生成
配套论文 IEEE Transactions on Medical Imaging, 44(1):338–347, 2025

写论文时建议同时注明:使用的版本号(1.0)、不确定度取的是概率赋值还是概率分值、阈值取多少、以及划分是否按 subject_id。这四件事决定结果能否被复现,而官方页面一件都没有给定。

§10 AI 使用声明

项目 声明
文本生成 本文由 AI 辅助撰写,编辑把关结构与事实
数字来源 规模、结构、边界三类数字来自 PhysioNet 官方项目页、官方指标页与上游 MIMIC-CXR / MIMIC-CXR-JPG 项目页
文件核验 项目页「数据描述」一节正文点名的五个文件名已核验;文件目录本身在本次核实时返回不可访问,未做目录遍历
不一致说明 CAD-Chest 记 227,827 个 study_id,MIMIC-CXR v2.0.0 摘要记 227,835 次检查,MIMIC-CXR-JPG 标注节记 227,943 份报告;三处计数口径不同,本文在涉及 CAD-Chest 时一律用 227,827
论文信息 仅核对了 IEEE TMI 论文的题名、卷期页与作者名单,未读全文;论文内部结果未引用
未核验内容 影像统一分辨率数值(上游按图记录像素尺寸)、cad_disease.json 外层容器形态、侧位片的标注覆盖、表外疾病的抽取情况、各疾病的逐类计数
图像 无配图;封面为生成式提示词,不含真实影像
免责 本文不构成临床建议;数据使用须遵守 PhysioNet Credentialed Health Data License 1.5.0

常见误读(避坑清单)

说法 实际 证据
「它是带影像的胸片数据集」 只有标注与词表,影像须另取 MIMIC-CXR-JPG 官方使用说明要求按 subject_id、study_id 去找影像
「它的标签是医生重新读片标出来的」 规则从报告文本抽取,医生只做了 500 份抽样评估 官方方法节写明用 NLTK 与 spaCy 抽取
「不确定度只有一类」 四级赋值 1.0 / 0.7 / 0.5 / 0.3,另有一列对应明确否认 官方不确定度词表给出了分级赋值
「level 就是严重度等级」 level 存的是原始词(mild、minimal),等级需按四档合并表映射 官方严重度词表按语义合并为四档
「probability_score 是概率」 只是「越大越确定」的分值,阈值由使用者自定 官方说明示例里 positive 为 3、without 为 -3
「一次检查只有一条标注」 一次检查的 entity 里可以有多个疾病,每种疾病还可能有第二位点 官方示例同时含气胸、肺不张与肺水肿
「没有这条记录就是没有这个病」 被报告明确否认的疾病会以严重度为「无」的形式出现 示例中 edema 的 probability 为 without
「可以按 study_id 随机切分」 一名患者有多次检查,须按 subject_id 分组 官方字段说明 subject_id 唯一标识患者
「它有病灶框」 全程无框无掩膜,位置是 left、basal 一类的词 官方位置词表只包含位置词
「可以直接商用或投产」 凭证访问,须签协议并完成 CITI 培训 官方访问区列出许可、协议与必需培训
「227,827 就是报告总数」 这是 CAD-Chest 自己记的 study_id 数,与上游三处计数口径不同 见 §10 的不一致说明
「CAD-Chest 疾病标注集已经过社区多轮修订」 版本历史只有 1.0 一条,无修订记录 官方版本区只有一条记录

FAQ

Q1:CAD-Chest 里到底有没有胸片图像?
没有。包里只有一个 JSON 标注文件和四个词表文本文件。影像要按 dicom_id 从 MIMIC-CXR-JPG 取,报告原文与检查元数据要按 study_id、subject_id 从 MIMIC-CXR 取。因此一次完整的实验需要同时持有三个 PhysioNet 凭证项目的访问权,并完成 CITI 培训。

Q2:不确定度的四级赋值该怎么用?
官方给的是「越大越确定」的刻度:明确为 1.0,倾向为 0.7,弱可能为 0.5,不敢排除为 0.3,另有一类对应明确否认。官方没有给阈值,说明里明确说使用者可以按自己的需要设定。实践上建议至少把 0.7 与 0.3 分开处理——把「可能」和「不能排除」并成同一类,等于把这条刻度又压回上游的单值不确定标记。

Q3:严重度字段为什么不是等级名?
因为 level 存的是从报告里抽出的原始词,比如 mild、minimal、severe、acute。官方另外给了一张合并表,把语义相近的词归成 Mild、Moderate、Severe、No 四档。想拿到等级必须自己做映射;直接用原始词会把 mild 与 minimal 误当成两个不同等级。

Q4:它的标签有多准?
官方请医生评估了随机抽出的 500 份报告及对应标签,从中抽出约 2645 条异常描述,统计出五类错标的次数:漏抽异常 59 次、漏抽严重度 16 次、抽错异常 7 次、抽错严重度 2 次、抽错不确定度 54 次。官方按 2645 条为分母给出的占比,最高的一项是漏抽异常,在百分之二量级。要注意这份评估只比对报告文本与抽取结果,没有影像侧的校验。

Q5:能不能拿它做目标检测或分割?
不能。它的位置字段是 left、right、lower、basal 这样的解剖位置词,最多支持 location 与 location2 两处,既没有边界框也没有像素级掩膜。它能支撑的是「给定位置条件下的分类」,定位类任务需要另外找带框或带掩膜的数据源。

Q6:为什么我下载下来的是一个网页而不是 JSON?
凭证项目的文件请求会先跳到鉴权地址再回源。匿名请求、或未跟随重定向的请求,会拿到登录页 HTML,而返回码可能仍是 200。做法是带上登录后的 Cookie 并加跟随重定向参数,拿到文件后先看首字符是否为 JSON 的结构符号再继续。

Q7:它和上游自带的 CheXpert 式标签是什么关系?
是同一批影像上的两套标签。上游用 NegBio 与 CheXpert 生成的标签是二值加单值不确定标记,覆盖十四个类别;CAD-Chest 用自建词表与规则抽出四层信息,官方统计表覆盖十八种疾病。两者可以互相对拍,用来研究「标签口径不同会怎样改变模型」这类问题。

Q8:划分训练集和测试集要注意什么?
按 subject_id 分组,不按 study_id 随机切。一名患者可以有多次检查,多次检查共享同一批设备设置、同一套报告风格,甚至相邻检查的描述会互相引用。按检查随机切会把同一名患者送到两侧,得到的成绩会偏乐观。

Q9:为什么它只有 1.0 一个版本?
官方版本区只有 2023 年 12 月 8 日发布的 1.0,没有修订记录。从数据来源看,上游 MIMIC-CXR 与 MIMIC-CXR-JPG 本身也长期停在 2.0.0 与 2.1.0,只要上游不变,重抽的收益有限。这也意味着已知的错标不会被修正。

Q10:它的许可允许商业使用吗?
许可为 PhysioNet Credentialed Health Data License 1.5.0,要求签署数据使用协议 1.5.0 并完成 CITI 培训,且仅限签署协议的凭证用户访问。这是研究用途的受限访问许可,不是开放许可;能否用于商业场景须以许可全文与协议条款为准,不能按「公开数据集」的默认理解处理。

术语表

术语 解释
胸片 / 胸部 X 光 胸部 X 线摄影,全球最常见的影像检查
AP 体位 前后位投照,antero-posterior,常见于床旁片
PA 体位 后前位投照,postero-anterior,标准站立位胸片
侧位 lateral,从左或右侧投照,用于定位与前后重叠区
DICOM 医学影像的标准文件格式,含像素与大量元数据
dicom_id 单个 DICOM 文件的标识,也是 JPG 文件的文件名主干
study_id 一次影像检查的标识,对应一份放射报告
subject_id 一名患者的标识,划分数据集时的分组键
放射报告 放射科医生写的自由文本,含所见与印象两节
弱监督标签 从文本或其他间接来源自动导出的标签,不靠人工逐例标注
规则抽取 用词表匹配加语法分析从文本中抽出结构化字段
NLTK Python 自然语言处理工具包,官方用于文本处理
spaCy 工业级自然语言处理库,官方用于实体抽取
NegBio 从放射报告检测否定与不确定的开源规则工具
CheXpert 从放射报告抽取十四类标签的开源规则工具
不确定度 医生对自己判断的确定程度
严重度 疾病的程度,官方合并为四档
概率赋值 不确定度的连续刻度,取值 1.0 / 0.7 / 0.5 / 0.3
概率分值 probability_score,越大越确定,阈值自定
长表 一行一个疾病实体的表结构,避免摊宽表丢失第二位点
凭证访问 须签署数据使用协议并通过审核才能下载
CITI 培训 人体研究伦理与数据安全的在线课程
HIPAA 安全港 美国健康信息去标识的法定标准之一

附录 A:核心数字核对表

数字 出处
65,379 个 subject_id 官方数据描述节
227,827 个 study_id 官方数据描述节
63,903 个 subject_id(AP 与 PA 体位) 官方数据描述节
217,982 个 study_id(AP 与 PA 体位) 官方数据描述节
18 种疾病(统计表覆盖) 官方数据描述节
500 份报告(医师评估样本) 官方评估节
约 2645 条异常描述 官方评估节
漏抽异常 59 次 官方评估表
抽错不确定度 54 次 官方评估表
抽错严重度 2 次 官方评估表
14 个类别(上游标注的对照口径) 官方背景节与 MIMIC-CXR-JPG 页面
377,110 张影像 MIMIC-CXR v2.0.0 与 MIMIC-CXR-JPG 摘要
四个严重度合并等级 官方严重度词表说明
四级不确定度赋值 1.0 / 0.7 / 0.5 / 0.3 官方不确定度词表说明
五个文件(一个 JSON 加四个词表) 官方数据描述节点名
2023 年 12 月 8 日发布,版本 1.0 官方版本区与引用区
DOI 10.13026/44pd-vz36 官方访问区 DOI(v1.0)
累计浏览 296 次 官方指标页
FUJI 得分 73.0 官方指标页(Scholar Data,实验性)

编辑说明

本文的核验时间为 2026 年 10 月 28 日。核对方式为直接访问 PhysioNet 项目页、官方指标页,以及上游 MIMIC-CXR v2.0.0 与 MIMIC-CXR-JPG 的项目页。规模、结构、边界三类数字均取自上述页面的正文,未做自行计算;官方给出的疾病与不确定度分布明细表按写作规范未予转载,只在正文中说明其覆盖范围。

本次核实时,项目的文件目录返回不可访问状态,因此五个文件名来自项目页「数据描述」一节的正文,未做目录遍历;影像的统一分辨率数值在官方页面与上游页面均未给出,上游按图记录像素尺寸,已列入未核验内容。三处计数不一致(227,827 / 227,835 / 227,943)已在 §10 明确说明取舍。配套论文只核对了题名、卷期页与作者名单,未读全文,论文内部结果未引用。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • mimic-cxr-ext-mimic-cxr-db — 共享标签:医学影像 / X光影像 / 医疗NLP / 临床文本
  • chexpert-plus — 共享标签:医学影像 / X光影像 / 临床文本 / 影像-文本对齐
  • cxrgraph — 共享标签:影像-文本对齐 / 命名实体识别 / X光影像
  • openi-iu-xray — 共享标签:医学影像 / X光影像 / 医疗NLP / 多模态
  • rexgradient-160k — 共享标签:医学影像 / X光影像 / 临床文本 / 影像-文本对齐
  • cradi — 共享标签:医学影像 / X光影像 / 医疗NLP / 临床文本
  • vinbigdata-cxr — 共享标签:医学影像 / X光影像 / 挑战赛数据集
  • medical-cxr-vqa-dataset — 共享标签:医学影像 / X光影像 / 多模态
  • mimic-ext-cxr-qba — 共享标签:多模态 / 影像-文本对齐 / X光影像
  • chestagentbench — 共享标签:X光影像 / 医学影像 / 评测基准
  • chexchonet — 共享标签:医学影像 / X光影像 / 心血管疾病 / 多模态
  • revapo — 共享标签:医学影像 / 多模态 / 影像-文本对齐 / 医疗NLP

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集