视学算法报道  

编辑:LRS 好困 小咸鱼

【新智元导读】何凯明团队又发新论文了!这次他们研究的是如何将预训练好的ViT迁移到检测模型上,使标准ViT模型能够作为Mask R-CNN的骨干使用。结果表明,与有监督和先前的自我监督的预训练方法相比,AP box绝对值增加了4%。

模型参数的初始化一直是一个重要的研究问题,一个合适的初始化能够提升模型性能,加速收敛找到最优解。

由于不需要训练数据,所以无监督或自监督训练后的模型,能够很自然地作为下游任务(如图像分类、目标检测)模型微调前的初始化参数。

无监督算法的性能由微调后模型在下游任务的性能,如准确率、收敛速度等等相比基线模型是否有提高来进行判断。

在计算机视觉领域,由于CNN在过去的统治力,所以无监督深度学习通常都是基于标准卷积网络模型。例如将ResNet预训练后的模型迁移到其他基于CNN模型也是相当容易且直接的。

但现在时代变了,Vision Transformer(ViT)成为了新的主流模型。

虽然迁移其他无监督ViT 模型的参数在大的方法上和CNN 没有什么区别,但在迁移细节上还没有相关研究。

过去十多年,目标检测一直是视觉领域的核心任务,但在ViT时代还没有太多的研究成果。

结合这两个出发点,何凯明在FAIR最新研究以目标检测任务为基础,研究了标准ViT模型的迁移方法。

https://arxiv.org/abs/2111.11429

文章的第一作者是Yanghao Li,目前是Facebook AI Research(FAIR)的研究工程师,分别于2015年和2018年在北京大学获得学士和硕士学位,主要研究领域是计算机视觉和深度学习。

第二作者是Saining Xie,目前是FAIR的研究科学家。博士毕业于加州大学圣地亚哥分校,2013年毕业于上海交通大学ACM荣誉班,获学士学位。研究兴趣包括机器学习(主要是深度学习)及其在计算机视觉中的应用。

研究方法

文中采用何凯明发布于2017年的目标检测模型Mask R-CNN作为基础模型,它也是Cascade R-CNN 和HTC/HTC++的底层模型,对于研究目标检测迁移学习来说是一个非常合适的模型。

但把ViT作为Mask R-CNN的骨干网络还存在两个问题:

一、将ViT与特征金字塔网络(feature pyramid network, FPN)相匹配

Mask R-CNN的骨干网络既可以是单尺度(single-scale)也可以是多尺度特征输入到FPN中,并且FPN能提供更好的目标检测结果,更少的运行时间和内存开销。

但使用FPN存在一个问题,因为ViT仅能输出单尺度特征,而非CNN的多尺度特征 。为解决这个问题,研究人员使用了XCiT中的技术对ViT中间特征进行上采样和下采样,以提供四种不同分辨率的特征。

第一个模块采用两个步长为2的转置卷积(transposed convolution)进行4倍上采样;然后采用一个步长为2*2的转置卷积进行两倍上采样;最后一个模块采用步长为2的2*2 max pooling进行下采样。

每个模块都不会改变ViT的通道维度数。

假设patch size为16,那这些模块能够将输出步长为4、8、16、32的图像特征,然后送入到FPN中。

虽然相关研究 Swin与MViT通过修改VIT架构解决了ViT无法输出多尺度特征的问题。这种处理方式也是一个重要的研究方向,但它与ViT的简单设计相悖,会阻碍新的无监督学习方法的探索研究。

二、降低内存消耗和时间复杂度

Transformer 的众所周知的问题就是自注意机制的时间复杂度太高,把ViT放到Mask R-CNN 中也会导致这个问题。

假设每个patch的尺寸为h×w,且无重合。

在预训练过程中,该复杂度是可控的,在224×224图像中, h=w=14是一个常用的设置。但在目标检测中,标准图像尺寸为1024 × 1024,将近21倍多的像素和图像patch。由于自注意力的二次复杂度,哪怕基线ViT-B也需要占用20-30G GPU显存。

研究采用受限的(Windowed)self-attention,通过将全局计算都替换为局部计算来降低空间与时间复杂度。

将h×w的patch图像分割成r×r非重叠patch窗口,并在每个窗口内独立计算自注意力,这种处理方式可以大幅降低空间复杂度与时间复杂度。

但windowed self-attention的一个缺陷在于:骨干网络不能跨窗口聚合信息,所以需要每隔d/4个块添加一个全局自注意力模块 。

相比于原始Mask R-CNN,研究人员对其中几个模块进行了修改。

  1. FPN中的卷积后加入Batch Normalization;

  1. 在RPN(region proposal network)中使用两个卷积;

  1. 采用四个带BN的卷积后接一个全连接用来RoI (reigon-of-interest) 分类与box回归头,而非原始的两层无normalization的MLP;

  1. 标准mask头中的卷积后加入BN

