[Transformer] CMT:Convolutional Neural Networks Meet Vision Transformers

论文链接:  https://arxiv.org/abs/2107.06263

论文代码(个人实现版本):  GitHub - FlyEgle/CMT-pytorch: CMT: Convolutional Neural Networks Meet Vision Transformers

官方代码暂未开源

复现博客: 浅谈Transformer+CNN混合架构:CMT以及从0-1复现

1 Overview

CNN+Transformer混合模型:利用CNN对局部特征进行建模,利用Transformer来捕获远程依赖关系。

上图中,(a)为CNN中经典的ResNet网络,(b)为目前的视觉ViT结构。可以看到ViT直接将输入图像切成不重叠的patch然后进行线性映射,这样直接失去了patch中的2维空间特征。

因此CMT采用stem结构,用步长为2的3x3卷积进行下采样,并用另外两个步长为1的3*3卷积来提取局部特征。

为了提取到多尺度特征采用四个stage的结构,因此每个stage前均使用2x2卷积+LayerNorm进行2倍下采样和升维度(channel x 2)。在每个stage内,构建一系列的CMT模块提取特征,它既能捕获局部性能,也能捕获长距离依赖关系。

2 CMT Block

下面详细介绍下每个block内的细节,主要有三个组成部分,local perception unit,lightweight multi-head self-attention module,inverted residual feed-forward network。

2.1 LPU, local perception unit 局部感知单元

旋转和平移是CNN中常用的数据增强方法,用于增加模型的平移不变性。然而在ViT中通常采用绝对位置编码,每个patch都对应一个唯一位置编码,因此无法通过数据增广引入平移不变性,也同时忽略了局部相关性和结构信息。因此LPU采用3x3的深度分离卷积+残差连接进一步提取局部特征。

2.2 LMHSA,lightweight multi-head self-attention module轻量级多头注意力模块

先用步长为k的k*k深度卷积减少K和V的空间维度,并在计算MHSA时引入一个可学习的偏置B

2.3 IRFFN,inverted residual feed-forward network反向残差前馈网络

这个模块类似于mobilenetv2中的inverted residual模块(两头窄中间宽的通道维度设计),只是改变了残差连接的位置以及使用的是GELU作为激活函数。

2.4 Architecture

根据上述三个组件的介绍,CMT Block公式可以写成:

3 Experiments

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值