小样本目标检测,即给定一个新类的支持集(support set),该支持集中只有少量的样本,需要在测试集(test set)中检测出所有属于该新类的前景目标。如下图所示,左上角和右上角分别是两个不同类别的支持集样本,自行车和头盔,在下面的查询集(query set)图像中检测出所有属于自行车和头盔这两个类的目标。
在目前一些小样本目标检测算法中,bbox可能会漏检一些目标,或者在背景中生成许多错误的检测结果。作者认为这是由于RPN生成的一些优秀的bbox的分数太低了,使得很难检测出属于新类的目标。
本文主要有两方面的贡献:
目前的一些数据集并不能被直接用于小样本学习的训练,它们有以下几个不足之处:
因此,本文构建了一个新的用于小样本目标检测的数据集。构建过程如下:
本文的数据集中大概有66000个图像和182000个bbox,详细的结构分析如下:
本文的数据集有以下特征:
类别丰富。数据集包括83个父语义,比如哺乳动物、衣服、武器等,每个语义又可进一步分为1000个叶子类别,标签树如下图所示。
具有挑战性的设置。数据集中目标的box的大小和长宽比的变化很大,26.5%的图像至少包含3个目标,并且有大量box的类别并不属于标签系统,即包含大量非目标类别的目标,干扰性很大。
给定包含目标特写的support图像 s c s_c sc,和可能包含类别 c c c的query图像 q c q_c qc,小样本检测任务的目标就是在query中找到所有属于类 c c c的目标,并用bbox把它们框起来。如果support set中包含 K K K个类,每个类有 N N N个样本,那么这就是 K K K-way N N N-shot检测。
本文提出了一种新的attention网络,该网络能够在RPN模块和检测器上学习support set和query set之间通用的匹配关系。上图为网络的整体结构,该网络整体上其实就是一个权值共享的框架,包含两个分支,一个分支用于query set,其它分支用于support set(为方便起见,图中只画了一个support分支)。其中query分支是一个Faster R-CNN网络,包含RPN和检测器。
通过利用这个框架来训练query set和support set之间的匹配关系,从而学习同类别之间的通用知识。除此之外,在这个框架的基础上,还引入了一种新的attention RPN模块和多关系检测器模块,以在query中生成精确的检测结果。
在小样本目标检测中,RPN可以生成相关的box用于之后的检测任务。在这里我们希望RPN不仅要分辨出是前景还是背景,并且还应该能过滤掉不属于support类别的样本。但是如果不提供任何support信息,那么RPN会生成许多与support类别无关的proposal,并因此加重之后的分类任务。为了解决这个问题,本文提出了attention RPN模块,如下图所示,它可以利用support信息来过滤掉大多数的背景box和不属于support类别的box,从而得到一个小而精的候选proposal集。
通过attention机制来向RPN中引入support信息,以产生相关的proposal,抑制不相关proposal的产生。具体的做法是,在depth-wise上计算support特征图与query特征图之间的相似性,然后利用这个相似性特征图进行proposal的生成。 在实际计算中,将support特征图定义为 X ∈ t S × S × C X \in t^{S \times S \times C} X∈tS×S×C,将query特征图定义为 Y ∈ t H × W × C Y \in t^{H \times W \times C} Y∈tH×W×C,那么相似性被计算为:
X X X其实可以看作是一个核,在query特征图上滑动,以进行depth-wise卷积,如上图所示。在这里核的大小 S = 1 S=1 S=1,它是通过对support特征图取平均得到的。然后通过一个 3 × 3 3 \times 3 3×3的卷积,后跟objectiveness分类层和box回归层,得到attention特征,最后将attention特征送入RPN中以生成proposal,这里采用的是RPN顶层的特征。attention RPN的loss L r p n L_{rpn} Lrpn和Faster R-CNN共同加入到网络的训练中。
在R-CNN框架中,RPN模块后面通常会跟一个检测器,这个检测器的作用就是对proposal重新评估和调整。在attention RPN之后,我们也希望有一个具有强大判别能力的检测器能够区分出不同的类别。因此,本文提出了一种新的多关系检测器(multi-relation detector),它能够度量query中的proposal box和support中目标的相似性。如下图所示,这个检测器由3个attention模块组成:
给定大小都为 7 × 7 × C 的 7 \times 7 \times C的 7×7×C的support特征 f s f_s fs,query特征 f q f_q fq,多关系检测器中每个模块的说明如下,注意最终使用三个head的匹配分数之和作为网络最终的匹配分数。
通常小样本学习的训练策略是构建样本对儿 ( q c , s c ) (q_c,s_c) (qc,sc),然后匹配属于相同类别的目标。但是在本文中,作者认为不仅要匹配属于同一类别的目标,还应该能区分不同类别的目标。因此,本文提出了一种新的2-way对比训练策略。
上图说明了不同的匹配结果,一般来说相匹配的都是positive support和query的前景proposal。在2-way对比训练策略中,随机选择一个query图像 q c q_c qc,support图像 s c s_c sc和 s n s_n sn, q c q_c qc和 s c s_c sc具有相同的类别 c c c,而 s n s_n sn的类别是 n n n,和另外两个都不一样,然后将它们组成一个三元组 ( q c , s c , s n ) (q_c,s_c,s_n) (qc,sc,sn),其中 c ≠ n c \neq n c=n,并且在query图像中只有 c c c类目标被标记为前景,其它的都是背景。
在训练时,模型不仅要学习匹配属于同一类的目标 ( q c , s c ) (q_c,s_c) (qc,sc),还要区分不同类的目标 ( q c , s n ) (q_c,s_n) (qc,sn)。由于背景proposal的数量过多,甚至会主导训练过程,因此要控制3种不同的matching pair之间的比例平衡:
控制 ( p f , s p ) (p_f,s_p) (pf,sp)、 ( p b , s p ) (p_b,s_p) (pb,sp)和 ( p , s n ) (p,s_n) (p,sn)的比例为1:2:1,具体来说就是,根据匹配分数分别选择所有 N N N个 ( p f , s p ) (p_f,s_p) (pf,sp)、前 2 N 2N 2N个 ( p b , s p ) (p_b,s_p) (pb,sp)和前 N N N个 ( p , s n ) (p,s_n) (p,sn),然后计算matching loss。在训练时,每个proposal的损失为多任务损失 L = L m a t c h i n g + L b o x L=L_{matching}+L_{box} L=Lmatching+Lbox,其中 L b o x L_{box} Lbox和Fast R-CNN中的一样, L m a t c h i n g L_{matching} Lmatching是二值交叉熵损失。
本文还对比了1-way,2-way和5-way的训练策略,可以看到2-way的效果最好,而5-way的效果甚至不如2-way,作者认为这是因为在训练时只需一个negative support就足够区分不同的类。除此之外,实验还表明attention RPN比常规RPN能生成更好的proposal,并且有助于最终的检测结果。
本文提出了一种新的小样本目标检测网络,有三个创新点,分别是attention RPN,多关系检测器和对比训练策略。并且本文还构建了一个专门用于小样本目标检测的数据集FSOD,包含1000个类别,标注的质量很高。本文提出的模型在FSOD上进行训练,之后不需要微调和重新训练就能检测出属于新类的目标。