资讯详情

Transformer和CNN再碰撞!EdgeNeXt:用于移动视觉的轻量级新网络

点击下方,关注“”公众号

AI/CV重磅干货,第一时间送达

作者:Ziyang Li | 转载自:极市平台

本文从减少计算资源消耗和部署在边缘设备中提出EdgeNeXt混合架构引入分割深度转移注意力(SDTA)通过通道组分割和合理的注意机制,编码器可以提高资源利用率。该架构凭借1.3M的参数量在ImageNet-1K上表现超过MobileViT,扩容后凭借5.6M的参数量在ImageNet-1K上达到79.最高精度的4%。

写在前面

本文从减少计算资源消耗和部署在边缘设备中提出EdgeNeXt混合架构引入分割深度转移注意力(SDTA)通过通道组分割和合理的注意机制,编码器可以提高资源利用率。该架构凭借1.3M的参数量在ImageNet-1K上表现超过MobileViT,扩容后凭借5.6M的参数量在ImageNet-1K上达到79.4%的最高精度。

46d1c4b61dfe1929f4094dcb9a3f1eb4.jpeg

EdgeNeXt: Efficiently Amalgamated CNN-Transformer Architecture forMobile Vision Applications

论文地址:https://arxiv.org/abs/2206.10589

代码链接:https://github.com/mmaaz60/EdgeNeXt

为什么会想到分割深度转移注意力?

EdgeNeXt是一种集CNN与Transformer综合混合结构,鉴于现有的大多数流行方法,在追求更高精度的同时,不能很好地保持更快的推理速度,因此资源有限设备的部署性能不足。

因此EdgeNeXt希望在保持较小模型容量的同时提高模型性能。CNN作为捕捉局部特征的经典代表,自然被视为架构设计的核心。然而,随着现有研究的进行,一些经典

  • 首先,CNN采用局部感觉野进行特征捕获,因此不能直接建模整体环境;

  • 其次,CNN推理中学到的权重是静止的,这使得CNN不同的输入内容无法灵活适应。

试着用现有的方法Vision Transformers(ViTs)优良的特及CNN结合,以解决上述限制。然而,大多数组合不可避免地会带来新的问题:

因此,EdgeNeXt试图在将CNN与ViTs结合模型性能和推理速度。作者和其他人通过引入分割深度来转移注意力(SDTA)编码器不增加额外的参数和乘法-加法计算量,同时实现高效结合(MAdds)。如下图所示:

图1:EdgeNeXt模型与SOTA ViTs与混合架构设计相比,数据集是ImageNet-1K。

图中1.3M参数量的EdgeNeXt在ImageNet-1K上的性能超过同样轻量级的混合架构MobileViT,而5.6M参数量适中的版本MAdds成为对比架构SOTA模型。

EdgeNeXt是如何结合CNN与ViTs的?又是如何做到在引入SDTA模块后不增加额外参数?

下面笔者带领大家了解一下~

二、EdgeNeXt剖析

图2:EdgeNeXt整体架构示意图。

如图,EdgeNeXt同样采用标准的“四阶段”金字塔式设计规范,其主要包括卷积编码器和SDTA两个核心模块的编码器。

从整体结构出发,输入大小为的特征图,在网络的的特征图ViT、SwinTransformer类似的“Patchify策略是通过使用尺寸为的非重叠卷积来达到更好的池化效果,此时输出尺寸为。然后使用连续堆叠的三个核大小的卷积编码器提取局部特征(不改变特征图大小)。

Stage 2中的DownSampling采用步长为(2、2)的卷积实现,此时得到尺寸为的输出,连续堆叠两个核大小为的卷积编码器后,进入SDTA模块前以element-wise add添加位置置编码对检测、分割等任务的影响,提高模型推理速度,这次只能加四个阶段)。

Stage 3和Stage 4分别使用和的卷积编码层。不同的核尺寸应用实现了自适应的核尺寸机制,作者和其他人设计的原因是希望增加核CNN为了提高模型性能,直接的大核应用会带来很高的计算成本,所以使用这种金字塔设计是非常合理的。

现有的研究工作表明,CNN浅层的更多特征体现在纹理、局部边缘等,而深层则体现在抽象语义上,更倾向于整体信息。因此,小核在浅层应用,大核在深层应用符合要求CNN结构特征。

卷积编码器和SDTA作为架构的核心模块,编码器将分为两个单独的部分进行解释~

卷积编码器(Convolution Encoder)

图3:卷积编码器示意图。

如图所示,编码器的起始部分N×N DWConv具有自适应核大小的代表Depth-wise如上所述,卷积,N在EdgeNeXt{3、5、7、9}是四个阶段的值。层归一化后使用逐点卷积(即图中Linear)将通道维度扩展到原来的4倍,并辅以GELU增加非线性,最后通过逐点卷积恢复通道维度,增加残余连接,以确保网络的正常学习。一份简单的pytorch代码示例如下:

