CVPR 2026 领域:图像融合
发现自己的idea三个月前被别人成功发表的感觉是奇妙的😳
引言
把多个源图里的互补信息压进一张更有信息量、视觉上也更协调的图像里。作者马上把它和下游任务绑在一起。作者说过去几年深度学习确实把 fusion 做强了,但大部分方法还是 task-specific。
最近的通用融合路线,大致分成三类。第一类是 Transformer 路线,用 self-attention 建模跨模态全局依赖;第二类是 diffusion 路线,用逐步去噪生成高质量融合结果;第三类是更一般的 shared representation 路线,用共享 backbone 和 task-agnostic 模块把不同任务拉到同一个表示空间里。
general fusion 的瓶颈:
- 第一,没有一个真正**“模态一致”的特征提取机制**,无法在不同输入类型下都稳定编码异质信号。
- 第二,源图里的关键信息在深层特征传播中会逐渐衰减,最后虽然得到了 fused image,但 source information 已经被洗薄了,所以融合质量上限不高。
方法
UniFusion 是先用冻结的 DINOv3 抽出跨模态可共享的语义,再用 Adapter 把不同模态拉到一个更可对齐的特征空间,同时要求这些特征还能把各自源图重建出来,最后才在这个“可重建的共享 latent”里做双向交互融合。
DINOv3 semantic prior + reconstruction alignment + bilevel optimization。

Figure 2(b) 左半边:两张输入图 和 分别走两条分支,各自进入一个 frozen DINOv3 backbone。论文明确说用两个冻结的 DINOv3 提取语义丰富的特征;代码里也确实把 backbone 锁死,并且固定抽第 2、5、8、11 层的中间特征。浅层更偏局部结构,深层更偏全局语义,后面 Adapter 把“结构 + 语义”一起整合起来。代码里一个细节:如果输入只有 1 个通道,会先复制成 3 通道再送进 DINOv3,这和它使用 RGB 预训练 backbone 是一致的。
Figure 2(c) 的 Adapter。论文把它叫作 progressive feature translator,本质上是在做“多尺度语义校准”:把 DINOv3 的多层 ViT 特征 用逐级上采样和残差式融合整合起来。代码把这个过程写得很直白:先融合 ,再和 融,最后再和 融;每一层融合后都经过 UpConv,而 UpConv 的实现就是双线性上采样再接一个卷积块。最后它还加了一条从原始输入图来的 skip connection,再用一个 1×1 卷积投到最终对齐后的特征维度(代码里的确是“主干多层特征融合结果 + 输入图浅层投影”再做一个 1×1 conv)。从结构上看,这个 Adapter 很像一个轻量的 U-Net-like decoder,但它的作用不是直接出图,而是把 foundation model 的多层特征翻译成“更适合当前模态、又能和别的模态对齐”的 feature map。
Figure 2(b) 里的上下两条 “Reconstruction” 支路。这里的核心不是再生成一张好看的图,而是做 self-reconstruction regularization。论文的逻辑是:如果你只盯着最终 fused image 和 source image 的像素相似度,模型很容易学到表面纹理和亮度模式,却不一定保住更深层的模态语义;一旦不同模态被压进共享 latent,visible 的纹理、infrared 的辐射对比这类 modality-specific cues 就会被冲淡。所以作者加了式 (1),让每个模态自己的 adapter 输出 还能重建回原图 。这样一来,latent 必须“可追溯回源图”,也就更不容易发生 semantic drift。代码里这两条支路就是 recA 和 recB,它们在真正 fusion 之前先分别输出 x 和 y 作为重建结果。
Figure 2(b) 中间的 “Modality Fusion”。论文正文只说用了 several cross-attention modules 来建模 inter-modality dependencies;但结合图和代码,这其实是一个双向、交替的 cross-attention 交互过程。代码里的 CrossAttention 明确是“query 来自当前分支 ,key/value 来自另一分支 ”;而 CrossTransformerBlock 的 forward 也是 x = x + attn(x, y)。主干里一共有四个 A-block 和四个 B-block,执行顺序是先用 更新 ,再用更新后的 反过来更新 ,这样循环四轮。也就是说,Figure 2 里中间那两个 stacked cross-attention 方块,最好理解成双向 message passing,而不是一次性的 feature concat。四轮交互后,代码把两路结果拼接,再经过一个卷积、一个 self-attention transformer block、再接两层卷积,最后输出 fused image 。 交互后的部分就是 fusion 分支的 decoder,虽然代码里没有单独拎出来。
Figure 2(a),这部分是在讲“怎么训练”,不是讲前向网络。式 (2) 把编码和重建写成 ,,;式 (3) 把融合写成 。然后作者把参数分成两组: 管 adapter 和 reconstruction, 管 fusion。式 (4) 的含义是,先让 学会“把每个模态表示好并重建好”,再在这个基础上让 学会“怎么把两者融合”。所以 Figure 2(a) 左边那张曲面图,不是在画某个精确 loss,而是在示意:加入 reconstruction alignment 后,优化不容易掉进“融合了但源信息丢了”的次优点,而更容易被拉向 source-faithful 的区域。
论文没有真去解一个昂贵的嵌套最优,而是用 first-order alternating scheme:先用较快的内层学习率更新 去最小化 ,再用较慢的外层学习率更新 去最小化 ,并且再对外层参数加一个 EMA 来稳定训练。重建分支快一点,持续把特征往 source-aware 的方向拉;融合分支慢一点,在这个不断改善的特征空间里学策略。
Figure 2(a) 里 reconstruction 那栏写了 “Gradient Ascent”,但正式的式 (5) 明确是对 做 gradient descent;
还有一个值得注意的小地方:论文 4.1 写的是“each reconstruction branch includes four Transformer Blocks”,但我查了它公开的 GitHub 代码,当前
Reconstruction模块是两个TransformerBlock加一个 1×1 conv。
部分信息可能已经过时