Bag of Tricks for Image Classification with Convolutional Neural Networks

Paper Reading Note

URL: https://arxiv.org/abs/1812.01187

TL;DR

很多基于CNN的图像分类上的进步实际源于一些训练的“tricks”,本文总结了一些有用的涨点tricks,可以认为是分类问题的cookbook。


Dataset/Algorithm/Model/Experiment Detail

Introduction

作者认为,基于CNN的图像分类问题,分类准确率的提升主要来源于两个部分:

(1)网络结构的改善;

(2)训练过程的调优,即我们常说的各种tricks的使用。

对于这些tricks,大多数论文中只简单介绍一下,很少介绍相关细节,本文详细介绍了分类问题中可以使用的多种tricks,并通过实验系统评估了他们对分类性能提升的贡献。

另外,作者还通过实验说明了文章中介绍的trick具有可迁移性,即不只针对某一数据集或某一网络有效。

高效训练中的tricks

  1. Large-batch training

一般而言,用大batch训练会使的训练过程变慢,而且经验表明,在相同epoch下,使用大batch训练得到的模型性能可能不如小batch训练。以下trick可以改善这个现象:

  • Linear scaling learning rate: 增大batchsize的同时线性增大学习率。

  • Learning rate warmup: 训练开始阶段使用较小学习率,待训练稳定后再使用较大初始学习率训练。一种方法是训练初期,学习率从0线性增大到初始学习率。

  • Zero : 对于残差网络,每个residual block最后一层BN的 参数初始化为0,这样每个residual block就是一个Identity map,网络就相当于一个有较少层的网络,所以会在初始训练阶段好学一点。

  • No bias decay: 只对convolution和FC层的W参数进行weight decay,对bias和BN层的 和 参数不进行weight decay。

  1. Low-precisiontraining
  • 使用FP16替换FP32(这个需要硬件支持),可以加速训练。

结果对比如下:

image.png

可以看出,相比于baseline(BatchSize=256 FP32),使用大batch(1024)FP16,并使用所有提到的大batch下训练的技巧,不管是Resnet,Inception还是MobIeNet都可以涨点。

image.png

以上是针对这部分提到的各种trick的ablation study。值得注意的是:在增大batch size时只线性增大学习率并不会涨点,还需要结合其他几种trick才可以涨点。

模型结构微调

相比于原始的Resnet结构,作者介绍了几种对网络结构的改良:

image.png
  • ResNet-B:针对Residual block中进行down sampling时使用1*1,strid=2

的卷积,导致只有1/4的信息被利用的问题,将strid=2放在第2层卷积,实现downsampling。

  • ResNet-C:原始ResNet开始的77卷积换做3个33卷积,减小计算量。

  • ResNet-D: ResNet-B的short cut连接部分也存在忽略3/4信息的问题,替换为average pooling加1*1 conv,

实验结果

image.png

调整后的ResNet-D涨近0.9个点(Top-1 acc)

Traing Refinements

  • Cosine Learning Rate Decay
image.png
image.png
  • Label Smoothing

将原来的one-hot形式的label转为以下形式,其中 表示label向量的第 维, 为真实类别。实际上是修改了loss,这样可以使其他类别也对真实类别有loss贡献。

image.png
  • Knowledge Distillation
image.png

蒸馏,使得student模型的最后输出和teacher模型尽可能相近。

  • Mixup Training
image.png

一种数据augmentation的方法,随机采样两个样本
image.png

,然后将他们线性加权求和,使用得到的新的样本训练。

实验结果:

image.png

其中,在ResNet-50上蒸馏work,而Inception和MobileNet上蒸馏并不work,作者给出的解释是teacher模型是ResNet结构,可能和后两种网络输出分布不同。

trick的transferable验证

作者给出了这些trick在其他数据集上的效果如下,说明了这些trick的普遍适用性:

image.png
image.png

另外,作者还给出了将使用这些trick训练得到的base model作为detection和segmention问题的pre-train网络后的对比结果,说明了trick的任务迁移能力。

Thoughts

很多所谓的涨点其实都源于一些trick,本文提到的一些trick可以在之后的分类模型训练中加以尝试。

你可能感兴趣的:(Bag of Tricks for Image Classification with Convolutional Neural Networks)