• 【论文阅读】Bag of Tricks for Image Classification with Convolutional Neural Networks


    原文:https://arxiv.org/pdf/1812.01187.pdf
    首先介绍一下本文构建的Baseline——
    Training:

    1. 随机采样图像并将其解码为[0,255]中的32位浮点原始像素值。
    2. 随机裁剪长宽比以[3/4,4/3]随机采样的矩形区域,以[8%,100%]随机采样的区域,然后将裁剪后的区域调整为224 x 224的正方形图像。
    3. 以0.5的概率随机水平翻转。
    4. 缩放色相、饱和度和亮度,其系数均由[0.6,1.4]统一得出。
    5. 将PCA噪声与从正态分布N~(0,0.1)采样的系数相加。
    6. 标准化RGB通道:分别减去123.68、116.779、103.939并除以58.393、57.12、57.375。
    7. 权重用Xavier初始化,BN将γ和β分别初始化为1和0。
    8. 使用Nesterov Accelerated梯度下降法训练。
    9. 学习率初始化为0.1,并在第30、60和90个时期除以10。
    10. 每个模型在8个Nvidia V100 GPU上进行了120个时期的训练,总批量为256个。

    Validation:

    1. 我们将每张图片的较短边缘调整为256个像素,同时保持其宽高比。
    2. 裁剪中心的224 x 224区域并标准化类似于训练的RGB通道。
      验证期间不会执行任何随机数据增强。

    Tricks

    Large-batch training

    1. 线性缩放学习率。初始学习率为0.1*bs/256。因为BS增大,mini-batch梯度的噪声减少,随机梯度的期望不变,但是方差降低,因此初试学习率可以变大。
    2. 预热学习率。假设初始学习率为0.1,决定让前4个epoch作为预热,那么,学习率分别设置为0.1*i/5,i表示epoch。
    3. Zero γ。对于BN层来说,γx+β,一般来说γ初始化为1。初始化所有residual block的最后一层BN层的γ= 0,那么所有residual的块只返回它们的输入,模拟的网络层数较少,而且在初始阶段更容易训练。
    4. 没有bias decay。将权值衰减应用于卷积层和全连通层的权值。其他参数,包括bias和BN层的γ、β都不衰变。
      个人观点:不考虑大BS的话,我们能常用到的就是第二个和第三个了。

    Low-precision training

    新的硬件增强了用于较低精度数据类型的算术逻辑单元。使用FP16代替FP32,训练速度会更快。

    Training Refinement

    余弦学习速率衰减

    与阶跃衰减相比,余弦衰减从一开始学习就开始衰减,但一直保持较大,直到阶跃衰减使学习速率降低10x,这可能会提高训练进度。

    标签平滑(label smoothing)

    知识蒸馏

    使用教师模型来帮助训练当前模型(被称为学生模型)。教师模型通常是具有更高准确率的预训练模型,因此通过模仿,学生模型能够在保持模型复杂性相同的同时提高其自身的准确率。一个例子是使用 ResNet-152 作为教师模型来帮助训练 ResNet-50。

    混合训练(mixup)

    也是一种数据增强的方法。

  • 相关阅读:
    作业十三
    作业十二
    第十一次作业
    编译原理第十次作业
    P3388 【模板】割点(割顶) 题解 (Tarjan)
    BuaacodingT141 microhhh的回城 题解(模拟)
    P2055 [ZJOI2009]假期的宿舍 题解(二分图)
    P2764 最小路径覆盖问题 题解(二分图)
    2019.2-2019.3 TO-DO LIST
    P3369 【模板】普通平衡树 题解(Splay/FHQ)
  • 原文地址:https://www.cnblogs.com/lvjincheng/p/13805134.html
Copyright © 2020-2023  润新知