源/专知
使用基于ImageNet预训练(Pre-training)的网络已成为计算机视觉任务中一种常规的操作。何恺明等人在新作Rethinking ImageNet Pre-training中使用详细的对比实验和分析提出了对基于ImageNet预训练的新的思考。研究发现,对于在COCO数据集上的目标检测和实例分割任务,使用随机初始化的参数会收敛的更慢,但最终所达到的结果不比使用在ImageNet上预训练的参数差。
预训练
预训练模型一般指在大规模数据集上对特定任务训练的深度模型。对大多数人来说,预训练模型的训练一般很难进行,因为它需要消耗大量的计算资源。在ImageNet预训练的卷积网络是最常见的预训练模型之一,它包含1400万张图像(大约1000类,每一类约120万张图像),大约100万张图像包含Bounding Box标注信息。
当特定任务训练完成后,学习到的参数即为预训练模型。很多预训练模型都可以从Github中找到,当然最简单的方法还是直接使用各个深度学习框架(如TensorFlow、Keras)内置的库来调用预训练模型。
消去实验
论文《Rethinking ImageNet Pre-training》建立在基于COCO数据集的消去实验上。在基于COCO数据集的目标检测和实例分割任务上,对比使用基于ImageNet预训练参数和随机初始化参数(即消去ImageNet预训练)的结果,对基于ImageNet的预训练所能带来的影响进行了分析。
有趣的统计
在论文中有一项有趣的统计,如下图所示。统计包含了在训练过程中,模型见到图像、示例和像素的次数。其中淡蓝色表示在ImageNet预训练时的统计数据,深蓝色代表在COCO上进行微调(Fine-Tuning)时的统计数据,紫色代表如果使用随机初始化从头训练的统计数据。
归一化
在目标检测任务中,由于输入的分辨率大且网络对显存消耗大,batch size只能被设置为比较小的值,这会损伤模型中Batch Normalization的效果。使用预训练模型可以绕过这个问题,因为我们可以在微调时将Batch Normalizaiton的参数固定。但是,如果使用随机初始化的参数从头训练则不能使用这个技巧。
在论文中,使用了两种较新的归一化方法来减轻小batch问题:
引入Group Normalization或Synchronized Batch Normalization使得我们可以用随机初始化的参数从头开始训练模型。另外,利用appropriately normalized initialization(https://arxiv.org/abs/1502.01852),我们可以从头训练一个基于VGG的目标检测模型,且不需要使用Batch Normalization或者Group Normalization。
主要实验结果
结论
本文分享自 机器学习算法与Python学习 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!