本文主要是介绍Revitalizing CNN Attentions via Transformers in Self-Supervised Visual Representation Learning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
利用 Transfomer 来提升 CNN 注意力的自监督表征学习
NeurIPS 2021
论文:https://arxiv.org/pdf/2110.05340v1.pdf
code:https://github.com/chongjiange/care
摘要
对自监督视觉表示学习(SSL)的研究改进了编码器主干来区分没有标签的训练样本。虽然通过SSL的CNN编码器实现了与通过监督学习相当的识别性能,但它们的网络注意力尚未得到进一步改进。在识别场景中有效探索视觉注意的transformer的激励下,我们提出了一个CNN注意重建(CARE)框架来训练SSL中transformer引导下的注意CNN编码器。所提出的CARE框架由一个CNN流(c流)和一个变压器流(t流)组成,其中每个流包含两个分支。C流遵循一个现有的SSL框架,其中有两个CNN编码器,两个投影和一个预测器。t流包含两个transformer,两个投影和一个预测器。t流连接到CNN编码器,并与剩余的c流并行。在训练过程中,我们同时在两个流中执行SSL,并使用t流输出来监督c流。来自CNN编码器的特征在t流中进行调制,以增强视觉注意,并适用于SSL场景。我们使用这些调制的特性来监督c流来学习注意的CNN编码器。为此,我们通过使用transformer作为指导,改进CNN的注意力。在图像分类、目标检测和语义分割等多个标准视觉识别基准上的实验表明,所提出的CARE框架提高了CNN编码器骨干到最先进的性能。
1 引言
有效学习视觉特征对识别性能有深远的影响。在处理大规模的自然图像后,自我监督的视觉表征学习通过借助特征训练有利于下游识别任务。现有的SSL方法通常利用两个分支来度量来自同一输入图像的不同视图表示之间的相似性。通过最大化一幅图像中的相关视图(如BYOL、SimSiam和BarlowTwin)之间的相似性,或最小化来自不同图像(如MoCo和SimCLR)的视图之间的相似性,这些方法被证明对学习自我监督的视觉表示是有效的。
SSL与transformer同时发展。在自然语言处理上首次亮相,自ViT以来,transformer已经显示出了它们在处理大规模视觉数据方面的优势。该视觉转换器中的编码器-解码器体系结构在不进行卷积的情况下不断地探索全局关注。该架构对于[7,76,55]的视觉识别或没有CNN集成都很有效。受到这些通过监督学习而取得的成就的启发,最近出现了以一种自我监督的方式训练transformer。这些方法维护了用于训练CNN编码器的大部分SSL管道(即编码器、投影和预测器)。在不进行重大框架修改的情况下,CNN编码器的原始SSL方法可以用于训练transformer编码器,并获得良好的性能。
使用transformer编码器的成功表明,视觉注意有利于SSL中编码器的骨干。另一方面,在监督学习中,CNN的注意力通常是通过网络监督来开发的。然而,我们观察到现有的SSL方法在CNN编码器中没有包含视觉注意。这促使我们探索CNN在SSL中的关注。我们希望CNN编码器能够保持类似于transformer的视觉注意,以降低计算复杂度和更低的内存消耗来提高识别性能。
在本文中,我们提出了一个CNN注意提升框架(CARE),使CNN编码器注意通过transformer的指导。图1显示了CARE的直观说明,并将其与其他最先进的SSL框架进行了比较。在CARE中有两个流(即c流和t流),其中每个流包含两个分支。C流类似于现有的SSL框架,带有两个CNN编码器、两个投影和一个预测器。t流由两个变压器、两个投影仪和一个预测器组成。t流以CNN编码器特征为输入,通过transformer提高特征注意。在训练过程中,我们同时在两个流中执行SSL,并使用t流输出来监督c流。t流中的自监督学习确保了transformer产生的注意特征适用于这种SSL场景。同时,我们在c流上进行注意监督。这种监督使c流和t流都能够产生类似的特性。通过对transformer的视觉注意,改进了CNN编码器的特征表示。因此,预先训练的CNN编码器产生注意特征,这有利于下游识别场景。对标准图像分类、目标检测和语义分割基准的实验表明,所提出的CARE框架提高了流行的CNN编码器骨干到最先进的性能。
图1:SSL框架概述。实线表示网络管道,虚线表示网络更新。MoCoV3通过显式地将视觉转换器作为编码器来探索视觉注意,而SimCLR和BYOL则不学习一个专注的CNN编码器。我们的CARE框架由一个c流和一个t流组成,用于探索具有transformer监督的CNN编码器中的视觉注意。注意,经过预训练后,只有目标CNN编码器(即CNN1)进行下游评估。为了简单起见,我们不在(b)和(d)中显示投影。
2 相关工作
在所提出的CARE框架中,我们将transformer引入自监督视觉表示学习。在本节中,我们从视觉表征学习和视觉转换器的角度对相关作品进行文献调查。
2.1视觉表示的学习
人们越来越需要使用未标记的图像来学习良好的特征表示。一般的特征表示有利于下游的视觉识别场景。现有的视觉表示学习方法主要可分为生成方法和判别方法。生成方法通常使用自动编码器进行图像重建,或在联合嵌入空间中使用模型数据和表示。生成方法侧重于图像像素级的细节,并具有计算密集型的。此外,对于下游的视觉识别场景仍需要进一步的适应。
判别方法将视觉表示学习表示为样本比较。近年来,对比学习由于其效率和优越的性能而得到了广泛的研究。通过从图像中创建不同的视图,SSL获得正样本对和负样本对来构成学习过程。例如存储库、多视图编码、预测编码、借口不变性、知识蒸馏和信息最大化。虽然在MoCo和SimCLR中引入了负对,但研究(如BYOL和SimSiam)表明,只使用正对是有效的。此外,聚类方法构建了用于表示学习的聚类。在这些方法中没有引入负对。除了这些以图像数据为重点的判别方法外,还有类似的方法从视频数据或多模态数据中学习表示。与这些SSL方法不同,我们使用transformer架构来提高CNN编码器的关注。
2.2视觉transformer
transformer在[62]中提出,其中自我注意对自然语言处理是有效的。BERT通过自我监督训练进一步提高了其表现。变压器的顺序建模激活了自然语言处理、语音处理和计算机视觉的广泛研究。在本节中,我们只从计算机视觉的角度调查与transformer相关的工作。
transformer在视觉识别和生成方面都有大量的研究。ViT已经表明,CNN在图像分类中并不是必须做的。DETR、可变形的DETR]和关系Net++表明,transformer能够高精度地检测物体。SETR将transformer带到语义分割中,而VisTR已经证明transformer能够执行视频对象分割。TrackFormer将transformer引入到多个对象跟踪中。在NLM中提出了一种用于视频分类的通用transformer。此外,变压器在图像生成和图像处理场景中已经被证明是有效的。例如图像超分辨率、视频插图和视频字幕。有几个新兴的研究如何使用自我监督学习来改进transformer主干。CNN编码器的学习范式适用于transformer,没有明显的改变。不同于现有的方法,关注于学习transformer编码器主干与监督或自监督学习。我们探讨了如何使用变压器作为指导来增强CNN的视觉注意。预先训练好的CNN编码器有利于下游识别场景。
3 提出的方法
我们的CARE框架由c流和t流组成。图2显示了对管道的概述。我们首先说明这些流的详细结构。然后,我们说明了网络训练的过程。CNN编码器的特征也是可视化的注意力显示。
图2:CARE的管道。它由c流和t流组成。c流类似于现有的SSL框架,我们在t流中涉及到变压器。在训练期间,我们在每个流(即Lc和Lt)中执行SSL,并使用t流输出来监督c流(即Latt)。CNN编码器通过t流注意监督变得注意。
图3:transformer框架。t流中的两个transformer的体系结构相同。每个transformer由n个注意块组成。我们在左边显示了一个注意块,其中在右边显示了一个自我注意层的详细结构。
3.1 CNN流(C-流)
我们的c流类似于现有的SSL框架,其中有两个CNN编码器,两个投影和一个预测器。两个编码器的结构相同,两个投影的结构相同。给定一个训练图像x,我们用一组随机增强来处理它,以创建两个不同的增强视图。我们将这两个视图馈给c流,并分别获得相应的输出f1(x)和f2(x)。然后我们计算了损失Lc来惩罚输出的不相似性。这个损失项是归一化特征向量的均方误差,可以写如下:
其中||·||2是l2正则化项,< , >是点积运算。由于c流的输入来自一个图像,因此c流的输出应该在训练过程中变得相似。
3.2 transformer流(t流)
t流将CNN编码器的输出特征图作为输入,这些输入图与c流并行设置。它由两个transformer、两个投影和一个预测器组成。投影和预测器的结构与c流中相同。两个transformer的结构共享相同的架构,它由n个连续的注意块组成,其中每个块包含两个多层感知(MLP)层,中间有一个多层自我注意(MHSA)层。我们主要按照[55]的设计来构建transformer中的注意块,如图3所示。一个注意块的输入特征映射(表示为s)首先由一个MLP层处理以进行维度映射,然后通过这个自注意层,最后通过另一个MLP层。MHSA由多个并行处理输入特征的注意头组成。在一个注意头中,如图3右侧所示。输入特征映射分别通过3个不同的MLP层wq、wk和wv映射到查询特征(q)、关键特征(k)和值特征(k)。详见式2,查询q和键k相乘形成基于内容的注意,q和位置编码p相乘形成基于位置的注意。
其中,dk是查询和键的维度。在位置编码模块中有一些可学习的参数来输出遵循s的形状的p。在式2中,我们在q和pT,q和kT之间进行矩阵乘法,并将每个像素的softmax输出和v作为标记,(即,对于一个c通道和空间维数为h×w的特征图,它形成了h·w c维标记,从而得到了一个大小为h·w×c的矩阵)。此外,我们还在qpT和qkT之间进行了矩阵加法。第二MLP层的输出通过残差连接添加到原始输入特征图s中,最后通过ReLU激活层。
在t流中,这两个transformer的输出是具有二维维度的特征图,然后将其平均合并并发送到投影和预测器。我们将t流的输出表示为f3(x)和f4(x)。在第3.1节的不相似处罚之后,我们对Lt的计算如下:
除了在这两个流中引入SSL损失项外,我们还使用t流输出来监督c流。此注意监督损失公式可写为:
其中在训练过程中需要c流输出类似于t流输出。请注意,式4中的网络监督不能简单地看作是知识蒸馏(KD)过程。从3个角度看有几个不同:(1)我们和KD之间的架构设计是不同的。在KD中,一个大型教师网络被训练来监督一个小型学生网络。相比之下,在我们的方法中,CNN骨干网由两个相似的网络共享。不同的模块只有transformer、轻量级投影和预测器头。(2)训练方式有所不同。在KD中,教师网络通常在监督学生网络之前预先进行训练。相比之下,我们的方法的两个分支从头开始一起进行相互学习。(3)KD中的损失函数通常为交叉熵损失,而我们采用均方误差。在KD期间,还计算特征地图级别之间计算监督损失。而我们的方法只根据网络输出来计算损失。
3.3网络训练
所提出的CARE由两个流组成,损失项已如上说明。网络训练的最终目标函数可以写为:
其中,λ是一个控制注意力监督损失影响的恒定值。在计算Ltotal后,我们只在c流和t流的上分支上执行反向传播。具体地在图2中,CNN编码器1、投影1和预测器1通过c流中的计算梯度进行更新。同时,transformer1、投影2和预测器2通过t流中的计算梯度进行更新。然后,我们对基于CNN编码器1的动量CNN编码器2、基于投影1的动量投影1、基于transformer1的动量transformer1和基于投影2的动量投影2进行移动平均更新。我们只在训练网络时使用正样本。正如在[24]中所分析的,使用动量投影和预测器对自我监督学习很重要。这些模块可以防止CNN特征在前置任务训练过程中失去泛化能力。此外,我们通过实验发现,动量更新可以有效地防止平凡解。在我们的网络中,我们在这两个流中都采用了类似的设计,以促进网络训练和正面,只使用正样本不会导致模型崩溃。经过前置任务训练后,我们只保留CNN编码器1在CARE中。然后将该编码器用于下游识别场景。
3.4可视化
我们的CARE框架通过transformer的指导提高了CNN编码器的注意。我们将展示了编码器如何通过可视化输入对象的注意图来关注输入对象。ResNet-50编码器主干网用于可视化。我们分别只使用c流和整个CARE框架将该编码器训练了200 epoch。对于输入图像,我们使用[51]来可视化编码器响应。可视化图的缩放相同以进行比较。
图4显示了可视化的结果。输入图像显示在(a)中,而使用c流和CARE训练的编码器的注意图分别显示在(b)和(c)中。总的来说,CARE训练的编码器的注意力比c流训练的更强烈,这表明CARE中的t流为CNN编码器学习关注目标区域提供了有效的监督。t流帮助CNN编码器自适应地选择关注局部区域或全局区域。例如,当需要全局信息进行分类时,CARE学习到的CNN编码器将更多地关注整个对象,如(c)中的最后一列,而不是如(b)所示的有限区域。另一方面,当局部信息足以进行分类时,通过CARE学习的CNN编码器将更强烈地关注特定区域(例如,第一列和第二列的(c))。可视化中显示的注意图表明,CNN编码器在我们的CARE框架中通过transformer引导开始注意目标区域。
图4:CNN编码器的注意可视化。我们分别只使用c流和整个CARE方法训练两个ResNet-50编码器。通过在(a)中获取相同的图像作为输入,(b)中显示了这两个编码器的注意图和(c)。通过CARE学习到的注意力在(c)中所示的物体区域周围更加强烈。在注意力可视化图中,红色标记的像素表示网络更关注当前区域。
4 实验
在本节中,我们将对我们的CARE方法进行实验验证。首先,我们将介绍实现的细节。然后,我们将我们的CARE方法与最先进的SSL方法进行比较,包括图像分类、对象检测和语义分割。此外,我们还进行了消融研究来分析所提出的CARE方法的每个组成部分。
4.1实验细节
图像的预处理。我们在前置任务训练中使用的训练图像来自ImageNet-1k数据集。我们在跟随[24]将图像数据发送到编码器之前来增强图像数据。具体来说,我们从一张图像中随机裁剪斑块,并将其大小调整为224×224的固定分辨率。然后,我们对这些补丁进行随机水平翻转和随机颜色畸变。采用高斯模糊、去色和孤化操作对这些补丁进行预处理。
网络架构。在我们的实验中,我们使用ResNet编码器主网络(即ResNet-50、ResNet-101和ResNet-152)。投影和预测器的架构是相同的,并遵循[24]。每个投影仪和预测器由一个具有批处理规范化和ReLU激活的全连接层组成,然后是另一个全连接层。t流中的transformer包含n个注意块,如图3所示。
网络培训过程。我们在前置任务训练中使用了一个动量为0.9的SGD优化器。基本学习率设置为0.05,并相对于批大小(即lrbase = 0.05 × Batchsize / 256)进行线性缩放。我们以10个epoch的热身开始前置任务训练,其中学习率从10−6线性上升到基本学习率(lrbase)。然后,我们使用一个余弦衰减计划来计算学习速率,而不需要重新启动它来训练网络。通过余弦设计(即τ = 1 − (1 − τbase)·(cos(πt / T) + 1) / 2,网络参数(记为τ)从0.99增加到1,T为训练步骤总数),动量更新系数为1。我们使用8台特斯拉V100gpu,批量为1024来训练CARE。采用自动混合精度训练策略。
4.2与最先进的方法的比较
我们比较了通过我们的方法和最先进的SSL方法学习到的CNN编码器的特征表示。在识别场景上进行了比较,包括图像分类(自监督和半监督学习配置)、目标检测和语义分割。
在图像分类上的自监督学习。我们遵循[29],使用标准的线性分类协议,其中编码器主干的参数是固定的,并将一个附加的线性分类器的参数添加到主干上。我们使用SGD训练这个分类器80epoch,学习速率为0.2,动量为0.9,批处理大小为256。ImageNet训练集用于训练,ImageNet验证集用于评估。
表1显示了精度为前1位的线性评价结果。我们通过使用表1a中通过不同SSL方法学习的ResNet-50编码器来显示分类结果。在本表中,我们的CARE方法在不同的训练时代下始终优于其他方法。具体来说,我们的方法在400个训练期下达到了74.7%的top1准确率,比第二优的方法BYOL高出1.5%。与此同时,我们在表1b中比较了我们的方法和其他采用CNN和transformer的方法 (即ViT)。结果表明,在相似的CNN和transformer编码器(即ResNet-50和ViT-S)参数数量下,CARE比其他SSL方法具有更高的精度。这表明CARE利用视觉注意改进CNN编码器优于transformer编码器。此外,我们在表2中提供了不同的CNN编码器(如ResNet-101和ResNet-152)的线性分类结果,其中我们的CARE方法也一致流行。
在图像分类上的半监督学习。我们通过在ImageNet数据集上使用半监督训练配置来评估我们的CARE方法。经过借口训练后,我们使用ImageNet训练集的一个小子集来微调编码器。我们遵循半监督学习协议,在微调过程中使用1%和10%的训练数据(与[12]中相同的数据分割)。表3显示了ImageNet验证集上的前1名和前5名的准确性。结果表明,在不同的编码器主干和训练时代下,我们的CARE方法比其他SSL方法具有更高的分类精度。
将学习转移到目标检测和语义分割中。我们评估了CARE在下游对象检测和语义分割场景上的表示。我们使用标准的VOC-07、VOC-12和COCO数据集。在评估VOC-07和VOC-12数据集上的对象检测结果时,我们遵循标准协议将借口训练的CNN编码器集成到Faster-RCNN中。另一方面,在评估COCO数据集中的对象检测和语义分割时,我们将该编码器集成到Mask-RCNN中。在所有的方法中都使用了ResNet-50编码器。所有的探测器都是通过使用VOC-07和VOC-12训练集迭代24k次,并在VOC-07测试集上进行评估。在COCO数据集上,所有模型都通过1×时间表来完成。结果是超过5次独立试验的平均值。
评价结果为表4。与监督方法相比,我们的CARE提高了检测(即COCO1.4%,VOC4.4%)和分割(即COCO1.4%)的性能。另一方面,我们的CARE方法优于其他SSL方法。值得注意的是,我们的方法的结果报告在200和400 epoch,这仍然高于800epoch的其他方法。这表明了我们的CARE方法在学习CNN编码器主干方面的有效性。在COCO数据集上的比较与在VOC上的比较相似。具体来说,在200个epoch下,MoCov2实现了0.5%的Apbb增长和0.4%的APmk增长。性能的提高主要是由于变压器引导下的视觉注意集成。
此外,我们通过一个更强大的检测器,即特征金字塔网络(FPN),进一步评估了CARE在COCO数据集上的表示,并将结果报告在表5中。我们遵循上述介绍的相同的评估方案。探测器用1个×计划(90k迭代)进行训练,以进行公平比较。同样,训练了200/400epoch的CARE优于在800/1000epoch训练的其他最先进的SSL方法。这表明CARE中的CNN编码器是由预训练中监督CNN编码器的变压器的注意机制授权的。
4.3消融实验
在我们的CARE方法中,视觉注意是通过transformer来监督c流来探索的。我们利用方程中不同的λ值来分析注意监督的影响。 (5).此外,我们还分析了注意块的数量和位置编码如何影响特征表示。此外,我们还进一步研究了t流的顺序和并行设计。我们使用ResNet-50作为编码器主干,训练期的数量被设置为100。通过SSL对InageNet的图像分类精度表明了特征表示的有效性。
λ监督的影响。我们研究了式5中的注意力监督项Latt如何通过使用不同的λ值来影响特征表示。评价结果为表6。当我们将λ设置为0时,CNN无需注意监督即可学习编码器。在这种情况下,性能显著下降。当我们使λ的价值增加时,注意监督也会增加。我们观察到λ=100的性能最好,并在整个实验中采用了这种设置。
注意块的数量。分析了t流中transformer的容量对识别性能的影响。我们将n = [2,...,6]设置为t流中的5个transformer,容量不断增加。然后,我们在表7中报告了相应的CNN编码器的识别性能。当n越大时,transformer的容量就会增加,并探索更强的视觉注意。这个注意监督c流以改进编码器。然而,当n=6时,识别性能下降。这可能是由于注意力损失Latt和原始SSL损失Lc之间的平衡中断。在我们的实验中,我们在CARE方法中设置了n=5。
位置编码。我们将分析了位置编码如何影响最终的性能。表8采用了许多位置编码设置进行分析。如果没有位置编码,性能就会显著下降。同时,传统的固定正弦余弦编码设置不适合于CARE。实验发现,在位置编码中使用可学习参数配置可以提高识别性能,并在CARE中采用[52]。
串行设计v.s并行设计。对100个epoch的ResNet-50训练的实验结果表明,并行设计比顺序设计有效(即72.02%v.s。69.32%)。这是因为在顺序训练过程中,CNN编码器和transformer都是一起优化,而不是CNN编码器本身。这就使得注意力监督无法彻底培训CNN编码器。
5总结
transformer通过注意力探索架构具有先进的视觉识别能力。在自监督视觉表示学习中,研究出现了利用transformer骨干来提高识别性能。这表明transformer所探索的视觉注意有利于SSL方法。受这一成功的激励,我们研究了如何有效地探索视觉注意,以使SSL中的CNN编码器受益。我们建议CARE开发一个并行transformer流和CNN流。因此,视觉注意被探索通过变压器在SSL期间监督CNN流。虽然限制是在SSL和注意监督损失项上花费了更多的计算成本,但学习到的CNN编码器在变压器的引导下变得更加关注,并且在下游任务中不消耗更多的成本。在标准视觉识别基准上的实验,包括图像分类、目标检测和语义分割,表明CARE提高了CNN编码器骨干到一种新的最先进的性能。
这篇关于Revitalizing CNN Attentions via Transformers in Self-Supervised Visual Representation Learning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!