Rethinking ImageNet Pre-training

原文链接:https://arxiv.org/abs/1811.08883

摘要

在COCO数据集上面做物体检测(object detection)和实例分割(instance segmentation)的时候,我们发现通过使用随机初始化来从头开始训练模型得到的结果,并没有比那些从ImageNet上面预训练,然后再微调的模型得到的结果要差,当然伴随了训练迭代次数增加以及可能不收敛的缺点。令人惊奇的是,这种训练方式是鲁棒的,训练得到的结果在很多场合下都是成立的,例如i)仅仅使用百分之10的训练数据ii)更深更宽的模型iii)多种评判标准下的多任务模型。实验结果表明:使用ImageNet预训仅仅在训练早期可以加速收敛,但是并不能提高最钟任务的准确度。这些发现引导着大家重新思考一下“pretraining and fine-tuning”这种在计算机视觉任务中的范式(de facto paradigm )


背景介绍:

大家发现,使用ImageNet来预训练一个模型,模型学到的特征表达能力能够很好地迁移到我们需要的任务上。因为,这种训练方式也成为了一个固定的范式:就是在大规模数据上(例如ImageNet)预训练好模型,然后再自己特定的任务上微调(Fine-tuning)。这种预训练的方式也已经在很多任务上取得了较好的结果,包括物体检测,图像分割和动作识别。

因此这篇paper主要来重新思考一下,我们是否一定需要使用这种 pretraining and fine-tuning 这一固定的范式。我们的实验结果表明:使用随机初始化来从头开始训练我们的模型,一样可以得到较好的结果。我们发现,如果i)使用初始化技巧来加速拟合2)能够有足够长的时间来帮助训练,我们并没有什么障碍来从头开始训练我们的模型。

接着,本文证明了对于各种AP(Average Precision) 在40-50上面的baseline 网络,参数随机初始化的训练方式可以与在imagenet预训练的方式媲美。更进一步,我们同时发现,在我们仅仅使用10%的数据时,这种结论依旧成立。同时,我们在没有过拟合的情况下,还能够从头开始训练4倍于ResNet参数的网络。基于以上的实验,我们得出下列结论:

1. ImageNet 预训练可以加速网络收敛,在训练早期尤为明显。这是主要因为,随机初始化训练需要一定的时间来学习提起low -level的特征(例如边缘,纹理)

2. ImageNet 预训练并不能自动地给模型一个好的正则项。在pretrain的实验中,当减少数据至10%的时候,我们必须重新选在超参数来防止过拟合。但是这种问题在随机初始化中,就没有出现。

3. ImageNet 预训练对那些 对于空间位置非常敏感的任务并没有太大的用处。主要问题在于ImageNet 预训练是用来做分类任务,而物体检测还需要输出空间位置坐标。


算法原理:

这篇paper的主要目的是看看ImageNet 预训练到底在网络的训练中起到什么样的作用。因此,网络结构的设计不是我们的重点。我们基于一些通用的网络,并做出最小的改动来进行我们的对比实验。以下是一些改动设计和算法考量

1.  标准化(Normalization)

BN(batch Normalization)是一种常见的标准化方式,基于BN的网络设计能够加速网络训练以及拟合。物体检测需要大size的图像作为输入,受限于显卡的显存,就只能降低batch-size,降低batch-size 则会降低模型的准确度。如果使用imagenet 预训练的方式,可以避开这种问题,但是随机初始化训练则需要从头开始使用BN。

本文主要采用以下两种方式来减少小batch-size带来的问题:

(1)GN(Group Normalization)-GN是介于LN(layer normalization)和IN(instance normalization)之间的一种标准化方式

(2)SyncBN:这是一种多机多卡分布式的一种方式。通过多块GPU来增加batch-size

2. 收敛

关于收敛的问题,如果我们希望从零开始随机初始化训练我们的算法所需的时间,要小于那个使用ImageNet预训练初始化所需的时间,这是不现实也是不公平的。如果忽视这个事实,那我们很可能得到的是不正确的结论。

典型的ImageNet 预训练涉及到了百万张图像的上百个epoch的迭代训练。这种大规模的学习过程除了能够学到高阶语义信息之外,还能够学到一些低阶的图像的特征。因此,在fine-tuning的时候就不需要重新学习这些低阶的图像特征描述了。因此,我们在比较两个收敛速度的时候,需要选取那些训练周期较长的model。(trained for longer than typical fine-tuning schedules).