importtorch importtorch.nnasnn classConvEncoder(nn.Module): def__init__(self,n,channels): super(ConvEncoder,self).__init__()  self.identity=nn.Identity() self.stem_conv=nn.Conv2d(channels,channels,kernel_size=(n,n),padding=(n//2,n//2),groups=channels) self.norm=nn.LayerNorm(channels)#可直接调用,在forward调整维度,也可以写另一个层归一化处理函数再调用 self.linear1=nn.Conv2d(channels,channels*4,kernel_size=1) self.gelu=nn.GELU() self.linear2=nn.Conv2d(channels*4,channels,kernel_size=1)  defforward(self,x): identity=self.identity(x) x=self.stem_conv(x) x=self.norm(x.permute(0,2,3,1)).permute(0,3,1,2) x=self.linear2(self.gelu(self.linear1(x))) &nsp;     out = x + identity
        return out

分割深度转置注意编码器(SDTA Encoder)

图4:SDTA编码器示意图。

如图,SDTA编码器包含两个主要组件:特征编码模块和自注意计算模块。

在第一个组件中,作者等人参考Res2Net的架构设计,希望能获得具有更灵活和自适应空间感受野的输出特征。首先输入特征通过直接的通道切分被划分为s个子集(图中s=4),每个子集的尺寸均为,接着每个子集的计算方式都是将上一个子集的输出特征融合后再经过3×3的depth-wise卷积。以图4中的4个子集为例,子集B1由于处在起始位置,故不做任何处理;子集B2将B1的输出进行特征融合,再经过3×3的depth-wise卷积进行特征编码;子集B3将B2的输出进行特征融合,再经过3×3的depth-wise卷积进行特征编码;子集B4将B3的输出进行特征融合,再经过3×3的depth-wise卷积进行特征编码.最终4个子集的输出特征被拼接后得到具有多尺度感受野的输出特征。

需要注意的是,特征通道的切分也可以使用逐点卷积来近似的完成,但作者等人希望进一步减少参数量,故采用直接的通道切分。

第二个组件是本文的核心,如图,输入特征通过reshape被修改为,辅以三个线性层得到Q、K、V,在计算交叉协方差注意力之前,通过对Q、K应用 L2 范数来稳定训练。之后,以往的计算在Q、K之间沿空间维度进行,即(HW × C)和(C × HW)运算后得到(HW × HW)。然而本文方法希望在通道维度上计算注意力,即仅对Q进行转置,因此(C×HW) ·(HW ×C)可得到(C × C),计算结果辅以softmax得到注意力得分矩阵,应用于V得到最终的注意力图。

为什么要在通道维度进行点积运算?作者等人的解释是:传统自注意力层的开销对于边缘设备上的视觉任务是不可行的,因为它是以更高的 MAdd 和延迟为代价的。为了缓解这个问题并有效地编码全局上下文,提出在通道维度上应用点积。

模型整体的结构与参数量示意如下所示:

图5:EdgeNeXt 架构详细示意图。

三、性能对比

在实验部分,作者等人对图像分类(ImageNet-1K)、目标检测(COCO)、图像分割(Pascal VOC 2012)等下游任务均进行详细的性能对比。其对比结果如下所示:

图像分类:

图6:图像分类对比结果。

目标检测:

图7:目标检测对比结果。

图像分割:

图8:图像分割对比结果。

四、思考与总结

本文从轻量化角度出发,设计了卷积与transformer的混合架构EdgeNeXt,兼顾了模型性能与模型大小/推理速度。

整体架构采取标准的“四阶段”金字塔范式设计,其中包含卷积编码器与SDTA编码器两个重要的模块。在卷积编码器中,自适应核大小的设计被应用,这与SDTA中的多尺度感受野的思想相呼应。而在SDTA编码器中,特征编码部分使用固定的3×3卷积,但通过层次级联实现多尺度感受野的融合,而此处若使用不同尺寸的卷积核是否会带来更好的效果有待考证。在自注意计算部分,通过将点积运算应用于通道维度,得到了兼顾计算复杂度与全局注意力的输出,是支撑本文的一个核心点。

从分类性能来看,效果确实很好,但结合检测、分割任务来看,供对比模型略少,仅提供了部分轻量级网络对比,希望以后能看到更多优秀工作的产出~

 
     

后台回复:即可下载上面的论文和代码

目标检测和Transformer交流群成立
扫描下方二维码,或者添加微信:CVer6666,即可添加CVer小助手微信,便可申请加入CVer-目标检测或者Transformer 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测或者Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲扫码或加微信: CVer6666,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!

▲扫码进群
▲点击上方卡片,关注CVer公众号

标签: 堆叠式卡连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台