[paper reading] Rethinking ImageNet Pre-training

abstact

  • 从随机初始化训练(from scratch)的det和seg模型与使用pretrained finetune的结果相似。
  • 随机初始化训练模型更加robust
  • pretrained finetune加快了收敛速度,但对提升最终的performance没有约束作用(即没有优化作用)。

Introduction

  • 使用ImageNet pre-training,再fine-tuning加速了收敛,尤其是在训练的前期。但是,重头训练依然可以追上前者,大概是在ImageNet pre-training的步数+fine-tuning的步数
  • ImageNet pre-training并不会自动施加更好的约束(也就是说,fine-tuning的时候如果直接用ImageNet pre-training,ImageNet pre-training并不会等价于一个很好的约束)。e.g. 使用10%COCO数据训练 1. from scratch 2. finetune,后者需要挑选模型参数才能防止过拟合,而前者则不需要(这其实一定程度上可以说明,是因为finetune数据量也不小,等价于给ImageNet pre-training加了一个约束。实质上可能并不是ImageNet pre-trainingqi起主要约束作用。)
  • ImageNet pre-training在空间位置精确预测任务并没有好处。原因在于ImageNet毕竟是一个分类任务,对于位置敏感的任务贡献有限。

综上,ImageNet pre-training可能只是由于target task的数据的一种折中方案(目前的套路并不是完全认为这是一个折中方案。目前的套路是训练一个通用的featrue,在此基础上tranfer到target task)。当以后1.数据充足,2算力提升,最好还是收集target的数据,从头训练,尤其是source和target的domain gap较大的时候。

Related Work

  • 由于最早成功的det方法R-CNN和OverFeat,都是使用的ImageNet pre-training的方法,所以目前使用更大规模的数据库。e.g.相较于ImageNet, 6× (ImageNet-5k), 300× (JFT ), and even 3000× (Instagram)。然而,这件事情的收益主要体现在了分类的transfer learning任务上,det任务因此而获得收益仅为+1.5AP(使用3000×的数据)。
  • 本文重点在于研究:ImageNet pre-training 在unspecialized网络中扮演的作用,unspecialized结构相对于specialized architectures,后者在设计网络时候就依赖于ImageNet pre-training 的model。所以本文从头训练的网络在与 ImageNet pre-training 训练的网络对比时,并没有对网络进行量身设计(即使用unspecialized结构)。

Methodology

主要描述怎么做对比实验

  • 如果忽视不考虑BN,那么有一个错误感觉:即det from scratch很难。因为det比cls输入图片大,受显存影响batch会减小,从而产生结果不好的假象。(翻译不好,见下段原文。)

    • Object detectors are typically trained with high resolution inputs, unlike image classifiers. This reduces batch sizes as constrained by memory, and small batch sizes severely degrade the accuracy of BN. This issue can be circumvented if pre-training is used, because fine-tuning can adopt the pre-training batch statistics as fixed parameters; however, freezing BN is invalid when training from scratch.
    • 缓解这个问题。方法1使用GN,GN对batch不敏感;方法2使用SyncBN,SyncBN是BN在多GPU的实现版本。
    • 结论表明,BN和SyncBN均可以使得det从从开始训练。
  • 一般的Imagenet pre-train都会在1million的图片上训练100 epochs,这中间它学到了low-level的feature以及semantic information,在之后的finetune一般会freeze卷积特征,这也就是finetune一般速度都很快的原因,因为它不需要再次学习low-level的特征。相对的,train from scratch,需要学习low-level和finetune的特征,所以较慢。

  • pre-train+finetune VS from-scratch的迭代次数比较,结论是要两者达到相同的结果,当两者见过的像素数接近才可以。因为 pre-train分类是小图,finetune det是大图;而from scratch一直都是大图。从下图可以看到,from-scratch需要3倍的epochs相对于finetune。

Experimental Settings

Results and Analysis

  • 根据Methodology章节的分析,finetune COCO需要2×(i.e.24 epochs),from-scratch需要6×(i.e.72 epochs)。因此实验尝试了from-scratch在2-6×分别降低lr,如下图。(注意每个降低lr的地方都分为两个schedule,一个是降低lr,一个是保持lr。)
    [paper reading] Rethinking ImageNet Pre-training_第1张图片
    看到了page6,看不动了。。

你可能感兴趣的:(paper,reading)