3.4 CNN 与 Transformer 的融合方案


文档摘要

3.4 CNN 与 Transformer 的融合方案 纯 ViT 抛弃了 CNN 的归纳偏置,在大数据下大放异彩,但在中小数据或密集预测任务上仍有局限。研究者探索了多种把 CNN 与 Transformer 融合的方案,试图兼得两者的优势。本节梳理四种主流融合思路。 一、融合的动机:取长补短 回顾 CNN 与 ViT 各自的强项: 维度 | CNN | ViT 局部建模 | 强(卷积天然局部) | 弱(需大数据学) 全局建模 | 弱(要堆很多层) | 强(一次 attention 全局) 小数据效率 | 高 | 低 大数据上限 | 低 | 高 平移等变性 | 强 | 弱 与 LLM 兼容 | 差(特征图需展平) | 好(天然 token 序列) 多尺度特征 | 强(金字塔结构) |

3.4 CNN 与 Transformer 的融合方案

纯 ViT 抛弃了 CNN 的归纳偏置,在大数据下大放异彩,但在中小数据或密集预测任务上仍有局限。研究者探索了多种把 CNN 与 Transformer 融合的方案,试图兼得两者的优势。本节梳理四种主流融合思路。

一、融合的动机:取长补短

回顾 CNN 与 ViT 各自的强项:

维度 CNN ViT
局部建模 强(卷积天然局部) 弱(需大数据学)
全局建模 弱(要堆很多层) 强(一次 attention 全局)
小数据效率
大数据上限
平移等变性
与 LLM 兼容 差(特征图需展平) 好(天然 token 序列)
多尺度特征 强(金字塔结构) 弱(单尺度 token)

融合的目标是:用 CNN 提供局部归纳偏置 + 多尺度特征,用 Transformer 提供全局建模 + 与 LLM 兼容

二、方案一:CNN 作为前端 tokenizer(CVT、Early Fusion)

最直接的融合——用一层或多层 CNN 先处理图像,把输出当作 ViT 的 patch token:

图像 → 几层卷积 → 特征图 → 展平为 token → Transformer Encoder

代表工作 CvT(Convolutional Vision Transformer)

  • 用卷积做 patch 化(而不是线性投影),保留卷积的局部归纳偏置
  • 卷积下采样减少 token 数量
  • 后段接标准 Transformer

优点:在小数据上比纯 ViT 收敛快、精度更高。缺点:依然主要是 Transformer 主干,CNN 部分较短。

三、方案二:分层 Transformer(Swin Transformer)

微软的 Swin Transformer 是最有影响力的融合方案之一。它的核心是引入 CNN 的两个关键特性到 Transformer 中

特性一:层次化特征

标准 ViT 全程保持单尺度 token(如 14×14=196 个),没有 CNN 那种「浅层细节、深层语义」的金字塔结构。

Swin 把网络分成 4 个 stage,每个 stage 之间通过 patch merging 把 token 数减半(类似池化):

Stage 1: 56×56 = 3136 token(细节层) Stage 2: 28×28 = 784 token Stage 3: 14×14 = 196 token Stage 4: 7×7 = 49 token(语义层)

这样网络既保留了 Transformer 的全局建模,又获得了 CNN 的多尺度特征金字塔——这对检测、分割等密集预测任务非常重要。

特性二:窗口注意力

标准 Self-Attention 是全局的,复杂度 O(N^2)。Swin 把注意力限制在局部窗口(如 7×7)内,复杂度变为 O(N)

标准 Attention: 每个 patch 看全图 窗口 Attention: 每个 patch 只看所在 7×7 窗口

但纯窗口注意力会让窗口之间无法通信。Swin 通过**移位窗口(Shifted Window)**机制,在相邻层之间错开窗口边界,让信息跨窗口流动:

Layer 2k: 窗口边界在 (0, 7, 14, ...) Layer 2k+1: 窗口边界在 (3.5, 10.5, ...)(移位半个窗口)

这种交替的窗口 / 移位窗口设计,让 Swin 在保持线性复杂度的同时获得近似全局的建模能力。

Swin 在检测、分割等任务上长期占据 leaderboard,是很多视觉密集任务的首选骨干。但在多模态大模型场景里,Swin 反而用得少——因为它的层次化输出与 LLM 的「扁平 token 序列」输入不直接兼容,需要额外处理。

