当前位置: 首页 > 科技观察

Transformer重振CNN主干网络,港大和腾讯视觉自监督表示学习CARE

时间:2023-03-17 21:54:36 科技观察

自监督表示学习这两年很火。机器学习界的三位大师GeoffroyHinton、YannLeCun和YoshuaBengio一致认为,自监督学习有望使AI产生类似人类的推理能力。其中,Hinton和LeCun也在近两年发表了关于ICML/NeurIPS中自监督表示学习的研究。工作。可以说,关于自监督表示学习的文章将发表在机器学习的顶端,与Hinton、Lecun处于同一轨道。而今年的NeurIPS2021,Lecun刚刚发推感叹自己与另一位CV大师JeanPonce的自监督提交VICReg被拒,由此可见机器学习领域自监督学习的竞争是多么的激烈。另一方面,最近火爆的Transformer带来了计算机视觉算法的全面升级。那么Transformer与自监督表征学习会擦出怎样的火花呢?港大、腾讯AILab、牛津大学学者在NeurIPS2021发表的文章将带来启发性的答案。本研究受现有自监督表示学习架构BYOL的启发,结合前沿的Transformer,提出了一种利用Transformer提高CNN注意力的自监督表示学习算法。本文将现有架构归类为C-stream,提出T-stream。CNN骨干网络的输出并行连接到T-stream。将Transformer放在T-stream中,提高CNN输出的attention,用结果来监督CNN本身的输出,从而达到提高CNN骨干网络attention的效果。在已有的标准数据集中,CNN骨干网络在下游识别任务中的各项性能也得到进一步提升。论文地址:https://arxiv.org/pdf/2110.05340.pdfGithub地址:https://github.com/ChongjianGE/CARE背景与启发:Self-supervisedrepresentationlearningandsamplecomparisonSelf-supervisedrepresentationlearninggoalsbasedonimagecontent训练一个通用的视觉特征编码器(encoderbackbone)。在给定神经网络架构(如VGG、ResNet)的情况下,摆脱基于数据标注构建自监督的过程,从头开始进行pretext训练。训练后的网络被认为与用ImageNet标记数据进行预训练的结果相似,然后将网络转移到一系列下游识别任务(下游微调),包括图像分类、对象检测和分割。由于在初始化训练中不使用数据标签作为约束,因此预训练的网络表示不特定于特定的下游识别任务,因此具有通用的视觉表示能力。其潜在应用是利用海量互联网数据摆脱人工标注,依靠自适应学习神经网络的视觉表征能力,从而受益于一系列下游识别任务。自我监督学习与下游识别任务中的监督学习相当。在自监督表示学习的研究中,对比学习是一种常用的方法。给定一批未标记数据,将当前数据作为正样本,其余数据作为负样本。通过这种方式,对比学习构造正负样本及其扩充数据来确定损失函数来训练网络。输入数据之一通过双向网络形成两个不同的视图,用于后续的样本比较。在处理海量数据的过程中,有效地从数据中构建样本并防止模型崩溃成为热门的研究方向。从MoCo[a]的队列设计和网络动量更新开始,一系列的研究工作应运而生。下面介绍几部有代表性的作品。为简洁起见,算法框架图中的mapper(projector)没有画出来:SimCLR上图为Hinton团队的SimCLR[b]算法框架,采用大批量设计,摆脱了队列的依赖storage直接比较正负样本构造loss来更新网络。BYOL上图展示了DeepMind团队的BYOL[c]算法框架,简单的使用当前样本进行自己的各种数据扩充进行对比。同时引入投影仪,摆脱上下游任务对网络的影响。在更新网络时,同样采用动量更新的方式来防止模型崩溃。上图MoCoV3为KaimingHe团队的MoCoV3[d],使用transformer作为学习编码器(encoderbackbone),利用已有的自监督学习框架进行样本对比学习。将视觉转换器(ViT[e])作为编码器引入到自监督学习中也是其中一项工作。本文的方法与MoCoV3的出发点不同。本文的工作旨在利用transformer的self-attention机制来提高CNN编码器的性能。其中,最初的CNN框架被归类为C-stream,然后提出了包含Transformer的T-stream。两个流同时接收CNN编码器的输出,然后用T流监督C流。与YannLeCun团队的BarlowTwins[f]使用协方差矩阵来衡量两个视图的冗余度相比,本文引入了一种可学习的transformer,可以在不同的网络训练状态下自适应地提供注意力辅助,从而更有效地提高CNN编码器的视觉表示能力。论文的方法:CARE(CNNAttentionREvitalization)Proposedpipeline本文提出的算法流程图如上图。首先对输入图像x进行两次预处理,得到两个正样本x_1和x_2。然后用C-stream的两个CNN编码器分别提取x_1和x_2的特征,将CNN一个通道提取的特征输入到mapperprojector1和predictorpredictor1得到高维特征f_1(x),而CNN的另一通道提取的特征只输入到动量更新映射器(momentumprojector1),得到高维特征f_2(x)。此外,双向CNN提取的两组特征也会同时输入到T-stream中。一个路径的Transformer1提取具有空间注意力的特征,并将该特征输入到mapperprojector2和predictorpredictor2,得到高维特征f_3(x)。另一个momentumupdateTransformer同样提取CNN特征,输入momentumupdatemappermomentumprojector2得到高维特征f_4(x)。至此,算法框架的前向流程设计完成。通过为f_1(x)、f_2(x)、f_3(x)和f_4(x)设计目标损失函数来执行反向传播的后续学习。在反向传播的过程中,本算法只更新C-stream和T-stream中的一个,而对应的其他路径使用动量更新(momentumupdate)的手段。具体形式稍后介绍。网络架构设计:该算法旨在通过构建自监督学习框架和使用自定义辅助任务来学习能够有效提取图像特征的CNN编码器。该算法对任何CNN编码器都有一定的适用性,因此在CNN编码器的选择上具有很好的灵活性。例如ResNet50、ResNet101、ResNet152都可以作为该算法的CNN编码器。Transformer的结构如下图所示:Transformer结构示意图Transformer将CNN编码器的输出作为输入,输出f_1(x)、f_2(x)、f_3(x)、f_4(x))更注重空间的功能。该算法设计的Transformer主要包括4个串联模块,其中单个模块如上图所示。单个模块主要由一个1x1卷积层、一个多头自注意力层(Multi-headSelf-attention,MHSA)[g]和一个额外的1x1卷积层组成。其中,MHSA层可以很好地学习具有空间集中特性的特征。另外,mapperprojector和predictor预测器的主要结构是一个多层感知器(Multi-layerperceptron)。两者都由两个完全连接的层、一个激活层和一个批量归一化层组成。本文设计的损失函数是基于流程框架中的四个输出f_1(x)、f_2(x)、f_3(x)、f_4(x)。其中,本文使用了C-stream的lossterm,和T-stream的lossterm。其具体形式如下:另外,本文使用T-stream的输出来监督C-stream的输出。该约束记为,具体形式如下:该约束说明在自监督学习中,C-stream的输出将尽可能与T-stream的输出相似。所以最终的整体损失函数可以表示为:在计算出整体损失后,算法仅将梯度传播回更新C-stream和T-stream的上分支。它的底层分支主要通过动量更新来更新参数。所谓动量更新,主要是指利用当前C-Stream和T-Stream顶层分支的参数,以及前一时刻的参数信息,对其底层分支的网络参数进行动量更新。网络训练结束后,只保留CNNencoder1作为目标编码器。然后将该编码器用作下游识别任务的骨干网络。VisualAnalysis:CNNEncoder'sAttentionDisplaySelf-supervisedtraining后,本文将CNN编码器的特征响应进行可视化,以观察训练后编码器对视觉内容的注意力变化。本文在同一个编码器上进行了两种自监督策略,一种是只使用C-stream结构进行训练,另一种是使用整个结构进行训练。本文将同一个编码器在这两种训练策略下可视化,如下图所示:CNNEncoderAttentionVisualization从图中可以看出,第一个行为是输入图像,第二个行为只是简单地使用C-attention用stream结构训练的encoder的attention,第三行是用本文提出的CARE结构训练的encoder的attention。通过观察注意力在图像上的分布和强度可以看出,本文提出的CARE算法训练的编码器对图像中的物体更加敏感,注意力也更强。实验结果在实验过程中,本文从多个方面验证了所提算法的有效性。包括上游训练模型在线性分类问题上的表现,对半监督数据的影响,以及对下游目标检测和分割任务的表现。在骨干网络模型选择方面,本文选择通用的CNNResNet系列模型进行训练。对比模型是ResNet系列和Transformer结构。验证方式是采用不同的自监督学习算法,在多个模型上进行各种任务的不同训练阶段的性能验证。本文算法在训练过程中,利用8卡V100算力可以实现模型训练的收敛。在当前海量计算能力的视觉自监督表示学习任务下,它是相对计算友好的。上游任务线性分类的比较。在固定ResNet-50作为骨干网络的情况下,针对不同的自监督学习算法进行训练,表现出不同训练阶段的线性分类效果。如下图所示,本文提出的CARE(CNNattentionrevitalization)方法取得了优异的性能。此外,本文还比较了BYOL方法在不同骨干网络和ResNet不同训练阶段的表现,如下图所示。本文的CARE方法在不同的骨干网络下都有更好的表现。以上是同一个主干网络和不同学习算法的对比。这篇论文还比较了Transformer的骨干网络和现有的学习算法。效果如下图所示。与Transformer结构相比,本文使用ResNet网络在参数个数相近的情况下取得了更好的效果。更多实验对比和CARE算法的AblationStudy,见文章实验部分。总结综上所述,本文提出了一种利用Transformer结构辅助CNN网络训练的视觉自监督表征学习框架。其核心贡献是在训练时利用一个网络结构的特性(即Transformer的attentionenhancement特性)对目标网络(即CNN主干网络)进行监督,从而传递网络特性和目标性能网络可以改进。在视觉识别的各种任务中也得到了充分的验证。本文中的框架对自监督表示学习具有重要意义。现有的网络结构设计有各种功能。如何利用这些网络的独特特性,进而将它们整合成一个网络,达到无缝整体的目的,也是后续自监督表征学习探索的重要方向。