论文题目:Conv2Former: A Simple Transformer-Style ConvNet for Visual Recognition
中文题目:Conv2Former:一种用于视觉识别的简单 Transformer 风格卷积网络
文献地址:https://arxiv.org/abs/2211.11943
源码地址:https://github.com/HVision-NKU/Conv2Former
文章目录
- @[toc]
- 五分钟回顾模型
- 实验结果
- 一、ImageNet-1K 图像分类
- 二、卷积核尺寸与融合方式消融
- 三、COCO 目标检测与实例分割
- 四、ADE20K 语义分割
- 本文方法
- 整体架构:四阶段 Transformer 风格 ConvNet
- 层级特征如何服务不同任务
- Conv2Former Block:空间建模与通道混合分工
- Convolutional Modulation:每一步为什么有效
- 线性映射 W₁:为调制分支准备特征
- 大核深度卷积:低成本获得更大范围的上下文
- 线性映射 W₂:建立独立的内容分支
- Hadamard Product:用乘法建立条件交互
- 为什么 A⊙V 之前不使用 Sigmoid
- 输出映射与 FFN:重新融合通道信息
- 总结与思考
文章目录
- @[toc]
- 五分钟回顾模型
- 实验结果
- 一、ImageNet-1K 图像分类
- 二、卷积核尺寸与融合方式消融
- 三、COCO 目标检测与实例分割
- 四、ADE20K 语义分割
- 本文方法
- 整体架构:四阶段 Transformer 风格 ConvNet
- 层级特征如何服务不同任务
- Conv2Former Block:空间建模与通道混合分工
- Convolutional Modulation:每一步为什么有效
- 线性映射 W₁:为调制分支准备特征
- 大核深度卷积:低成本获得更大范围的上下文
- 线性映射 W₂:建立独立的内容分支
- Hadamard Product:用乘法建立条件交互
- 为什么 A⊙V 之前不使用 Sigmoid
- 输出映射与 FFN:重新融合通道信息
- 总结与思考
过去几年,视觉 Transformer 凭借自注意力在图像分类、目标检测和语义分割等任务中取得了很强的表现。与此同时,ConvNeXt、RepLKNet 等工作也不断吸收 Transformer 的训练策略和宏观设计,重新证明了卷积网络仍然具有很强的竞争力。
那么,一个很自然的问题是:Transformer 的优势究竟来自自注意力本身,还是也来自它清晰的模块划分与网络设计方式?
Conv2Former 给出的答案很直接。它保留 Transformer Block 中“空间建模 + 通道混合”的基本逻辑,但不再显式计算 Query、Key 之间的两两相关性,而是用大核深度卷积生成空间权重,再与 Value 分支逐元素相乘。作者将这一过程称为Convolutional Modulation,即卷积调制。
🔥🔥🔥本篇内容:本文介绍 Conv2Former 的整体结构、卷积调制模块以及关键实验结果。全文按照“五分钟回顾模型—实验结果—本文方法”的顺序展开,重点回答三个问题:Conv2Former 长什么样、它相较普通卷积和自注意力改了什么、这些设计是否真的有效。
五分钟回顾模型
Conv2Former 可以先用一句话概括:
**Conv2Former 不是直接使用标准 self-attention,而是提出 convolutional modulation。给定输入特征
X,用一个分支通过 depthwise large-kernel convolution 生成空间权重A,另一个分支生成 value 表示V,然后做逐元素乘法:也就是A中大核卷积负责观察上下文,V分支负责保存内容,逐元素乘法负责根据上下文信息重新调整内容。
从整体上看,Conv2Former 是一个标准的四阶段金字塔 Backbone。输入图像经过 Patch Embedding 后进入不同 stage,特征图分辨率逐级降低、通道数逐级增加,最终得到多尺度特征。这样的层级结构天然适合接入检测和分割框架,而不需要像早期 ViT 那样始终维持单一尺度的 token 序列。
从整体框架继续向下看,每个 Conv2Former Block 仍然沿用 Transformer 的两段式思路:
- 前半部分负责空间信息交互,由卷积调制模块完成;
- 后半部分负责通道维度的信息混合,由前馈网络 FFN 完成;
- 两个部分均配合归一化、激活函数和残差连接使用。
因此,Conv2Former 并不是简单地把若干卷积层堆在一起,而是把 Transformer Block 的职责划分迁移到了卷积网络中。
Conv2Former 最关键的局部模块是卷积调制。输入特征被送入两条分支:一条分支经过线性映射和大核深度卷积(即上图的Linear+DConv),产生位置与通道相关的调制权重张量A;另一条分支经过线性映射得到待调制特征V(即上图的Linear)。二者逐元素相乘后,再通过线性层输出。这里的A不是经过归一化的注意力概率。
它与自注意力最明显的区别在于:自注意力需要通过QKᵀ显式构造位置之间的两两关系,注意力矩阵的空间规模随 token 数平方增长;卷积调制则用固定尺寸的大核深度卷积聚合邻域信息,不生成HW×HW的注意力矩阵。
完整过程可以简化为:
可以这样理解:
V表示当前位置有哪些特征;- **
A表示结合周围信息后,这些特征该保留、增强、还是减弱。类似于注意力。
也就是
A中大核卷积负责观察上下文,V分支负责保存内容,逐元素乘法负责根据上下文信息重新调整内容。**
这里也要避免一个常见误解:Conv2Former 的调制权重会随输入特征变化,但卷积核参数本身仍然是训练得到的静态参数。它不是动态卷积,也不是严格意义上的全局注意力。单个卷积调制模块能够直接覆盖的范围仍受卷积核尺寸约束,只是经过多层堆叠后,有效感受野会继续扩大。
论文默认采用11×11深度卷积核。大核负责扩大空间建模范围,深度卷积则把计算限制在各通道内部,避免普通大核卷积带来过高的参数量和计算量。空间调制之后,FFN 再完成跨通道的信息交互。网络其他位置会使用 GELU,但A⊙V之前的A不经过 Sigmoid、其他激活函数或归一化。
其实,大部分门控结构会对权重使用 Sigmoid,将其限制在 0 到 1:
这样做比较容易解释,因为权重可以被理解成“保留比例”。但它也带来了限制:
- 权重不能大于 1,难以直接增强特征;
- 权重不能小于 0,不能改变特征响应的符号;
- Sigmoid 在较大或较小输入区域容易趋近饱和;
- 把
A强行解释成概率,可能限制调制分支的表达空间。
这就是为什么Conv2former点乘前不使用 Sigmoid的原因。
Conv2Former 提供 N、T、S、B、L 五种模型规模,参数量从 15M 扩展到 199M:
| 模型 | 参数量 | 定位 |
|---|---|---|
| Conv2Former-N | 15M | 轻量版本 |
| Conv2Former-T | 27M | 小型版本 |
| Conv2Former-S | 50M | 中型版本 |
| Conv2Former-B | 90M | 基础版本 |
| Conv2Former-L | 199M | 大型版本 |
以 Conv2Former-T 为例,四个 stage 的通道数为{72, 144, 288, 576},Block 数量为{3, 3, 12, 3}。网络的大部分深度集中在第三阶段,这也是许多现代层级式视觉骨干常见的计算分配方式。
快速回顾可以归纳为下面这条主线:
输入图像 ↓ 四阶段金字塔:逐级降低分辨率、增加通道数 ↓ Conv2Former Block ├─ 卷积调制:大核深度卷积生成空间权重 └─ FFN:完成通道信息混合 ↓ 输出多尺度特征,用于分类、检测和分割Conv2Former 的创新不在于提出一种更复杂的注意力,而在于用极简的“卷积生成权重 + 逐元素调制”重写空间建模模块,并把它放进成熟的 Transformer 风格框架中。
实验结果
论文分别在 ImageNet 图像分类、COCO 目标检测与实例分割、ADE20K 语义分割上进行验证,并通过消融实验分析卷积核尺寸与特征融合方式。
一、ImageNet-1K 图像分类
在 ImageNet-1K 上以224×224分辨率从头训练时,论文报告的结果如下:
| 模型 | 参数量 | FLOPs | Top-1 Accuracy |
|---|---|---|---|
| Conv2Former-N | 15M | 2.2G | 81.5% |
| Conv2Former-T | 27M | 4.4G | 83.2% |
| Conv2Former-S | 50M | 8.7G | 84.1% |
| Conv2Former-B | 90M | 15.9G | 84.4% |

