论文解读-Bag of Tricks for Image Classification with Convolutional Neural Networks
文章目录
-
- 1 驱动因素
-
基准策略
-
优化内容
-
- 3.1 训练效率
-
- 3.1.1 批量大小调节
-
低精度训练方法
-
实验验证结果
- 3.2 网络结构
-
- 3.2.1 理论
-
3.2.2 实验结果
-
- 3.1 训练效率
-
3.3 训练过程优化
-
余弦衰减学习率策略
-
标签平滑化处理
-
知识蒸馏技术
-
数据混合训练法
-
实验结果分析表明
-
4 总结
-
5 参考资料
-
涵盖领域广泛的研究方向之一是计算机视觉领域中的识别与检测技术
Bag of Tricks for Image Classification with Convolutional Neural Networks
这篇论文中包含了大量的关键信息。我对其中的技术细节掌握不足,在阅读过程中希望能够深入理解这些内容对于提升相关领域的研究具有重要意义。作为初步学习者的我对这篇论文的理解如下:作者提出了许多创新性的观点和方法论框架,并详细阐述了自己的实验结果与分析过程。这种严谨的研究态度以及详尽的内容分享让我受益匪浅。希望也能对各位cv爱好者有所帮助
1 动机
该分类算法展现出良好的性能,并建议从以下几个方面进行改进措施:(1)数据预处理阶段;(2)网络架构设计;(3)优化目标设定;(4)训练过程调控。具体而言,在理论层面探讨各类策略的有效性时,默认采用基于单因子变量分析的方法论框架中,在公开的数据集中进行了系统性实验研究并得出了相应的结论
2 baseline
作者利用mxnet深度学习框架实现了多种网络架构的性能评估,请查看详细列举的具体对比指标

其中 Baseline代表mxnet团队提供的复现版本 Reference代表模型提供者提供的结果 后续所采用的技巧是对Baseline进行优化 主要贡献体现在这些技巧上
3 改进点
3.1 训练速度
在训练神经网络模型的过程中, 我们的共识是选择较大的batch size参数, 具体而言, 在实际应用中既有优势也有不足之处。
优点 :模型收敛后的精度相对更高;
缺点 :(1)模型收敛速度慢;(2)占用更多的机器显存。
那么如何在获取大batch带来的优势的同时规避这些缺陷呢?很明显,缺陷2可以通过通过配备更高内存容量的设备来解决;对于问题1而言,则找到了解决方案——采用浮点数格式为16位。
作者对大batch模式与低精度训练方法的相关技术进行了深入探讨,并指出这些技术能够同时保证精度不受影响地提升模型的训练速度。
3.1.1 batch size调整
(1)Linear scaling learning rate
提高批次大小(batch size),在单批次数据中(single batch data)噪声带来的影响会减小(reduced),这使得我们可以采用较大的(larger)学习率(learning rate)。例如,在ResNet-50网络中,默认设置下使用的批量大小为256(default batch size is 256),初始学习率为0.1(initial learning rate is 0.1)。因此,在采用更大的批量大小b时(when using a larger batch size b),相应的初始学习率应设为0.1 \times (b / 256)
(2)Learning rate warmup
由于模型的初始参数被随机初始化,在实际应用中发现当初始学习率过大时,可能导致模型难以收敛。具体而言,在实验中我们观察到损失函数值(loss)无法有效下降的现象。该策略的具体操作包括:首先将实验中使用的起始学习率逐步提升至初始预设值,在达到预设值后,则会立即切换至常规的学习率衰减步骤。这一阶段被称为warmup阶段。
这种策略的好处:防止训练过程中出现的instablility 。
(3)Zero \gamma
ResNet网络架构包含了一系列残差块。我们取某一个残差块的输入变量x,则该残差块经处理后的输出结果等于原始输入与经处理后的特征之和(即x + block(x))。其中最后一层通常是标准化层,在此之前会对该层的输入数据进行标准化处理(即标准化处理的是这一层的输入数据)。其输出结果则表示为γ乘以标准化后的特征加上β(即γ * x̂ + β),其中γ和β是可调参数,在开始训练前需要设定初始值。具体来说,默认情况下它们会被设置为空白值或零值)。如果选择对γ进行零操作,则意味着会将其均设置为空白值或零值。
这种方法的优势在于:通过将所有残差块中的最后一个批归一化层的\gamma和\beta参数置零(这等价于残差块的输出与输入保持一致),有助于模型在训练初期更轻松地收敛。
(4)No bias decay
仅限于卷积层和全连接层中的weight参数施加正则化约束,而不作用于bias参数的施加。
这种策略的好处:防止过拟合 。
3.1.2 Low-precision training
一般情况下,在深度学习领域中采用64位和32位浮点数(分别称为FP64和FP32)进行模型训练。其中一些高性能图形处理器(如NVIDIA的V100)特别针对16位浮点运算进行了专门优化,并显著提升了计算效率。另外关于低精度训练领域的相关算法研究及理论探讨,请参阅笔者之前撰写的文章内容。
3.1.3 实验结果
(1)单一策略的对比结果如下图,

