跳转至

From Infusion to Assimilation Distillation for Medical Image Segmentation

会议: CVPR 2026
论文: CVF Open Access
代码: https://github.com/hjklearn/IAD
领域: 医学图像
关键词: 知识蒸馏, 医学图像分割, SAM, 原型对齐, 对比学习

一句话总结

针对现有知识蒸馏(KD)"灌进去就完事、不让学生消化"导致泛化反而变差的问题,本文提出两阶段框架 IAD:先用软标签+类加权原型对齐把 SAM 教师的语义"注入"轻量学生,再用对比语义自优化+反向特征约束让学生"同化"知识、保住自己原有的优势,在 Synapse/ACDC/Polyp 上 DICE 分别涨 4.32%/1.85%/2.42%,跨数据集泛化平均涨 4.16%。

研究背景与动机

领域现状:医学图像分割(MIS)需要能在算力受限设备上实时跑的轻量模型。基础模型如 SAM 分割效果好但计算量大,于是大家用知识蒸馏(KD)把笨重教师的表征能力迁移给紧凑学生——通过最小化两者预测差异,提升学生在迁移数据集上的精度和泛化。主流 KD 分三类:response-based(KD、LSKD、CrossKD…)、feature-based(OFD、AT、CATKD…)、以及二者混合(DIST+、VL2Lite…)。

现有痛点:作者跑了一组打脸实验(Fig. 1):用 SAM-L 当教师、EfficientNet-B1 当学生,在 Synapse 上做蒸馏,再到 ISIC2018/PH2/BUSI/STU 等迁移集上测——12 种主流 KD 方法里 58% 的学生模型性能反而掉了,剩下的提升也很有限。可视化(Fig. 2)进一步发现:教师整体强于学生,但在某些好分割的局部区域里学生其实分得比教师更准;可主流 KD 一味让学生模仿教师,反而把学生自己原本擅长的能力给"带歪"了,最终掉点。

核心矛盾:教师和学生模型尺度不同、特征学习优势也不同。现有 KD 只做"特征对齐"或"分布对齐",把知识进学生就算完,却没让学生在迁移之后自适应地内化、整合这些知识——既没保住自己的有用能力,也没真正吸收教师的语义,所以增益和泛化都打折扣。

本文目标:(1) 把教师的类级语义有效注入学生、同时缓解医学图像的类别不平衡;(2) 在注入之后让学生消化吸收知识、保留自身优势。

切入角度:作者首次把"迁移集泛化差"归因于"知识内化不足",于是把蒸馏拆成两步——先 infusion(注入)再 assimilation(同化),像吃饭先吃进去再消化,而不是塞满就走。

核心 idea:用"先注入软标签+类原型语义、再用对比自优化同化并反向约束特征"的两阶段蒸馏,替代一锤子的特征/分布对齐,让学生既学到教师又留住自己。

方法详解

整体框架

IAD 是一个串行两阶段蒸馏框架,教师固定为带 LoRA 的 SAM-L、学生为 EfficientNet-B1。第一阶段 KIS(Knowledge Infusion Stage,知识注入):冻结教师,用软标签蒸馏让学生模仿教师预测分布,并叠加"类加权原型对齐"把类级语义和类别不平衡一起处理;同时学生输出还受真值监督。第二阶段 KAS(Knowledge Assimilation Stage,知识同化):在 KIS 已注入知识的基础上,对学生编码器特征施加反向约束(让特征与预测一致),并用对比语义自优化把前景/背景拉开、重排类间相对位置,从而让学生"消化"知识、保住自身优势。两阶段顺序训练,每阶段都保留真值分割监督以保证任务保真度。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入医学图像"] --> B["SAM-L 教师(冻结)<br/>+ EfficientNet-B1 学生"]
    B --> C["软标签蒸馏 Lsld<br/>学生模仿教师预测分布"]
    C --> D["类加权原型对齐 Lcpd<br/>小目标类加权,缓解类不平衡"]
    D -->|完成知识注入 KIS| E["反向特征约束 Lrfc<br/>编码器特征↔预测一致(L2+Dice)"]
    E --> F["对比语义自优化 Lcss<br/>正负样本对重排类位置"]
    F -->|完成知识同化 KAS| G["轻量学生分割输出"]

关键设计

1. 软标签蒸馏 + 类加权原型对齐:在注入分布的同时补上类级语义并治类别不平衡

