美文网首页
Bag of Tricks for Image Classifi

Bag of Tricks for Image Classifi

作者: HAKUNAMATA_cec3 | 来源:发表于2019-08-18 22:56 被阅读0次

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

    • No bias decay: 只对convolution和FC层的W参数进行weight decay,对bias和BN层的 \gamma\beta 参数不进行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转为以下形式,其中 q_i 表示label向量的第 i 维, y 为真实类别。实际上是修改了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 Classifi

          本文链接:https://www.haomeiwen.com/subject/szodsctx.html