Bag of Tricks for Image Classification with Convolutional Neural Networks论文阅读--ResNet-D

Bag of Tricks for Image Classification with Convolutional Neural Networks

论文下载

1.介绍

  • 图像分类任务对于神经网络做出了很多改进,但是其他文章只是在实现细节部分简要提及改进或者只在代码中体现,本文将实现这些改进进行消融实验整合有效改进
  • 经过整合提出一些小的tricks,这些tricks几乎不会引进额外的计算量,但是很有效,可以用于ResNetInception V3MobileNet等架构;ImageNetPlace365等数据集;图像分类目标检测语义分割等任务
  • 在这里插入图片描述

2.训练过程

  • 在这里插入图片描述

baseline 训练过程

  • 随机采样图像并解码为32位浮点原始像素值[0, 255]
  • 在[3/4, 4/3]中随机取样长宽比的矩形区域进行裁剪,随机抽样面积为[8%, 100%];,然后调整裁剪区域的大小为224 × 224的正方形图像
  • 水平翻转,概率为0.5
  • 使用从[0.6, 1.4]中均匀绘制的系数缩放色相、饱和度和亮度
  • 加入PCA噪声,其系数从正态分布中采样 N ( 0 , 0.1 ) \mathcal N(0, 0.1) N(0,0.1)
  • 将RGB通道分别减去123.68、116.779、103.939并除以58.393、57.12、57.375进行归一化

baseline 验证过程

  • 在验证期间,我们调整每个图像的短边缘为256像素,同时保持其宽高比。接下来,我们裁剪出中心的224 × 224区域,并将类似于训练的RGB通道归一化。在验证期间,我们不执行任何随机增强。

baseline 其他说明

  • 采用《Training and investigating residual nets.》中的ResNet实现作为标准
  • 卷积层和全连接层的权值都用Xavier算法初始化。特别地,我们将参数设置为一致从 [ − a , a ] [-a, a] [a,a]中抽取的随机值,其中 a = 6 / ( d i n + d o u t ) a = \sqrt{6/(d_{in} + d_{out})} a=6/(din+dout) d i n d_{in} din d o u t d_{out} dout​​分别是输入和输出的通道数​​
  • 所有biases被初始化为0
  • 对于BN层(batch normalization layers), γ \gamma γ​向量初始化为1, β \beta β向量初始化为0
  • Nesterov加速梯度下降(NAG)用于训练
  • 每个模型在8个Nvidia V100 gpu上训练120个epochs,总批大小为256
  • 学习率初始化为0.1,并在第30、60、90个epochs时除以10。

baseline 实验结果

  • 数据集ISLVRC2012,130万训练图片,1000个类
  • 对于Inception-V3,我们将输入图像的大小调整为299x299
  • 在这里插入图片描述

3.有效训练方法

  • 得益于GPU的迅速发展,很多方法可以用更低的数值精度和更大的batch大小来提高性能和速度

大batch 训练

  • 对于相同数量的epoch,使用大批量训练的模型与使用小批量训练的模型相比,验证精度下降。
  • 文本将使用四种启发式方法来解决这个问题
  • 线性增加学习率
  • 使用学习率warmup:将学习率从0线性增长到设置的初始学习率
  • 初始化残差块的最后一层BN的参数 γ \gamma γ为0,这样训练初期参数大幅减少
  • 取消bias衰减:权值衰减通常应用于所有可学习参数,包括权值和偏差。这相当于对所有参数应用L2正则化,使其值趋近于0。无偏置衰减启发式遵循了这一建议,它只将权值衰减应用于卷积层和全连通层的权值。

低精度训练

  • 之前提到的英伟达V100提供14 TFLOPS在FP32,但超过100 TFLOPS在FP16
  • 尽管有性能上的好处,但降低精度的范围更窄,这使得结果更有可能超出范围,然后干扰训练进程。
  • Micikevicius等人提出将所有参数和激活存储在使用FP16进行梯度计算。同时,所有的参数在FP32中都有一个副本用于参数更新。

实验结果

  • 在这里插入图片描述

  • 消融实验

  • 在这里插入图片描述

4.模型调整

  • 模型调整是对网络结构的微小调整,比如改变特定卷积层的步幅。这样的调整通常不会改变计算复杂度,但可能对模型的准确性有不可忽视的影响。