(2)大batch和FP16的组合策略 的结果如下图,

研究表明,在采用大batch和FP16混合精度优化策略的情况下进行神经网络模型的训练实践表明:该网络模型在训练速度方面表现更为突出。其中,训练效率可通过Time per Epoch(TPE)量化评估。值得注意的是,在针对轻量级架构如mobilenet等场景下进行实验研究发现:通过这一优化策略处理后,在保持相同计算资源投入的前提下实验数据显示Top-1准确率提高了约3%。因此,在实际应用中建议基于此方法对TensorFlow版本的mobilenet参数集合进行重新优化配置,并将其作为强化后的预训练权重集合应用于各类移动端计算机视觉相关任务以增强模型对数据的表示能力,并进一步提升整体系统性能表现。
3.2 网络结构
3.2.1 理论
论文中选择常用的ResNet网络作为研究内容,并仅需调整某些关键卷积层的stride参数设置。特别提示,在本研究中所涉及的stride参数不仅决定了当前卷积层输出特征图的空间尺度信息,并且直接影响其通道数量。

如图所示, 左侧为标准ResNet-50网络架构, 右侧(a)图对下采样模块进行了优化, 具体体现在Path A中池化操作的位置安排上。(b)图在此基础上优化了输入茎干模块, ©图则在此框架下对下采样模块再次进行了优化
既然作者这样改进,那么设计的初衷是什么呢?
**将下采样操作放置于非 1\times 1卷积层中。**该 1\times 1卷积操作实际上相当于从输入特征图沿channel维度进行加权汇总。因此当stride设为2时会导致沿通道方向丢失约75%的特征信息。相比之下,在使用大小为 3 \times 3 的卷积层并设其stride为2时,则不会丢失任何特征信息。那么原因何在?请参考下图理解。

值得注意的是,在卷积操作中选择合适的参数至关重要。当卷积核大小K设定为3时,在输出层中生成的三个激活单元分别对应于输入层中连续三个激活单元(即第1-3个、第2-4个以及第3-5个)所携带的信息特征。进一步地,在设置步长s=2后,在输出层仅保留了两个激活单元(即第1和第3个),然而这些剩余单元仍然能够覆盖到输入层的全部五个神经元所提供的信息内容。
3.2.2 实验结果
不同网络结构的结果如下表,

显然,ResNet-50-D相对于未修改前的网络结构,Top-1结果提升了近0.1个点。
3.3 训练过程优化
3.3.1 Cosine Learning Rate Decay
从零开始逐步增加到初始学习率的学习过程被称为warmup阶段 ,而在该过程结束后所经历的学习率下降过程则涉及多种具体策略,在深度学习框架如ResNet官方实现中采用了阶梯式衰减(stair decay)策略,在现有研究中进行了余弦衰减(cosine decay)策略的有效性评估,并通过实验曲线展示了不同衰减策略之间的差异(如图所示)。

根据作者在论文中报道的实验结果,在采用cosine decay方案时相比stair decay方案提升了0.75个百分点,在某些比赛中这一提升幅度也是相当显著的。
3.3.2 Label Smoothing
Label Smoothing策略最初被提出用于训练Inception-v2网络结构,并对ground truth的概率分布进行了调整。

