0%

【2018】Bag of Tricks for Image Classification with Convolutional Neural Networks

Motivation

我们都知道trick在CNNs中的重要性,但是很少有文章详细讲解他们使用的trick,更少有文章对比各个trick对最后效果影响,这篇文章把CNNs里几种重要的trick做了详细对比,可以认为是一篇在CNNs中使用trick的cookbook。

这篇文章的trick有五个方面:model architecture, data augmentation, loss function, learning rate schedule,optimization。总结一句话就是,网络input stem和downsample模块、mixup、label smoothing、cosine learning rate decay、lr warmup、zero γ对网络影响都不小。

Methods

训练网络的Backbone:

训练速度

在训练模型时,共识是batchsize尽可能大一些,有以下优缺点:

  • 优点:模型收敛后的精度相对更高
  • 缺点:(1)模型收敛速度慢(2)占用更多机器显存

Large-batch training

Linear scaling learning rate

增大batch size,单个batch数据中噪声的影响会更小,可以使用大的学习率步长。

Learning rate warmup

训练开始阶段使用较小学习率,训练稳定时换回初始学习率

Zero \(\gamma\)

Resnet网络结构中采用多个残差块结构,其结果为\(x+block(x)\),最后一层通常为batch Norm层,输出为\(\gamma\hat{x}+\beta\),这里将\(\gamma\)\(\beta\)均置为0,可以使模型在初始阶段更容易训练。

No bias decay

只对卷积层和全连接层中的weight参数做正则化,不对bias参数做正则化,防止过拟合。

Low-precision training

采用FP16进行训练,加快训练速度。

Experiments

此外还可以尝试修改ResNet的结构、学习率衰减策略、标签平滑、知识蒸馏、Mixup