数据和结构越大越精准!谷歌推出BigTransfer,计算机视觉领域最先进的迁移学习

百家 作者:新智元 2020-05-22 14:00:49












  新智元报道  

编辑:元子、白峰

【新智元导读】近日,Google推出计算机视觉领域最先进的迁移学习模型Bigtransfer (BiT) 。BigTransfer (BiT) 是一组经过预先训练的模型,在新数据集上进行简单的迁移学习就能获得优秀的性能。


在这篇文章中,我们将带你了解如何使用BigTransfer(BiT)。

ImageNet预训练的ResNet50s是目前提取图像表示的行业标准。BigTransfer(BiT)论文中分享的模型,即使每个类别只有几个例子,也能获得不错的效果,而且在许多任务中都取得了优于ResNet50s表现。

你可以在TFHub中找到在ImageNet和ImageNet-21k上预训练的BiT模型,你可以像用Keras Layers一样,轻松使用TensorFlow2 SavedModels,从标准的ResNet50到ResNet152x4(152层深,比典型的ResNet50宽4倍)都有,ResNet152x4适合有更大的计算和内存预算、对精度要求较高的用户。

图1:X轴显示的是每类图像的使用数量。上面蓝色的曲线来自BiT-L模型,而下面的曲线是在ImageNet上预训练的ResNet-50(ILSVRC-2012)。

BigTransfer「大迁移模型」大在哪?

在我们深入了解如何使用模型的细节之前,我们先要理解BigTransfer是如何训练这些模型的。

上游训练

精髓就在名字里。我们在大数据集上更有效地训练大架构。

在此之前,很少有论文能够从大数据集上训练得到更好的结果,比如ImageNet-21k(14M图像,比常用的ImageNet大10倍)。

大数据集

随着数据集大小的增加,BigTransfer模型的最佳性能也会随之增加。

大架构

为了充分利用大数据集,我们需要足够大的架构。

例如,在JFT上训练一个ResNet50(有300M的图像),相对于在ImageNet-21k(14.8M的图像)上训练ResNet50,并不一定能提高性能。但当训练更大的模型如ResNet152x4时,使用JFT的性能始终要优于ImageNet-21k

图2:较大的上游数据集(x轴)和模型大小(气泡大小/颜色)对下游任务性能的影响。单独使用更大的数据集或更大的模型可能会伤害性能。两者需要同步提高。

而且,在较大的数据集上进行预训练时,训练时间也是很重要的。在ImageNet上训练90个epochs是标准的,但如果在ImageNet-21k等较大的数据集上进行相同步数的训练(然后在ImageNet上进行微调),其性能会比直接在ImageNet上训练的效果要差。

GroupNorm和权重标准化

最后,我们使用GroupNorm与Weight Standardisation相结合的GroupNorm,而不是BatchNorm。

由于我们的模型很大,所以我们只能在每个加速器(如GPU或TPU芯片)上贴合几个图像。当每个加速器上的图像数量太少时,BatchNorm的表现会很差。

GroupNorm就没有这个问题,当我们将GroupNom和Weight Standardisation结合起来,我们会发现GroupNorm在大的批处理规模下的扩展性很好,甚至超过了BatchNorm。

下游微调

此外,在数据效率和计算成本方面,下游微调是很便宜的,每类只需几个例子我们的模型就能达到良好的性能。

我们还设计了一种超参数配置,称之为 "BiT-HyperRule",它在许多任务上都有相当好的表现,而不需要进行昂贵的超参数扫描。

BiT-HyperRule:我们的超参数启发式配置

你可以通过更昂贵的超参搜索来获得更好的结果,但BiT-HyperRule可以在数据集上获得一个较好的初始化参数。

在BiT-HyperRule中,我们使用SGD,初始学习率为0.003,动量为0.9,批处理量为512。在微调过程中,我们在30%、60%和90%的训练步骤中,将学习率依次衰减10倍。

作为数据预处理,我们对图像进行大小调整,随机裁剪,然后进行随机水平翻转(详见表1)。

我们对所有任务都做随机裁剪和水平翻转,除了那些破坏标签语义的动作。例如,我们不对计数任务进行随机裁剪,也不对要预测物体方向的任务进行随机水平翻转(图3)。

表1: 下行调整大小和随机裁剪细节。如果图像较大,我们会将其调整到一个较大的固定尺寸,以便在更高的分辨率上进行微调,从中受益。

图3:CLEVR计数示例。这里的任务是统计图像中的小圆柱体或红色物体的数量。我们不会应用随机裁剪,因为这可能会裁剪出我们想要统计的对象,但我们应用随机水平翻转,因为这不会改变图像中我们关心的对象数量(因此不会改变标签)

我们根据数据集的大小(表2),确定时间表的长度和是否使用MixUp。

图4:MixUp采取了成对的例子,并对图像和标签进行了线性组合。这些图像来自于数据集 tf_flowers。

表2: 关于下行计划长度和我们何时使用MixUp的细节。

研究人员根据试验结果确定了这些超参数启发式方法,有时间(也有计算资源)的话你可以去尝试一下,看能否达到这么好的效果。

参考链接:

https://blog.tensorflow.org/2020/05/bigtransfer-bit-state-of-art-transfer-learning-computer-vision.html

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接