深度学习论文: Conv2Former: A Simple Transformer-Style ConvNet for Visual Recognition及其PyTorch实现
深度学习论文: Conv2Former:一种基于Transformer-style卷积神经网络(CNN)用于视觉识别
PDF: https://arxiv.org/pdf/2211.11943.pdf
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks
1 概述
基于深度学习领域的理论框架,在将ConvNet与ViT的理念进行融合后,在这项研究中我们开发出一种新型自注意力机制。该机制通过巧妙地将卷积调制操作应用于传统的自注意力计算过程,并实现了显著简化的基础上构建了一种全新的ConvNet架构命名为Conv2Former。

基于一系列精心设计的实验测试,在ImageNet分类、COCO检测以及ADE20K分割任务上
2 Conv2Former
Conv2Former基于金字塔架构展开设计,在系统中主要由四个不同的层级和四种不同尺寸的特征描述构成。各层级之间通过一种称为Patch Embedding模块的技术实现连接,在此过程中其本质是使用一个带有stride为2的卷积核进行操作以降低特征空间分辨率。

下表给出了不同大小Conv2Former的超参配置:

2-1 Convolutional Modulation Block
从经典的残差模块到自注意力模块,再到新一代卷积模块。

自注意力模块可以表示为如下形式:

其中 A 可以更好的编码空域相关性,但其计算复杂性随N而爆炸性增长。

Convolutional Modulation Block 采用卷积特征对 V 进行调制

其中使用\odot表示Hadamard乘积。通过Convolutional Modulation Block机制,每个位置的元素与其附近的元素之间具有相关性;其通道间的特征融合则可借助线性变换模块完成。
PyTorch代码:
class ConvMod(nn.Module):
def __init__(self, dim):
super().__init__()
self.norm = LayerNorm(dim, eps=1e-6)
self.a = nn.Sequential(
nn.Conv2d(dim, dim, 1),
nn.GELU(),
nn.Conv2d(dim, dim, 11, padding=5, groups=dim)
)
self.v = nn.Conv2d(dim, dim, 1)
self.proj = nn.Conv2d(dim, dim, 1)
def forward(self, x):
B, C, H, W = x.shape
x = self.norm(x)
a = self.a(x)
v = self.v(x)
x = a * v
x = self.proj(x)
return x
代码解读
微观设计理念:
- 应用大型卷积核进行图像处理。
- 在Hadamard乘积之前未引入相关任务的归一化机制(包括Sigmoid函数和L_{p}范数)。
- 对Norm进行了Layer Normalization处理。
- 选择使用了GELU激活函数。
3 Experiments

