Bootstrap

【论文翻译】Bag of Tricks for Image Classification with Convolutional Neural Networks

使用卷积神经网络进行图像分类的一系列技巧

摘要

最近在图像分类研究中取得的大部分进展可以归功于训练过程的改进,例如数据增强和优化方法的变化。然而,在文献中,大多数改进要么作为实现细节被简要提及,要么仅在源代码中可见。在本文中,我们将检查这些改进的集合,并通过消融研究经验性地评估它们对最终模型准确性的影响。我们将证明,通过将这些改进结合在一起,我们能够显着改进各种 CNN 模型。例如,我们将 ResNet-50 在 ImageNet 上的 top-1 验证准确率从 75.3% 提高到 79.29%。我们还将证明图像分类准确性的提高会在其他应用领域(例如对象检测和语义分割)中带来更好的迁移学习性能。

1. 引言

自 2012 年引入 AlexNet [15] 以来,深度卷积神经网络已成为图像分类的主要方法。从那时起,各种新架构被提出,包括 VGG [24]、NiN [16]、Inception [1]、ResNet [9]、DenseNet [13] 和 NASNet [34]。同时,我们看到了模型精度提高的稳定趋势。例如,ImageNet [23] 上的 top-1 验证准确率已从 62.5% (AlexNet) 提高到 82.7% (NASNet-A)。

然而,这些进步不仅仅来自改进的模型架构。训练过程的改进,包括损失函数的变化、数据预处理和优化方法也发挥了重要作用。过去几年已经提出了大量这样的改进,但受到的关注相对较少。在文献中,大多数只是作为实现细节被简要提及,而其他只能在源代码中找到。

在本文中,我们将研究一系列训练过程和模型架构改进,这些改进可以提高模型的准确性,但几乎不会改变计算复杂度。其中许多都是小“技巧”​​,例如修改特定卷积层的步幅大小或调整学习率计划。然而,总的来说,它们会产生很大的不同。我们将在多个网络架构和数据集上评估它们,并报告它们对最终模型准确性的影响。
在这里插入图片描述

我们的经验评估表明,一些技巧可以显着提高准确性,将它们组合在一起可以进一步提高模型的准确性。在应用所有技巧后,我们将 ResNet-50 与表 1 中的其他相关网络进行了比较。请注意,这些技巧将 ResNet50 在 ImageNet 上的 top-1 验证准确率从 75.3% 提高到 79.29%。它还优于其他更新和改进的网络架构,例如 SE-ResNeXt-50。此外,我们表明我们的方法可以推广到其他网络(Inception V3 [1] 和 MobileNet [11])和数据集(Place365 [32])。我们进一步表明,使用我们的技巧训练的模型在对象检测和语义分割等其他应用领域带来了更好的迁移学习性能。

Paper Outline. 我们首先在第 2 节中设置了baseline训练程序,然后在第 3 节中讨论了一些有助于在新硬件上进行有效训练的技巧。在第 4 节中,我们回顾了 ResNet 的三个小的模型架构调整并提出了一个新的。然后在第 5 节中讨论了四个额外的训练过程改进。最后,我们在第 6 节中研究这些更准确的模型是否有助于迁移学习。

我们的模型实现和训练脚本在 GluonCV中公开可用。

2. 训练程序

在这里插入图片描述

用小批量随机梯度下降训练神经网络的模板如算法 1 所示。在每次迭代中,我们随机采样 b 幅图像来计算梯度,然后更新网络参数。在训练数据集K次之后停止。算法 1 中的所有函数和超参数都可以通过多种不同的方式实现。在本节中,我们首先指定算法 1 的baseline 实现。

2.1. baseline 训练程序

