网站首页 > 技术文章 正文
摘要
本文重新审视了现代卷积神经网络中的大核设计,证明了使用一些大核比一堆小核可能更加强大,同时提出了五个设计准则,依据这些准则设计了RepLKNet——一个纯粹的CNN架构,其中卷积核的最大尺寸达到了31×31。
RepKLNet在ImageNet以及各种下游任务上取得了更好的结果,缩短了CNN与ViT之间的差距。基于大核的研究进一步表明,与小核相比,大核的CNN具有更大的有效感受野和更高的形状偏置(shape bias)
CNN与ViT
Transformer性能强的原因
众所周知,Transformer是由self-attention构成的,相较于Convolution,self-attention主要有两点区别:
一是self-attention多是在全局尺度内进行计算,即使是最近的Local Transformer也是在7×7的窗口内计算;
二是self-attention的核心机制——QKV运算。
那么其中的关键是哪一点呢?
目前很多相关工作都表明,更大的窗口大小或许才是Transformer强大的关键。
Demystifying local vision transformer: Sparse connectivity, weight sharing, and dynamic weight证明了即使将Swin中的self-attention换成同样大小的卷积性能不变甚至更好; Mlp-mixer证明将ViT中的attention替换为MLP性能也很好;Metaformer将attention替换为pooling性能还是很好。
CNN的感受野
自VGG以来,不断堆叠小kernel、加深网络层数成为了卷积神经网络设计的主流范式,因为我们相信,三层3×3的卷积核的感受野与一层7×7的感受野相同,并且性能更好,因为其中可以加入更多的非线性,层数越多就代表着拟合能力越强。
上图为各个网络的输入对于输出中心点的贡献度,可以看到,即使ResNet堆叠了100多层,其有效感受野也没有多少变化,而RepLKNet-31的有效感受野几乎覆盖全图。
该观点在论文Understanding the effective receptive field in deep convolutional neural networks. NeurIPS 2016.中有所提及,其认为模型的有效感受野正比于K√L,即有效感受野的增长与堆叠层数成开方关系。
为什么我们不用大Kernel
这是一个很显而易见的问题,大kernel太大了,我们都清楚卷积核的参数量相对于kernel size是呈平方增长的,其速度也会慢很多。
另一个问题就是某些相关工作表明大kernel反而会掉点。
虽然历史淘汰了大Kernel,但是这不表明现在不能复兴它。
虽然标准的dence卷积参数量很大并且速度很慢,但是Depth-with卷积的参数增长并没有那么大,加上适当的底层优化速度或许也可以很快。
现代神经网络的架构设计或许可以使大kernel绽放出新的光彩,比如swin的结构。
如何复兴大Kernel
本文提出了使用使用大kernel的五大准则。
Depth-wise+底层优化
由于dence卷积的参数量与输入输出通道数都有关系,而Depth-wise卷积只与输入通道数有关系,一般来说其参数大小是dence卷积的几百分之一,即使增大kernel size,其参数量也只和dence卷积相当,论文中也给出了参数表格:
以看到即使kernel size提升了很多,参数量和浮点计算量也没有增加很多。
虽然解决了参数和计算量的问题,但是速度的问题怎么解决呢?
dence卷积处于上图中的Compute Bound区域,其计算密度已经不会再增长了,除非计算能力上升。
depthwise卷积处于上图中的Memory Bound区域,其计算密度会随着kernel size的增长而增长,所以更大的kernel速度并不会太慢。
底层优化略过。。。或许下篇文章会介绍下。
效果如下:
相比于Pytorch最高可加速20倍。
使用shortcut
在MobileNet V2上的实验,可以看到没有shorcut掉点十分严重;这里的解释原因与RepVGG中的相同,使用shortcut相当于集成了很多隐式的模型,有很多不同大小组合式感受野;没有shortcut,感受野则单一且巨大,难以捕捉小的特征。
使用小kernl做重参数化
继续发扬重参数化,与RepVGG类似,同时使用一个并行的小kernel,推理时重参数化即可。
不论大kernel有多大,同时添加一个3\times 3的小kernel,使得组合式的感受野更加丰富,更易提取小的特征。
但是在数据量很大(MegData-73M)时,小kernel重参数化效果不大。
看下游任务
7\times 7的大kernel在ImageNet分类任务上已经达到极限,即使size再增大,性能也不会变化,这点可能是因为ImageNet上主要依靠纹理信息。
而对于下游任务,如语义分割、目标检测等,更大的kernel还能获得更好的性能。
小feature map上使用大kernel
即使feature map尺寸小于kernel size也没有关系,底层实现会使用feature来卷kernel,虽然这样会一定程度上失去平移不变性,但是相关工作表明平移不变性不一定就是好的。
RepLKNet
基于上述准则设计了RepLKNet,并且借鉴了Swin的宏观架构,并且继续加大kernel size,从7到13到25,再到最大31,在各类任务上都取得了十分优秀的效果。
Shape bias
人类用来分辨视觉信息多是因为shape bias,很多情况下都是根据形状来进行判断的。
而之前的小kernel模型由于有效感受野有限,其判断结果使用的为纹理信息,也有很经典的相关工作表明将不同类别的纹理进行替换,网络会错误的给出判断。
经过一些实验发现或许大kernel的shape bias会更高,而和attention的关系不大,这些都是后来的研究目标了。
科研哲学(鸡汤)
最后来喝一碗鸡汤,来看看从小kernel到大kernel的辛酸发展历程吧。
作者:Asthestarsfall
链接:https://juejin.cn/post/7082013816048844837
来源:稀土掘金
猜你喜欢
- 2024-10-12 「AAAI oral」阿里北大提出新attention建模框架
- 2024-10-12 CVPR 2020 | 港中文、上交大、商汤联合提出两种轨迹预测新方法
- 2024-10-12 东北石油大学研究者提出电能质量扰动识别的新方法
- 2024-10-12 「独家解读」谷歌会议app背景模糊和替换技术解析
- 2024-10-12 如何在深度学习模型内部做特征选择?
- 2024-10-12 深度时空网络、记忆网络与特征表达学习在 CTR 预估中的应用
- 2024-10-12 揭秘 BERT 火爆背后的功臣——Attention
- 2024-10-12 MViT:性能杠杠的多尺度ViT | ICCV 2021
- 2024-10-12 CTR预估系列(5)–阿里Deep Interest Network理论
- 2024-10-12 「论文阅读」 Residual Attention: Multi-Label Recognition
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)