ConvNeXt

ConvNeXt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-joTcP64v-1650164682676)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2c930934-c41f-4bdb-8df9-dc15e9f3fc23/Untitled.png)]

注:以下笔记参考原论文以及这个博客做了简化。
在这里插入图片描述

Macro Design

  • Changing stage ratio: 在ResNet中,一般conv4_x(stage3)堆叠的block数最大,ResNet50中,各个stage堆叠的block数大约为(3,4,6,3),比例为1:1:2:1。Swin Transformer中stage3的比例更高,故将ResNet的堆叠次数从(3,4,6,3)调整为(3,3,9,3),和Swin-T有相似的FLOPs,调整后,准确率由78.8%上升到79.4%
  • Changing stem to "Patchify”:ResNet中的下采样是采用stride为2的7x7的卷积层以及stride为2的最大池化下采样共同组成。Transformer中一般都是通过一个stride等于kernel_size的卷积层实现下采样,看起来就像是把一个patch通过上述的卷积层下采样为1个像素,下采样倍数等于kernel_size。替换后准确率从79.4%提升到79.5%,并且FLOPs也降低了。

ResNeXt-ify

  • ResNeXt中使用了组卷积使得其在FLOPs和accuracy上做到了比较好的平衡。这里ConvNeXt中直接使用了MobileNet中提出的depthwise-conv替换ResBkock中的3x3卷积。同时作者将通道数从64变成了96,最终准确率达到了80.5%

Inverted Bottleneck

  • 作者认为Transformer block中的MLP模块与MobileNetV2中的Inverted bottlenect结构类似,都是两头细中间粗的结构。ConvNeXt最终将结构从下图a修改为c,b为MobileNetV2使用的Inverted bottleneck。作者采用Inverted bottleneck后在较小的模型上准确率从80.5%提升到了80.6%,在较大模型上准确率从81.9%提升到82.6%,并且FLOPs由小幅度降低

在这里插入图片描述

Large kernel size

由于Transformer中一般都是做全局的self-attention,比如vision transformer,而且Swin Transformer中也有7x7的窗口大小。但是目前主流的神经网络都是采用3x3大小的窗口,因为之前VGG中提到堆叠多个3x3卷积层可以替代更大的卷积层,且3x3卷积层的优化比较高效。

  • Moving up depthwise convolution: 将1x1conv→depthwise conv → 1x1conv变为depthwise conv→1x1conv→1x1conv,准确率下降到79.9%,同时FLOPs也减小了
  • Increasing kernel size修改depth wise的卷积核为7x7,同时作者尝试过其他尺寸的卷积核,包括3,5,7,9,11发现到7时准确率就达到了饱和。并且准确率从79.9%(3x3)增长到80.6%(7x7)

Macro Design

主要关注更细小的差异,比如激活函数以及Normalization等

  • Relu→GRELU:将Relu激活函数换成GELU激活函数,准确率没有明显变化
  • fewer activation:使用更少的激活函数,一般卷积网络中会在卷积层或者全连接层后面都接一个激活函数,但是Transformer中MLP只在第一个全连接层后跟了GELU激活函数。作者在ConvNeXt中也减少了激活函数,depthwise conv→1x1conv + GELU→1x1conv,准确率从80.6%上涨到81.3%
  • Fewer normalization layers:作者在ConvNeXt中只在7x7的depthwise conv后面使用了Normalization,准确率上升了0.1%,到达81.4%
  • Substitute BN with LN:使用layer norm替换batch norm,准确率上升了0.1%,到达81.5%
  • Separate downsampling layers:原ResNet中stage2-stage4中的下采样是通过将主分支的3x3卷积步距设置为2,捷径分支上1x1的卷积层步距设置为2进行的。Swin Transformer中是通过一个单独的patch merging实现的,ConvNeXt中作者单独使用了一个下采样层,通过一个Layer norm加上一个卷积核大小为2,stride为2的卷积层组成最终准确率提升到82.0%
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值