我们遵循广泛使用的 ResNet 实现 [8] 作为我们的基线。训练和验证之间的预处理管道是不同的。在训练期间,我们一一执行以下步骤:

  1. 随机采样图像并将其解码为 [0, 255] 中的 32 位浮点原始像素值。
  2. 随机裁剪一个矩形区域,其纵横比在 [3/4, 4/3] 中随机采样,区域在 [8%, 100%] 中随机采样,然后将裁剪后的区域调整为 224×224 的正方形图像。
  3. 以 0.5 的概率水平翻转。
  4. 使用从 [0.6, 1.4] 统一绘制的系数来缩放色调、饱和度和亮度。
  5. 添加具有从正态分布 N ( 0 , 0.1 ) N (0, 0.1) N(0,0.1) 采样的系数的 PCA 噪声。
  6. 通过分别减去 123.68、116.779、103.939 并除以 58.393、57.12、57.375 来归一化 RGB 通道。

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

卷积层和全连接层的权重均使用 Xavier 算法 [6] 进行初始化。特别是,我们将参数设置为从 [ − a , a ] [−a, a] [a,a] 均匀抽取的随机值,其中 a = 6 / ( d i n + d o u t ) a=\sqrt{6 /\left(d_{i n}+d_{o u t}\right)} a=6/(din+dout) 。这里 d i n d_{in} din d o u t d_{o u t} dout分别是输入和输出通道的大小。所有biases都初始化为 0。对于批量归一化层, γ γ γ 向量初始化为 1, β β β 向量初始化为 0。

Nesterov Accelerated Gradient(NAG) descent [20] 用于训练。每个模型在 8 个 Nvidia V100 GPU 上训练 120 个 epoch,总批大小为 256。学习率初始化为 0.1,并在第 30、60 和 90 个 epoch 时除以 10。

2.2.实验结果

我们评估了三个 CNN:ResNet-50 [9]、InceptionV3 [1] 和 MobileNet [11]。对于 Inception-V3,我们将输入图像的大小调整为 299x299。我们使用 ISL VRC2012 [23] 数据集,该数据集有 130 万张用于训练的图像和 1000 个类。验证准确率如表 2 所示。可以看出,我们的 ResNet-50 结果略好于参考结果,而我们的基线 Inception-V3 和 MobileNet 由于不同的训练过程,准确率略低。
在这里插入图片描述

3. 高效训练

硬件,尤其是 GPU,近年来发展迅速。因此,许多与性能相关的权衡的最佳选择已经改变。例如,现在在训练期间使用较低的数值精度和较大的批大小会更有效。在本节中,我们回顾了在不牺牲模型准确性的情况下实现低精度和大批量训练的各种技术。有些技术甚至可以提高准确性和训练速度。

3.1. 大批量训练

Mini-batch SGD 将多个样本分组到一个小批量中,以增加并行度并降低通信成本。但是,使用大批量可能会减慢训练进度。对于凸问题,收敛速度会随着批量大小的增加而降低。神经网络[25]也报道了类似的经验结果。换句话说,对于相同数量的 epoch,与使用较小批量训练的模型相比,使用大批量进行训练会导致模型的验证准确度下降。

线性缩放学习率。在 mini-batch SGD 中,梯度下降是一个随机过程,因为样本是在每批中随机选择的。增加批量大小不会改变随机梯度的期望值,但会降低其方差。换句话说,大的batch size会减少梯度中的噪声,因此我们可能会增加学习率以沿着梯度相反的方向取得更大的进步。Goyal等人 [7] 报告说,随着批次大小线性增加学习率对于 ResNet-50 训练有效。特别是,如果我们遵循 He 等人 [9]选择0.1作为batch size 256的初始学习率,然后当更改为更大的batch size b时,我们将初始学习率增加到 0.1 × b / 256 0.1×b/256 0.1×b/256

学习率warmup。在训练开始时,所有参数通常都是随机值,因此远离最终解。使用过大的学习率可能导致数值不稳定。在warmup启发式算法中,我们一开始使用较小的学习率,然后在训练过程稳定时切换回初始学习率[9]。Goyal等[7]提出了一种渐进的预热策略,将学习率从0线性增加到初始学习率。换句话说,假设我们将使用前m批(例如5个数据epoch)进行预热,初始学习速率为 η η η,那么在第 i i i批, 1 ≤ i ≤ m 1≤i≤m 1im,我们将设置学习速率为 i η / m iη/m iη/m