ResNet 架构

  • 一个ResNet网络由一个输入干、四个后续阶段和一个最终输出层组成,如图1所示。

  • 在这里插入图片描述

  • 输入阀杆将输入宽度和高度减少4倍,并将其通道尺寸增加到64。

  • 下采样模块分为两路,Path A由三个卷积组成,第一个卷积的步幅为2,使输入宽度和高度减半,而最后一个卷积的输出通道比前两个卷积的输出通道大4倍,称为瓶颈结构。路径B使用步幅为2的1*1卷积,将输入形状变换为路径a的输出形状,因此可以将两条路径的输出相加,得到下采样块的输出。

  • 除了使用步幅为1的卷积外,残差块与下采样块相似。

  • 可以通过改变每个阶段的残块数量来获得不同的ResNet模型,例如ResNet-50 和
    ResNet-152,其中的数字表示网络中卷积层的数量。

ResNet 调整

  • 在这里插入图片描述

  • ResNet-B:我们观察到,路径A的卷积忽略了输入特征映射的四分之三,因为它使用的核大小为1 * 1,步幅为2。ResNet-B改变了下采样模块中路径A的前两个卷积的步长大小,如图2a所示,因此不忽略任何信息。由于第二次卷积的核大小为3 * 3,路径a的输出形状保持不变。

  • ResNet-C:我们观察到,卷积的计算代价是核宽或核高的二次函数。一个7 * 7卷积比一个3 * 3卷积贵5.4倍。因此,这个调整将输入杆中的7 * 7卷积替换为3个保守的3 * 3卷积,如图2b所示,第1和第2个卷积的输出通道为32,stride为2,而最后一个卷积使用64输出通道。

  • ResNet-D:受ResNet-B的启发,我们注意到下采样块的路径B中的1 * 1卷积也忽略了3/4的输入特征映射,我们想要修改它,使任何信息都不会被忽略。经验上,我们发现在卷积前加入平均为2 * 2的池化层,步长为2,卷积层步长为1,在实践中效果较好,对计算代价影响较小。这个调整如图2c所示。

实验结果

  • 在这里插入图片描述

5.训练改进

余弦学习速率衰减(Cosine Learning Rate Decay)

  • 假设batch总数为T(忽略warmup阶段),在第t个batch,学习率 η t \eta_t ηt计算方法如下:
    η t = 1 2 ( 1 + cos ⁡ ( t π T ) ) η \eta_t = \frac{1}{2}(1 + \cos(\frac{t\pi}{T}))\eta ηt=21(1+cos(Ttπ))η

  • 其中 η \eta η​是初始化的学习率,我们将这种方法称为“cosine”衰减

  • 在开始的时候,余弦衰减使学习率缓慢下降,然后在中间变得几乎线性下降,最后又变慢。

  • 在这里插入图片描述

标签平滑(Label Smoothing)

  • 在这里插入图片描述

  • 使预测值差距减小防止过拟合

    在这里插入图片描述

知识蒸馏(Knowledge Distillation)

  • 在这里插入图片描述

  • 通过蒸馏损失惩戒教师模型于学生模型的差异

混合训练(Mixup Training)

  • 使用两张图片生成新的图片作为样本,一种数据增强方法
  • 在这里插入图片描述

实验结果

  • ϵ = 0.1 \epsilon = 0.1 ϵ=0.1

  • T = 20 T = 20 T=20

  • 用cosine衰减和标签平滑方法以及混合训练的预训练的ResNet-152-D作为教师模型

  • 混合训练 α = 0.2 \alpha = 0.2 α=0.2

  • 200epochs

  • 在这里插入图片描述

  • 在这里插入图片描述

6.迁移学习

  • 迁移学习是训练图像分类模型的一个主要的下行用例。在本节中,我们将研究到目前为止所讨论的这些改进是否有助于迁移学习。特别地,我们选择了两个重要的计算机视觉任务,目标检测和语义分割,并通过不同的基础模型来评估它们的性能。

目标检测

  • 在这里插入图片描述

语义分割

  • 在这里插入图片描述

7.总结

  • 在这篇文章中,我们研究了十几种训练深度卷积神经网络以提高模型精度的技巧。这些技巧引入了对模型体系结构、数据预处理、损失函数和学习速率计划的微小修改。我们在ResNet-50、Inception-V3和MobileNet上的经验结果表明,这些技巧一致地提高了模型的准确性。更令人兴奋的是,将它们叠加在一起可以显著提高精确度。此外,这些改进的预训练模型在迁移学习方面表现出了很强的优势,提高了目标检测和语义分割。我们相信,这些好处可以扩展到更广泛的领域,在这些领域中,分类基模型受到青睐。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值