相比原始训练机制,研究人员采用了从头开始训练+更长训练周期的训练机制。

尽管研究人员在实验过程中让超参数尽可能少,并且不使用额外的数据增强和正则化技术,但drop path regularization对于ViT骨干网络是非常有效的,所以,真香。

总之在训练过程中的使用LSJ数据增广(分辨率,尺度范围[0.1, 2.0]),AdamW+Cosine学习率衰减+linear warmup,drop path正则;

训练过程使用了64个Nvidia V100-32GB的GPU,batch size为64。当采用预训练初始模型参数时,微调100 个epoch;当从头开始训练时,训练400个epoch。

为使上述训练机制适用于同模型,研究人员对学习率lr、权重衰减(weight decay, wd)以及drop path rate(dp)三个超参进行微调,同时保持其他不变。采用ViT-B+MoCoV3进行了大量实验以估计合理的超参范围:

  1. 对每个初始化,固定dp=0.0,对lr与wd采用grid搜索,固定搜索中心为,以此为中心搜索;

  1. 对于ViT-B,从中选择dp(预训练参数时,训练50epoch;从头开始时,则训练100epoch,dp=0.1为最优选择;

  1. 对于ViT-L,采用了ViT-B的最优lr与wd,发现dp=0.3是最佳选择。

实验部分

研究人员对比了五种网络初始化的方法:

  1. Random:即所有参数均随机初始化,无预训练;

  1. Supervised:即ViT骨干在ImageNet上通过监督方式预训练,分别为300和200epoch;

  1. MoCoV3:即在ImageNet上采用无监督方式预训练ViT-B与ViT-L,300epoch;

  1. BEiT:即采用BEiT方式对ViT-B与ViT-L预训练,800epoch;

  1. MAE:使用MAE 无监督方法在ImageNet-1K上训练后得到ViT-B和ViT-L的权重。

虽然实验尽可能对所有方法都公平,但还是有一些因素导致了不公平:

  1. 不同的预训练方法采用了不同的epoch;

  1. BEiT采用可学习相对位置bias,而非其他方法中的绝对位置embedding;

  1. BEiT在预训练过程中采用了layer scale,而其他方法没采用;

  1. 研究人员尝试对预训练数据标准化,而BEiT额外采用了DALL-E中的discrete VAE,在约2.5亿专有和未公开图像上训练作为图像tokenizer。

在COCO目标检测和实例分割上进行实验的结果可以看到:

  1. 无论初始化过程如何,文中提出的Mask R-CNN训练过程都更加平滑,甚至它都不需要stabilizing的技术手段,如gradient clipping。

  1. 相比有监督训练,从头开始训练具有1.4倍的性能提升。实验结果也证明了有监督预训练并不一定比随机初始化更强;

  1. 基于对比学习的MoCoV3具有与监督预训练相当的性能;

  1. 对于ViT-B来说,BEiT与MAE均优于随机初始化与有监督预训练;

  1. 对于ViT-L,BEiT与MAE带来的性能提升进一步扩大。

从收敛性上看,相比随机初始化,预训练初始化可以显著加速收敛过程,大约加速4倍 。

还有两个需要注意的地方是:

  1. 理想情况下,每个训练过程的drop path rate都应进行调整,因为可以观察到,当模型接受更长时间的训练时,最佳dp值可能需要增加。

  1. 在所有情况下都可以通过训练来获得更好的结果,例如加长训练时间,使用更复杂的训练流程,使用更好的正则化和更大的数据增强。

当然,由于COCO数据集的训练集非常大,即便随机初始化也能获得比较好,甚至更好的结果,这就导致迁移学习比较尴尬了。

研究人员还发现,现有的方法如有监督IN1k、MoCoV3无监督预训练的性能反而会弱于随机初始化基线方案。并且已有的无监督迁移学习改进对比的均为监督预训练,并不包含随机初始化方案。

此外,其他研究人员都是采用了较弱的模型,因而具有更低的结果,这就导致不确定如何将已有方法迁移到sota 模型中。

由于预训练,MAE与BEiT提供了首个令人信服的COCO数据集上的性能提升,并且这些基于masking的方案会随模型大小提升进一步改善检测迁移学习能力的潜力 ,而有监督预训练与MoCoV3等初始化方式上并没有观察到这种结论。

结论

论文提出的方法使标准的ViT模型能够作为骨干在Mask R-CNN中得到实际的应用。

这些方法产生了可接受的训练内存和时间,同时也在COCO上取得了优异的结果,而且还不会涉及到复杂的扩展。

通过对五种不同的ViT初始化方法进行比较可以发现,虽然随机初始化要比预训练的初始化长大约4倍,但相比于比ImageNet-1k的监督预训练,可以取得更高的AP。

此外,MoCoV3作为对比性无监督学习的代表,其表现几乎与监督性预训练相同,因此也比随机初始化差。

更重要的是,论文发现了一个令人兴奋的新结果:基于masking的方法(BEiT和MAE)比有监督和随机初始化都有更大的收益,而且这些收益会随着模型大小的增大而增加。

参考资料:

https://arxiv.org/abs/2111.11429

点个在看 paper不断!

何凯明团队又出新论文!北大、上交校友教你用ViT做迁移学习相关推荐

  1. 何凯明团队又出新论文!联合北大、上交用ViT做迁移学习,效果惊人!

    ‍ 转自:新智元 [导读]何凯明团队又发新论文了!这次他们研究的是如何将预训练好的ViT迁移到检测模型上,使标准ViT模型能够作为Mask R-CNN的骨干使用.结果表明,与有监督和先前的自我监督的预 ...

  2. #今日论文推荐#NAACL 2022 | 基于Prompt的文本生成迁移学习

    #今日论文推荐#NAACL 2022 | 基于Prompt的文本生成迁移学习 预训练语言模型(PLM)通过微调在文本生成任务方面取得了显著进展.然而,在数据稀缺的情况下,微调 PLMs 是一项挑战.因 ...

  3. 何恺明团队12页论文新作剑指AIGC!“新CLIP”只需一个trick,训练速度快3.7倍!性能不降反升...

    杨净 艳艳 发自 凹非寺 量子位 | 公众号 QbitAI 何恺明团队又上新了. 这次,他们的成果围绕当下最火的AIGC背后的CLIP展开. --只在该模型的极简结构上,施加了一个简单的mask,就让 ...

  4. 计算机视觉与深度学习 | TensorMask: A Foundation for Dense Object Segmentation(何凯明团队新作)近5年目标检测综述

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 ================= ...

  5. Graph Structure of Neural Networks何凯明团队

    explore the implications of graphs and how graph theory tools can helps us to learn better presentat ...

  6. 【深度学习】ICCV2021|性能优于何恺明团队MoCo v2,DetCo:为目标检测定制任务的对比学习...

    作者丨小马 编辑丨极市平台 导读 作者专为目标检测任务"量身定制"了对比学习框架DetCo,在PASCAL VOC数据集上,DetCo在100个epoch时的性能就与MoCo V2 ...

  7. 【前沿】如何评价何恺明团队的最新工作RegNet?

    来自 | 知乎 链接 | https://www.zhihu.com/question/384255803 编辑 | 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系删除    提问 如何评 ...

  8. 人工智能大神何凯明往事与风华岁月

    文章目录 快速认识大牛 少年英才 CVPR最佳论文展露头角,去雾算法扬名天下 残差网络轰动业界 何凯明和贾扬清 机器视觉三剑客:何凯明.孙剑与汤晓鸥 何凯明治学方法 研究成果与代表作 参考 快速认识大 ...

  9. 何恺明团队新作:只用普通ViT,不做分层设计也能搞定目标检测

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 微软的Swin ...

最新文章

  1. jenkins持续集成(一): 在Linux下的安装与配置
  2. 应用RSACryptoServiceProvider类轻松实现RSA算法
  3. android动态加载assets,从android_assets文件夹动态加载dll
  4. QQ2006 界面编程
  5. GB35114---SM3withSM2证书生成及读取(一)
  6. VC编译生成asm文件设置
  7. NLP入门(十)使用LSTM进行文本情感分析
  8. Flink 如何管理 Kafka 消费位点
  9. html鼠标滚轮监听,javascript监听鼠标滚轮事件浅析
  10. mysql sql 列变成横向_mysql怎么更改纵向变横向排列
  11. java facade dao_nsg-DAO
  12. rabit的安装与使用
  13. UE战棋游戏的制作流程(使用GAS来制作技能系统)
  14. ecshop添加多国货币
  15. Codeforces Round #787 (Div. 3) F. Vlad and Unfinished Business
  16. Solar Tracker
  17. 数字集成电路设计系列学习总结
  18. jmeter三种阶梯式加压(逐渐加压)
  19. led58k280j电视刷机
  20. 来自一位一年半Java开发程序员的忧郁。

热门文章

  1. 适用于SharePoint 2013 的 CAML Desinger
  2. ASP.NET Cookie
  3. Linux下的下载工具 axel
  4. 如何准备数学建模竞赛!
  5. 摩尔线程推出首款数据中心级全栈功能GPU:MTT S2000
  6. Facebook面经全披露,我是怎么拿到机器学习工程师offer的?
  7. 四大指标超现有模型!少样本的无监督图像翻译效果逆天| 技术头条
  8. 搬箱轮滑再炫技!一个被波士顿动力耽误的机器人
  9. 1400小时开源语音数据集,你想要都在这儿
  10. 朴素贝叶斯分类器详解及中文文本舆情分析(附代码实践)