Zero γ。ResNet网络由多个残差块组成,每个残差块由多个卷积层组成。给定输入 x x x,假设 b l o c k ( x ) block(x) block(x)是块中最后一层的输出,然后剩余的块输出 x + b l o c k ( x ) x +block(x) x+block(x)。请注意,块的最后一层可以是批处理规范化(BN)层。BN层首先对输入进行标准化 x ^ \hat{x} x^,然后执行尺度转换 γ x ^ + β γ\hat{x}+ β γx^+β γ γ γ β β β都是可学习的参数,它们的元素分别初始化为1和0。在zero γ γ γ初始化启发式中,我们对位于残差块末端的所有BN层初始化 γ = 0 γ = 0 γ=0。因此,所有的剩余块都只是返回它们的输入,模仿了层数较少,在初始阶段更容易训练的网络。

无bias衰减。权重衰减通常应用于所有可学习参数,包括权重和偏差。这相当于对所有参数应用 L 2 L2 L2正则化,使其值趋近于0。然而,正如Jia等[14]所指出的,建议只对权值进行正则化,以避免过拟合。无偏差衰减启发式算法遵循这一建议,它只将权值衰减应用于卷积层和全连通层中的权值。其他参数,包括bias和 γ γ γ β β β在BN层,保留非正则化。

请注意,LARS [4] 提供逐层自适应学习率,并且据报道对于非常大的批量大小(超过 16K)有效。虽然在本文中,我们将自己限制在足以用于单机训练的方法上,但在这种情况下,不超过 2K 的批大小通常会带来良好的系统效率。

3.2.低精度训练

神经网络通常以 32 位浮点 (FP32) 精度进行训练。也就是说,所有数字都以 FP32 格式存储,算术运算的输入和输出也是 FP32 数字。然而,新硬件可能具有用于较低精度数据类型的增强算术逻辑单元。例如,前面提到的 Nvidia V100 在 FP32 中提供 14 TFLOPS,但在 FP16 中提供超过 100 TFLOPS。如表 3 所示,在 V100 上从 FP32 切换到 FP16 后,整体训练速度提高了 2 到 3 倍。

尽管有性能优势,但降低的精度具有更窄的范围,这使得结果更有可能超出范围,然后干扰训练进度。 Micikevicius 等人[19] 建议将所有参数和activations存储在 FP16 中,并使用 FP16 来计算梯度。同时,所有参数在FP32中都有一个副本,用于参数更新。此外,将一个标量乘以损失以更好地将梯度的范围对齐到 FP16 中也是一种实用的解决方案。

3.3.实验结果

在这里插入图片描述

ResNet-50 的评估结果如表 3 所示。与批大小为 256 和 FP32 的基线相比,使用更大的 1024 批大小和 FP16 将 ResNet-50 的训练时间从每 epoch 13.3 分钟减少到 4.4 分钟每个时代。此外,通过堆叠大批量训练的所有启发式方法,使用 1024 批量大小和 FP16 训练的模型与基线模型相比甚至略微提高了 0.5% 的 top-1 准确率。

所有启发式的消融研究如表 4 所示。仅通过线性缩放学习率将批量大小从 256 增加到 1024 会导致 top-1 准确度下降 0.9%,而堆叠其余三个启发式则弥补了差距。在训练结束时从 FP32 切换到 FP16 不会影响准确性。
在这里插入图片描述

4. 模型调整

模型调整是对网络架构的微小调整,例如更改特定卷积层的stride。这种调整通常几乎不会改变计算复杂度,但可能会对模型精度产生不可忽视的影响。在本节中,我们将使用 ResNet 作为示例来研究模型调整的效果。

4.1 ResNet 架构

我们将简要介绍 ResNet 架构,尤其是与模型调整相关的模块。有关详细信息,请参阅 He 等人 [9]。 ResNet 网络由一个 input stem、四个subsequent stages和一个final output 层组成,如图 1 所示。 input stem有一个 7×7 的卷积,输出通道为 64,stride为 2,然后是一个 3 × 3 最大池化层,stride也为 2。input stem将输入宽度和高度减少了 4 倍,并将其通道大小增加到 64。
在这里插入图片描述

