Generative Vision-Language Multiple Instance Learning for Weakly Supervised Neonatal Fundus Screening and Reporting¶
会议: CVPR 2026
论文: CVF Open Access
代码: https://github.com/CVIU-CSU/GVL-MIL
领域: 医学图像
关键词: 新生儿眼底筛查、多实例学习、生成式视觉语言模型、临床描述、熵引导融合
一句话总结¶
GVL-MIL 用少量逐图专家描述适配生成式视觉语言模型,将中间层视觉证据与生成文本的语义分别聚合、按预测熵融合,在 NFSD 测试集取得患儿级 AUC 92.14 ± 0.72%,同时提供逐图临床描述。
研究背景与动机¶
新生儿眼底筛查通常不是看一张照片就能下结论:同一患儿会有多个视角,病变可能只在部分周边视网膜图像中出现,另外一些图像正常或质量不佳。因此,训练集容易获得的是患儿诊断,而不是每张图像的病变标签。多实例学习(MIL)把同一患儿的图像看成一个包,以包标签训练筛查器,契合这种标注条件;但普通视觉编码器可能丢掉细小出血、分界线等线索,包级类别也无法说明究竟看到了什么。
ViLa-MIL 一类视觉语言方法通过类别描述引入语义,通常仍服务于对比式分类,而不是为当前图像生成可阅读的发现。另一方面,直接把生成报告作为诊断依据也有风险:正常视角可能来自阳性患儿,生成器可能遗漏病灶或弄错位置。本文要解决的不是简单地给 MIL 接一个文本输出,而是让少量专家描述改善实例表示,再让文本与视觉信息在患儿级决策中互补,同时避免不可靠文本破坏视觉特征。
核心 idea:先用“逐图发现+诊断代理标签”适配生成式 VLM,再从其不同位置获取视觉 token 与文本语义,以两个独立 MIL 分支保留各自证据,最后按预测不确定性融合患儿级判断。
方法详解¶
整体框架¶
输入是同一新生儿的多张眼底图像,输出分为两种:每张图像的临床描述,以及整个患儿包的四分类结果,即 NEG、视网膜出血 RH、早产儿视网膜病变 ROP 或白点 WS。逐图生成器还输出诊断词,但最终包级预测来自 MIL,不能把这两个分类层级混为一谈。
系统分两阶段训练。离线准备先在有专家描述的图像子集上做诊断引导描述生成,以矩阵熵选层,再冻结适配后的 VLM;本文固定使用 Layer 23,不对每个患儿重新选层。第二阶段训练注意力特征聚合器及双分支 MIL,推理时沿用训练好的模块和固定特征路径:视觉流直接读取 Layer 23 的图像 token,文本流则经过完整生成器自回归输出描述与诊断词,并读取结束 token 的隐状态。两个分支先各自产生包级 logits,再做预测熵融合。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
subgraph Prep["离线准备:阶段1适配与选层"]
Supervision["专家描述与代理诊断"] -.->|阶段1监督| Gen["诊断引导描述生成"]
Gen --> Select["矩阵熵选层<br/>固定 Layer 23"]
end
Select -->|配置模型与选层| Frozen
subgraph Runtime["固定数据流:阶段2训练/推理"]
Images["同一患儿的多视角图像"] --> Frozen["冻结的适配后 VLM"]
Frozen -->|Layer 23 图像 token| Aggregate["注意力特征聚合"]
Frozen --> Text["完整自回归生成<br/>描述与诊断词"]
Aggregate -->|逐图视觉向量| Dual["双分支 MIL 与<br/>预测熵融合"]
Text -->|结束 token 隐状态| Dual
Text --> Reports["逐图临床描述"]
Labels["患儿包标签"] -.->|仅阶段2监督| Aggregate
Labels -.->|仅阶段2监督| Dual
Dual --> Result["患儿级四分类"]
end
图中虚线是训练监督,跨子图的实线交付固定模型配置,子图内实线表示准备步骤或推理数据流。阶段2的包级损失经视觉分支更新聚合器,并训练两个 MIL 分支,不回传到冻结的 VLM;推理时移除所有监督输入。视觉流无需等待文字生成,完整双分支版本则仍需文本流的结束 token,只有仅图像版本可以省去自回归生成。
关键设计¶
1. 诊断引导描述生成:把临床发现学习为实例表示,而非重复包标签
生成器采用 LLaVA-OneVision-7B:SigLip 视觉编码器提取图像 token,两层 MLP 将其投影到 Qwen2-7B-Instruct 的嵌入空间,再由 LLM 输出中文眼底描述。补充材料给出的视觉与语言隐藏维度分别为 1152 和 3584。适配时只更新投影器和 LLM 中的 LoRA 参数,视觉编码器与原始 LLM 主干保持冻结;这不是从头训练一个专用眼底大模型。
关键在监督目标的构造。有描述的图像被组织成单轮问答,输入只要求判断眼底可能存在的异常;目标回答先在 <think> 内写专家描述,再在 <answer> 内给出诊断。对于可见病理征象的图像,使用其包级诊断作为代理标签;没有明显异常的图像则标为阴性。这样不会把阳性患儿所有视角都强行描述成病变,补充材料中阳性类别确实包含大量正常图像。这里的 <think> 是专家描述的格式容器,不是额外采集的推理轨迹。
诊断词是训练回答的一部分,不是测试输入中泄露的真值。它通过生成训练约束描述与诊断的语义一致性;没有逐图描述的训练图像并不因此获得新的专家报告,仍在第二阶段依靠包标签参与 MIL。因而本文的弱监督指患儿级筛查设置,不等于完全没有实例级人工监督。
2. 矩阵熵选层:寻找保留丰富视觉结构的中间表示
视觉 token 进入语言模型后会持续变化,最后一层还要服务于词表预测,不一定最适合区分眼底病变。作者只取各层对应图像位置的隐状态,构成“图像 token 数 × 隐藏维度”的矩阵,计算其 Gram 矩阵,再用归一化特征值的 von Neumann 熵衡量谱的分散程度。若多数 token 的信息压缩在少数方向上,谱分布更集中;较分散的谱意味着表示方向更丰富,但不天然等于诊断更准确。
以 \(G^{(l)}\) 表示第 \(l\) 层图像 token 的 Gram 矩阵,归一化谱熵可写为:
作者比较各候选层的平均矩阵熵,排除最终层,选取非最终层中的熵峰。本文微调后的 7B 模型选择 Layer 23;原文索引为投影器输出 -1、解码层 0 到 27。之后合并 LoRA 权重并冻结模型,视觉编码器、投影器与前部 LLM 层提供视觉特征。选层是提取器的配置,不是对每个患儿临时选择一个诊断分支;文本生成仍会继续经过后续层。
这一熵描述的是 token 表示的谱多样性,不能与后面四分类概率的预测熵混用。选层偏好较高矩阵熵,融合则给较低预测熵的分支较大权重,两者方向不同,是因为测量对象和目的不同。选层消融检验了这一启发式在 NFSD 上的效果。
3. 注意力特征聚合:先在一张图内找证据,再跨图判断患儿
选定层仍输出许多区域 token,不能直接当作一个患儿包中的单个实例向量。聚合器先对 token 做层归一化和 key/value 投影,再让一个可学习 query 通过多头交叉注意力读取这些区域,最后以线性映射和归一化得到紧凑的逐图视觉表示。这允许模型给与病灶有关的区域更高权重,而不是对所有背景与病变区域做无差别平均。
必须区分两次聚合:此处发生在一张图像内部,将区域 token 压成实例向量;后面的 V-MIL 才在同一患儿的多张图之间聚合。前者回答“这张图哪些区域值得保留”,后者回答“哪些视角更支持患儿诊断”,因此模型既能展示区域关注图,又能给不同视角赋予不同权重。聚合器在第二阶段由筛查损失训练,使用的是包标签而非像素级病灶掩码。
4. 双分支 MIL 与预测熵融合:保留视觉证据,限制文本干扰
V-MIL 接收每张图的视觉向量;T-MIL 接收每张图生成序列末尾 token 的隐状态。末尾 token 处于整段已生成内容之后,作者将其用作描述整体语义的代理表示,而不是再调用独立文本编码器。两个分支采用与 DSMIL 相似的池化和分类结构,各自生成患儿级 logits。文本隐状态来自生成式 VLM,不是独立于图像的新临床测量,因此两个分支也不是统计独立的证据来源。
融合发生在 logits 而不是特征层。先对每个分支的包级 logits 做 softmax,计算四分类概率的 Shannon 熵,再对两个负熵做 softmax 得到权重:
这里 \(m\in\{V,T\}\),最终融合的是 \(z_V,z_T\),不是直接平均两个概率向量。某个患儿的文本分支分布若更平坦,其权重就会下降;这样可利用描述提供的语义,又不必把文本噪声混入视觉特征空间。权重衡量的是模型自信程度。
两个分支还使用一致性校准损失 CCL:在包内按实例的最大类别置信度选取 top-k 图像,使选中实例分布与包分布之间的两个方向 KL 散度都较小。它不是选择已知真阳性图像,也不是要求包内所有图像同类;默认 \(k=2\),损失权重 \(\lambda=0.05\)。这样,高置信实例与整体判断在训练时相互约束。
一个完整示例¶
假设一个患儿包有 4 张图:鼻侧周边视角显示分界线,另外 2 个视角未见明显异常,第 4 张因模糊而难以判断。以下是教学情境,不是论文中的病例或实测结果。如果先把每张图压成类别再多数投票,唯一清楚展示病变的视角可能被正常视角淹没;但“这张图没拍到病变”与“这个患儿没有病变”是两件事。
GVL-MIL 先在鼻侧图内聚合区域 token,将分界线附近的证据保留到视觉向量中,再由 V-MIL 汇总 4 个视角。MIL 学习按诊断相关性利用实例,因而可以让少数信息充分的视角主导包级判断,而非每张图各投一票。这个机制给出了从“少数图有病变”学习患儿级 ROP 的路径,并不保证每次都选对视角。
文本流则为各图生成描述,T-MIL 汇总结束 token 的语义。若病变图的文字遗漏了分界线,且文本分支的包预测较平坦,预测熵融合会降低其权重;视觉流仍保留直接从图像提取的证据。最终得到的是一个患儿诊断及 4 份逐图描述,正常视角的描述无需改写成 ROP,逐图报告也不会自动合并成完整患儿报告。
损失函数 / 训练策略¶
阶段1是有监督的生成式指令微调,共 3 个 epoch,LoRA rank 为 32、alpha 为 128,学习率为 \(10^{-4}\)。补充表9进一步列出 batch size 1、梯度累积 8、bfloat16、AnyRes 与从 1 × 1 到 3 × 3 的网格,以及 warmup 0.03、weight decay 0;阶段与配置的对应关系见后文复现边界。
阶段2冻结整个适配后的 VLM,输入缩放为 384 × 384,聚合器和 MIL 的嵌入维度设为 512,学习率为 \(2\times10^{-5}\)。每个模态分支使用分类损失加 CCL:
CCL 先计算每个选中实例与包分布的对称 KL,再按选中实例取平均。分类采用加权交叉熵,NEG、RH、ROP、WS 权重依次为 [0.48, 0.59, 0.90, 1.00];每个 epoch 随机保留 25% 的阴性样本,其余类别全部保留。补充材料为 MIL 指定有效 batch size 64、dropout 0.25、early-stopping patience 10,表10将 GVL-MIL 列为 20 个 epoch。
实验关键数据¶
主实验¶
NFSD 总量报告为 9,260 名新生儿、121,801 张图像,来自 2015-2019 年的 RetCam3 采集,原始分辨率 1600 × 1200;其中 526 名患儿的 5,180 张图像有专家描述。正文表2给出的训练/验证/测试患儿数为 5,558/1,851/1,851,图像数为 73,222/24,295/24,284。
划分口径必须分开:主结果用训练集+验证集训练,在测试集评估;消融只用训练集训练,在验证集评估。 下表摘自正文表3,全部为患儿包级四分类宏平均指标,单位为 %,报告 5 次固定种子实验的均值 ± 标准差;不是逐图分类或报告生成得分。
| 方法 | AUC | 敏感度 | 特异度 | F1 | ACC | 精确率 |
|---|---|---|---|---|---|---|
| DSMIL | 89.33 ± 0.46 | 71.16 ± 1.20 | 90.88 ± 0.52 | 65.03 ± 1.99 | 89.31 ± 1.62 | 62.14 ± 2.97 |
| LD2GMIL | 89.73 ± 0.56 | 69.72 ± 0.93 | 90.27 ± 0.63 | 65.10 ± 2.35 | 89.95 ± 1.50 | 62.78 ± 3.40 |
| ViLa-MIL | 89.69 ± 0.48 | 70.15 ± 1.07 | 91.18 ± 0.26 | 67.27 ± 0.96 | 91.17 ± 0.63 | 65.74 ± 1.94 |
| GVL-MIL,仅图像分支 | 91.60 ± 0.25 | 74.92 ± 0.22 | 92.51 ± 0.08 | 70.22 ± 0.19 | 91.83 ± 0.06 | 66.97 ± 0.36 |
| GVL-MIL,完整双分支 | 92.14 ± 0.72 | 76.26 ± 1.50 | 93.11 ± 0.64 | 72.03 ± 3.55 | 92.46 ± 1.49 | 69.16 ± 5.16 |
仅图像分支已经很强,双分支的增益应按均值解读。 表3中非 GVL-MIL 方法的最高 AUC 为 LD2GMIL 的 89.73,完整模型高出 2.41 个百分点;原表对仅图像分支的六项结果均标注与完整模型比较的 p > 0.05,未显示显著差异。正文将 ViLa-MIL 的 89.69 称为最强 AUC 基线,与表格不符,此处以表为准。ACC 沿用原文宏平均定义。
数据总规模沿用作者报告;分项计数冲突集中列于“阅读与复现边界”。
消融实验¶
正文表6检验融合位置,以下均为验证集患儿级结果,不能把其 92.53 AUC 与测试表中的 92.14 当作同条件差值。
| 配置 | AUC(%) | F1(%) | ACC(%) | 说明 |
|---|---|---|---|---|
| image | 91.67 ± 0.61 | 70.79 ± 0.54 | 92.90 ± 0.66 | 仅视觉 token 特征 |
| eot | 88.63 ± 0.83 | 59.67 ± 2.42 | 86.35 ± 1.82 | 仅生成结束 token 特征 |
| feature | 90.77 ± 0.04 | 69.20 ± 0.44 | 91.59 ± 0.02 | 特征层融合 |
| logits | 92.53 ± 0.21 | 73.73 ± 3.34 | 93.05 ± 1.65 | 双分支 logits 融合 |
正文表4则评估逐图描述生成,属于验证集消融;加入诊断监督时只抽取 <think> 内的描述计算指标,不把诊断答案一起拿来匹配。表内为原文分数尺度,不换算为百分比,也不补写原文未列出的方差或 BLEU 阶数。
| 阶段1监督目标 | BLEU | ROUGE-L | METEOR | CIDEr |
|---|---|---|---|---|
| 仅描述 | 0.7121 | 0.7794 | 0.7789 | 0.6323 |
| 描述+诊断 | 0.7201 | 0.7914 | 0.7895 | 0.6365 |
关键发现¶
- 特征融合并非必然有益:相对 image,feature 的验证 AUC 降低 0.90 个百分点,而 logits 提高 0.86 个百分点。证据支持这套设置中保留模态分支的价值,而非“加入文本总会提升”。
- 表5的同种子选层消融中,Layer 23 的 AUC/F1 为 93.84/74.08,最终层为 92.45/66.41;但 Layer 26 的 F1 为 74.50,Layer 15 的敏感度为 77.45,高于 Layer 23 的 75.98。熵峰层不是每个指标的绝对最优层。
- 表7的 CCL 消融有自己的实验基线:无 CCL 时 AUC/F1/ACC 为 90.23 ± 0.78/63.77 ± 4.78/87.94 ± 3.95,\(k=2\) 时为 89.88 ± 0.54/65.44 ± 2.06/89.47 ± 1.12。F1、ACC 均值提高,但 AUC 均值略降;不能将这组结果冒充表3的完整模型结果。
- 补充材料观察到 ROP、WS 的视觉分支权重更高;作者推测,细小病灶和较多正常视角可能使文本描述质量下降。
亮点与洞察¶
- 最值得注意的是仅图像分支已经取得 91.60 ± 0.25% 测试 AUC:语言可以在离线适配时参与表示学习,而不必在推理时始终充当决策输入。表3支持“去掉文本流仍有较强性能”,但并未单独隔离语言微调、中间层选择与聚合器的收益,不能把全部提升归因于语言微调。
- 把“读哪个中间层”“如何压缩图内 token”“如何汇总患儿视角”拆清楚,能定位性能改进发生在哪个粒度。这比笼统地称其为多模态注意力更有复用价值。
- 对有噪声的生成文本,先各自形成预测再融合,比直接混合特征更有效。迁移到其他临床影像任务时应重新验证这一结论,并检查低熵错误是否会被放大。
局限与展望¶
论文局限¶
- 作者明确承认依赖专家描述子集,标注成本仍然存在。基线虽然共享 SigLip 视觉编码器,却不因此获得同等的生成式主干与逐图描述监督,比较不能隔离出单个架构模块的全部收益。
- 补充表11给出了具体失真:RH 描述把颞下方写成鼻侧并新增黄白沉积,ROP 描述把鼻侧写成颞侧且遗漏血管迂曲扩张。文本相似度改善不等于临床事实准确,也不能把这些报告称为已验证的“专家级解释”。
- 实验集中在 NFSD 四分类,没有展示独立外部队列或前瞻临床验证。包级类别、逐图病灶定位、疾病分期和完整患者报告是不同任务,本文不能自动覆盖后几者。
- 低预测熵只表示自信,错误但自信的分支仍可能获得较大权重,CCL 也可能强化错误实例。补充材料还报告实例注意力经 softmax 后接近 one-hot,应检验模型对单个高权重视角的脆弱性。
- 后续应优先评估报告的解剖方位、病灶遗漏和虚构率,以及跨设备泛化、置信度校准与人工复核流程,而不只追求更高的文本重合分数。
阅读与复现边界¶
- 计数冲突:正文表2的 ROP 描述训练/验证数为 1,678/587,补充表8为 1,676/557,测试数均为 553;分别合计 2,818 与 2,786,原文总计为 2,786。RH 患儿分项 708+236+236=1,180,总计栏为 1,181;类别患儿总计相加为 9,261,总行则为 9,260。保留这些差异,不代替作者修正数据。
- 配置口径:补充表9将阶段1 warmup/weight decay 列为 0.03/0,补充 §8.2 将 MIL 列为 0.05/0.01,正文统一描述未清楚区分阶段;正文称全部基线训练 200 个 epoch,补充表10却为 LD2GMIL、ViLa-MIL 分别列 25、100。合并训练和验证集后的早停协议也待核实。本笔记依据正文与补充文本,未核查代码执行配置。
- 可视化口径:补充材料展示的是 L1 归一化的原始实例注意力,而非实际 softmax 权重;区域注意力也未作为精确分割进行验证。缓存文本能核对图注与表11描述,不能替代对原图叠加效果的视觉复核。
相关工作与启发¶
- vs DSMIL:DSMIL 提供实例与包两级建模的基础;GVL-MIL 的增量主要在生成式表示适配、图内 token 聚合和视觉/文本双分支,而不是从零发明 MIL。
- vs ViLa-MIL:ViLa-MIL 用类别级描述辅助对比式分类,本文为具体眼底图像生成描述并读取生成序列语义。本文将 ViLa-MIL 改为 SigLip、16 个伪原型及重复两次的类别提示,故这是眼底任务适配版比较,不是原始病理双尺度配置的原样复现。
- vs LD2GMIL:两者都面向新生儿眼底 MIL;LD2GMIL 强化视觉实例表示,本文加入逐图语言监督和生成式中间层特征。值得继续比较的是在相同监督预算下,语言适配、特征层选择与融合各自还能贡献多少。
评分¶
以下为阅读者对论文的主观评价:3 分表示基本充分,4 分表示较强,5 分表示突出;允许半分。写作质量指原论文,价值指研究贡献与潜力,不等同于临床可用性。
- 新颖性:4.5/5。将逐图语言监督、中间层选取与患儿级 MIL 连成筛查和报告方案,任务设计与整合较有特色;各组件已有基础,尚非全新的学习范式。
- 实验充分度:4.5/5。包含多种基线、选层、融合、CCL 消融与报告评估,并报告重复实验和显著性;但外部队列与报告事实性验证不足,双分支相对仅图像分支的优势未达显著。
- 写作质量:4/5。两阶段流程和补充材料较完整,但数据计数、最强基线叙述及训练配置口径的多处差异增加了复现理解成本。
- 价值:5/5。NFSD 的患儿包与专家描述配对,以及筛查和逐图报告结合的完整方案,为标注稀缺的新生儿眼底研究提供了较强支撑;临床应用仍须独立验证。