A ConvNet for the 2020 一篇总结性的论文

最近在看论文时发现了一篇总结性的文章,推荐给大家最近一段时间transform 太火了,基本上大家都在用这些东西,传统CNN 用的反而少了起来,因此这篇论文提出了一些提高CNN 的方法,最后超过了大热的transform。这篇文章是ConVNet for the 2020.这是一篇总结性的论文。

大概扫一扫你会发现好像没什么创新点,好像文章说的东西你都懂啊?是的,可以理解这次提出的ConvNeXt其实就是ResNet的魔改,类似于打比赛刷榜那样,一点点trick不断地加,并用非常solid的实验验证了这些trick的有效性。那就一起来看看这些熟悉的trick是如何work的:

训练技巧

  • 多训练一会呗——ResNets从训练90个epoch加到300个epoch
  • 优化器更新换代了,别守着Adam,试试AdamW!
  • 数据增强扩充数据量:Mixup、Cutmix,RandAugment,RandomErasing
  • 正则化防过拟合:Stochastic Depth,Label Smoothing

一顿操作猛如虎,ResNet-50直接从76.1的精度提高到78.8

结构设计

  • 改一改每一阶段的block数量,ResNet-50从(3,5,6,3)改为(3,3,9,3)
  • ResNeXt化

    加深加宽

  • depthwise conv 代替 bottleneck中的 3x3卷积
  • 使用和Swin-T一样的网络宽度,从原来的64改为96

更大的感受野

transformer的感受野往往可以是global的,而cnn通常用比较小的卷积核,改!加大感受野

这里其实是为了和Swin-T对齐,并没有带来提升

细节决定成败

  • 激活函数也在更新换代,试着在卷积网络中也用一下GELU!虽然在这里也没提升
  • 真的有必要那么多激活函数吗?transformer中其实只有在MLP块中有一层激活函数。删减CNN中的激活函数!只要两层 1x1卷积层之间放激活函数
  • normalization也不是越多越好,删!
  • 用layer norm替代batch norm
  • 学习Swin Transformer在两个stage之间加一层下采样层,带来的问题是训练不稳定了,解决办法是多加点LN层: one before each downsampling layer, one after the stem, and one after the final global average pooling

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值