从stage 2 开始,每个stage都以一个下采样块开始,然后是几个残差块。在下采样块中,有路径 A 和路径 B。路径 A 有三个卷积,其内核大小分别为 1×1、3×3 和 1×1。第一个卷积的stride为 2,将输入宽度和高度减半,最后一个卷积的输出通道比前两个大 4 倍,称为瓶颈结构。路径 B 使用stride为 2 的 1×1 卷积将输入形状转换为路径 A 的输出形状,因此我们可以将两条路径的输出相加得到下采样块的输出。残差块类似于下采样块,只是只使用stride为 1 的卷积。

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

4.2. ResNet 调整

接下来,我们重新审视两个流行的 ResNet 调整,我们分别称它们为 ResNet-B 和 ResNet-C。之后我们提出了一个新的模型调整 ResNet-D。
在这里插入图片描述

ResNet-B。这种调整首先出现在 ResNet [8] 的 Torch 实现中,然后被多个作品采用 [7, 12, 27]。它改变了 ResNet 的下采样块。观察结果是路径 A 中的卷积忽略了输入特征图的四分之三,因为它使用大小为 1×1 且步长为 2 的内核。ResNet-B 切换路径 A 中前两个卷积的stride大小,如图 2a 所示,因此不会忽略任何信息。因为第二个卷积的核大小为 3 × 3,所以路径 A 的输出形状保持不变。

ResNet-C。这种调整最初是在 Inception-v2 [26] 中提出的,它可以在其他模型的实现中找到,例如 SENet [12]、PSPNet [31]、DeepLabV3 [1] 和 ShuffleNetV2 [21]。观察结果是卷积的计算成本与内核宽度或高度成二次方。一个 7 × 7 的卷积比一个 3 × 3 的卷积要贵 5.4 倍。所以这个调整用三个保守的 3×3 卷积替换了输入干中的 7×7 卷积,如图 2b 所示,第一个和第二个卷积的输出通道为 32,步长为 2,而最后一个卷积使用 64 输出通道。

ResNet-D。受 ResNet-B 的启发,我们注意到下采样块的路径 B 中的 1×1 卷积也忽略了 3/4 的输入特征图,我们想对其进行修改,以便不会忽略任何信息。根据经验,我们发现在卷积之前添加一个步长为 2 的 2×2 平均池化层,将步长更改为 1,在实践中效果很好,并且对计算成本的影响很小。这种调整如图 2c 所示。

4.3.实验结果

我们使用第 3 节中描述的三个调整和设置来评估 ResNet-50,即批量大小为 1024,精度为 FP16。结果如表5所示。

在这里插入图片描述
结果表明,与 ResNet50 相比,ResNet-B 在下采样块的路径 A 中接收到更多信息,并提高了约 0.5% 的验证准确度。用三个 3 × 3 的卷积替换 7 × 7 卷积可以再提高 0.2%。在下采样块的路径 B 中获取更多信息可将验证准确度再提高 0.3%。总的来说,ResNet-50-D 将 ResNet-50 提高了 1%。

另一方面,这四个模型具有相同的模型尺寸。 ResNet-D 的计算成本最大,但在浮点运算方面与 ResNet-50 相比差异在 15% 以内。在实践中,我们观察到 ResNet-50-D 的训练吞吐量仅比 ResNet-50 慢 3%。

5. 训练改进

在本节中,我们将描述旨在进一步提高模型准确性的四种训练改进。

5.1 余弦学习率衰减

学习率调整对训练至关重要。在第 3.1 节中描述的学习率预热之后,我们通常会稳步降低初始学习率的值。广泛使用的策略是指数衰减学习率。He等人 [9] 每 30 个 epoch 以 0.1 的速率降低速率,我们称之为“阶跃衰减(step decay)”。Szegedy等人[26] 每两个epochs将速率降低 0.94。

