设计档案馆
中EN

(一)赛前选定基座模型

《全国医保影像 AI 识图大赛》初赛记录(一):赛前三天,在公开胸片数据上比较基座、随机种子和融合。胸片专用的 RAD-DINO 胜出,种子 41 的 composite 略高,用全部赛前数据重训后得到 RAD41。

L.01 / 14
CATEGORY
研究
YEAR
2026
STATUS
笔记
TOOLS
pytorch / rad-dino / efficientnet

entry记录

这个系列共五篇,记录我们参加《全国医保影像 AI 识图大赛》赛道八「基于胸部 X 光的多种疾病智能检测」「自有模型组」的模型研发:第一篇基座与种子,第二篇 ROI 基线,第三篇换检测头,第四篇未留下的配方,第五篇融合。这是第一篇,写进入赛方环境之前的三天:在公开胸片数据上选基座模型、看随机种子的影响、试融合,最后用全部赛前数据重训出 RAD41,名字里的 41 就是随机种子 41。

现成的基座模型先在 Kaggle 上的胸片数据集 VinBigData 上比较胸片分类和定位,候选有三个:胸片专用的 ViT 模型 RAD-DINO、通用视觉模型 DINOv2,以及一种 CNN,DenseNet-121。这种比较用公开数据代替赛事任务,称为代理验证,得到的分数不是比赛分数;分类看 AUPRC,即精确率—召回率曲线下的面积,各类分别计算后取平均;定位看 mAP:先对每一类算 AP,即预测框按置信度排序后的精确率—召回率曲线下面积,预测框和标注框的交并比(IoU)够高才算检出,再对各类取平均。两项指标都在 0 到 1 之间,越高越好。比较分两轮:第一轮三者都参加,DINOv2 淘汰;第二轮 RAD-DINO 的 AUPRC 和 mAP 分别为 0.489151 和 0.068586,DenseNet 为 0.444539 和 0.010581。预设规则是 DenseNet 至少要在分类或定位中的一项领先才能晋级,RAD-DINO 两项都领先,DenseNet 淘汰。我们采用 RAD-DINO,输入保持 RAD-DINO 原生的 518;只取固定的预训练权重,没有下载或混入上游的预训练数据,上游数据的来源和我们实际训练用的数据分开记录。

接下来看结果对随机种子有多敏感,并和一个通用检测基线比一比。数据分成 10,500 张训练、2,250 张验证,RAD-DINO 用种子 17、29、41 各训练 3 轮,同时试了通用检测模型 FCOS。从这里起用分类 AUPRC 和定位 mAP 的平均值排名,称为 composite。三个种子的 composite 在 0.328686 到 0.330335 之间,最高的是种子 41,只是略高。FCOS 训练两轮,mAP 都是 0,在这套配置下按预设规则停止。

融合指把几个模型输出的概率按权重平均。这一步要看融合的收益够不够支撑更复杂的赛前模型:排在前两位的种子 41 和 29 先做等权融合,再加入种子 17 做三种子融合,然后把 41 和 29 分别续训到第 4 轮。双种子的 composite 为 0.348009,三种子为 0.347998,加第三个种子没有收益;续训后双种子达到 0.351650,增幅超过预设的 +0.003 采用门槛,双种子配方固定下来。随后在留出的 2,250 张测试图上跑了一次,只用来确认结果,没有用来挑模型,跑完也没有改配置。

为了找能和 RAD 互补的模型,先比较了三种 CNN:EfficientNetV2-M、ConvNeXt、DenseNet,没有一种单独胜过 RAD,其中 EfficientNet 最好。接着试了两条提高分辨率的路线:一是把 RAD 输入从 518 提到 1036;二是全图加切片,即把原图切成小块分别做定位。最后试了 RAD 518 加 EfficientNet 1024 的分类融合。RAD 1036 的 composite 为 0.323505,低于 518 的参考值 0.351650;全图加切片只有 0.284590;RAD 518 加 EfficientNet 1024 达到 0.361273,增益来自分类,定位没有变。这一轮实验里,和 EfficientNet 做分类融合比单纯提高 RAD 分辨率好。定下的方案 B 是:分类由 RAD41、RAD29 和种子 41 的 EfficientNet 按 0.4、0.4、0.2 加权,定位仍由两套 RAD 等权融合。

