编辑: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进行下采样。
假设patch size为16,那这些模块能够将输出步长为4、8、16、32的图像特征,然后送入到FPN中。
虽然相关研究 Swin与MViT通过修改VIT架构解决了ViT无法输出多尺度特征的问题。这种处理方式也是一个重要的研究方向,但它与ViT的简单设计相悖,会阻碍新的无监督学习方法的探索研究。
Transformer 的众所周知的问题就是自注意机制的时间复杂度太高,把ViT放到Mask R-CNN 中也会导致这个问题。
在预训练过程中,该复杂度是可控的,在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,研究人员对其中几个模块进行了修改。
-
FPN中的卷积后加入Batch Normalization;
-
在RPN(region proposal network)中使用两个卷积;
-
采用四个带BN的卷积后接一个全连接用来RoI (reigon-of-interest) 分类与box回归头,而非原始的两层无normalization的MLP;
-
相比原始训练机制,研究人员采用了从头开始训练+更长训练周期的训练机制。
尽管研究人员在实验过程中让超参数尽可能少,并且不使用额外的数据增强和正则化技术,但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进行了大量实验以估计合理的超参范围:
-
对每个初始化,固定dp=0.0,对lr与wd采用grid搜索,固定搜索中心为,以此为中心搜索;
-
对于ViT-B,从中选择dp(预训练参数时,训练50epoch;从头开始时,则训练100epoch,dp=0.1为最优选择;
-
对于ViT-L,采用了ViT-B的最优lr与wd,发现dp=0.3是最佳选择。
-
-
Supervised:即ViT骨干在ImageNet上通过监督方式预训练,分别为300和200epoch;
-
MoCoV3:即在ImageNet上采用无监督方式预训练ViT-B与ViT-L,300epoch;
-
BEiT:即采用BEiT方式对ViT-B与ViT-L预训练,800epoch;
-
MAE:使用MAE 无监督方法在ImageNet-1K上训练后得到ViT-B和ViT-L的权重。
虽然实验尽可能对所有方法都公平,但还是有一些因素导致了不公平:
-
-
BEiT采用可学习相对位置bias,而非其他方法中的绝对位置embedding;
-
BEiT在预训练过程中采用了layer scale,而其他方法没采用;
-
研究人员尝试对预训练数据标准化,而BEiT额外采用了DALL-E中的discrete VAE,在约2.5亿专有和未公开图像上训练作为图像tokenizer。
在COCO目标检测和实例分割上进行实验的结果可以看到:
-
无论初始化过程如何,文中提出的Mask R-CNN训练过程都更加平滑,甚至它都不需要stabilizing的技术手段,如gradient clipping。
-
相比有监督训练,从头开始训练具有1.4倍的性能提升。实验结果也证明了有监督预训练并不一定比随机初始化更强;
-
基于对比学习的MoCoV3具有与监督预训练相当的性能;
-
对于ViT-B来说,BEiT与MAE均优于随机初始化与有监督预训练;
-
对于ViT-L,BEiT与MAE带来的性能提升进一步扩大。
从收敛性上看,相比随机初始化,预训练初始化可以显著加速收敛过程,大约加速4倍 。
理想情况下,每个训练过程的drop path rate都应进行调整,因为可以观察到,当模型接受更长时间的训练时,最佳dp值可能需要增加。
在所有情况下都可以通过训练来获得更好的结果,例如加长训练时间,使用更复杂的训练流程,使用更好的正则化和更大的数据增强。
当然,由于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