从Images 这一栏对比可以看出,除去ImageNet预训练的固定100epoch,随机初始化训练(72epoch)是fine-tuning(24epoch)的三倍。尽管使用了较多的iteration,但是如果我们从image-level sample的角度来看,其ImageNet预训练固定的100epoch占了大头。但是如果我们从pixel-level的角度来看,因为object detection task 需要大size的输入,而image classification不需要那么大的输入尺寸。实验结果表明,从头开始随机初始化训练的方式能够赶上ImageNet预训练的训练方式。这就暗示了如果想要从头开始随机初始化训练这种方式收敛的话, 就需要大量的数据(就pixel-level的数据而言)

实验设置

我们尽量遵循最小改动这个标准来去设计对照实验。主要使用Detectron里面的Mask-RCNN这一基本baseline框架。

1. 网络结构:以ResNet或者ResNeXt为基础的Mask-RCNN,主要使用GN和SyncBN来取代冻结BN的操作。同时Fine-tuning的模型也采用同样的操作。

2. 学习率:在初始学习率(比较大的)的情况下长时间的训练对于模型的收敛是有帮助的,但是如果初始学习率较小的话,可能就会过拟合。

3. 超参数:所有的超参数设置参照Detectron设置。初始学习率为0.02,权重衰减为0.0001 ,动量参数值为0.9. 所有的模型训练在8GPU上,batch-size为2.  对于数据增强策略,训练的时候只有水平翻转,测试没有增强融合的操作。

结果

1. 准确率(Accuracy)

第一个令人惊奇的发现就是仅仅使用coco数据集,从头训练的模型能够赶得上那个fine-tuning的模型。

2. 使用少量的数据来从头开始训练模型

第二个发现就是 使用少量的数据来随机初始化训练的模型的结果,不比那些imageNet预训练的模型得到的结果要差

最终的讨论:

1. 在特定的目标任务上,从头开始训练一个深度神经网络是可行的

2. 从头开始训练网络需要更久的训练时间来让网络收敛

3. 即使在只有10K的coco数据集上面来从头开始训练,得到的结果也不必fine-tuning的差

4. ImageNet 预训练的方式可以加速网络收敛

5. ImageNet 预训练并不会减少网络的过拟合现象,除非我们真的有一批很小的数据集(PS:例如医学图像)

6. 在一些对于空间位置比较敏感的task中(例如定位这些),ImageNet 预训练对网络训练的帮助不如classification多

基于上述的发现,作者给出了一些关于ImageNet 预训练的常见问题的解答,希望引导大家对于imagenet pretraining有着更多的考量。

1. ImageNet 预训练真的是必要的吗?-----回答是NO!在你有足够的数据和计算资源的情况下

2. ImageNet 预训练真的有帮助吗?------回答是Yes!ImageNet 预训练提供了一个较好的参数初始化方式,轻而易举的获得较好的结果,减少了迭代次数,加速了网络收敛,降低了训练时间。

3. 是否我们需要收集Big Data---回答是Yes!但是如果仅仅是视觉的分类任务,就没有必要了。ImageNet pretraining是一个很好的工具

我们是否应该追求一个真正意义上的通用的特征表达表征能力?---回答是Yes!

In closing, ImageNet and its pre-training role have been incredibly influential in computer vision, and we hope that our new experimental evidence about ImageNet and its role will shed light into potential future directions for the community to move forward.

PS:  对于医学AI 分割而言,数据集真的是太小了、例如血管分割DRIVE 数据集只有几十张图像,cell segmentation 最初也只提供了30张图像,因此医学图像的分割task里面带有ground truth的数据真是太少、太珍贵了。

因为数据量比较少,所以我们现在在用ImageNet 来预训练我们的模型,来提取一些基本的图像特征,但是这些特征是否真的对我们的医学图像有用呢?医学图像有以下几个特点:

图像分辨率高,彩色眼底图4k*5K,而病灶特征很小,例如微动脉血管瘤只占有几十个像素

不同成像方式带来的图像格式不一。除了上述的color fundus, 还有CT,MRI,OCT这些。每一种成像方式带来的图像噪声风格都是不一样的。即使是同一种类型的数据,例如OCT,Topcon的机器和 Heidelberg的机器拍出来的图像也不一样(即使同样属于speckle noise)。

不同医生标注的ground truth之间的误差比较大

带有医生准确标注的数据量很少

因此,医学图像分割是否使用imageNet pretraining 也是我们需要仔细考虑的问题。

你可能感兴趣的:(Rethinking ImageNet Pre-training)