方案 B 之后又试了再多一个成员。EfficientNet 的种子 41 和 29 等权融合,得到一套纯 CNN 的备份;再把两个 EfficientNet 种子和两个 RAD 种子组成四成员融合。四成员的定位和方案 B 完全相同,差别只在 EfficientNet 那一份分类权重由两个种子分担。结果四成员只比方案 B 高 0.000185,低于预设的 0.003 淘汰线。我们继续用方案 B,纯 CNN 方案留作备份。

配方定下后,交付的权重要用全部允许的赛前数据来训。重训从初始化器开始,即选基座第二轮留下的 RAD-DINO 检查点,过程是确定性的;训练数据是全部 15,000 张胸片,即此前的 10,500 张训练、2,250 张验证和 2,250 张留出测试图合在一起,留出的那部分只作为有标签的训练样本。RAD41 固定训练 4 轮,取第 4 轮结束时的权重;方案 B 的其他成员也按各自固定的轮数一起重训。训练中途停过一次,原因是数据读取的并行进程数和此前的基线不一致;停下后从最后一个完整轮次的检查点恢复,模型配方没有改,中断和恢复的记录都保留了下来。RAD41 的配置固定为 518 输入、种子 41、batch 32、编码器末层适配(微调只放开编码器的最后一个块),以及 15 类分类头和 14 类定位热图头。

最后在另一个公开胸片数据集 ChestDR 的固定 1,161 张影像上评估 VinBigData 之外的表现,并核对离赛事要求还差什么。评估只看两边都有的 8 个标签,对不上的标签不计入。ChestDR 不在我们申报的各个模型来源的训练数据里,但这只是相对申报来源而言,不能保证这些模型绝对没有接触过它。方案 B 的 AUPRC 为 0.368690,RAD41 单体为 0.363970;外部评估的结果没有用来改模型成员、权重或阈值。赛事要考五项任务 T1 到 T5:非人体识别、拼接与重复识别、征象检测、属性量化、解释定位;赛前模型只有 15 类分类和 14 类定位,五项任务还没有全部实现。我们决定保留赛前模型,进入赛方环境后再逐项构建 T1 到 T5。

赛前阶段留下两套模型:方案 B,以及纯 CNN 的备份;RAD41 是方案 B 的成员,后面四篇的模型都以 RAD41 为起点。本篇的分数都来自赛前代理任务,和进入赛方环境后评测平台上的 17 类征象检测分数、总分不能换算。各步的门槛都在看分数之前定好:采用门槛 +0.003、淘汰线 0.003、FCOS 的停止规则;增幅不过门槛的成员或配方不加,因为每加一个成员,模型就更复杂。留出测试只跑一次,用来确认结果,不用来挑模型。

process对比

基座对比

RAD-DINO
AUPRC 0.489151 · mAP 0.068586
DenseNet
AUPRC 0.444539 · mAP 0.010581

赛前代理验证 composite

seed 17
0.328686
seed 29
0.329670
seed 41
0.330335
41 + 29
0.348009
41 + 29 · 4 轮
0.351650
RAD 1036
0.323505 · 未采用
全图 + 切片
0.284590 · 未采用
方案 B
0.361273 · 采用
纯 CNN 备份
0.298519 · 留作备份
四成员
0.361458 · 未采用

result小结

结论
RAD-DINO 的分类 AUPRC 0.489151、定位 mAP 0.068586,两项都高于 DenseNet 的 0.444539 和 0.010581。双种子融合续训到第 4 轮,composite 为 0.351650;分类再融合 EfficientNet,定下方案 B,composite 为 0.361273。
参数
RAD-DINO · 518 输入 · seed 41 · batch 32 · 编码器末层适配 · 15,000 张全量 · 4 轮
没做完
这些都是赛前代理任务上的分数,和后来平台上的 17 类征象检测分数、总分不能换算;在 ChestDR 外部评估里,方案 B 的 AUPRC 为 0.368690,RAD41 单体为 0.363970。

log日志

2026-07-30
比较基座,定下 RAD-DINO
2026-07-30
种子 17、29、41 各训 3 轮,种子 41 略高
2026-07-30
双种子融合续训第 4 轮;敲定方案 B
2026-07-31
RAD41 全量重训跑完(15,000 张 · 4 轮)
2026-07-31
ChestDR 外部评估:1,161 张,8 个共享标签

相关实验

note
L.02(STUDY)2026

(二)从零搭起第一版

chest-xraypytorchrad-dino
note
L.03(STUDY)2026

(三)重做检测头

chest-xraypytorchrad-dino+1
note
L.04(STUDY)2026

(四)没过采用线的配方

chest-xraypytorchretinanet
← LabL.01 / 14
1 / 1

100%