Bag of Tricks for Image Classifi

2019-08-18  本文已影响0人  HAKUNAMATA_cec3

Paper Reading Note

URL: https://arxiv.org/abs/1812.01187

TL;DR

很多基于CNN的图像分类上的进步实际源于一些训练的“tricks”,本文总结了一些有用的涨点tricks,可以认为是分类问题的cookbook。


Dataset/Algorithm/Model/Experiment Detail

Introduction

作者认为,基于CNN的图像分类问题,分类准确率的提升主要来源于两个部分:

(1)网络结构的改善;

(2)训练过程的调优,即我们常说的各种tricks的使用。

对于这些tricks,大多数论文中只简单介绍一下,很少介绍相关细节,本文详细介绍了分类问题中可以使用的多种tricks,并通过实验系统评估了他们对分类性能提升的贡献。

另外,作者还通过实验说明了文章中介绍的trick具有可迁移性,即不只针对某一数据集或某一网络有效。

高效训练中的tricks

  1. Large-batch training

一般而言,用大batch训练会使的训练过程变慢,而且经验表明,在相同epoch下,使用大batch训练得到的模型性能可能不如小batch训练。以下trick可以改善这个现象:

  1. Low-precisiontraining

结果对比如下:

image.png

可以看出,相比于baseline(BatchSize=256 FP32),使用大batch(1024)FP16,并使用所有提到的大batch下训练的技巧,不管是Resnet,Inception还是MobIeNet都可以涨点。

image.png

以上是针对这部分提到的各种trick的ablation study。值得注意的是:在增大batch size时只线性增大学习率并不会涨点,还需要结合其他几种trick才可以涨点。

模型结构微调

相比于原始的Resnet结构,作者介绍了几种对网络结构的改良:

image.png

的卷积,导致只有1/4的信息被利用的问题,将strid=2放在第2层卷积,实现downsampling。

实验结果

image.png

调整后的ResNet-D涨近0.9个点(Top-1 acc)

Traing Refinements

image.png image.png

将原来的one-hot形式的label转为以下形式,其中 q_i 表示label向量的第 i 维, y 为真实类别。实际上是修改了loss,这样可以使其他类别也对真实类别有loss贡献。

image.png image.png

蒸馏,使得student模型的最后输出和teacher模型尽可能相近。

image.png 一种数据augmentation的方法,随机采样两个样本 image.png

,然后将他们线性加权求和,使用得到的新的样本训练。

实验结果:

image.png

其中,在ResNet-50上蒸馏work,而Inception和MobileNet上蒸馏并不work,作者给出的解释是teacher模型是ResNet结构,可能和后两种网络输出分布不同。

trick的transferable验证

作者给出了这些trick在其他数据集上的效果如下,说明了这些trick的普遍适用性:

image.png image.png

另外,作者还给出了将使用这些trick训练得到的base model作为detection和segmention问题的pre-train网络后的对比结果,说明了trick的任务迁移能力。

Thoughts

很多所谓的涨点其实都源于一些trick,本文提到的一些trick可以在之后的分类模型训练中加以尝试。

上一篇下一篇

猜你喜欢

热点阅读