论文地址:https://openaccess.thecvf.com/content/CVPR2022/papers/Han_Few-Shot_Object_Detection_With_Fully_Cross-Transformer_CVPR_2022_paper.pdf
少样本目标检测(FSOD),目的是用很少的训练例子来检测新的目标。利用基于双分支的siamese网络,基于元学习的方法是有效的,并计算图像区域之间的相似性进行检测。然而,在之前的工作中,两个分支之间的交互仅局限于检测头,而剩下的数百层用于单独的特征提取。受最近在vision transformers和vision-language transformer方面的启发,作者提出了一种新的基于Cross-Transformer的FSOD模型(FCT),将Cross-Transformer合并到特征主干和检测头。提出了非对称批次Cross-Transformer来聚合来自不同批次大小的两个分支的关键信息。模型可以通过引入多层交互作用来改进两个分支之间的少样本相似性学习。在PASCAL VOC和MSCOCO FSOD基准上进行的综合实验证明了模型的有效性。
少样本学习目前的研究方法主要采用双阶段学习范式[45]来转移从数据丰富的基类中学习到的知识,以协助对少样本的新类的目标检测。详细的模型架构在不同的工作中有所不同,大致可以分为两类,基于单分支的方法[36,45,47,51,52]和基于双分支的方法[8,12,13,20,23,49]。(1)基于单分支的方法采用一个典型的目标检测模型,如Faster R-CNN [33],并建立一个多类分类器进行检测。它容易对小的训练数据进行过拟合,特别是当我们每个新类只有1次的训练数据时。 (2)基于双分支的方法将度量学习思想[34,37,41]应用于FSOD,建立siamese网络并行处理查询图像和少样本支持图像。在从这两个分支中提取深度视觉特征后,之前的工作提出了多种方法(如特征融合[8,48,49]、特征对齐[13]、GCN [12]和非局部注意/变压器[2,3,6,20,44])来计算这两个分支的相似性。基于双分支的方法不学习新类上的多类分类器,通常通过学习与少样本类比较查询区域而具有更强的泛化能力。
以往基于两个分支的方法探索了查询和支持分支之间的各种交互(如对齐),以提高相似性学习。但交互在具有高级特征的检测头中受到限制,剩下的数百层用于单独的特征提取。实际上,查询和支持图像在物体姿态、比例、光照、遮挡、背景等方面可能存在较大的视觉差异和域差距。简单地在高级特征空间上对齐这两个分支可能不是最优的。如果我们能将提取的特征在所有网络层中对齐,网络就能有更多的能力关注每一层的共同特征,并提高最终的相似性学习。
在这项工作中,我们提出了一个新的基于Cross-Transformer的FSOD模型(FCT),这是一个纯的基于Cross-Transformer的检测模型,没有深度卷积网络。在transformer[40]中建模长期依赖的能力不仅可以捕获一个分支中的丰富上下文,还可以捕获另一个分支中的相关上下文,从而鼓励两个分支之间的相互对齐。如图1所示,模型基于两阶段检测模型FasterR-CNN。没有为查询和支持输入分别提取深度视觉特征,而是使用多层深度Cross-Transformer来联合提取这两个分支的特征。在Cross-Transformer层中,作者提出了非对称批量大小Cross-Transformer来聚合来自不同批量大小的两个分支的关键信息,并利用聚合的关键信息使用自注意来更新两个分支的特征。因此,可以对齐来自每个Cross-Transformer层中的两个分支的特征。然后,在对查询图像进行联合特征提取和建议生成后,在检测头提出了一种基于Cross-Transformer的RoI特征提取器,联合提取查询建议和支持图像的RoI特征。在特征主干和ROI特征提取器中合并Cross-Transformer,可以在很大程度上促进查询和支持输入之间的多级交互(对齐),从而进一步提高最终的FSOD性能。
ViLT [24]和本模型(FCT),两者都使用transformer来联合提取两个分支的特征。首先,ViLT以语言和原始图像作为输入,高度抽象的语言token在每一层都与视觉token进行交互。然而,视觉token在一开始就代表了低级概念,并在深层中演变为高级概念。与ViLT不同的是,FCT输入两个视觉图像,探索两个视觉分支之间的多层次交互,逐渐从低级特征过渡到高级特征。其次,FCT关注密集预测任务FSOD,而不是ViLT中的分类和检索任务,并将Cross-Transformer纳入特征主干和检测头。第三,ViLT在ViT [7]之后提取视觉embeding,并在整个模型中使用相同数量的embeding。FCT采用金字塔结构[43]提取多尺度视觉token,并提出了不同批大小分支的非对称批交叉注意,以降低计算复杂度。
作者的贡献可以总结为: (1)第一个探索和提出基于vision transformer的少样本目标检测模型。(2)提出了一种新的特征主干和检测头的全Cross-Transformer,以鼓励查询和支持之间的多层次交互。还提出了跨分支的非对称批化交叉注意。(3)在两个广泛使用的FSOD基准上综合评估了所提出的模型,并实现了最先进的性能。
Few-Shot Learning. 少样本学习(FSL)的目标是仅通过很少的例子来识别新的类。FSL的关键思想是将知识从多样本的基类转移到少样本的新类。现有的少样本学习方法大致可分为以下三类: (1)基于优化的方法。例如,模型不可知的元学习(MAML [9])学习了一个良好的初始化,以便学习者可以在几个优化步骤内快速适应新的任务。(2)基于参数生成的方法[10,22]。例如,Gidaris等人[10]提出了一个基于注意力的权值生成器来生成新类的分类器权值。(3)基于度量学习的方法[30,34,37,41,50]。这些方法从基类中学习一个可推广的相似度度量空间。例如,原型网络[34]通过对少数样本的特征进行平均来计算新类的原型,然后通过最近邻搜索进行分类。
Few-Shot Object Detection. 少样本目标检测不仅需要通过一些训练例子来识别新目标,还需要定位图像中的目标。现有的工作根据模型架构主要可分为以下两类: (1)基于单分支的方法[36,45,47,51,52]。这些方法试图利用来自数据丰富的基类和数据稀缺的新类的长尾训练数据来学习目标检测。检测头中的最终分类层由要检测的类的数量决定。为了处理不平衡的训练集,重采样[45]和重加权[27]是两种主要策略。 本文介绍了多尺度正样本细化[47]、图像幻觉[51]、对比学习[36]和语言语义知识[52]来辅助FSOD。(2)基于Two branch的方法[8、12-14、20、23、49]。这些方法基于siamese网络并行处理查询和支持,并计算图像区域(通常是建议)和检测的少样本示例之间的相似性。双分支范式是一个很有前途的FSOD解决方案。本文的工作也属于这一类,并提出了一个纯的Cross-Transformer模型来最大程度地利用这两个分支之间的相互作用。
在少样本目标检测(FSOD)中,我们有两组类和,其中基类Cbase每个类有大量的训练数据,以及新类Cnovel(a.k.a.支持类)对于每个类只有很少的训练示例(a.k.a.支持图像)。对于K-shot(例如,K = 1,5,10)目标检测,对每个新类c∈Cnovel的k个边界框标签作为训练数据。FSOD的目标是利用数据丰富的基类来帮助检测少样本的新类。
本文提出了一种基于Cross-Transformer(FCT)的少镜头目标检测模型。我们的工作属于基于双分支的少样本目标检测方法。其动机是,虽然传统的基于双分支的方法[8,12,13,20,23,49]显示了良好的结果,但查询和支持分支的交互只局限在检测头,而在跨分支交互之前,在每个分支中留下数百层单独的特征提取。作者的想法是删除单独的深度特征编码器,并最大限度地充分利用跨分支交互。
图2说明了我们的模型的概述。我们的模型是基于Faster R-CNN目标检测框架。在Faster R-CNN中,模型有一个特征主干来提取输入的深度视觉特征。然后利用提取的特征生成提案,并根据检测头提取每个提案的RoI特征,并进行分类和边界框(bbox)细化。受最近的视觉转换器和视觉语言转换器的启发,我们提出了一种纯的基于纯Cross-Transformer的少样本目标检测模型,而不需要深度卷积网络。具体来说,Cross-Transformer被合并到特征主干和检测头中。在3.3节中展示了如何使用我们的跨变压器特征主干联合为查询和支持图像提取特征,类似地,在3.4节中,展示了我们的跨transformer检测头的细节。在第3.5节中介绍了模型训练框架。
模型在特征主干网中有三个阶段的跨transformer模块,分别用于联合进行查询和支持输入的特征提取。在第一阶段, 输入(batch=1)的查询图像和(不同batch)的支持图像,首先先将原始的RGB图像分割成不重叠的4×4×3补丁。然后将扁平的补丁通过线性补丁嵌入层,并投影到C1维。两个分支的嵌入补丁序列和被输入几个跨跨层。第二阶段和第三阶段与第一阶段具有相似的架构,并随着序列长度的逐渐减少和信道尺寸的增加而生成特征图。
在transformer之后,Cross-Transformer由提出的多头非对称批交叉注意和两个前馈层组成,包括LayerNorm(LN)、GELU非线性和之间的残差连接。
位置编码: 将位置嵌入的、和分支嵌入的添加到输入的补丁序列Xq和Xs中,以保留位置和分支信息
为了降低注意力的计算复杂度,特别是在早期层,参考PVT,使用空间缩减操作对K和V的特征图进行子采样。另一个好处是,我们可以使用子采样的K和V来总结关键信息,
The Asymmetric-Batched Cross-Attention. 查询分支和支持分支的批处理大小有所不同。我们分别对每个查询图像执行检测,因为不同的查询图像是无关的,并且检测是相互独立的。对于支持分支,新的类也会被逐个处理,但是一个类的支持图像的数量可能是任意的。每次只转发查询映像和支持映像并对每个支持映像重复此过程的简单实现可能非常慢。因此,作者提出了非对称批处理交叉注意的方法来一次性计算查询图像与同一类的所有支持图像之间的注意力。
如图3所示,交叉注意层聚集了来自两个分支的关键信息(K-V对)来进行注意。为了将从支持分支到查询分支的K-V对进行聚合,首先对多个支持映像进行平均池化,以匹配查询分支的批处理大小,然后将两个分支的K-V对连接起来。类似地,为了将从查询分支到支持分支的K-V对聚合,首先沿着批处理维度重复查询图像b次,然后将两个分支的K-V对连接起来,
其中[·,·]默认情况下表示沿标记维度的连接,REP(A,b)默认情况下表示将张量A沿批处理维度重复张量b次。
因此,多头不对称批量交叉注意可以概括为:
然后将前馈网络应用于每个具有更强特征表示的补丁,遵循[40],
首先根据Faster R-CNN生成类的建议查询图像,并使用RoIAlign 进行对建议框截取,,对支持图像做相同的处理
(默认为Bp=100,H 0 = W 0 = 14为RoIAlign后的默认空间大小)。
然后,RoI特征提取器,也是Cross-Transformer的第四阶段,共同提取提案的RoI特征,并在最终检测之前支持图像。为了降低计算复杂度,取所有支持图像的平均值,使(bs=1)。使用提出的非对称批交叉注意来计算两个分支fp和f0的注意,在特征主干中类似。不同之处在于,查询建议的批处理大小是针对支持分支的Bp≥1和B 0s = 1,而在主干分支中则相反。
在联合RoI特征提取后,我们使用[8]中的成对匹配网络进行最终检测。采用二值交叉熵损失和bbox回归损失进行训练。
我们遵循Faster R-CNN目标检测框架,并且模型中不使用FPN [26]。作者发现,使用FPN并不能提高性能,特别是对于基于双分支的FSOD方法[3,8,12,20,48,49]。检测头中基于Cross-Transformer的RoI特征提取器可以鼓励查询建议和支持图像之间的相互对齐,这对于最终的成对匹配至关重要。
模型训练三步骤:
Pretraining the single-branch based model over base classes. 在第一步中,在不使用Cross-Transformer的情况下对模型进行了预训练。具体来说,使用Faster R-CNN模型,并且只使用基类数据集来训练模型。
Training the two-branch based model over base classes. 然后,使用基类数据集训练提出的基于双分支的模型,在第一步由预训练的模型初始化。FCT模型可以重用第一步学习到的模型的大部分参数。第一步中良好的初始化点可以简化FCT模型的训练。
Fine-tuning the two-branch based model over novel classes. 最后,我们按照之前的工作[8,45],对基类和新类的下采样数据集进行FCT微调,每个类有k[8,45]-shot样本。通过在训练过程中看到几个例子,微调可以在很大程度上提高模型对新类的适应性
4.1. Datasets
PASCAL VOC. 根据之前在[23,45]中的工作,我们有三个基本类别和新类别的随机分区。在每个分区中,20个PASCAL VOC类别被类似地分为15个基类和5个新类。对[36,45]之后的少数样本图像进行了采样,并报告了样本数1、2、3、5和10下的AP50结果。使用与[23,45]完全相同的少样本图像来报告单次运行的结果和多次运行的平均结果。
MSCOCO. 使用20个PASCAL VOC类别作为新类,剩下的60个类别是基类。我们对[36,45]后的少镜头图像进行了采样,并报告了[12,31,45]后的样本数为1、2、3、5、10和30下的检测精度AP。使用与[23,45]完全相同的少样本图像来报告单次运行的结果和多次运行的平均结果。在第4.3节中使用2/10/30镜头下的MSCOCO数据集进行消融研究。
PVTv2
Single-branch baseline model versus Two-branch baseline model.
基于双分支的模型使用两个骨干中的任何一个都优于单分支模型,特别是在极少的样本设置下,例如2/10镜头。其原因是基于单分支的模型容易对少镜头训练数据进行过拟合,而基于双分支的模型通过学习对少镜头类的查询区域进行比较,具有较强的泛化能力。
How do each of the cross-transformer blocks help for FSOD?
我们在表1(e-j)中研究了四个cross-transformer的功能。(1)我们只进行了使用一个cross-transformer阶段的实验,并将其他三个阶段单独处理。结果表明,由于两个分支的相互对齐和特征融合,所有四个cross-transformer都是有效的。在所有四个阶段中,检测头的阶段改善最大。这是因为FSOD的目标是将提案特征与支持特征进行比较,而阶段4在最终比较之前统一了两个分支的RoI特征提取。 (2)使用前三个阶段导致了跨transformer特性主干(表1 (i)),与单独使用这些阶段相比,这进一步提高了性能。最后,FCT(表1 (j))通过cross-transformer特性骨干和检测头取得了最好的结果。(3)这四个阶段的cross-transformer mask的可视化如图4所示。从图4中,有以下观察结果: i)在早期阶段(例如,阶段1),注意力掩模分布在颜色和纹理相似的区域上,使两个分支的低级特征空间对齐。ii)在后期,注意掩模更多地关注与语义相关的局部区域,从而将两个高级特征空间对齐
The comparison of model performance using different backbones.
基于PVTv2-B2-Li的模型与PVTv2-B2具有非常相似的性能,并且在训练/测试速度上更快。因此,默认使用PVTv2-B2-Li。
The importance of the three-step training framework.
前面提出三个可以进行模型训练的步骤。第一步和第二步都是预训练,在丰富的数据基类上执行。我们在表3中进行了使用第一步预训练的实验。使用单分支的预训练可以有很大的改进。这是因为具有多类分类器的单分支方法能够在大规模基类训练数据上能够学习更强的特征主干,基于双分支的方法通过学习如何比较更适合于少样本场景。因此,在训练的前两步中结合了这两种方法的优势。第一步的预训练模型可以提供良好的初始化,这有助于简化第二步的训练。
与基于单分支的方法相比,在多次运行设置下取得了第二好的结果。DeFRCN [31],报告了多次运行的最佳结果,这是一种高度优化的基于单分支的方法。它提出了一个梯度解耦层,通过梯度来调整主干、RPN和R-CNN的解耦程度,以及一个后处理原型校准块。与此不同的是,FCT提出了一种新的基于双分支的FSOD模型,并在最具有挑战性的MSCOCO 1镜头设置中获得了最好的结果。这是FCT因为不学习新类上的多类分类器,而是学习查询和支持之间的类不可知的比较网络,这是在所有类之间共享的。因此,该方法可以缓解1镜头设置下的数据稀缺问题,提高模型的泛化能力。