与此相反,Loshchilov 等人[18]提出了余弦退火策略。一个简化的版本是通过遵循余弦函数将学习率从初始值降低到 0。假设批次总数为 T T T(忽略预热阶段),则在批次 t t t,学习率 η t ηt ηt 计算为:

η t = 1 2 ( 1 + cos ⁡ ( t π T ) ) η ( 1 ) \eta_{t}=\frac{1}{2}\left(1+\cos \left(\frac{t \pi}{T}\right)\right) \eta (1) ηt=21(1+cos(Ttπ))η1

其中 η η η 是初始学习率。我们将这种调度称为“余弦(cosine)”衰减。

阶跃衰减和余弦衰减之间的比较如图 3a 所示。可以看出,余弦衰减在开始时学习率缓慢下降,然后在中间变为几乎线性下降,最后再次减慢。与步进衰减相比,余弦衰减从一开始就开始衰减学习,但一直很大,直到步进衰减将学习率降低 10 倍,这可能会提高训练进度。

在这里插入图片描述

5.2.标签平滑

图像分类网络的最后一层通常是一个全连接层,其隐藏大小等于标签的数量,用 K 表示,以输出预测的置信度分数。给定一张图像,用 z i z_i zi表示第 i i i 类的预测分数。这些分数可以通过 s o f t m a x softmax softmax 算子进行归一化以获得预测概率。用 q q q 表示 s o f t m a x softmax softmax 算子的输出 q = s o f t m a x ( z ) q = softmax(z) q=softmax(z),类 i i i 的概率 q i q_i qi 可以通过以下方式计算:
q i = exp ⁡ ( z i ) ∑ j = 1 K exp ⁡ ( z j ) ( 2 ) q_{i}=\frac{\exp \left(z_{i}\right)}{\sum_{j=1}^{K} \exp \left(z_{j}\right)} (2) qi=j=1Kexp(zj)exp(zi)2
很容易看出 q i > 0 q_i > 0 qi>0 ∑ j = 1 K q i = 1 {\sum_{j=1}^{K}q_i=1} j=1Kqi=1,所以 q q q 是一个有效的概率分布。

另一方面,假设该图像的真实标签是 y,我们可以构造一个真值概率分布,如果 i = y i = y i=y,则为 p i = 1 p_i = 1 pi=1,否则为 0。在训练期间,我们最小化负交叉熵损失
ℓ ( p , q ) = − ∑ i = 1 K q i log ⁡ p i ( 3 ) \ell(p, q)=-\sum_{i=1}^{K} q_{i} \log p_{i} (3) (p,q)=i=1Kqilogpi3

来更新模型参数,使这两个概率分布彼此相似。特别是,通过 p 的构造方式,我们知道 ℓ ( p , q ) = − l o g p y = − z y + l o g ( ∑ i = 1 K e x p ( z i ) ) {\ell(p, q)= − log p_y = −z_y + log (\sum_{i=1}^{K} exp(zi) ) } (p,q)=logpy=zy+log(i=1Kexp(zi))。最优解决方案是 z y ∗ = i n f z^*_y = inf zy=inf,同时保持其他节点足够小。换句话说,它鼓励了输出分数的显著差异,这可能会导致过拟合。

