冯 珺,彭梁英,赵 帅,潘司晨,郭雪强
(1.国网浙江省电力有限公司信息通信分公司,浙江杭州 310014;2.浙江大学控制科学与工程学院,浙江杭州 310027)
目标检测是对场景中的目标进行分类和定位,即在图片中用方框把待检测目标框出并标示出目标所属的类别。目标检测是计算机视觉的基础任务之一,广泛应用于人们的日常生活,比如人脸检测[1]、目标跟踪[2]、视频理解[3]等。随着深度学习的兴起,基于深度学习的方法成为目标检测的主流方案。基于深度学习的目标检测方案主要包含2大类:单阶段目标检测器和双阶段目标检测器。单阶段目标检测器主要指YOLO(you only look once,你只需要看一次)[4]系列,不需要生成候选框,直接使用端到端的卷积神经网络进行分类和定位。双阶段目标检测器以Faster R-CNN(faster region convolutional neural network,更快的区域卷积神经网络)[5]及其变体为代表,首先通过RPN(region proposal network,候选框生成网络)生成一系列的候选框并对其进行简单分类和定位,然后通过后续的微调网络进行精细分类和定位。与单阶段目标检测器相比,双阶段目标检测器通常具有更高的精确度,因为通过RPN模块可以过滤掉很多的负样本,从而使检测器更容易识别和定位目标,因此小样本目标检测器大多使用Faster R-CNN作为基准网络。
小样本学习的目标是通过少量的训练样本就能够对新的概念进行识别。基于元学习的方法是近些年小样本分类任务的主流方法,通过训练单个任务的元模型来适应小样本的任务,即学习如何学习。基于度量学习的方法在最近的小样本分类任务中取得了很好的效果,它通过匹配网络,将查询图像和支持图像的特征编码为深度神经特征,并对它们执行加权最近邻匹配,通过两者的相似度对查询图像进行分类。最直观的度量包括余弦相似度、到类中心的欧氏距离和图距离等。目前,关于小样本分类任务的研究报道较多,但是针对更复杂的小样本目标检测任务的研究还很少。
传统的目标检测任务需要大量标注的样本,这需要耗费大量的人力;此外,还有一些类别的样本很难获得,比如稀有动植物等,这些都限制了目标检测任务的发展。相比于神经网络而言,人类中的小孩子也能根据一两张图片来记住一个类别。为了缩小神经网络与人类之间的差距,小样本目标检测任务提出在已有目标检测数据集和少量新类数据集训练下,使神经网络能够实现对新类别的分类和定位。
现有的小样本目标检测任务的研究主要包括2种方案:基于孪生神经网络(元学习)的方案和基于微调的方案。基于孪生神经网络的方案先在包含大量样本的基类上对目标检测网络进行训练,然后将小样本类别的图像分为支持集和询问集,其中支持集是同时包含图像和标注的图片,询问集是待检测的小样本图像,之后通过共享权重的特征提取网络得到两者的特征图,再通过特征聚合方式利用支持集的特征来调整询问集的识别网络,并通过损失函数使识别网络收敛,从而实现对小样本目标的检测。基于微调的方案同样是先在包含大量样本的基类上对目标检测网络进行训练,之后冻结一部分网络参数,在同时包含基类和新类(小样本类别)的数据集上微调另一部分的网络参数。现有的基于元学习的小样本目标检测方案在支持图像和询问图像的特征聚合时虽然使用的方式多种多样,但是仍没有很好地解决支持图像特征和询问图像特征之间的关系,很多情况下支持图像的加入反而会对原有的询问图像特征造成破坏,而且当支持集包含多张支持图像时,普遍采用的方法是求平均值的方式,这会损失很多信息。此外,基于微调的小样本目标检测方案在对于图像尺度和类别之间语义关系的处理上仍然没有有效的解决方案。因此,现有的小样本目标检测方法的精度与传统目标检测方法相比仍然有较大差距。
基于以上情况,本文结合当前小样本目标检测的研究情况,重点阐述基于孪生神经网络的小样本目标检测方法,并对基于微调的小样本目标检测方案进行简要概括。此外,为了方便对比,介绍了常用的数据集及其评估标准,在这些数据集和评估标准的基础下比较了一些经典方案的性能。最后,通过总结这些方案的优缺点,指出当前小样本目标检测存在的问题及面临的挑战。
小样本目标检测任务通常是将训练数据集D=Dbase∪Dnovel分为2个数据集Dbase和Dnovel,小样本目标检测任务的目标就是在包含大量基类Cbase样本的基类数据集Dbase和包含少量小样本类别Cnovel样本的小样本数据集Dnovel的训练下,使神经网络能够实现对基类和新类别的分类和定位,其中Cbase和Cnovel没有交集。在小样本目标检测中,目标检测器f(x;θ)利用基类数据Dbase和新类数据Dnovel训练模型来获得对新类的检测能力,之后在测试集上进行测试以检验模型的性能。包含N个小样本类别且每个小样本类别包含K个样本的小样本目标检测问题称为N类别K样本的小样本目标检测问题,对于包含较少类别的小型数据集,每个小样本类别的数目一般不超过10个,对于包含较多类别的大型数据集,每个小样本类别的数目一般不超过30个。值得注意的是,小样本的数量K不一定与图像数量相对应,因为一个图像可能包含多个实例。
1.2.1 基于孪生神经网络的小样本目标检测方法
基于元学习的小样本目标检测方案,即基于孪生神经网络的方案,是一种双分支的小样本目标检测方案。基于元学习的方案是小样本目标检测的主流方案,与此相关的方法有很多。如图1所示,该方法先在包含大量样本的基类数据集上对目标检测网络进行训练,然后将小样本类别的图像分为支持集和询问集,其中支持集同时包含已有的小样本图像及其标签,询问集是待检测的小样本图像,之后通过共享权重的特征提取网络(孪生神经网络)得到两者的特征图,再通过对两者特征图做特征聚合的方式,利用支持集的特征来调整询问集的识别网络,通过损失函数使识别网络收敛,从而实现对小样本目标的检测。基于元学习的小样本目标检测方法的区别主要在于特征聚合的方式以及位置的不同。
图1 基于孪生神经网络的小样本目标检测Fig.1 Few-shot object detection based on meta-learning
有学者提出了一种基于YOLOv2[6]的轻量级元学习小样本目标检测模型,通过共享权重的特征提取网络支持集和询问集的特征,之后用支持集特征图生成的注意力向量加权询问类特征图对两者进行特征聚合,从而调整这些特征[7]。Meta R-CNN[8]是一种基于Faster R-CNN[5]的小样本目标检测框架,通过逐元素相乘的方式利用支持集的特征图来调整询问集的ROI(region of interest,感兴趣的区域)池化模块,使网络对小样本类别更敏感。FSOD[9]也是一种基于Faster R-CNN[5]的小样本目标检测模型,它利用支持集特征调整询问集的RPN生成候选框,从而过滤掉大部分的背景框和不匹配类别的候选框。同样是基于Faster R-CNN,DCNet[10]则是利用支持集的特征图,通过知识蒸馏的方式来和询问集特征图进行聚合,之后进行分类和定位。Meta-DETR[11]将transformer[12]的方法引入到基于元学习的小样本目标检测中,将支持集和询问集特征进行transformer编码后进行聚合,之后再进行transformer解码,大大提升了检测精度。Meta Faster R-CNN[13]在支持图像特征图和询问图像特征图逐元素相乘、相减和相连接之后,将三者分别输入3个包含激活函数的小型卷积网络中,再将卷积网络输出的结果联结在一起作为聚合结果,调整询问图像特征。SQMG[14]通过动态卷积方式,利用支持图像特征调整询问图像特征,该方法首先将支持图像特征图输入到一个核生成器中生成动态卷积的权重,然后利用该动态卷积的权重对询问图像特征图进行卷积操作。
在基于元学习的小样本目标检测方案的基础上,人们提出一种新的训练策略——Attention-RPN[9],它在训练过程中对逐个类别的图像进行训练,因此每次训练时只输入一个类别的支持图像,并在网络最后对Faster R-CNN[5]输出的RoI候选框区域和支持图像做一个特征匹配,从而挑选出匹配度最高的区域。 QA-FewDet[15]是在Attention-RPN的基础上对匹配方式做了改进,使用异构图(heterogeneous graph[16])卷积方式对询问图像的候选框和支持图像的特征图进行度量。FCT[17]则是将特征提取网络从ResNet[18]改为了PVTv2[19],并使用cross-transformer的方式进行特征聚合。
基于元学习的方案能够利用已有小样本目标的信息通过特征聚合方式调整目标检测模型,从而使模型具备对小样本目标的检测能力。但是已有的小样本目标检测方法并没有充分利用小样本信息,对于大于一个样本的小样本都是采用取平均值的方式,这会造成一定程度的信息浪费,而且都是在一个位置进行特征聚合,使得小样本信息不能对网络产生整体效果。
1.2.2 基于微调的小样本目标检测方法
基于微调的小样本目标检测方案是一种新兴方法,经过近两年的发展,取得了不俗的效果。基于微调的方案先在包含大量样本的基类上对目标检测网络进行训练,之后冻结一部分网络参数,在同时包含基类和新类(小样本类别)的数据集上微调另一部分的网络参数。TFA[20]的结构如图2所示,它是一种基于Faster R-CNN[5]的小样本检测框架,也是第1种基于微调的小样本目标检测方案,仅仅通过微调方法就实现了较高的小样本识别精度。TFA先用基类训练Faster R-CNN[5]网络,之后用同时包含新类和基类的数据微调分类头和定位头,而其他部分的参数被冻结。FSCE[21]对TFA做了进一步改进,通过加入聚类的思想使微调范围扩大,模型的识别精度进一步得到了提升。DeFRCN[22]提出了一种解耦的Faster R-CNN[5]模型,通过对模型梯度传播的解耦来微调参数,实现了小样本目标检测识别精度的进一步提升。MPSR[23]同样是一种基于Faster R-CNN的小样本目标检测框架,该框架提出多尺度正样本精炼(multi-scale positive sample refinement,MPSR)方法,通过一个辅助分支来补偿多尺度信息,同时利用巧妙的损失函数设计,通过支持集调整询问集的分类头和定位头,实现小样本目标检测。FSOD-UP[24]使用类似精炼方法,但是加入了差分损失函数,2个分支的特征相似性更高。SRR-FSD[25]将每一个类别的特征映射到一个语义空间,通过新类和基类之间的语义关系来辅助网络对新类进行检测。基于微调的小样本目标检测方案同样有一些缺陷,因为基类信息和新类信息会有一定的差别,在基类上训练的参数并不能完全适应对新类的检测,因此只微调部分参数的方式并不能实现小样本信息的充分利用。
图2 基于微调的小样本目标检测Fig.2 Few-shot object detection based fine-tuning
大部分的小样本目标检测方法使用PASCAL VOC[26]和Microsoft COCO[27]的拆分数据集来进行实验和测试,即将数据集的类别划分为基类和小样本类别,然后根据N类别K样本的方式确定小样本类别的种类和每个类别包含的样本数。PASCAL VOC和Microsoft COCO都是开源的已标注的目标检测数据集,在目标检测和实例分割等任务中有着十分广泛的应用。
2.1.1 PASCAL VOC数据集
PASCAL VOC数据集包含20个类别,通常由VOC2007和VOC2012组成,训练时使用VOC07+12,测试时使用VOC07。在小样本目标检测中,根据Meta R-CNN[8]设定,通常使用其中的5个类别作为新类,其余的15个类别作为基类,根据基类和新类的不同设定,将数据集分成3个子集。同时,针对K-shot问题,每个新类包含K个样本,通常取K=1,2,3,5,10。
2.1.2 Microsoft COCO数据集
Microsoft COCO是比PASCAL VOC更大的数据集,因此识别难度也更大。Microsoft COCO包含80个类别,通常将与PASCAL VOC相同的20个类别作为新类,而剩余的60个类别作为基类来划分数据集。同时,针对K-shot问题,通常取K=10,30,在某些极少样本的情况下也会取K=1—5。
与传统目标检测的技术指标相同,小样本目标检测的技术指标主要包括AP,AP50和AP75。AP,AP50和AP75指的是在IoU(交并比)分别取[0.5:0.05:0.95]、0.5和0.75时各个类别识别准确率的均值,其中[0.5:0.05:0.95]指的是IoU从0.5开始每隔0.05一直取值到0.95,然后取均值。其中IoU指的是识别出的检测框和目标实际的检测框(指手动标注的检测框)之间的交集面积和并集面积的比值。mAP,mAP50和mAP75分别表示AP,AP50和AP75在所有类别上求均值。PASCAL VOC数据集一般用mAP50来作为评估标准,为了使结果更有说服力,同时减少因为样本选取而带来的结果不稳定性,TFA[9]提出了修订的评估标准,其中的结果平均了30次,每次使用随机抽取的小样本目标来作为小样本数据集;此外,TFA还报告了因为忽略基类的性能可能会导致潜在的性能下降,因此会同时评估模型在基类和新类上的性能。Microsoft COCO数据集一般使用mAP,mAP50和mAP75作为评估标准,mAP75更严格,因为当检测框与真实框大于0.75时,检测才视为正确。某些方法还报告了平均召回率AR1,AR100和AR1 000,它们分别为1,100或1 000个图像检测。中小型、中型和大物体(APS,APM,APL,ARS,ARM,ARL)也可以使用平均精度和平均召回率。
为了充分对比基于孪生神经网络的小样本目标检测方法,本文使用经典的PASCAL VOC数据集和Microsoft COCO数据集上的结果来进行对比,基类和新类的划分也采用前边提到的经典划分方式。此外,对每种方法的基准检测网络做了备注。所有的结果均来自于论文结果和作者开源代码复现结果,表1是PASCAL VOC上的结果对比,它包含3种不同的新类划分,以及5种样本数划分[26];表2是Microsoft COCO上的结果对比,包含10个样本和30个样本2种样本数的结果[27]。
表1 模型在PASCAL VOC上的准确率对比Tab.1 Comparison of model accuracy on PASCAL VOC 单位:%
表2 模型在Microsoft COCO上的准确率对比Tab.2 Comparison of model accuracy on Microsoft COCO 单位:%
尽管大部分的小样本目标检测模型都是基于双阶段的目标检测器Faster R-CNN[5],但是双阶段目标检测器比较复杂,且生成的候选框很多都是背景,因此在哪个位置聚合询问集和支持集的特征就比较重要。相比之下,单阶段目标检测器不需要生成候选框,因此只需直接在特征提取网络之后、分类和定位网络之前进行特征聚合,FSRW[6]便是一种基于YOLOv2[7]的小样本目标检测框架,其特点是轻量化,但受限于基准检测器,模型精度不是很高。类似的,Meta DETR[11]使用的基准框架是基于Transformer[12]的目标检测器DETR[27],同样是在共享权重的孪生神经网络之后进行询问集和支持集的特征聚合,因为基准检测器DETR准确率很高,因此Meta DETR也具有更好的识别精度,但其缺点是模型大,耗费的训练时间和训练资源比较多。
Meta R-CNN[8]是早期以Faster R-CNN[5]为基准的基于孪生神经网络的小样本目标检测框架,主要是在RPN网络之后对支持集和询问集进行特征聚合,采用的特征聚合方式是向量相同位置元素相乘,如式(1)所示。FsDetView[28]是在Meta R-CNN的基础上改进了特征聚合方式,如式(2)所示,除了矩阵相乘外,还加入了询问集和支持集的差值以及询问集特征,使模型精度有了较大提升。DCNet[10]同样是在Meta R-CNN的基础上进行改进,由于在RPN网络之后进行特征聚合会使一部分的新类候选框在RPN网络中被当作负样本过滤掉,因此将特征聚合操作放在了RPN网络之前,共享权重的特征提取网络之后对支持集和询问集的特征进行聚合,采用知识蒸馏的聚合方式,增强了图像中待检测目标的关键信息,同时加入了多尺度聚合模块对不同尺度的特征进行聚合,提升了对不同尺度目标的检测能力。
Φ(fQ,fS)=fQ⊗fS,
(1)
Φ(fQ,fS)=[fQ⊗fS,fQ-fS,fQ]。
(2)
虽然目前小样本目标检测已经取得了较大发展,但相比于传统目标检测,在精度上仍有较大差距,尤其是在极少数样本的情况下,更没有达到人类的水平。而较低的精度又会限制小样本目标检测的实际应用,其仍处于研究阶段,落地比较困难。但是针对极少数样本的情况,目前也有一些小样本目标检测的衍生任务,比如单样本检测,只需针对单个样本的任务进行模型设计,不需要考虑多个样本之间的差异性,虽在单个样本的任务中取得了很好的结果,但仍不能达到落地要求[29]。
由于小样本任务的特殊性,使得样本选择对结果的影响很大,不同的样本和样本组合可能会得到差距很大的结果。因此TFA提出利用多次随机选择样本进行模型训练,之后取平均值的评估方式。此外,关于小样本任务的定义仍不是很清晰,比如在Microsoft COCO上的训练,在基类图片中就包括一些新类的未标注样本,这种情况下新类的样本数是多于指定的任务的。此外,现有的评估方案基本都是针对PASCAL VOC和Microsoft COCO 2个数据集的,并没有针对特定任务来进行数据集和评估标准的设计,因此也没有合适的对比方案。同时,大多数方法都使用ImageNet[30]预训练的模型权重,而ImageNet中包含大部分的新类。尽管这对于传统目标检测很常见,但它对于小样本目标检测具有负面影响:新类不再是真正的新类,因为该模型可能已经看到了此类别的图像。但是,省略ImageNet预训练,即使对于基类,也会导致性能较差。针对这些问题,目前仍没有较好的解决方案,有些方法提出在预训练和基类训练的过程中剔除包含新类的图片,但是这需要针对每一个小样本数据集都进行一次预训练,显然需要耗费大量的时间和精力。
本文基于小样本目标检测的任务和目标,介绍了基于孪生神经网络的小样本目标检测方案,并简要介绍了其他一些小样本目标检测方法,在此基础上,对几种经典方法进行了对比,分析了各自的优缺点。
本文是第1篇系统概括基于孪生神经网络小样本目标检测的中文综述文章,可为小样本目标检测的深入研究以及落地应用提供参考。由于篇幅有限,本文仅对基于孪生神经网络的小样本目标检测模型的实现方式与效果进行了概括。虽然现有的小样本目标检测方案仍不成熟,模型精度有待提升,性能评估方案也有待完善,但小样本目标检测有着十分广阔的应用前景,未来必定有更多方法来解决小样本目标检测的现有问题,使其精度达到要求。