文章

胸片多标签分类疾病检测技术简介

胸片多标签分类疾病检测技术简介

胸片多标签分类疾病检测技术简介

以开源库 TorchXRayVision 为主线,整理胸片多标签分类疾病检测的技术要点:框架与公开数据集、预训练权重下载、整图 0/1 监督与 DenseNet、增类标注,以及质控 / Grad-CAM / 解剖分割等增强能力。库不附带训练影像;权重托管于 GitHub Releases v1(文档亦称 1.x)。非诊疗建议

参考与延伸阅读


目录


一、框架定位与能力地图

TorchXRayVision 面向胸部 X 光研究:统一数据集接口 + 预处理 + 预训练模型 + 评测脚本。不是临床 PACS 产品,也不是标注平台。

面向诉求库提供什么
研究者不想从零训模型预训练权重 + 统一接口
算法评测多外部数据集对比统一 Dataset,换数据常只改 imgpath
1
2
3
4
5
6
7
torchxrayvision
├── models          DenseNet / ResNet 分类 + 权重下载 + op_threshs
├── baseline_models 第三方复现、解剖分割 PSPNet 等
├── datasets        多公开集加载 + 合并/过滤/分布偏移
├── autoencoders    表征 / 重建
├── utils           读图、DICOM、批量 infer、归一化检查
└── scripts/        训练、校准、热力图 Notebook 等

pip install torchxrayvision 后,首次加载模型常会自动下载权重到本地缓存(默认 ~/.torchxrayvision);亦可从 Release v1 手动下载直链。


二、预训练权重一览与下载

发布页:https://github.com/mlmed/torchxrayvision/releases/tag/v1
直链前缀:https://github.com/mlmed/torchxrayvision/releases/download/v1/

核心分类器用 weights= 标识加载,例如:

1
2
3
import torchxrayvision as xrv
model = xrv.models.DenseNet(weights="densenet121-res224-all")
# model = xrv.models.ResNet(weights="resnet50-res512-all")

说明:接口统一为约 18 类输出;非 all 的权重在部分类上可能未充分训练(对应数据集无该类时,官方文档提示预测不可靠)。换权重后宜使用该权重自带的 op_threshs 或自行在验证集重标定。

