CXR Multi-Label Classification — ConvNeXt 896 Ensemble

胸部 X 光片 10 类多标签分类的双模型集成权重(ConvNeXt-Small + ConvNeXt-Tiny @896)。

配套代码与完整技术报告:**https://github.com/Altriaqe/cxr-multilabel**


模型概述

项 内容
任务 胸片 10 类多标签(9 类病灶 + No Finding),指标为 9 类宏平均 AUC
成员 A ConvNeXt-Small,timm/convnext_small.in12k_ft_in1k 初始化,官方数据微调 24 轮
成员 B ConvNeXt-Tiny,timm/convnext_tiny.in12k_ft_in1k 初始化,官方数据微调 12 轮
输入 896×896 灰度(复制 3 通道,ImageNet 归一化)
聚合 study 内多图 logit 平均 → 两成员 logit 等权平均 → sigmoid
后处理 患者平滑 p' = (1-λ)p + λ·mean(同患者其他 study),λ=0.15(可选)
推理精度 FP16(T4 原生 tensor core)
体积 / 延迟 295 MB / 约 62 ms/study(T4 级硬件)

文件

文件 大小 说明
exp066_s896_24ep_best.pth 188.8 MB 成员 A(ConvNeXt-Small@896,24 轮)
exp054_t896_a05_best.pth 106.2 MB 成员 B(ConvNeXt-Tiny@896,12 轮)
members.json — 推理成员清单(配合 code/predict.py 使用)

权重格式为 PyTorch checkpoint,含 arch 与 model_state_dict 两个键。

用法

import torch, timm
ck = torch.load("exp066_s896_24ep_best.pth", map_location="cpu", weights_only=False)
model = timm.create_model(ck["arch"], pretrained=False, num_classes=10)
model.load_state_dict(ck["model_state_dict"])
model.eval()

或直接使用仓库里的推理脚本:

python tools/make_submission.py --data <图片目录> --members members.json --out pred.csv

类别

id 名称 id 名称
1 Enlarged Cardiomediastinum 6 Cardiomegaly
2 Pneumothorax 7 Atelectasis
3 Consolidation 8 Lung Opacity
4 Pneumonia 9 Pleural Effusion
5 Edema 10 No Finding

性能

配置 验证集 9 类宏 AUC
成员 A 单模型 0.8130
成员 B 单模型 0.8111
两成员集成 0.8139
两成员集成 + 患者平滑 λ=0.15 0.8167

训练数据与合规

  • 仅使用赛方官方训练集(30,344 图 / 18,513 study)微调
  • 预训练权重来自 timm 的 ImageNet-12k 权重(通用自然图像,Apache-2.0)
  • 未使用任何外部医学数据集、未使用医学预训练权重、未使用测试集标签

⚠️ 权重由赛方提供的数据集微调而来。若你计划将本权重用于商业用途或再分发, 请自行确认原始数据集的许可条款。

许可

  • 代码:MIT
  • 预训练权重:Apache-2.0(timm/convnext_{small,tiny}.in12k_ft_in1k)
  • 上游架构:facebookresearch/ConvNeXt(Apache-2.0)

引用

@misc{cxr-multilabel-896,
  title  = {CXR Multi-Label Classification: ConvNeXt 896 Ensemble},
  year   = {2026},
  note   = {Two-model ConvNeXt ensemble for chest X-ray multi-label classification,
            optimized for a 100 ms/study latency budget}
}
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support