雷锋网 AI 科技评论按,2018 年 11 月,何恺明在 arxiv 上提交论文 「Rethinking ImageNet Pre-training」,这篇论文由他与 Ross Girshick,Piotr Dollar 合作,系统地对预训练模型是不是必须的问题进行了研究,在坊间引起诸多讨论。两个多月过去,Computer Vision News 也对这篇文章开始了一轮 review,全面且系统地介绍了这篇 paper 中的研究方法、创新点、实验结果等诸多关键点,雷锋网 AI 科技评论将这篇 review 整理如下,以飨读者。
「Rethinking ImageNet Pre-training」这篇惊艳的论文向我们展示了:使用从随机初始化的状态开始训练的标准模型在 COCO 数据集上也可以在目标检测和实例分割任务中取得十分出色的结果,其结果可以与使用 ImageNet 预训练的模型所得到的结果相媲美。研究人员惊奇地发现,使用随机初始化的模型具有很强的鲁棒性。在以下三种情况下,模型的结果仍然能保持在比较高的水平上:(1)即使仅仅使用 10% 的训练数据,(2)使用更深和更宽的模型,(3)处理多任务并使用多种评价指标。
实验表明,使用 ImageNet 预训练可以在训练早期加速收敛,但不一定能起到正则化的作用或提高模型在最终的目标任务上的准确率。
从 RCNN 惊天出世开始,在早期的将深度学习应用于目标检测的任务中,使用在 ImageNet 数据集上为图像分类预训练的神经网络,然后再在数据集上进行调优,这取得了许多突破。受到这些结果的启发,目前大多数用于目标检测的神经网络和许多其它的计算机视觉算法都遵循「先使用预训练初始化,再进行调优」的训练范式。学界最近发表的一些论文在大小相当于 6-3000 倍 ImageNet 的数据集(JTF 为 6 倍,ImageNet-5k 为 300 倍,Instagram 为 3000 倍)上进行了预训练,从而又进一步推广了这样的训练范式。尽管这种范式在图像分类训练中展现出了相当大的性能提升,但它在目标检测任务中却收效甚微(提升大约能达到 1.5%)。而相对于预训练的数据集,目标检测任务的数据集越大,这种提升就越小。
在本文中,作者说明了:
1. 尽管使用 ImageNet 进行预训练可以加速模型训练收敛速度,在给定充足的训练时间的情况下,从头开始训练的模型也可以得到与前者相当的准确率。请注意,在从头开始训练的过程中,网络必然会学到在预训练过程中通常会学到的低级和中级特征(如边缘、纹理等特征)。
2. 当我们认为预训练的训练范式更加高效时,我们往往并没有考虑到预训练所需要的时间。
3. 本文作者说明了:如果我们谨慎地选取超参数从而克服过拟合,那么,从随机初始化的状态开始在仅仅 10% 的 COCO 数据集上进行训练可以得到与使用预训练参数进行初始化的训练过程旗鼓相当的结果。在使用与预训练的网络相同的超参数设置的情况下,即使在仅仅 10% 的数据集上进行训练,随机初始化的训练也能得到几乎相同的结果。
4. 当目标任务/评价指标对于局部的空间信息更敏感时,在 ImageNet 上进行预训练几乎没有作用。
对于目前最先进的工作来说,本文得到的结果是十分令人惊讶的,它们会对「使用 ImageNet 进行预训练的训练范式究竟有多大影响」提出挑战。使用 ImageNet 预训练的范式在目前以及在未来的一段时间内将仍然继续成为从业人员的首选方案,特别是在以下两种情况下 :(1)当开发者拥有的用于在其目标任务中从头开始训练的数据和计算资源不足时;(2)得益于前人所做的标注工作、以及使用 ImageNet 预训练过的模型较为容易获得,ImageNet 预训练被广泛认为是一种「免费开放」的资源。
接下来,让我们研究一下本文的工作所使用的网络框架、学习率、优化和归一化方法以及超参数设置:
网络架构:
本文研究了使用 ResNet 的 Mask R-CNN、ResNeXt+ 特征金字塔网络(FPN)主干架构。
归一化方法:
那些人们通常在训练标准的预训练网络时所使用的归一化方法往往并不太适用于检测和分割任务的训练,因为这些归一化方法需要载入大量的训练数据(分辨率非常高的图像,并且为每个像素都打上了标签)。这将导致我们在每一批中只能处理数量非常有限的图像(因为显存有限),从而使正则化非常困难。而我们通过调优范式网络可以避免这种困难,它能利用预训练时学到的归一化参数。
在从随机初始化状态开始训练的检测和分割任务中,作者采用了以下两种归一化方法:
1.群组归一化(GN):执行独立于批维度的计算,其准确率对批大小不敏感 。
2.同步批量归一化(SyncBN):是批量归一化的一种实现方式,它通过使用多个 GPU 运算提升了批量归一化(BN)时有效批处理的规模。
注:群组归一化(GN)也是本文作者何恺明于 2018 年发表的一份工作(https://arxiv.org/abs/1803.08494)。
学习率:
学习率的更新策略是,学习率更新策略是在最后 60k 迭代中将学习率降低 10 倍。在最后的 20k 次迭代中再降低 10 倍。作者指出,没有必要在训练结束前更早地降低学习率,也没有必要长时间以较低的学习率进行训练,这只会导致过拟合。
超参数:
所有其它(学习率之外的)超参数都遵循 Detectron 中的超参数。具体而言,初始学习率是 0.02(使用线性的热启动操作,https://arxiv.org/abs/1706.02677)。权重衰减为 0.0001,动量衰减为 0.9。所有的模型都在 8 个 GPU 上使用同步的随机梯度下降进行训练,每个 GPU 的 Mini-batch 的规模为 2 张图像。根据 Detectron 的默认设置,Mask R-CNN 在测试不使用数据增强技术,仅仅训练中使用水平翻转增强。在较短的边上,图像的尺寸是 800 个像素点。
实际上,从下图中可以看出,在给定充足的数据的情况下,任何网络都可以被训练到较好的状态。亮蓝色的横条代表用于 ImageNet 预训练的数据量,深蓝色的横条代表调优所使用的数据量,紫色的横条代表从头开始训练所使用的数据量。最上方的一栏横条代表的是用于训练的训练过的图像数量;中间一栏代表物体的数量(每个图像中可能包含不止一个物体);最下面的紫色横条代表所处理的所有像素点的数量(不同的数据集中的图像规模差别很大),我们可以将其换算为数据的体量。读者可以从最下方的一栏中的紫色横条中看出,整体而言,网络处理的经过了预训练再进行调优的数据量和从头开始训练(随机初始化)处理的数据量是相当的。
如下图所示,在验证集上的边界框平均精度 bbox AP 曲线被并排排列了出来,图中显示了以 ResNet-101(R101)为主干架构,以及使用 ResNet-50(R50)作为主干架构的实验结果。每一组曲线都对比了从随机初始化开始训练的模型与先在 ImageNet 上进行预训练再进行调优的模型的性能。
下图则将对比使用 Mask R-CNN 对不同系统从随机初始化开始训练与先进行预训练再调优的方法的比较,具体包括:(1)使用 FPN 和 GN 的对比基线,(2)使用训练时多尺度增强的对比基线,(3)使用级联 RCNN 和训练时增强的对比基线,(4)加上测试时多尺度增强的对比基线。左图:R50;右图:R101。
作者重复使用不同的方法、不同的配置和不同的架构进行训练,并且将从随机初始化状态开始训练的网络的性能与先预训练再进行调优的网络性能进行比较,说明了无论是从头开始还是使用预训练的网络,整体而言,所需要的数据都是等价的,这不可能仅仅是偶然。实验所使用的方法也是相同的。
作者进行的另一项实验旨在研究训练预训练的网络去找到最优的超参数设置。作者使用了通过训练预训练网络发现的超参数设置去训练他们从头开始训练的随机初始化的网络。实验结果表明,他们仅仅使用了三分之一的数据就获得了同等水平的模型性能。下图显示了训练的准确率(紫色的线表示随机初始化的训练情况,灰色的线表示先进行预训练再进行调优的训练情况)。
训练用于 COCO 人体关键点检测任务的 Mask RCNN 模型:对于人体关键点检测任务,随机初始化的网络可以比先进行预训练再调优的网络快得多地学习,不需要使用额外的训练时间。关键点监测是对于局部空间信息预测非常敏感的任务。这说明,对于局部空间信息预测来说,ImageNet 预训练的作用非常有限,对于这样的任务,从头开始训练模型的效果和使用预训练再调优的效果几乎是一样的。
在目标任务中几乎不对架构进行修改,从头开始训练网络(使用随机初始化)是可行的。
从头开始训练往往需要经过更多的迭代才能收敛,而预训练的网络收敛得更快。
在许多不同的设置和情况下,从头开始训练的网络可以获得与先预训练再调优的网络相媲美的性能,甚至包括仅仅在一万张 COCO 图像上进行训练的情况。
除了训练数据集极其小的情况,在 ImageNet 上进行预训练并不一定能够帮助缓解过拟合现象。
相对于物体的类别信息,如果目标任务与物体位置信息更加相关,那么在 ImageNet 上进行预训练将收效甚微。
via:https://www.rsipvision.com/ComputerVisionNews-2019January/4/
雷锋网 AI 科技评论编译整理。