四、方案三:卷积 + Transformer 交替堆叠(CoAtNet)

CoAtNet 的观察很简洁:卷积擅长局部泛化,Transformer 擅长全局拟合,那就让它们分工:

图像 → 卷积层 S0 → 卷积层 S1 → Transformer S2 → Transformer S3 → 输出 (局部) (局部) (全局) (全局)

浅层用卷积(享受归纳偏置,小数据也能学好局部特征),深层用 Transformer(大数据下拟合全局关系)。这种「先卷积后注意力」的设计在 ImageNet 上取得了非常好的精度,也启发了后续很多混合架构。

五、方案四:把卷积引入 Transformer 内部(ConvViT、Container)

更激进的做法——在 Transformer 块内部加入卷积算子:

  • ConvViT:在 Self-Attention 之外并行加一个深度卷积,捕捉局部模式
  • Container:在 FFN 中插入卷积,增强局部归纳偏置

这类工作试图回答一个理论问题:Self-Attention 真的不需要卷积的帮助吗? 实证显示,在中等数据规模下加入卷积确实有提升,但在 LAION 这种超大规模数据上,纯 ViT 仍然追平或反超。

六、四种方案的对比

方案 代表 主要改动 适用场景
CNN 做 tokenizer CvT 卷积 patch 化 中等数据、收敛快
分层 Transformer Swin 窗口注意力 + 多 stage 密集预测(检测/分割)
卷积+注意力交替 CoAtNet 浅层卷积深层注意力 ImageNet 分类
内部混合 ConvViT 块内并行卷积 理论探索

七、这些方案在多模态大模型里的实际地位

有趣的是——这些 CNN+Transformer 融合方案,在主流多模态大模型里反而很少被采用。绝大多数 MLLM(LLaVA、Qwen-VL、BLIP-2、InternVL)依然使用纯 ViT 系编码器(如 CLIP ViT、SigLIP、InternViT)。

原因是:

  1. 多模态大模型依赖大规模对比学习预训练——CLIP/SigLIP 这些预训练视觉编码器本身就是纯 ViT,社区已有现成可用的高质量权重
  2. 多模态任务以理解为主——分类、VQA、描述,对密集预测的多尺度需求不强
  3. 与 LLM 兼容性——扁平 token 序列更适合直接拼接进 LLM

只有在需要做分割、检测等密集预测的多模态任务(如指代表达分割、视觉 grounding)中,分层 Transformer 才会被考虑。例如 GLaMM、LISA 等模型会引入 Swin 或 ConvNeXt 来获取多尺度特征。

八、面向未来的统一视角

把 CNN 与 Transformer 融合的探索,最终给社区留下一个共识:

结构上的小创新,不如数据与训练规模的大投入。

ConvNeXt 论文揭示:把 Transformer 的设计选择移植回 CNN,纯 CNN 也能达到 ViT 的水平。反过来,把 CNN 的归纳偏置塞进 ViT,提升也有限。真正的胜负手是数据规模、训练目标与超参调优

因此 2024 年后,视觉编码器的研究重点从「结构创新」转向了:

  • 训练目标:自监督(DINOv2)、对比学习(SigLIP-2)
  • 数据规模:LAION-5B、DataComp
  • 训练效率:FlashAttention、混合精度
  • 分辨率泛化:NaViT 的变长 patch、SigLIP-2 的多分辨率训练

3.5 节我们会看这些方向上的当代 SOTA。

小结

CNN 与 Transformer 的融合方案有四种主要思路:CNN 做 tokenizer、分层 Transformer、卷积+注意力交替、内部混合。它们各自解决了纯 ViT 的某个短板,但在多模态大模型主流场景里,纯 ViT 系编码器仍然占主导地位——因为它们与 LLM 兼容性最好、有现成的高质量预训练权重。结构创新的红利期已过,当代视觉编码器的进步更多来自训练目标与数据规模。

下一节(3.5)我们速览 SigLIP-2、DINOv2、EVA-02、InternViT 等当代视觉编码器 SOTA。


发布者: 作者: 渗透测试失败者的小龙虾 转发
评论区 (0)
U