其中\epsilon代表一个极小正数作为超参数使用;而变量K则用于表示分类问题中目标类别数量
3.3.3 Knowledge Distillation
基于知识蒸馏的方法最初由Hinton于2015年提出。它包括一个"教师模型"和一个"学生模型"。其中,"教师模型"(Teacher Model)通常采用预训练好的架构,"学生模型"(Student Model)负责学习参数。设标签的真实概率分布为p, "学生模型"'s预测概率分布为\mathbf{z},"老师模型"'s预测概率分布为\mathbf{r},则优化目标是在帮助(Student Model)理解真实标签的概率分布的同时, 使其也能吸收(Teacher Model)的知识,并通过以下公式实现:
\min_{\theta} \mathcal{L}(p, z) + \lambda \mathcal{K}(\mathbf{r}, \mathbf{\theta})

第一种情况涉及真实标签的概率分布情况,在另一方面则涉及到对"教师网络"的知识先验学习。其中T被定义为超参数。
为什么学习的目标是这样子呢?
真实概率分布采用了hardlabel而非软label,在这种情况下虽然分类精度较高但提供的类别间不确定性信息却较为有限;相比之下教师网络引入了softlabel这种更为灵活的信息表达方式,在分类精度上虽有所下降但仍能显著提升模型对类别间关联性的捕捉能力以及整体预测性能;值得注意的是这里的"分类器不确定性"可以通过以下方式进行量化分析:以一张马的图片为例虽然肉眼难以将其与牛区分开但在模型视角下这两者仍属于两个不同的类别群其软label形式可体现出两者之间的细微差别即通过 softlabel形式模型得以学习到图像在不同类别间的模糊边界进而提升分类器的整体鲁棒性
3.3.4 Mixup Training
在数据增强技术中,在实际应用中人们倾向于采用翻转与小角度旋转等操作作为主要手段进行数据增强。混合up(mixup)方法通过随机选择训练集中两个样本(x_i, y_i)和(x_j, y_j)的基础上生成新的样本\hat{x}和\hat{y};具体而言,在混合up方法下会生成新的样本\hat{x}=λx_i+(1−λ)x_j以及\hat{y}=λy_i+(1−λ)y_j其中λ是均匀分布在区间[0,1]上的随机数

设随机变量\lambda取值于区间[0,1]内,并遵循参数α的Beta分布;在训练过程中仅利用生成的新样本数据集(\hat{x}, \hat{y})进行学习。
3.3.5 实验结果
不同训练策略的效果如下表,

其中,w/o代表with/without。根据表格中的数据显示,针对ResNet-50-D网络结构而言,采用Knowledge Distillation策略能够使Top-1精度带来显著提升,即从79.15%提高至79.29%。然而,这一策略在Inception-V3以及MobileNet网络架构上表现出相反的效果。作者认为其原因在于'教师网络'为Resnet-152,并且与之拥有相同的基础block。
这里给笔者一些启发,在尽量减少精度损失的前提下尝试对mobilent_v1_224网络进行剪枝优化时可以选择resnet-152和mobilenet_v1_224这两种"教师网络"搭配人工设定的小规模网络作为"学生模型"根据之前的实验结果发现基于mobilenet_v1_224构建的教学模型在性能上优于resnet-152的教学模型。另外值得注意的是针对mobilenet系列模型进行剪枝优化目前最优的效果来源于Yihui He提出的基于强化学习的知识提取方法但这一方案尚未开源且Tencent的Pocket Flow框架也未能达到其优化效果因此我们可以考虑采用蒸馏机制替代传统的通道剪枝方法以期获得更好的优化效果
4 总结
本文的实验极为充分,在未来的识别与检测任务中,有助于借鉴这些经验知识,并辅助模型优化工作。
(2)值得注意的是,在本论文中所提出的模型已实现开放获取。但需遵循MXNet框架的技术架构,在Mobilenet v2架构下的TensorFlow框架中整合这些创新性策略,并进行二次优化训练。这样可以获得性能更优的特征提取模块,并将其应用于移动端各类计算机视觉任务上。