模型名称(weights模型作用备注
densenet121-res224-allDenseNet121、224 输入;多公开集合并训练的多标签病理分类(约 18 类)默认推荐;通用多标签起点;下载量最大的核心权重之一
densenet121-res224-nih主要在 NIH ChestX-ray14 上训练的多标签分类与 NIH 评测/复现对齐时选用
densenet121-res224-chex主要在 CheXpert 上训练与 CheXpert 文献指标、14 类语义对齐时选用
densenet121-res224-pc主要在 PadChest 上训练PadChest / 欧洲数据分布实验
densenet121-res224-mimic_chMIMIC-CXR(CheXpert 风格标签)多标签分类医院级报告标签场景;与 mimic_nb 标签管线不同
densenet121-res224-mimic_nbMIMIC-CXR 另一标签变体上的多标签分类做 MIMIC 标签敏感性对比时选用
densenet121-res224-rsna侧重 RSNA 肺炎挑战相关目标肺炎筛查 / 对照时常用;非通用全类首选
resnet50-res512-allResNet50、512 输入;多集合并多标签分类更高分辨率;算力与延迟明显高于 224 DenseNet
pspnet_chestxray_best_model_4.pthChestX-Det 解剖结构分割(肺、心、纵隔等,约 14 类)baseline_models.chestx_det不是疾病分割;叠加阅片用
101-elastic 自编码器ResNetAE 表征 / 重建(autoencoders.ResNetAE异常检测、表征研究;非默认分类路径

Release v1 另有第三方 baseline(如 JFHealthcare DenseNet、年龄/性别相关模型、VQGAN 等),加载方式见 baseline_models 文档;一般不必作为多标签疾病检测默认栈。


三、公开数据集与标注语义

3.1 数据在哪

影像不在仓库内,需到各公开源申请/下载;包内可带标注 CSV。

数据集规模/用途下载入口
NIH ChestX-ray14约 11 万张,14 类多标签https://nihcc.app.box.com/v/ChestXray-NIHCC
CheXpert22 万+ 张,14 类 + 不确定https://stanfordmlgroup.github.io/competitions/chexpert/
MIMIC-CXR / JPG37 万+ + 报告 / 结构化标签PhysioNet 对应条目
PadChest16 万+ 张http://bimcv.cipf.es/bimcv-projects/padchest/
RSNA Pneumonia约 2.6 万张Kaggle RSNA Pneumonia
SIIM 气胸分割 maskKaggle SIIM-ACR
VinDr-CXR医师 bboxPhysioNet VinDr

访问门槛从「免费+引用」到 PhysioNet 认证、签署协议不等,以各官网为准。

3.2 库内统一标签

约定含义
.pathologies病种名列表
.labels1 阳性 / 0 阴性 / NaN 无标注或不确定
数据集原始标注大致来源是否以框选为主
NIH / CheXpert / MIMIC报告 NLP 或结构化抽取(整图多标签)
PadChest报告结构化发现
RSNA图像级 + 可选 bbox分类不强制框
SIIM / VinDrmask / bbox分割或检测任务

没有「从零标注胸片」教程;自建数据时对齐 CheXpert 14 类或 default_pathologies,用 relabel_dataset() 统一列顺序。


四、多标签分类:NLP 标签、0/1 与 DenseNet

4.1 任务形态

1
胸片像素 + 标签向量 [0,1,0,…]  →  DenseNet 多标签 BCE  →  多类独立概率(sigmoid)
  • 推理只喂图,不读报告。
  • 标签很多来自报告 NLP → 弱监督,有噪声;不是「纯 NLP 模型」,也不是逐张框选金标准。
  • 学的是「报告说有/无」与视觉模式的统计关联,不等于临床最终诊断。

4.2 只要 0/1?要不要手工特征?

 传统 ML深度 CNN(DenseNet 等)
特征人手设计网络自学习
整图分类常需 ROI通常不要框
监督仍要(可为整图 0/1)

不框选时梯度在全图反传,网络会隐式关注相关区域;小病灶、必须定位时需检测/分割。

4.3 DenseNet 与常见选型

DenseNet:层间稠密 concat、特征复用、相对省参;DenseNet121 的「121」是深度配置。与 ResNet 差别主要在跨层是相加还是拼接

需求更常选
现成胸片多标签DenseNet121-res224-all 等
更高分辨率ResNet50-res512-all
像素 maskU-Net 系
框出位置检测网络

五、增加一类疾病:要不要画框

目标做法
新名字只是已有类别名产品层映射,不重训
真正第 N+1 类「有没有」CSV 加一列 0/1 + 扩分类头 + 微调 + 标定阈值 + 评测
必须指出在哪bbox/mask,另一任务,成本更高

与现有 18 类同类的多标签分类:不需要画框。 公开集主标注也不是框。

1
2
❌ 只改 CSV、不改输出维、不重训  →  无效
✅ 加列 + 扩头 + 微调 + 阈值 + 独立测试集

注意多标签非互斥、不确定标签策略、报告噪声抽检、PA/AP 视角与患者级防泄漏。


六、辅助阅片增强:质控、热力图、解剖分割

仅有概率条时体验易「单薄」。可在同一工具箱上叠加增强层(均为辅助,非诊断):

能力是什么用户侧价值局限
DICOM / QC体位、MONOCHROME、归一化范围、侧位/域外提示降低误信「乱报」;管理适用性预期启发式,非完整摄片质控
Grad-CAM按类叠加「决策关注区」从数字到「大致看哪」;发现伪相关 病灶边界
解剖 PSPNet肺、心等轮廓 overlay空间锚点;可与 CAM 组合限在肺野内 疾病分割

建议优先级:QC(轻)→ 解剖叠加(中)→ Grad-CAM 按需(中重)。界面需统一免责声明。

还可扩展:阳性摘要分组、多权重对照、批量评测、本院微调、气胸/结节专项定位等。


七、相关:XrayGLM 胸片多模态大模型

与 TorchXRayVision「CNN 多标签概率」路线不同,XrayGLM 定位为会看胸部 X 光的中文多模态医学大模型(项目自称首个面向胸片摘要/对话的中文多模态方案之一):输入胸片,输出自然语言描述或问答,偏报告摘要与交互,而不是固定 18 类 sigmoid 分数。

说明
技术底座基于 VisualGLM-6B、ChatGLM 等视觉–语言模型微调
公开权重Hugging Face 等可见 XrayGLM-300 / XrayGLM-3000 等;部分更高质量版本未完全公开
训练数据常涉及 MIMIC-CXR、OpenI 等公开胸片–报告数据(各数据集另有使用协议)
与本文主线差异XRV:分类/分割研究库;XrayGLM:多模态生成/对话

许可与边界(务必注意):仓库为 CC BY-NC-SA 4.0,README 写明仅供学术研究,严禁商业用途;输出不能作为实际医学诊断依据。上游基座模型与数据集协议需单独核对。商用须另行取得作者授权,或改选明确允许商用的栈。

一句话:需要「中文看片说话」可了解 XrayGLM;需要「可复现的多标签分类 baseline + 统一数据集」仍以 TorchXRayVision 为主。


八、小结

要点结论
框架数据接口 + 预训练 + 评测;权重在 Release v1
默认分类权重densenet121-res224-all
主任务整图多标签「有没有」;标签常来自报告 NLP
增类映射 / 扩头微调 / 检测分割三路勿混
增强QC、CAM、解剖叠加提升可读与可信,不替代医师
多模态大模型XrayGLM 走生成/对话路线;NC 协议,不可默认商用

九、参考与来源

本文由作者按照 CC BY 4.0 进行授权