软标签蒸馏 \(\mathcal{L}_{\text{sld}}\) 直接用 L2 距离拉近教师预测 \(\bm{O}_t\) 和学生预测 \(\bm{O}_s\)\(\mathcal{L}_{\text{sld}} = \frac{1}{B}\sum_{b=1}^{B}\|\bm{O}_t^{(b)}-\bm{O}_s^{(b)}\|_2^2\)。但这种逐像素模仿只是"浅层分布拟合",抓不到判别性的类级语义结构,还容易被类别不平衡带偏(医学图像里胆囊、胰腺这类小器官像素少,直接被大类淹没)。为此作者加了类加权原型对齐:按真值标签索引遍历每张图每个类别,把属于该类的所有像素特征求均值得到教师原型 \(\bm{P}_t\) 和学生原型 \(\bm{P}_s\in\mathbb{R}^{B\times N\times C}\)(Algorithm 1,缺席的类别跳过),再用加权 L2 对齐:\(\mathcal{L}_{\text{cpd}}=\frac{1}{N}\sum_{n=1}^{N} w_n\|\bm{P}_t^{n}-\bm{P}_s^{n}\|_2^2\)。关键在权重 \(w_n\) 给小目标类更大权重(Synapse 上 \(w_n=2\)(胆囊)、\(4\)(胰腺)、其余为 1;ACDC/ETIS 全设 1),从而把蒸馏注意力强行拉回容易被忽视的小器官。KIS 总损失 \(\mathcal{L}_{\text{kis}}=\mathcal{L}_{\text{sld}}+\mathcal{L}_{\text{cpd}}\)。t-SNE(Fig. 4)显示,原始学生各类原型纠缠在一起,加了 KIS 后明显可分——说明类级语义被真正注入了。

2. 反向特征约束:让编码器特征反过来对齐预测,强化语义判别结构

KAS 第一步针对的痛点是:学生编码器输出的特征 \(\bm{F}_l\) 和最终预测 \(\bm{O}_s\) 之间语义未必一致,特征空间判别力不够。作者先把 \(\bm{F}_l\) 经卷积+reshape 投影成 \(X=\text{Re}(\text{Conv}(\bm{F}_l))\),对齐到预测的通道数和空间分辨率,再施加 L2 + Dice 的联合约束:\(\mathcal{L}_{\text{rfc}}=\frac{1}{B}\sum_{b=1}^{B}\|X^{b}-\bm{O}_s^{b}\|_2^2 + 1-\frac{2\sum_{h,w}\text{S}(X)\text{S}(\bm{O}_s)+\epsilon}{\sum_{h,w}\text{S}(X)+\text{S}(\bm{O}_s)+\epsilon}\)\(\text{S}\) 为 softmax,\(\epsilon=1\text{e-}6\))。这里"反向"指的是用预测去约束更底层的编码器特征:L2 项保证全局特征一致,Dice 项强化目标区域内的像素级语义对齐,从而提升编码器语义特征表达的判别力。

3. 对比语义自优化:用正负样本对让学生消化知识、拉开前景背景边界

第二个同化机制要解决的是:学生在被教师"带"过之后,自身有用特征容易被抑制。作者构造对比对——正样本 \(\bm{F}_+=\text{Re}(\text{Conv}(\bm{F}_l))\) 直接用学生编码器特征;负样本 \(\bm{F}_-=\text{Conv}((1-\text{S}(\bm{F}_l))+(1-\text{S}(\bm{O}_s)))\) 由特征和预测分别 softmax 后逐元素取反再求和得到(即"反着的"语义)。然后用 InfoNCE 形式的对比损失把预测 \(\bm{O}_s\) 拉近正样本、推远负样本:\(\mathcal{L}_{\text{css}}=-\log\frac{\exp(\text{sim}(\bm{O}_s,\bm{F}_+)/t)}{\exp(\text{sim}(\bm{O}_s,\bm{F}_+)/t)+\exp(\text{sim}(\bm{O}_s,\bm{F}_-)/t)}\)\(\text{sim}\) 为余弦相似度,\(t\) 为温度)。这一机制把前景/背景边界拉清晰、并在特征空间重排类间相对位置(Fig. 5 显示加 \(\mathcal{L}_{\text{rfc}}\) 后绿类移到粉橙之间、加 \(\mathcal{L}_{\text{css}}\) 后红类移到粉紫之间,相似类被分开),从而促成学生语义的内化整合,缓解对其固有有用特征的压制。KAS 总损失 \(\mathcal{L}_{\text{kas}}=\mathcal{L}_{\text{rfc}}+\mathcal{L}_{\text{css}}\)。值得注意的是 KAS 是即插即用的,可单独接到现有 KD 方法上涨点(见消融)。

