盘点2021-2022年出现的CV神经网络模型

在transformer席卷CV领域之后,掀起了一股新型神经网络模型的涌现热潮。短短一两年时间,研究者们从不同结构领域冲击着SOTA,有ViT的,有CNN的,甚至还有纯MLP的。其中,不乏有一些启发性和奠基性的模型出现,隐约感觉到这两年是基础模型的爆发年ViT引领了继2012年AlexNet和2015年ResNet之后的第三个基础模型爆发潮。于是,木盏以此博文做一个不是很完全的综述,整理给大家浏览,说不定可以遇到有帮助的trick。此外,我还有一些在ImageNet上的复现经验得出一些结论,附带在对每个模型的评论上。
这篇文章一共涵盖9个优秀模型,模型出现的大致时间基本可以在arxiv链接中看出。其中3个来自MSRA、3个来自FAIR:

nummodelorgconfpaper link
1Swin TransformerMSRAICCV2021(best paper)https://arxiv.org/abs/2103.14030
2MLPMixerMSRAarxivhttps://arxiv.org/abs/2105.01601
3DeiTFAIRarxivhttps://arxiv.org/abs/2012.12877v2
4ConvNextFAIRarxivhttps://arxiv.org/abs/2201.03545
5SPACHMSRAarxivhttps://arxiv.org/abs/2108.13002
6LeViTFAIRICCV2021paper link
7MobileViTAppleICLR2022https://arxiv.org/abs/2110.02178
8VANTsinghuaarxivhttps://arxiv.org/abs/2202.09741
9PVTSenseTimearxivhttps://arxiv.org/abs/2106.13797

1. Swin Transformer

在这里插入图片描述
swin transformer是ICCV2021的马尔奖(最佳论文)获得作品,自然是需要被每一个CVer尊重的。swin提出了窗口内自注意力机制,并且通过sliding window来实现窗口间的信息传递。这样可以避免原始ViT不能应对dense型输出视觉任务(如目标检测、分割等)的问题。ViT的全局self-attention计算模式最大的问题是它的计算次数会随token数量的变多而二次线性增多,所以ViT无法把图像化成太多的token,一来无法应对dense输出型的视觉任务,二来不适合应对high-resolution的输入。Swin的出现的意义使得纯vision transformer可以代替CNN成为general-purpose基础模,并且达到SOTA。swin加速了transformer席卷CV任何一个角落的速度。
对swin transformer感兴趣的同学不妨进一步点击我针对swin写的一篇博客《swin transformer详解》,对swin的每个部分都讲解得很清楚。


2. MLPMixer

在这里插入图片描述
MLPMixer无疑是一篇很具启发性的文章,用纯MLP就达到了ImageNet的SOTA级别。MLPMixer在网络架构上跟ViT极其类似,简单地把self-attention模块替换成转置MLP。
我做了一些关于其inference速度的实验,发现这个模型还是不适合工程部署的,还达不到swin的速度/效率平衡。
这篇文章让我想到某次AI比赛上遇到的一个叫“只用MLP”的队伍,最后他们取得了不错的成绩。可见,仍然有一批MLP迷还在坚持MLP,他们认为只要用对MLP,冲击SOTA也是足够的。这篇文章的意义是:激发了研究者们对MLP的重新思考,开始探索MLP在CV领域的“正确”用法。


3. DeiT

在这里插入图片描述
DeiT是首篇将蒸馏(distillation)思想引入Vision Transformer的文章。本身ViT的训练过程其实对数据的利用率没有CNN那么高效。因为CNN天生对邻近的区域更感兴趣,而ViT的自注意力机制是global的,所以CNN在这种对邻近区域的Inductive Bias可以大大减小解空间。从而CNN通常要比ViT收敛更快,我们可以看一个比较图:
在这里插入图片描述
其实CNN除了比ViT收敛更快之外,CNN对数据的要求还更低一些。最初版的ViT是需要在ImageNet-22k上预训练才能达到SOTA,只用ImageNet-1k训练效果是没那么好的。理论上在数据充足的情况下,transformer比CNN有更大的潜力,因为它跳出了local性;而在数据不够充足的情况下,transformer在训练时会比CNN要“笨”一些。这也是为何本文提出了用CNN当ViT的teacher,以此进行distillation,让ViT一边学ground truth,另一边学CNN。这样,ViT就可以达到跟CNN一样的Data-efficient了。这一做法,给很多ViT的发展发现指引了道路,比如本文后面会讲到的轻量级王者LeViT模型。


4. ConvNext

