

CVPR-2019
文章目录
1 Background and Motivation
随着深度学习技术的发展,image classification 的精度也越来越高!
精度的提升不仅仅来自于 model architecture,也来自如下的 training procedure refinements
- loss functions
- data pre-processing
- optimization methods
- learn rate schedule
- stride size of a particular convolution layer
然而 training procedure refinements 往往没有 model architecture 那样吸睛,都被冷落在论文中的 implementation details 部分 or only visible in source code
本文,作者翻牌 training procedure refinements

对各种 training procedure refinements 进行了详细的分析实验,通过组合拳,把 ResNet 在 ImageNet 上的 Top-1 ACC 从 75.3% 提到了 79.29%,这些技巧用在 object detection 和 semantic segmentation 任务中也能提升精度!
2 Advantages / Contributions
总结归纳各种 tricks,组合起来调 resnet,精度从 75.3 提到了 79.29(Top of ImageNet)

3 Baseline
提供了一种标准训练测试流程
训练
- 32-bit,0~255
- randomly crop,aspect ratio [3/4,4/3],scale [8%, 100%],最后 resize 到 224×224
- 50% 水平翻转
- hue,saturation,brightness 增强 [0.6,1.4](参考本博客附录部分)
- PCA noise(参考本博客附录部分)
- 减均值除以方差

测试
- resize 短边到 256,保持 aspect ratio,从中心区域中截选出 224×224
- 减均值除以方差
按照上述标准流程,得到的结果如下表所示

4 Efficient Training
4.1 Large-batch training
大 batch-size 的好处在于,会缩短训练时间
但是
For convex problems,convergence rate decreases as batch size increases
这里理解起来可能不是那么顺畅,再看看这个讨论(Rhett 的回答)

换句话说
for the same number of epochs,training with a large batch size(仅仅增大 batch-size,不做其他的改变) results in a modal with degraded validation accuracy compared to the ones trained with smaller batch sizes
想在不影响收敛速度(精度)的情况下,加快训练速度(增大batch),作者给出了如下的建议
1)Linear scaling learning rate

大的 batch-size 只会 reduce the noise in the gradient,并没有改变 expectation of stochastic gradient(个人感觉期望还是有改变的),因此采用大的 bath-size 后,可以采用大的学习率提升其收敛速度
eg:batch-size 为 256,采用 0.1 0.1 0.1 初始学习率
则:batch-size 为 b b b, 应该用 0.1 × b / 256 0.1 × b / 256 0.1×b/256
2)Learning rate warmup

训练刚开始时,参数都是随机初始化的,离 final solution 十万八千里,这个时候用太大的学习率容易导致 numerical instability
此时,比较好的处理方式时慢热,类似于热身,让网路通过几个 epoch 的学习后达到初始学习率
eg:初始学习率为 η \eta η,用 m m m 次 iteration 到初始学习率,那么第 i i i 次( 1 ≤ i ≤ m 1≤i≤m 1≤i≤m)迭代的学习率应该为 i η / m i \eta /m iη/m
下图最左边部分即为 warmup

3)Zero γ \gamma γ

ResNet 的 bottleneck 部分可以表示为 X + F ( x ) X + F(x) X+F(x),

在每个 bottleneck 中, F ( x ) F(x) F(x) 以是以 batch-normalization 层结束的,batch-normalization 算法如下图所示(详细解析可以参考 【BN】《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》)

常规操作中, γ \gamma γ 和 β \beta β 初始化的值分别为 1 和 0,也即 X + 1 × F ( x ) + 0 X + 1×F(x) + 0 X+1×F(x)+0
Zero γ \gamma γ 策略中, γ \gamma γ 的初始化为 0,也即 X + 0 × F ( x ) + 0 X + 0×F(x) + 0 X+0×F(x)+0, F ( x ) F(x) F(x) 部分直接被砍了,仅返回

本文详细探讨了如何通过组合大批量训练、低精度运算、模型微调等训练策略,将ResNet在ImageNet上的准确率从75.3%提升至79.29%,并展示了这些技术在对象检测和语义分割中的应用。关键策略包括线性学习率调整、零偏移初始化、知识蒸馏和数据增强方法如PCA噪声和HSV变换。
最低0.47元/天 解锁文章
3505

被折叠的 条评论
为什么被折叠?



