【新智元导读】 何恺明、Ross Girshick 等大神深夜扔出 “炸弹”:ImageNet 预训练并非必须。大神们使用随机初始化变得到了媲美 COCO 冠军的结果,无情颠覆“预训练 + 微调” 思维定式——再看此前预训练与此后微调所付出的种种,呜呼哀哉,好不苦矣!
ImageNet 有用吗?
当然有用。
但 ImageNet 预训练却并非必须!
刚刚,何恺明等人在 arxiv 贴出一篇重磅论文,题为《重新思考 “ImageNet 预训练”》,让似乎本已经平静的 ImageNet 湖面,再掀波澜!
Facebook 人工智能研究所何恺明、Ross Cirshick 和 Piotr Dollar 三人在 arxiv 上贴出最新论文:重新思考 ImageNet 预训练
过去几年来,使用 ImageNet 这套大规模数据集进行预训练的视觉模型,对于执行计算机视觉任务而言都是必不可少的存在。虽然并没用多少时间,但人们似乎都默认,计算机视觉任务需要使用 ImageNet 预训练模型。
然而,何恺明等人却站出来说——
不!
ImageNet 预训练模型并非必须,ImageNet 能做的只是加速收敛,对最终物体检测的精度或实例分割的性能并无帮助。
他们使用随机初始化的模型,不借助外部数据,取得了不逊于 COCO 2017 冠军的结果。
大神不愧为大神——此前我们预训练 ImageNet 模型再辛辛苦苦微调,都是为了什么?!
不用 ImageNet 预训练,随机初始化就能媲美 COCO 冠军!
何恺明等人研究表明,在 COCO 数据集上进行随机初始化训练,其效果能做到不次于在 ImageNet 上进行预训练。
而且,即使只用 COCO 中 10%的训练数据进行训练,依然有可能实现上述结果。
他们还发现,可以在相当于 ImageNet 规模 4 倍大的数据集上,使用随机初始化训练,而结果不发生过拟合。
图 1:我们在 COCO train2017 数据集上使用 ResNet-50 FPN[26]和 GroupNorm[48]训练 Mask R-CNN[13],并在 val2017 数据集上评估边界框 AP,通过随机权重或 ImageNet 预训练初始化模型。我们通过改变学习率降低 (准确率提高) 的迭代来探索不同的训练计划。从随机初始化训练出来的模型需要更多的迭代来收敛,但是只收敛到一个与 finetuning 相似的解决方案。
实验表明,ImageNet 的预训练在训练的早期加速了收敛,但并不一定提供正则化或提高最终目标任务的精度。
具体说,何恺明等人通过实验观察到以下情况:
1、ImageNet 预训练方式加快了收敛速度,特别是在训练早期,但随机初始化训练可以在训练一段时间后赶上来。考虑到前者还要进行模型的微调,训练总时间二者大体相当。由于在研究目标任务时经常忽略 ImageNet 预训练的成本,因此采用短期训练进行的 “对照” 比较可能会掩盖随机初始化训练的真实表现。
2、ImageNet 预训练不能自动提供性能更优的正则化。在使用较少的图像(不到 COCO 数据集的 10%)进行训练时,我们发现必须选择新的超参数进行微调(来自预训练)以避免过度拟合。当用这些同样的超参数进行随机初始化训练时,该模型精度可以达到预训练模型的水平,无需任何额外的正则化处理。
3、当目标任务或指标对空间定位预测更敏感时,ImageNet 预训练模型没有表现出任何优势。我们观察到,采用随机初始化训练时,预测性能出现明显改善。我们还发现,采用随机初始化训练的收敛速度也较预训练模型快。直观地说,基于分类任务的类 ImageNet 的预训练方式,与本地化的敏感目标任务之间的任务间存在鸿沟,这可能会限制预训练模型的优势。
有没有 ImageNet 预训练,区别真没那么大
作者在论文中写道,他们的结果挑战了 ImageNet 对依赖任务进行预训练的传统思想,他们的发现将鼓励人们重新思考当前计算机视觉中 “预训练和微调” 的“范式”。
那么,完全从零开始训练,与使用 ImageNet 预训练相比,最大的不同在哪里呢?
答案是 “时间”。
使用 ImageNet 做预训练的模型已经具备了边缘、纹理等低级表征,而完全从零开始训练的模型需要迭代更久,因此需要更多的训练时间。
但是,从所需要的训练样本的像素(而非实例数)来看,随机初始化与使用 ImageNet 预训练,两者其实相差不太多。
图 2:在所有训练迭代中看到的图像、实例和像素的总数,分别表示预训练 + 微调 (绿色条)vs. 随机初始化 (紫色条)。我们考虑到 ImageNet 预训练需要 100 epochs,fine-tuning 采用 2× schedule (∼24 epochs over COCO),随机初始化采用 6× schedule (∼72 epochs over COCO)。我们计算 ImageNet 实例为 1 per image (COCO 是∼7),和 ImageNet 像素为 224×224,COCO 为 800×1333。
下图展示了另一个例子,使用随机初始化(深红和深绿)和 ImageNet 预训练(浅红和浅绿),在多种情况下,两者的结果都是可比的。
区别大吗?
真的没有那么大!
图 5:使用 Mask R-CNN 对不同系统进行随机初始化与预训练的比较,包括:(i)使用 FPN 和 GN 的 baseline,(ii)使用训练时间多尺度增强的 baseline,(iii)使用 Cascade RCNN[3]和训练时间增强的 baseline,以及 (iv) 加上测试时间多尺度增强的 baseline。上图:R50;下图 R101。
此论文实验部分写得非常漂亮,了解详情推荐阅读原文(地址见文末)。
“ImageNet 时代完结”,从零开始训练完全可行
何恺明等人在这篇论文中,探讨了以下几点:
- 无需更改架构,就能对目标任务进行从头开始的训练。
- 从头开始训练需要更多的迭代,以充分收敛。
- 在许多情况下,从头开始的训练并不比 ImageNet 预训练的同个模型差,甚至在只有 10k COCO 图像的情况下也是如此。
- ImageNet 预训练加速了目标任务的收敛。
- ImageNet 预训练不一定有助于减少过拟合,除非数据量真的非常小。
- 如果目标任务对定位比对分类更敏感,那么 ImageNet 预训练的帮助较小。
从目前的文献来看,这些结果是令人惊讶的,并对当前凡是计算机视觉任务就先拿 ImageNet 来预训练的做法不啻一记当头棒喝。
这些结果表明,当没有足够的目标数据或计算资源来对目标任务进行训练时,ImageNet 预训练方式是一种基于 “历史” 的解决方法(并且可能会持续一段时间) 。
现在看,ImageNet 标注方便、应用广泛,似乎是 “免费” 资源,拿来用即可。
但不是的,抛开构建 ImageNet 花费了多少人力物力和时间不说,对于某些任务而言,如果目标数据与 ImageNet 相差太大,用在微调 ImageNet 预训练模型上的时间和精力,还不如直接从头开始训练。
这项工作也并非要我们彻底抛弃预训练模型,而是表明(至少视觉检测任务)除了用 ImageNet 预训练之外,还存在另一种训练方式,从零开始训练也完全可以。
这篇论文贴出来没多久,知乎上便出现了讨论 “如何评价何恺明等 arxiv 新作 Rethinking ImageNet Pre-training?”
截止发稿前,点赞最高的回答来自中科院计算所博士 “王晋东不在家”:
我不是排斥使用 ImageNet pretrained network,我只是觉得,应该找一些领域,让 ImageNet 真正有用。不妨试试用这些预训练好的网络去进行医学图像分类、极端图像 (低分辨率、逆光、精细图像、卫星) 分类,这才是 ImageNet 的正确价值。
不过,欣喜的是,也有一批采用了浅层网络,或者是加入对抗机制的浅层网络,在最近的顶会上有所突破。
不能一直随大流,是时候重新思考了。
另一位计算机视觉从业者 mileistone 也表示:
深度学习领域理论发展慢于应用,像 “train from scratch” 类似的 common practice 很多,这些 common practice 很多没有理论支撑,我们也没法判断有没有道理,我们只知道大家都这么用。因为可质疑的地方太多了,我们很容易失去独立思考的能力。
希望更多的 “rethink” 文章出来,这些文章像鲶鱼一样,持续激发深度学习领域的活力。
何恺明等人认为,他们的论文和实验表明,随机初始化也有可能生成媲美 COCO 冠军的结果,正因如此,计算机视觉从业者才更应该慎待预训练特征。
计算机视觉的通用表征,仍然值得我们去追求。
论文地址: