何恺明,RBG,Piotr Dollár。

三位从Mask R-CNN就开始合作的大神搭档,刚刚再次联手,一文“终结”了ImageNet预训练时代。

他们所针对的是当前计算机视觉研究中的一种常规操作:管它什么任务,拿来ImageNet预训练模型,迁移学习一下。

但是,预训练真的是必须的吗?

这篇重新思考ImageNet预训练(Rethinking ImageNet Pre-training)就给出了他们的答案。

FAIR(Facebook AI Research)的三位研究员从随机初始状态开始训练神经网络,然后用COCO数据集目标检测和实例分割任务进行了测试。结果,丝毫不逊于经过ImageNet预训练的对手。

甚至能在没有预训练、不借助外部数据的情况下,和COCO 2017冠军平起平坐。

结果

训练效果有图有真相。

他们用2017版的COCO训练集训练了一个Mask R-CNN模型,基干网络是用了群组归一化(GroupNorm)的ResNet-50 FPN。

随后,用相应的验证集评估随机权重初始化(紫色线)和用ImageNet预训练后再微调(灰色线)两种方法的边界框平均检测率(AP)。

可以看出,随机权重初始化法开始不及预训练方法效果好,但随着迭代次数的增加,逐渐达到了和预训练法相当的结果。

为了探索多种训练方案,何恺明等人尝试了在不同的迭代周期降低学习率。

结果显示,随机初始化方法训练出来的模型需要更多迭代才能收敛,但最终收敛效果不比预训练再微调的模型差。

主干网络换成ResNet-101 FPN,这种从零开始训练的方法依然呈现出一样的趋势:从零开始先是AP不及预训练法,多次迭代后两者终趋于不分上下。

效果究竟能有多好?答案前面也说过了,和COCO 2017冠军选手平起平坐。

从零开始模型的效果,由COCO目标检测任务来证明。在2017版验证集上,模型的bbox(边界框)和mask(实例分割)AP分别为50.9和43.2;

他们还在2018年竞赛中提交了这个模型,bbox和mask AP分别为51.3和43.6。

这个成绩,在没有经过ImageNet预训练的单模型中是最好的。

这是一个非常庞大的模型,使用了ResNeXt-152 8×32d基干,GN归一化方法。从这个成绩我们也能看出,这个大模型没有明显过拟合,非常健壮(robust)。

实验中,何恺明等人还用ImageNet预训练了同样的模型,再进行微调,成绩没有任何提升。

这种健壮性还有其他体现。

比如说,用更少的数据进行训练,效果还是能和预训练再微调方法持平。何恺明在论文中用**“Even more surprising”**来形容这个结果。

当他们把训练图像数量缩减到整个COCO数据集的1/3(35000张图)、甚至1/10(10000张图)时,经过多次迭代,随机初始化看起来还略优于预训练法的效果。

不过,10000张图已经是极限,继续降低数据量就不行了。当他们把训练数据缩减到1000张图片,出现了明显的过拟合。

怎样训练?

想抛弃ImageNet预训练,用不着大动干戈提出个新架构。不过,两点小改动在所难免。

第一点是模型的归一化方法,第二点是训练长度。

我们先说模型归一化(Normalization)。

因为目标检测任务的输入数据通常分辨率比较高,导致批次大小不能设置得太大,所以,批归一化(Batch Normalization,BN)不太适合从零开始训练目标检测模型。

于是,何恺明等人从最近的研究中找了两种可行的方法:群组归一化(Group Normalization,GN)和同步批归一化(Synchronized Batch Normalization,SyncBN)。

GN是吴育昕和何恺明合作提出的,发表在ECCV 2018上,还获得了最佳论文荣誉提名。这种归一化方法把通道分成组,然后计算每一组之内的均值和方差。它的计算独立于批次维度,准确率也不受批次大小影响。

SyncBN则来自旷视的MegDet,和香港中文大学Shu Liu等人的CVPR 2018论文Path Aggregation Network for Instance Segmentation。这是一种跨GPU计算批次统计数据来实现BN的方法,在使用多个GPU时增大了有效批次大小。

归一化方法选定了,还要注意收敛问题简单说是要多训练几个周期

道理很简单:你总不能指望一个模型从随机初始化状态开始训练,还收敛得跟预训练模型一样快吧。

所以,要有耐心,多训练一会儿。

也就是说,要想从随机初始化状态开始训练,要有大量样本。

到底要不要用ImageNet预训练?

这篇论文还贴心地放出了从实验中总结的几条结论:

  • 不改变架构,针对特定任务从零开始训练是可行的。
  • 从零开始训练需要更多迭代周期,才能充分收敛。
  • 在很多情况下,甚至包括只用10000张COCO图片,从零开始训练的效果不逊于用ImageNet预训练模型微调。
  • 用ImageNet预训练能加速在目标任务上的收敛。
  • ImageNet预训练未必能减轻过拟合,除非数据量极小。
  • 如果目标任务对定位比识别更敏感,ImageNet预训练的作用较小。

所以,关于ImageNet预训练的几个关键问题也就有了答案:

它是必需的吗?并不是,只要目标数据集和计算力足够,直接训练就行。这也说明,要提升模型在目标任务上的表现,收集目标数据和标注更有用,不要增加预训练数据了。

它有帮助吗?当然有,它能在目标任务上数据不足的时候带来大幅提升,还能规避一些目标数据的优化问题,还缩短了研究周期。

