胸片多标签分类疾病检测技术简介
胸片多标签分类疾病检测技术简介
以开源库 TorchXRayVision 为主线,整理胸片多标签分类疾病检测的技术要点:框架与公开数据集、预训练权重下载、整图 0/1 监督与 DenseNet、增类标注,以及质控 / Grad-CAM / 解剖分割等增强能力。库不附带训练影像;权重托管于 GitHub Releases
v1(文档亦称 1.x)。非诊疗建议。
参考与延伸阅读:
- 仓库:https://github.com/mlmed/torchxrayvision
- 文档:https://mlmed.org/torchxrayvision/
- 数据集 API:https://mlmed.org/torchxrayvision/datasets.html
- 模型说明:https://mlmed.org/torchxrayvision/models.html
- 权重发布页:https://github.com/mlmed/torchxrayvision/releases/tag/v1
- 论文:https://arxiv.org/abs/2111.00595
目录
- 一、框架定位与能力地图
- 二、预训练权重一览与下载
- 三、公开数据集与标注语义
- 四、多标签分类:NLP 标签、0/1 与 DenseNet
- 五、增加一类疾病:要不要画框
- 六、辅助阅片增强:质控、热力图、解剖分割
- 七、相关:XrayGLM 胸片多模态大模型
- 八、小结
- 九、参考与来源
一、框架定位与能力地图
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-all | DenseNet121、224 输入;多公开集合并训练的多标签病理分类(约 18 类) | 默认推荐;通用多标签起点;下载量最大的核心权重之一 |
densenet121-res224-nih | 主要在 NIH ChestX-ray14 上训练的多标签分类 | 与 NIH 评测/复现对齐时选用 |
densenet121-res224-chex | 主要在 CheXpert 上训练 | 与 CheXpert 文献指标、14 类语义对齐时选用 |
densenet121-res224-pc | 主要在 PadChest 上训练 | PadChest / 欧洲数据分布实验 |
densenet121-res224-mimic_ch | MIMIC-CXR(CheXpert 风格标签)多标签分类 | 医院级报告标签场景;与 mimic_nb 标签管线不同 |
densenet121-res224-mimic_nb | MIMIC-CXR 另一标签变体上的多标签分类 | 做 MIMIC 标签敏感性对比时选用 |
densenet121-res224-rsna | 侧重 RSNA 肺炎挑战相关目标 | 肺炎筛查 / 对照时常用;非通用全类首选 |
resnet50-res512-all | ResNet50、512 输入;多集合并多标签分类 | 更高分辨率;算力与延迟明显高于 224 DenseNet |
pspnet_chestxray_best_model_4.pth | ChestX-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 |
| CheXpert | 22 万+ 张,14 类 + 不确定 | https://stanfordmlgroup.github.io/competitions/chexpert/ |
| MIMIC-CXR / JPG | 37 万+ + 报告 / 结构化标签 | PhysioNet 对应条目 |
| PadChest | 16 万+ 张 | http://bimcv.cipf.es/bimcv-projects/padchest/ |
| RSNA Pneumonia | 约 2.6 万张 | Kaggle RSNA Pneumonia |
| SIIM 气胸 | 分割 mask | Kaggle SIIM-ACR |
| VinDr-CXR | 医师 bbox | PhysioNet VinDr |
访问门槛从「免费+引用」到 PhysioNet 认证、签署协议不等,以各官网为准。
3.2 库内统一标签
| 约定 | 含义 |
|---|---|
.pathologies | 病种名列表 |
.labels | 1 阳性 / 0 阴性 / NaN 无标注或不确定 |
| 数据集 | 原始标注大致来源 | 是否以框选为主 |
|---|---|---|
| NIH / CheXpert / MIMIC | 报告 NLP 或结构化抽取 | 否(整图多标签) |
| PadChest | 报告结构化发现 | 否 |
| RSNA | 图像级 + 可选 bbox | 分类不强制框 |
| SIIM / VinDr | mask / 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 |
| 像素 mask | U-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 协议,不可默认商用 |
九、参考与来源
- TorchXRayVision:https://github.com/mlmed/torchxrayvision
- Releases v1:https://github.com/mlmed/torchxrayvision/releases/tag/v1
- 模型文档:https://mlmed.org/torchxrayvision/models.html
- XrayGLM:https://github.com/WangRongsheng/XrayGLM
- DenseNet:https://arxiv.org/abs/1608.06993
- CheXpert:https://arxiv.org/abs/1901.07031