损失函数 / 训练策略

两阶段顺序训练,每阶段都叠加真值分割损失 \(\mathcal{L}_{\text{sgs}}\)(多标签用 CE+Dice,二值用 BCE-with-logits):

  • 第一阶段:\(\mathcal{L}_{\text{st1}}=\alpha\mathcal{L}_{\text{kis}}+\beta\mathcal{L}_{\text{sgs}}(\bm{O}_s,\text{O}_{\text{gt}})\),教师加载后冻结,输出 \(\bm{O}_t\) 作为蒸馏目标。
  • 第二阶段:\(\mathcal{L}_{\text{st2}}=\gamma\mathcal{L}_{\text{kas}}+\delta\mathcal{L}_{\text{sgs}}(\bm{O}_s,\text{O}_{\text{gt}})\),在学生表征上同时施加 \(\mathcal{L}_{\text{rfc}}\)\(\mathcal{L}_{\text{css}}\)
  • 权重 \((\alpha,\beta,\gamma,\delta)\):Synapse 取 \((0.2,0.8,0.1,1)\),ACDC 设为可学习,二值分割数据集取 \((0.1,1,0.01,1)\)。教师 SAM-L+LoRA,学生 EfficientNet-B1,RTX 3090 训练,Synapse 用 512×512、batch 16、AdamW lr 0.0025。

实验关键数据

主实验

SAM-L 教师 vs EfficientNet-B1 学生,对比 12 种主流 KD(全部同设置重训)。提升列均相对学生基线。

数据集 指标 学生基线 次优 KD IAD(本文) 提升
Synapse Avg. DICE↑ 79.85 ~81.75 (KD) 84.17 +4.32
Synapse Avg. HD95↓ 19.16 12.94 -6.22
ACDC Avg. DICE↑ 87.44 ~88.53 (CrossKD) 89.29 +1.85
Polyp(4 集均值) Avg. DICE↑ 75.56 ~77.17 (AT) 77.98 +2.42
Polyp(4 集均值) Avg. mIoU↑ 67.32 69.70 +2.38

跨数据集泛化(在 Synapse 蒸馏后冻结编码器、只微调解码器,再到 seen/unseen 集测):

数据集 指标 学生基线 次优 KD IAD 提升
4 集平均 DICE↑ 72.40 ~75.60 (VL2Lite) 76.56 +4.16
4 集平均 mIoU↑ 61.25 65.48 +4.23
STU(unseen) DICE↑ 54.12 64.76 (VL2Lite) 66.30 +12.18

注意 Tab. 4 里多数 KD(KD/AT/OFD/CrossKD/SinKD…)相对学生反而掉点(如 KD -3.62),印证了"灌而不化"伤泛化的核心论点,而 IAD 是唯一全面正向且最优。

消融实验

KIS 与 KAS 主消融(Synapse / ACDC,Tab. 5):

配置 Synapse DICE↑ Synapse HD95↓ ACDC DICE↑ 说明
学生(都不用) 79.85 19.16 87.44 基线
仅 KIS 83.13 14.35 88.72 去掉 KAS,DICE -1.04
仅 KAS 82.63 19.86 88.62 去掉 KIS,DICE -1.54、HD95 暴涨 6.92
KIS+KAS(IAD) 84.17 12.94 89.29 完整模型

KIS/KAS 内部四个损失项消融(Synapse,Tab. 6):单用 \(\mathcal{L}_{\text{sld}}\)(82.18)或单用 \(\mathcal{L}_{\text{cpd}}\)(82.42)都不如完整 KIS(83.13);KAS 里只留 \(\mathcal{L}_{\text{rfc}}\)(83.90)或只留 \(\mathcal{L}_{\text{css}}\)(82.48)也都掉,四项全开才到 84.17。KAS 即插即用(Tab. 9,Synapse):把 KAS 单独接到别的 KD 上,OFD +3.04 DICE、CrossKD +3.23、CILD +2.27——证明同化阶段是通用增益模块。