为了训练Inception-v2[26],首先提出了标签平滑的思想。它将真实概率的构造变成
q i = { 1 − ε  if  i = y ε / ( K − 1 )  otherwise  ( 4 ) q_{i}= \begin{cases}1-\varepsilon & \text { if } i=y \\ \varepsilon /(K-1) & \text { otherwise }\end{cases} (4) qi={1εε/(K1) if i=y otherwise 4
其中 ε ε ε是一个小常数。现在最优解变成
z i ∗ = { log ⁡ ( ( K − 1 ) ( 1 − ε ) / ε ) + α  if  i = y α  otherwise  ( 5 ) z_{i}^{*}= \begin{cases}\log ((K-1)(1-\varepsilon) / \varepsilon)+\alpha & \text { if } i=y \\ \alpha & \text { otherwise }\end{cases} (5) zi={log((K1)(1ε)/ε)+αα if i=y otherwise (5)

α α α可以是任意实数。这鼓励了全连接层的有限输出,并且可以更好地泛化。

ε = 0 ε = 0 ε=0 时,间隙 l o g ( ( K − 1 ) ( 1 − ε ) / ε ) log((K - 1)(1 - ε)/ε) log((K1)(1ε)/ε) 将为 ∞ ∞ ,并且随着 ε ε ε 的增加,间隙减小。特别是当 ε = ( K − 1 ) / K ε = (K − 1)/K ε=(K1)/K 时,所有最优 z i ∗ z^∗_i zi 将是相同的。图 4a 显示了当我们移动 ε ε ε 时间隙如何变化,给定 ImageNet 数据集的 K = 1000 K = 1000 K=1000
在这里插入图片描述
我们经验性地比较了两个分别使用和不使用标签平滑训练的 ResNet-50-D 模型的输出值,并计算最大预测值与其余模型的平均值之间的差距。在 ε = 0.1 ε = 0.1 ε=0.1 K = 1000 K = 1000 K=1000 下,理论差距在 9.1 左右。图 4b 展示了在 ImageNet 验证集上预测的两个模型的差距分布。很明显,通过标签平滑分布中心的理论值并且具有较少的极值。

5.3.知识蒸馏

在知识蒸馏[10]中,我们使用教师模型来帮助训练当前模型,称为学生模型。教师模型通常是具有更高准确率的预训练模型,因此通过模仿,学生模型能够在保持模型复杂度不变的情况下提高自身的准确率。一个例子是使用 ResNet-152 作为教师模型来帮助训练 ResNet-50。

在训练期间,我们添加了一个蒸馏损失来惩罚教师模型和学习者模型的 softmax 输出之间的差异。给定一个输入,假设 p 是真实概率分布,z 和 r 分别是学生模型和教师模型的最后一个全连接层的输出。请记住,之前我们使用负交叉熵损失 ℓ ( p , s o f t m a x ( z ) ) \ell(p, softmax(z)) (p,softmax(z)) 来测量 p 和 z 之间的差异,这里我们再次使用相同的损失进行蒸馏。因此,损失变为
ℓ ( p , softmax ⁡ ( z ) ) + T 2 ℓ ( softmax ⁡ ( r / T ) , softmax ⁡ ( z / T ) ) ( 6 ) \ell(p, \operatorname{softmax}(z))+T^{2} \ell(\operatorname{softmax}(r / T), \operatorname{softmax}(z / T)) (6) (p,softmax(z))+T2(softmax(r/T),softmax(z/T))6
其中 T 是温度超参数,使 softmax 输出更平滑,从而从教师的预测中提取标签分布的知识。

5.4.混合训练

在第 2.1 节中,我们描述了如何在训练之前增强图像。在这里,我们考虑另一种增强方法,称为 mixup [29]。在 mixup 中,每次我们随机抽取两个样本 ( x i , y i ) (x_i, y_i) (xi,yi) ( x j , y j ) (x_j, y_j) (xj,yj)。然后我们通过这两个例子的加权线性插值形成一个新的例子:
x ^ = λ x i + ( 1 − λ ) x j , ( 7 ) y ^ = λ y i + ( 1 − λ ) y j , ( 8 ) \begin{aligned} \hat{x} &=\lambda x_{i}+(1-\lambda) x_{j}, (7) \\ \hat{y} &=\lambda y_{i}+(1-\lambda) y_{j}, (8) \end{aligned} x^y^=λxi+(1λ)xj,(7)=λyi+(1λ)yj,(8)

其中 λ ∈ [ 0 , 1 ] λ ∈ [0, 1] λ[0,1]是从 B e t a ( α , α ) Beta(α, α) Beta(α,α) 分布中抽取的随机数。在 mixup 训练中,我们只使用新示例 ( x ^ , y ^ ) (\hat{x}, \hat{y}) (x^,y^)

5.5.实验结果

现在我们评估四个训练改进。 We set ε = 0.1 ε = 0.1 ε=0.1,按照 Szegedy 等人的方法进行标签平滑[26]。对于模型蒸馏,我们使用 T = 20 T = 20 T=20,特别是使用余弦衰减和标签平滑的预训练 ResNet-152-D 模型作为教师。在混合训练中,我们在 B e t a Beta Beta 分布中选择 α = 0.2 α = 0.2 α=0.2,并将 e p o c h epoch epoch 的数量从 120 增加到 200,因为混合示例要求更长的训练进度以更好地收敛。当混合训练与蒸馏相结合时,我们也使用混合训练教师模型。

我们证明了改进不仅限于 ResNet 架构或 ImageNet 数据集。首先,我们在经过改进的 ImageNet 数据集上训练 ResNet-50-D、Inception-V3 和 MobileNet。表 6 显示了逐一应用这些训练改进的验证精度。通过堆叠余弦衰减、标签平滑和混合,我们稳步改进了 ResNet、InceptionV3 和 MobileNet 模型。 Distillation 在 ResNet 上效果很好,但是在 Inception-V3 和 MobileNet 上效果不佳。我们的解释是,教师模型不是来自学生的同一个家庭,因此在预测中具有不同的分布,给模型带来负面影响。

在这里插入图片描述
为了支持我们的技巧可以转移到其他数据集,我们在 MIT Places365 数据集上训练了一个 ResNet-50-D 模型,无论有没有细化。结果在表 7 中报告。我们看到改进在验证集和测试集上一致地提高了 top-5 的准确性。
在这里插入图片描述

6. 迁移学习

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

6.1 目标检测

对象检测的目标是定位图像中对象的边界框。我们使用 PASCAL VOC [3] 评估性能。类似于 Ren 等人 [22],我们分别使用 VOC 2007 trainval 和 VOC 2012 trainval 的联合集进行训练,并使用 VOC 2007 测试进行评估。我们在该数据集上训练 Faster-RCNN [22],并使用 Detectron [5] 进行改进,例如线性预热和长训练计划。 Faster-RCNN 中的 VGG-19 基础模型被前面讨论中的各种预训练模型所取代。我们保持其他设置相同,因此增益仅来自基本模型。

表 8 中报告了平均精度 (mAP) 结果。我们可以观察到,具有更高验证精度的基础模型以一致的方式导致更快的 RNN 更高的 mAP。特别是,ImageNet 上准确率为 79.29% 的最佳基础模型导致 VOC 上的最佳 mAP 为 81.33%,比标准模型高 4%。

在这里插入图片描述

6.2.语义分割

语义分割预测输入图像中每个像素的类别。我们使用全卷积网络 (FCN) [17] 来完成这项任务,并在 ADE20K [33] 数据集上训练模型。继 PSPNet [31] 和 Zhang 等人之后[30],我们用前几节中讨论的各种预训练模型替换基础网络,并在第 3 阶段和第 4 阶段应用扩张网络策略 [2, 28]。一个全卷积解码器建立在基础网络之上,以进行最终预测。

表 9 报告了像素精度 (pixAcc) 和联合上的平均交集 (mIoU)。与我们在对象检测方面的结果相反,余弦学习率计划有效地提高了 FCN 性能的准确性,而其他改进提供了次优结果。对该现象的一个潜在解释是语义分割在像素级别进行预测。虽然使用标签平滑、蒸馏和混合训练的模型有利于软化标签,但模糊的像素级信息可能会变得模糊并降低整体像素级的准确性。

在这里插入图片描述

7. 结论

在本文中,我们调查了十几种训练深度卷积神经网络以提高模型准确性的技巧。这些技巧对模型架构、数据预处理、损失函数和学习率计划进行了微小的修改。我们在 ResNet-50、Inception-V3 和 MobileNet 上的实证结果表明,这些技巧始终如一地提高了模型的准确性。更令人兴奋的是,将它们全部堆叠在一起可以显着提高准确性。此外,这些改进后的预训练模型在迁移学习方面表现出强大的优势,从而提高了目标检测和语义分割。我们相信这些好处可以扩展到更广泛的分类库模型受到青睐的领域。

;