2020年代的卷积神经网络

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

A ConvNet for the 2020s

参考:www.bilibili.com/video/BV16Y…

摘要

视觉识别的革命始于ViTs的引入,它迅速取代了ConvNet,一举成为最先进的图像分类模型。另一方面,虽然最原始的ViTs在应用于下游任务时困难重重,但是许多分层的(hierarchical )ViTs,如Swin Transformer,重新引入了几个ConvNet的先验,使得Transformer作为通用的视觉骨干成为可能,并且在各类下游任务上性能显著。但是这种混合方法的有效性主要归功于ViTs的内在优势,而不是卷积的内在归纳偏置。

本文重新审视了设计空间,并测试了纯粹的ConvNet所能达到的极限,具体来说,将一个标准的ResNet逐步“现代化”,使之成为一个类似ViTs架构的实现,并在此过程中发现了几个有助于性能提升的关键组件。

ConvNeXt完全由标准的ConvNet模块构成,在准确性和可扩展性方面与Transformer竞争,在ImageNet上达到了87.8% top-1准确性,在COCO目标检测和ADE20K语义分割方面超过了Swin Transformers,同时保持了标准ConvNets的简单性和效率。

image-20220403213421785

回顾

ConvNet的进化之路

卷积神经网络的兴起需要从2012年的AlexNet说起,它一举夺得了当年ImageNet分类比赛的冠军,这让人们看到了卷积神经网络在计算机视觉中的无限可能。

时间来到两年后,VGGNet认为使用小尺寸的卷积核串联可以达到与大尺寸卷积核同样的效果,并且参数量更低,同时可以在层间添加更多的非线性以达到更好的性能。自VGG以后,不断堆叠的3×3网络便成为了主流的卷积神经网络设计范式。

同年的另一篇论文Inceptions夺得了ImageNet上的冠军,而VGG则屈居第二。Inceptions探索了多分支对模型的影响,其影响同样延续至今。

2015年,一篇举世瞩目的论文横空出世,它就是何恺明的Deep Residual Learning for Image Recognition,文中提出了残差的结构,应用其设计的ResNet也是夺得了ImageNet的冠军,一时间名声大躁,影响深远。即使在今天,也有许多论文以ResNet为Baseline进行研究和探索,使其引用量突破了10万大关。

扫描二维码关注公众号,回复: 13768337 查看本文章

2016年,ResNeXt将ResNet与Inceptions结合,并且使用了分组卷积以减少参数,该设计对后续的轻量级神经网络设计起到了深远的影响。

同年,DenseNet将层之间的连接做到了极致,充分利用了不同层的特征,并且缓解了梯度消失的问题。

2017与2018,MobileNet连出两篇,进一步探索了分组卷积的威力——深度可分离卷积,以及与ResNet相反逆残差结构,这些设计更是影响了许多轻量级网络的设计。

2019年的EfficientNet提出了复合模型扩张方法,这是一种模型缩放方法,从深度、宽度、输入图像分辨率三个维度来缩放模型,该设计在后续的神经网络设计中十分常见。

还有更多。。。

上述的各种设计确立了当今的卷积神经网络设计范式,无数网络都收其影响。但是同样的,它也一定程度上束缚了2020年代卷积神经网络的设计,因此,而今的ConvNeXt亟需一场革新。

共性

这些优秀的神经网络设计背后的共性是什么呢?

局部计算、平移等变和特征分层。

这些优秀的设计先验也被使用到了ViT中,便得到了Swin Transformer。

阶跃

Transformer

2017年,Transformer首次在NLP领域中得到应用,不久便立于统治之位。

受限于NLP与CV的不同,直到2020年,ViT才被引入视觉领域,其统治之路也由此开始。

挑战

当时,ViT的成功只限于图像分类任务,但是计算机视觉远远不止分类这一个任务。

同时,self-attention的巨大时间复杂度限制了输入尺寸,使用高分辨率的图像似乎是一种奢望。而分割、检测等下游任务却正好需要高分辨率来获取更多的信息。

发展

ViT的脚步并没有就此停下,它的成功就像一种必然。各种魔改的VITs也证明了自身的能力。

2021年Swin Transformer横空出世,一举收揽各项任务的数个sota,其论文也获得了当年的最佳论文——马尔奖。

Swin Transformer借鉴了ConvNets的优秀先验,在局部窗口中计算自注意力,并且不同的窗口共享权重,同时分层的结构也成为其在下游任务上大展身手的资本。

但是Swin太复杂了,为了实现局部窗口间的交互,cyclic shifting被诟病不够优雅,sliding window也并非原生实现。

但是卷积已经具备了这些要素!

ConvNeXt

image-20220403213448473

让我们从最基础的ResNet开始,逐步进行“现代化”吧!

训练策略

image.png 为保证公平,ConvNets与ViTs应该在同样的配置下进行训练。其性能获得了2.6的提升。

宏观设计

ResNet中,各层的计算量占比为3:4:6:3,而在swin中为1:1:3:1。

另外一点便是使用Patch Embedding,将ReaNet最开始7×7卷积核最大池化替换为4×4stride为4的卷积。

image-20220403213842266

ResNeXt化

使用深度可分离卷积,在ViT中,注意力的加权和操作也是在pre-channe的,同时增加了通道数,以弥补性能损失。

image-20220403214136953

逆瓶颈结构

在self-attention的计算中,通道数从C扩张到3C以拆分为KQV,后续的MLP中的隐藏层也有四倍的扩张。

image-20220403214334379

更大卷积核

将经典卷积的3×3尺寸扩张到与Swin相同的7×7,更大尺寸则不会再涨点,这点在RepLKNet上也有说明,可能因为7×7的尺寸在ImageNet的分类任务上已经足够了,而在需要更大尺寸的下游任务则可以继续涨点。

image-20220403214605875

微观设计

借鉴了Transformer的微观设计,具体如下:

  1. 将ReLU改为GeLU;
  2. 使用更少的激活函数和归一化层;
  3. 将BatchNorm改为LayerNorm;
  4. 使用单独的下采样层和归一化层,每个Block内的分辨率不变。

image-20220403215036052

结果

现代化后的ConvNeXt对比如下:

image-20220403215115676

显而易见,ConvNeXt结构简单且易于实现,其性能并不输于大火的ViTs。

ConvNeXt为后ViT时代的卷积网络设计提供了指导,其对2020年代卷积神经网络设计范式和后续卷积神经网络的影响将不可估量,或许会就此开始一场全新的ConvNet设计范式革新。

猜你喜欢

转载自juejin.im/post/7082378105783844895