关键发现

  • KIS 是地基、KAS 是放大器:只用 KAS(缺少 KIS 注入的丰富知识)时 Synapse HD95 从 12.94 暴涨到 19.86,说明没有先注入类级语义,单纯同化无米下锅;而只用 KIS 也比完整版掉 1+ 点,说明"注入完不消化"确实留了增益在桌上。
  • 类加权直击类别不平衡:给胰腺(+4 权重)这类小器官加权后,Synapse 上 Pancreas DICE 从学生的 61.46 提到 68.95,是涨幅最大的类别之一。
  • 泛化才是真分水岭:很多 KD 在 Synapse 同分布上能涨一点,但一到 unseen 集(PH2/STU)就崩(KD 在迁移集平均 -3.62),IAD 因为保住了学生自身优势特征,是唯一在 seen/unseen 上都稳定正向的。
  • L2 距离在两阶段都优于 L1/KLD(Tab. 8),作者据此统一选用 L2。

亮点与洞察

  • "灌而不化"的问题诊断很有说服力:用 12 种 KD 在迁移集上 58% 掉点的统计 + 学生局部优于教师的可视化,把"蒸馏伤泛化"这件反直觉的事讲清楚了,问题定义本身就是贡献。
  • 反向特征约束的思路可迁移:通常蒸馏让特征对齐教师,这里反过来用学生自己的预测去约束更底层特征,强化"特征↔预测"的内部一致性,是一种自蒸馏式正则,理论上可搬到其他分割/检测任务。
  • 负样本构造很巧:把特征和预测 softmax 后取反相加当负样本,等于用"语义的补集"做对比锚点,不需要额外采样或 memory bank,工程上很轻。
  • KAS 即插即用这一点实用价值高:不想重做整个 pipeline 的人,可以只把 KAS 接到已有 KD 上白嫖 2-3 个 DICE。

局限与展望

  • 教师/学生组合固定为 SAM-L + EfficientNet-B1,没验证换其他教师(如纯 CNN/Transformer 教师)或更小学生时结论是否成立,跨架构鲁棒性存疑。⚠️
  • 类加权 \(w_n\)按数据集手工设定的(Synapse 给胆囊/胰腺特定权重),需要先知道哪些类是小目标,自动化/自适应加权是明显的改进点。Fig. 9 做了权重比敏感性分析但仍是人工搜索。
  • 两阶段顺序训练增加了训练流程复杂度,论文未报告训练时间/显存相对单阶段 KD 的额外开销。⚠️
  • 评测集中在 2D 切片(Synapse/ACDC 取 2D slice),3D 体数据上的表现未验证。

相关工作与启发

  • vs 普通 response-based KD(KD/LSKD/CrossKD):它们只对齐预测分布,缺类级语义建模、也不管迁移后内化;本文在注入阶段补了类加权原型、又加了同化阶段,所以在迁移集上不掉反涨。
  • vs CSW-KD / IFVD(类级语义建模):这两者也建模类间关系/类内差异,但面向自然场景;IAD 明确在预测层处理类内语义并融合软标签,针对医学图像的类不平衡更对症。
  • vs feature/hybrid KD(OFD、DIST+、VL2Lite):它们做特征模仿或特征-响应混合,但在医学图像上次优且普遍忽视迁移后同化;IAD 的 KAS 恰好补上这一环,且能即插即用反哺它们涨点。
  • vs De-LightSAM 等 MIS 专用蒸馏:同样面向医学分割,但本文首次把"泛化差"归因于"内化不足"并给出两阶段方案,问题视角不同。

评分

  • 新颖性: ⭐⭐⭐⭐ 把蒸馏拆成"注入+同化"两阶段、并首次把迁移泛化差归因于内化不足,视角新颖;单个组件(原型对齐、对比、Dice 约束)有前作影子。
  • 实验充分度: ⭐⭐⭐⭐⭐ 对比 12 种 KD、7 个数据集、seen/unseen 泛化、内部逐项消融、即插即用验证、p-value 显著性,非常扎实。
  • 写作质量: ⭐⭐⭐⭐ 动机用打脸实验+可视化讲得清楚,公式齐全;缓存文本里公式 OCR 较乱、部分符号需对照原文确认。
  • 价值: ⭐⭐⭐⭐ 轻量医学分割部署刚需,KAS 即插即用让方法可被复用,实用价值高。