ConvNext
论文:A ConvNet for the 2020s
地址:https://paperswithcode.com/paper/a-convnet-for-the-2020s
论文阅读
ConvNext指出虽然ViTs在分类任务中表现优异屡次刷新SOTA,但是应用于其他计算机视觉任务比如目标检测和语义分割却存在问题,直到分层Transformers比如Swin Transformer引入了一些卷积玩过的先验知识,才让Transformers能够成为通用的视觉任务主干网络并且在一系列视觉任务中取得不错的精度,然而这种分层方式的有效性却被归功于Transformer的内在优势而非卷积网络固有的归纳偏置。该论文重新对传统卷积网络的设计空间以及其他局限进行测试,逐步将ViTs中的一些Tricks应用到标注的ResNet中,发现了一些能够提升网络性能的关键因素,最终输出的网络命名为ConvNext。
具体地,首先将ResNet50按照ViT的训练方式进行训练,得到一个基准模型,应用如下图所示的一系列调整:
训练技巧
以与DeiT和Swin Transformer相似的训练方式,具体地:Epoch:90->300,使用AdamW优化器,数据增强方式使用MixUp、CutMix、RandAugment、RandomErasing,正则化策略使用随机深度和标签松弛,增强之后的训练策略将ResNet50的精度从76.1%提升至78.8%。
宏观设计(大改动)
- 将ResNet四个阶段的Block数值比由[3,4,6,3]变为[3,3,9,3],精度:78.8%->79.4%;
- 调整网络初始阶段的快速下采样策略,原始ResNet的ConvStem包含一个步长为2的7×7卷积,一个最大池化,实现4x下采样;具体改动:仿照ViT中的patchify操作(大卷积核且区域不相交)将Stem阶段改为步长为4的4×4卷积,精度:79.4%->79.5%。
ResNext风格化
相比原始ResNet,ResNext的精度与FLOPs二者间的均衡更佳,其中ResNext的核心模块即为分组卷积,核心思想即多分组大宽度。具体地,ResNext在Bottleneck模块中使用3×3的分组卷积,然后扩展宽度消除精度损失。
论文使用深度卷积即极限的分组卷积并将宽度从64扩展为96,精度:79.5%->80.5%。
Inverted Bottleneck
ResNext的Bottleneck的设计是大通道维度->小通道维度(3×3卷积)->大通道维度,参考Swin Transformer的设计,ConvNext的Bottleneck设计为小通道维度->大通道维度(3×3卷积)->小维度,单模块参数量提升,但是总体来看输出通道唯独较小,总的参数量会降低,精度:80.5%->80.6%(ResNet-200:81.9%->82.6)。
大卷积核
ViT由于non-local自注意力的实现方式,使得每一层都具有全局感受野,虽然Swin Transformer在自注意力模块中引入了local windows,但是window的尺寸也不会小于7×7,不同于当下卷积网络使用3×3卷积堆叠代替大卷积核以获得更好的激素,ConvNext使用大卷积核7×7,为此Bottleneck中将深度卷积层向上提了一层,这里精度并没有发生变化。
微观设计
- 替换ReLU为GeLU:也就是使用一个更平滑的ReLU,精度保持不变;
- 更少的激活函数:Transformer每个MLP模块只有一个激活函数,而ConvNets中的每一层后面都会跟激活函数。改动后ConvNext只保留了两个1×1卷积之间的激活函数,精度:80.6%->81.3%;
- 更少的正则化层:将ConvNets中的大部分BN层都去掉,只保留1×1卷积层之前的BN,精度:81.5%->81.5%;
- BN替换为LN:精度:81.4%->81.5%;
- 独立的下采样层:ResNet的下采样操作是在每个阶段的开始阶段使用步长为2的3×3卷积和直连步长为2得1×1卷积完成,Swin Transformers中则是在不同阶段之间进行独立得下采样,ConvNext采用相同得策略,使用补偿为2得2×2卷积进行空间下采样,这个改动会导致训练不稳定,所以在下采样操作前、Stem后以及全局池化层之后加入了一些LN层来稳定训练,精度:81.5%->82.0%。
模型架构对比
最终ResNet、Swin和ConvNext的模块结构对比如上图,架构细节对比如下图:
欢迎扫描二维码关注微信公众号 深度学习与数学 ,每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾。