3.4 CNN 与 Transformer 的融合方案 纯 ViT 抛弃了 CNN 的归纳偏置,在大数据下大放异彩,但在中小数据或密集预测任务上仍有局限。研究者探索了多种把 CNN 与 Transformer 融合的方案,试图兼得两者的优势。本节梳理四种主流融合思路。 一、融合的动机:取长补短 回顾 CNN 与 ViT 各自的强项: 维度 | CNN | ViT 局部建模 | 强(卷积天然局部) | 弱(需大数据学) 全局建模 | 弱(要堆很多层) | 强(一次 attention 全局) 小数据效率 | 高 | 低 大数据上限 | 低 | 高 平移等变性 | 强 | 弱 与 LLM 兼容 | 差(特征图需展平) | 好(天然 token 序列) 多尺度特征 | 强(金字塔结构) |
纯 ViT 抛弃了 CNN 的归纳偏置,在大数据下大放异彩,但在中小数据或密集预测任务上仍有局限。研究者探索了多种把 CNN 与 Transformer 融合的方案,试图兼得两者的优势。本节梳理四种主流融合思路。
回顾 CNN 与 ViT 各自的强项:
| 维度 | CNN | ViT |
|---|---|---|
| 局部建模 | 强(卷积天然局部) | 弱(需大数据学) |
| 全局建模 | 弱(要堆很多层) | 强(一次 attention 全局) |
| 小数据效率 | 高 | 低 |
| 大数据上限 | 低 | 高 |
| 平移等变性 | 强 | 弱 |
| 与 LLM 兼容 | 差(特征图需展平) | 好(天然 token 序列) |
| 多尺度特征 | 强(金字塔结构) | 弱(单尺度 token) |
融合的目标是:用 CNN 提供局部归纳偏置 + 多尺度特征,用 Transformer 提供全局建模 + 与 LLM 兼容。
最直接的融合——用一层或多层 CNN 先处理图像,把输出当作 ViT 的 patch token:
图像 → 几层卷积 → 特征图 → 展平为 token → Transformer Encoder
代表工作 CvT(Convolutional Vision Transformer):
优点:在小数据上比纯 ViT 收敛快、精度更高。缺点:依然主要是 Transformer 主干,CNN 部分较短。
微软的 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 序列」输入不直接兼容,需要额外处理。
CoAtNet 的观察很简洁:卷积擅长局部泛化,Transformer 擅长全局拟合,那就让它们分工:
图像 → 卷积层 S0 → 卷积层 S1 → Transformer S2 → Transformer S3 → 输出 (局部) (局部) (全局) (全局)
浅层用卷积(享受归纳偏置,小数据也能学好局部特征),深层用 Transformer(大数据下拟合全局关系)。这种「先卷积后注意力」的设计在 ImageNet 上取得了非常好的精度,也启发了后续很多混合架构。
更激进的做法——在 Transformer 块内部加入卷积算子:
这类工作试图回答一个理论问题: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)。
原因是:
只有在需要做分割、检测等密集预测的多模态任务(如指代表达分割、视觉 grounding)中,分层 Transformer 才会被考虑。例如 GLaMM、LISA 等模型会引入 Swin 或 ConvNeXt 来获取多尺度特征。
把 CNN 与 Transformer 融合的探索,最终给社区留下一个共识:
结构上的小创新,不如数据与训练规模的大投入。
ConvNeXt 论文揭示:把 Transformer 的设计选择移植回 CNN,纯 CNN 也能达到 ViT 的水平。反过来,把 CNN 的归纳偏置塞进 ViT,提升也有限。真正的胜负手是数据规模、训练目标与超参调优。
因此 2024 年后,视觉编码器的研究重点从「结构创新」转向了:
3.5 节我们会看这些方向上的当代 SOTA。
CNN 与 Transformer 的融合方案有四种主要思路:CNN 做 tokenizer、分层 Transformer、卷积+注意力交替、内部混合。它们各自解决了纯 ViT 的某个短板,但在多模态大模型主流场景里,纯 ViT 系编码器仍然占主导地位——因为它们与 LLM 兼容性最好、有现成的高质量预训练权重。结构创新的红利期已过,当代视觉编码器的进步更多来自训练目标与数据规模。
下一节(3.5)我们速览 SigLIP-2、DINOv2、EVA-02、InternViT 等当代视觉编码器 SOTA。