ConvNext是纯CNN冲击swin地位的模型,它的出现证明了CNN宝刀未老。当ViT席卷CV领域时,我在知乎上看到网友对self-attention的质疑。质疑者认为:ViT中用到了很多新trick,比如划片(patchify),LN代替BN,GeLU代替ReLU等等,并不只是self-attention。如果有一个CNN模型,用上当下最popular的trick,是否可以达到甚至超过vision transformer的SOTA?FAIR的研究者们用ConvNext实验回答了这个问题,答案是肯定的。
在这里插入图片描述
ConvNext主要在ResNet的基础上改进,通过一些先进的trick来改造。ConvNext本身没有提出什么新的trick,这是做了一个综合实验。上面这张图足以展示ConvNext的所有改进,并且展示了做了这个改进以后计算量的提升情况。
我本地的实验证实,ConvNext确实可以达到Swin的水平,但是在推理速度上略输Swin。


5. SPACH

SPACH是Spatial Channel的简写。SPACH本身也没提出新的trick,而是提出了一个框架。把conv、MLP、self-attention都变成这个框架里“即插即用”的组件,弱化了CNN和ViT的界线。

在这里插入图片描述
SPACH分为单阶段和多阶段两种框架,多阶段自带一个下采样,可以迅速下缩特征图尺寸,这样可以加快推理速度。
其中,Mixing Block便是SPACH的基础组件,其中Spatial Mixing模块可以任意替换成三个中的一个:
在这里插入图片描述
SPACH在混合结构下,准确率也达到了SOTA水平,其速度/精度平衡水平大致与ConvNext差不多。
速度/精度平衡水平是指,达到某个特定的ImageNet Top1准确率比如80%时能达到的最快推理速度。


6. LeViT

LeViT是标榜“轻量级”的ViT模型,具有目前(截止到2022.2.22)最高的速度/精度平衡水平。LeViT的实验也打破了轻量级模型唯FLOPs和parameters数参考的衡量标准。因为很多模型即使有着很低的FLOPs和很少的参数数量,但是inference速度却并不很高。看一张图:
在这里插入图片描述
表格显示,EfficientNet B0比LeViT-128有更少的parameter数和FLOPs,但是CPU推理速度仅是后者的1/3。对工程部署而言,inference speed才应该是最重要的参考指标。所以,LeViT在GPU, CPU, arm CPU上做了各种实验,足以证明LeViT在inference speed在ImageNet top1 80%准确率俱乐部里是速度最快的!
LeViT论文里提出了十来个用来加速和提升表征能力的trick,我后面会专门写一篇博客来讲解LeViT,在这里我先留个坑。


7. MobileViT

MobileViT就是ViT界的MobileNet,目前已经被ICLR2022录用,也是出LeViT之外又一个标榜“轻量级”的vision transformer模型。但是受限于没有官方开源代码,我无法测试其与LeViT的速度对比。MobileViT在论文中的数据还是以parameter数量作为主要参考指标。前面说到,parameter数量并不与inference speed成线性关系。
在这里插入图片描述
我们可以看到上图,MobileViT并没有对原版ViT中的transformer模块做出任何改造,而是用Conv代替了patchify,然后通过几个MobileNet v2(也是CNN)模块来实现特征图尺寸下缩。MV2模块如下:

文中主要贡献是构建倒三角型的特征图下缩结构,来保证出入transformer中的token数量不会太多,以此来达到加速目的。这也是LeViT的技巧之一。所以,相比MobileViT而言,LeViT对transformer内部结构的改造则更具有创新性和参考意义。


8. VAN(Visual Attention Network)

VAN是“视觉注意力网络”的缩写,来自清华大学和南开大学团队。VAN结合了self-attention和CNN的优点,也是非常有启发性的文章。先说CNN的缺点:比较关注邻近区域,缺乏全局性。所以CNN的理论效果不会有全局性的网络结构那么好;再说self-attention的缺点:比较不重视local性,导致训练收敛比较慢,然后对数据也不够高效。
对于全局性的解决方案有两个:self-attention大尺度卷积核。前者的缺点上面已经说了,后者的缺点就是计算量非常大。所以本文的核心创新点之一就是分解大核卷积
在这里插入图片描述
这种分解方式也被叫做大核注意力(Large Kernel Attention),即LKA。如上图所示,一个很大kernel size的卷积被分解成一个Depth-wise卷积+一个Depth-wise空洞卷积+一个1 × \times × 1卷积。这样,就可以大大减少FLOPs和参数量。很有效地解决了小核卷积的local性。
咱们看一下比较:
在这里插入图片描述

公式化这个LKA:
在这里插入图片描述


9. PVT

PVT已经出到v2版本了。按照论文给出的数据,PVT是可以outperform swin的。与swin的目标类似,PVT也是奔向通用视觉backbong而设计的模型。不止针对分类问题,还面向dense型的视觉任务如检测和分割等。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木盏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值