随着模型规模从 N 增加到 B,Top-1 准确率从 81.5% 提升到 84.4%,同时参数量和 FLOPs 也同步增加。对实际使用者而言,这组结果更适合用来观察 Conv2Former 家族内部的容量—计算量取舍,而不是脱离训练设置单独比较某一个精度数字。
论文还给出了 ImageNet-22K 预训练后的迁移结果:
| 模型 | 输入分辨率 | ImageNet-1K Top-1 |
|---|---|---|
| Conv2Former-B | 224×224 | 86.2% |
| Conv2Former-B | 384×384 | 87.0% |
| Conv2Former-L | 224×224 | 87.0% |
| Conv2Former-L | 384×384 | 87.7% |
预训练数据和输入分辨率均发生变化后,结果不能与上一张“ImageNet-1K 从头训练、224 输入”的表格直接横向归因。它更准确地说明了 Conv2Former 在扩大模型与数据规模后仍具有继续提升的能力。
二、卷积核尺寸与融合方式消融
卷积调制依靠深度卷积获取空间上下文,因此卷积核大小是一个关键变量。论文从5×5一直测试到21×21,并将11×11作为默认设置。以 Conv2Former-B 为例,7×7卷积核取得 84.2%,11×11取得 84.4%。
实验中,分类精度整体随卷积核从5×5增大到21×21而提高,但后期边际收益逐渐减小,更大的核也会继续增加计算量。论文将11×11设为默认值,本质上是在空间覆盖范围、精度收益与计算开销之间取平衡。
卷积调制中另一项关键设计,是如何把空间权重A与特征V结合。Conv2Former-T 上的消融结果如下:
| 融合或权重处理方式 | Top-1 Accuracy |
|---|---|
| Element-wise Sum | 82.7% |
| 对 A 使用 Sigmoid | 82.3% |
| 对 A 使用 L1 Normalization | 82.8% |
将 A 线性归一化到(0,1] | 82.2% |
| Hadamard Product | 83.2% |
结果表明,直接使用逐元素乘法效果最好。论文没有在乘法前额外加入 Sigmoid,也没有强制进行归一化。这一点很重要:卷积分支产生的A不只是一个限制在 0 到 1 之间的“注意力概率”,它可以更自由地放大、抑制或改变不同位置和通道上的响应。
三、COCO 目标检测与实例分割
论文将 Conv2Former 接入 Mask R-CNN 和 Cascade Mask R-CNN,在 COCO 上验证其作为通用 Backbone 的能力。下表模型均采用 ImageNet-1K 预训练的 Backbone、3× schedule和多尺度训练,可核对的结果包括:
| 检测框架 | Backbone | APᵇ | APᵐ |
|---|---|---|---|
| Mask R-CNN | Conv2Former-T | 48.0 | 43.0 |
| Cascade Mask R-CNN | Conv2Former-T | 51.4 | 44.5 |
| Cascade Mask R-CNN | Conv2Former-S | 52.8 | 45.7 |
| Cascade Mask R-CNN | Conv2Former-B | 52.8 | 45.6 |
其中,APᵇ 表示边界框检测 AP,APᵐ 表示实例分割掩码 AP。这些结果说明四阶段金字塔输出可以顺利迁移到密集预测框架,卷积调制并不只服务于最终的分类特征。
需要注意,表中结果跨越了不同模型规模与检测器。比如 Conv2Former-S 和 B 在 Cascade Mask R-CNN 下的 APᵇ 相同,但不能据此简单判断二者整体能力完全相同;参数量、训练随机性、各尺度 AP 与推理开销也属于完整比较的一部分。
四、ADE20K 语义分割
在 ADE20K 数据集上,论文使用 UPerNet 进行语义分割评估。由于 L 版本的预训练数据和裁剪尺寸与前三个版本不同,这里将实验条件一并列出:
| Backbone | 预训练数据 | Crop Size | mIoU |
|---|---|---|---|
| Conv2Former-T | ImageNet-1K | 512×512 | 48.0 |
| Conv2Former-S | ImageNet-1K | 512×512 | 50.3 |
| Conv2Former-B | ImageNet-1K | 512×512 | 51.0 |
| Conv2Former-L | ImageNet-22K | 640×640 | 54.3 |
在同为 ImageNet-1K 预训练、512×512裁剪的 T、S、B 三个版本中,mIoU 随模型规模提高。Conv2Former-L 达到 54.3,但它同时使用 ImageNet-22K 预训练和640×640裁剪,因此不能把与 B 版本的差异只归因于模型容量。整体结果表明该 Backbone 可以用于 UPerNet,但也不能把全部表现单独归因于某一个11×11深度卷积。
本文方法
整体架构:四阶段 Transformer 风格 ConvNet
Conv2Former 采用四阶段层级式架构。每个 stage 在固定分辨率上堆叠若干 Conv2Former Block;stage 之间通过 Patch Embedding 完成下采样和通道调整,通常使用2×2、步幅为 2 的卷积,将空间尺寸减半。
这种设计可以从两个角度理解:
- 从 CNN 角度看,它保留了经典特征金字塔,浅层特征分辨率高、细节丰富,深层特征分辨率低、语义更强;
- 从 Transformer 角度看,每个 Block 都明确分成空间建模模块和 FFN,使用残差连接串联,结构职责清晰。
因此,“Transformer-style”描述的是 Block 的组织方式,并不表示网络内部必须存在自注意力。Conv2Former 的主体运算仍然由卷积、线性映射、逐元素乘法、归一化和激活函数构成。
以 Conv2Former-T 为例,特征会依次进入四个 stage:
| Stage | 通道数 | Block 数量 | 主要作用 |
|---|---|---|---|
| Stage 1 | 72 | 3 | 保留高分辨率局部信息 |
| Stage 2 | 144 | 3 | 继续下采样并增强表征 |
| Stage 3 | 288 | 12 | 承担主要特征提取计算 |
| Stage 4 | 576 | 3 | 形成低分辨率高语义特征 |
N、S、B、L 等变体通过调整通道宽度和网络深度形成不同计算规模,但都沿用同一套四阶段骨架与 Conv2Former Block。
层级特征如何服务不同任务
四个 stage 能输出不同分辨率的特征,因此 Conv2Former 可以作为通用 Backbone 接入 Mask R-CNN、Cascade Mask R-CNN 和 UPerNet。浅层输出保留较丰富的位置与边缘信息,深层输出提供更强语义。
这套迁移不需要改变卷积调制模块。变化主要发生在 Backbone 之后:分类任务对最终特征进行汇聚和分类;检测任务把多尺度特征交给检测器;语义分割则通过解码头恢复空间分辨率。明确整体输出方式后,下面再进入单个 Conv2Former Block 的内部。
Conv2Former Block:空间建模与通道混合分工
一个 Conv2Former Block 可以概括为两部分:
输入 X │ ├─ 归一化 → Convolutional Modulation → 残差相加 │ └─ 归一化 → FFN → 残差相加 ↓ 输出第一部分的卷积调制负责空间维度的信息传播,作用上对应 Transformer 中的自注意力;第二部分的 FFN 负责通道维度的信息变换。网络使用 LayerNorm,并在相应位置采用 GELU,整体保留了现代 Transformer/ConvNet 常见的训练与优化设计。需要特别区分的是,调制分支在A⊙V之前不对A使用 GELU、Sigmoid、其他激活函数或归一化。
Convolutional Modulation:每一步为什么有效
卷积调制是全文最核心的部分。对于输入特征X,它通过两条分支分别得到调制权重和待调制特征:
A = D C o n v ( W 1 X ) , V = W 2 X , Z = A ⊙ V A=\mathrm{DConv}(W_1X),\qquad V=W_2X,\qquad Z=A\odot VA=DConv(W1X),V=W2X,Z=A⊙V
其中,W₁和W₂表示线性映射,DConv表示大核深度卷积,⊙表示逐元素乘法。得到Z后,再经过输出映射形成模块输出。
线性映射 W₁:为调制分支准备特征
深度卷积的特点是各通道独立执行空间卷积,本身不会主动交换不同通道的信息。如果直接在原始输入上执行深度卷积,每个输出通道只能依据对应输入通道的邻域生成响应。W₁先对通道进行学习后的重新组合,再让大核深度卷积处理这些特征。这样,卷积调制分支接收到的不再是未经变换的原始通道,而是更适合生成调制权重的表示。
大核深度卷积:低成本获得更大范围的上下文
DConv(W₁X)使用大核深度卷积生成A。对于某个位置(h,w),A[h,w,c]不只由该位置决定,还会参考卷积核覆盖范围内的邻域特征。
较大的卷积核可以让模型在判断局部纹理时同时观察更宽的区域;深度卷积又避免了普通大核卷积随输入、输出通道共同增长的高成本。论文的核尺寸实验表明,更大的核在 Conv2Former 中总体能够带来收益,而默认11×11是效果与成本之间的选择。
这里的A同时具有空间和通道维度,更准确的称呼是“位置与通道相关的调制权重张量”,而不是只有二维空间位置的注意力图。
从复杂度直觉看,设特征图包含HW个位置、通道数为C,固定核尺寸为k×k时,深度卷积的空间计算量大致随HW·C·k²增长;标准全局自注意力中的空间相关矩阵则包含(HW)²个位置对。高分辨率输入下,不构造全局注意力矩阵是 Conv2Former 控制内存和计算开销的重要原因。
不过,大核卷积没有显式建模任意两个远距离位置之间的两两相似度,单层直接作用范围仍受卷积核限制。因此,“不构造二次复杂度注意力矩阵”不应被误写为“获得与全局注意力完全相同的关系建模”。
这也不意味着大核卷积在所有设备上都一定比优化后的注意力更快。真实速度还受到硬件、算子实现、内存访问、batch size 和数值精度影响。FLOPs 只描述部分理论成本,部署时仍应在目标设备上测试吞吐量与延迟。
线性映射 W₂:建立独立的内容分支
V=W₂X可以理解为模块准备传递给下一层的内容特征。将A和V分成两条路径,是为了让它们承担不同职责:
A回答“结合邻域上下文后,当前位置和通道应该如何调整”;V回答“当前位置实际包含哪些待传递内容”。
如果只保留大核深度卷积,模块更接近普通的空间混合;加入独立的 Value 分支后,空间上下文能够显式控制内容响应。
Hadamard Product:用乘法建立条件交互
逐元素乘法可以写成:
Z[h,w,c] = A[h,w,c] × V[h,w,c]它不是简单把两条分支放在一起,而是让一条分支控制另一条分支:
- 当
A大于 1 时,Z相对于V的幅值可以被放大; - 当
A接近 0 时,Z相对于V可以被抑制; - 当
A小于 0 时,Z的符号相对于V可以发生变化。
更重要的是,A和V都依赖输入X。即使暂时把两条分支看成线性变换,f(X)⊙g(X)也已经不是对输入的单一线性映射,而是一种乘法交互。模型由此能够表达“某种上下文出现时,才增强某种内容特征”这样的条件关系。
这也是它与逐元素相加的主要区别:加法更像把两种信息叠加,而乘法天然具有门控和调制能力。论文消融中,Conv2Former-T 使用 Element-wise Sum 得到 82.7%,使用 Hadamard Product 得到 83.2%,直接支持逐元素乘法的选择。
为什么 A⊙V 之前不使用 Sigmoid
许多门控结构会对权重使用 Sigmoid,将其限制在 0 到 1。这样容易把权重解释为“保留比例”,但也会限制表达范围:
- 权重不能大于 1,难以直接放大特征;
- 权重不能小于 0,不能改变响应方向;
- Sigmoid 在输入绝对值较大时容易进入饱和区域;
- 把
A强制解释为概率,可能削弱自由调制能力。
一种可能的解释是,Sigmoid 会限制权重范围并可能出现饱和,归一化也会改变调制张量原本的幅值关系。不过,论文只通过消融确认了“不加激活或归一化、直接计算A⊙V”的结果更好,并没有验证性能下降的具体原因,作者也将这一现象的进一步解释留给后续研究。
这里还需要特别区分:网络其他位置会采用 GELU,但在乘法前,A不经过 GELU、Sigmoid、其他激活函数或归一化。
输出映射与 FFN:重新融合通道信息
深度卷积主要在单个通道内部处理空间信息,逐元素乘法也只发生在相同位置和相同通道之间。因此,A⊙V后还需要输出线性映射,将各通道的调制结果重新组合到新的表示空间。
Conv2Former Block 随后的 FFN 会进一步完成通道维度的信息变换。整个模块的职责可以归纳为:
从结构上理解 Conv2Former 时,应把它看作一条完整的信息流,而不能只关注“逐元素乘法”这一个符号:大核卷积提供上下文,双分支分离“权重”和“内容”,乘法建立输入相关的条件交互,输出映射与 FFN 再补足跨通道融合。不过,论文没有分别消融W₁、W₂、输出映射与 FFN 的独立精度贡献。
总结与思考
Conv2Former 提出了一种非常克制的视觉 Backbone 设计。它没有继续增加注意力分支,也没有引入复杂的动态核生成器,而是用大核深度卷积产生空间权重,通过 Hadamard Product 调制 Value 特征,再配合 FFN 完成通道混合。
如果只记住一句话,可以记成:
**Conv2Former 不是直接使用标准 self-attention,而是提出 convolutional modulation。给定输入特征
X,用一个分支通过 depthwise large-kernel convolution 生成空间权重A,另一个分支生成 value 表示V,然后做逐元素乘法:也就是A中大核卷积负责观察上下文,V分支负责保存内容,逐元素乘法负责根据上下文信息重新调整内容。