我们还需要大数据吗?需要,但一般性大规模分类级的预训练数据集就不用了,在目标领域收集数据更有效。

我们还要追求通用表示吗?依然需要,这还是个值得赞赏的目标。

想更深入地理解这个问题,请读论文:
Rethinking ImageNet Pre-training
Kaiming He,Ross Girshick,PiotrDollár
https://arxiv.org/abs/1811.08883

转载:何恺明“终结”ImageNet预训练时代:从0开始训练神经网络,效果比肩COCO冠军

ImageNet预训练参数和随机初始化参数训练效果对比相关推荐

  1. R语言caret包构建xgboost模型实战:特征工程(连续数据离散化、因子化、无用特征删除)、配置模型参数(随机超参数寻优、10折交叉验证)并训练模型

    R语言caret包构建xgboost模型实战:特征工程(连续数据离散化.因子化.无用特征删除).配置模型参数(随机超参数寻优.10折交叉验证)并训练模型 目录

  2. java使用初始化输入参数_使用初始化参数配置java web应用程序

    在编写java web应用程序的时候,我们难免会遇到需要使用参数来初始化应用程序的问题.在这里介绍最简单的三种方式:使用上下文参数进行配置.使用Servlet初始化参数以及使用注释来初始化参数. 这些 ...

  3. java数据库初始化参数,oracle数据库初始化参数设置--Java免费学习网

    正在看的ORACLE教程是:oracle初始化参数设置.ALTER DATABASE DATAFILE'd:ORANTDATABASEUSER1ORCL.ORA' RESIZE 1000M; CREA ...

  4. oracle数据库初始化参数分类,oracle初始化参数设置

    oracle初始化参数设置 时间:2007-11-09  来源:不详  作者:迈克DB ALTER DATABASE DATAFILE'd:ORANTDATABASEUSER1ORCL.ORA' RE ...

  5. 神经网络为什么需要随机初始化模型参数

    在神经网络中,通常需要随机初始化模型参数.下面解释一下这样做的原因. 设有一个多层感知机模型,假设输出层只保留一个输出单元o1o_1o1​,且隐藏层使用相同的激活函数.如果将每个隐藏单元的参数都初始化 ...

  6. 超越ImageNet预训练,Meta AI提出SplitMask,小数据集也能自监督预训练

    ©作者 | 陈萍 来源 | 机器之心 大规模数据集对自监督预训练是必要的吗?Meta AI 认为,小数据集也能自监督预训练,效果还不错. 目前,计算机视觉神经网络被大量参数化:它们通常有数千万或数亿个 ...

  7. ScratchDet:随机初始化训练SSD目标检测器(论文笔记)

    论文名称:ScratchDet: Training Single-Shot Object Detectors from Scratch(京东AI研究院) 地址:https://arxiv.org/ab ...

  8. 何恺明“终结”ImageNet预训练时代:从0开始训练神经网络,效果比肩COCO冠军

    夏乙 安妮 发自 凹非寺 量子位 出品 | 公众号 QbitAI 何恺明,RBG,Piotr Dollár. 三位从Mask R-CNN就开始合作的大神搭档,刚刚再次联手,一文"终结&quo ...

  9. ORACLE初始化参数文件概述

    ORACLE初始化参数文件概述 在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的.这两种参数文件都是用来存储 ...

最新文章

  1. android+ebook控件,Android 自定义控件 eBook 翻书效果
  2. 腾讯 监控系统服务器数据采集,实战低成本服务器搭建千万级数据采集系统
  3. [Shder]物体溶解效果
  4. .NET 5干货来袭 嘉宾李杨桂素伟
  5. 顺丰控股子公司亮榛拟1000万美元参投海外投资基金
  6. 唐山师范学院计算机科学与技术地址,2021年唐山师范学院有几个校区,大一新生在哪个校区...
  7. Apprenda发布Kubernetes商业版,PaaS、CaaS任君选择
  8. postgresql分割字符串_postgresql 实现字符串分割字段转列表查询
  9. android_dialog
  10. Matlab——噪声的检测和处理实验
  11. 舵机的相关原理与控制原理
  12. 五笔输入法linux安装包,RedHat enterprise Linux 5 安装五笔输入法
  13. FlashFXP注册码-FlashFXP密钥
  14. Java初级程序员需要知道的基本Java代码规范
  15. windows系统下Studio3T下载与安装
  16. 【java】模拟物流快递系统程序设计
  17. 计算机yiji教案,剑桥一级下册详细教案
  18. Ubuntu出现“dpkg: 依赖关系问题使得libbsd0:i386的配置工作不能继续”错误
  19. keil优化等级影响STM32 GPIO速度变化
  20. 【对讲机的那点事】带你玩转凯益星CG53数字对讲机的读、写频操作

热门文章

  1. 汇编指令 int 21 h 调用
  2. ARM9的存储结构~~大端存储和小端存储
  3. 2015出现神曲空挡期,玖月奇迹接棒筷子兄弟?
  4. 苹果5G芯片研发失败:继续依赖高通,还要担心被起诉?
  5. centos7解压rar包
  6. java判断点与线与面的关系_高中数学必修二点线面的位置关系与线面平行判定及其性质(精华试题版)...
  7. 判断当天日历是星期几
  8. Slidev 一种快速制作PPT的奇淫技巧
  9. ESP8266+红外模块制作万能网路遥控器
  10. 类型BYTE,WORD与DWORD