第2章 复杂场景下小目标检测与识别的相关技术

2.1 传统场景下常规目标检测与识别

本章首先梳理了传统场景下常规目标检测与识别的相关技术,该部分相关技术由检测与识别基本模块及其主流框架组成。然后从信息增强、上下文信息两个方面,针对复杂场景下小目标检测与识别研究展开讨论。

2.1.1 检测与识别的基本模块

基于CNNs的检测识别算法由区域推荐模块、边框分类和回归模块组成。

1.区域推荐模块

区域推荐模块在目标检测与识别中发挥着非常重要的作用。该模块将物体存在的潜在区域以一组矩形边界框的形式输出,随后对这组物体潜在区域进行分类或回归。

本节将区域推荐方法分为经典图像处理方法、基于锚点的监督学习方法和基于关键点的方法。

1)经典图像处理方法

经典图像处理方法尝试根据低级视觉线索,在图像中生成物体存在的潜在区域。这些方法归纳为3个步骤:①计算候选框得分;②合并原始图像中的超像素;③生成多个前景和背景区域。

基于物体打分思路预测每个候选框可能包含一个物体的概率。Arbelaez等人根据视觉线索(如颜色对比)、边缘密度和显著性计算候选框的评分。Rahtu等人引入了更有效的级联学习方法对候选方案的客观性得分进行排名。

超像素合并的思路尝试合并分割所产生的超像素块。选择性搜索[45]是一种基于合并超像素的区域推荐算法,该方法以颜色和区域为线索根据[82]的分割结果进行合并,将边界框放置在合并的区域上。与前面方法的区别是学习合并功能的权重。由于选择性搜索方法的效率高,目前该方法已经广泛应用于检测框架中,并且与其他传统方法相比,具有召回率高的优势。

种子分割算法从多个种子区域开始,对每个种子都会生成前景和背景区域。为了避免建立分层分段所带来的巨额计算量,CPMC[84]产生了一组由不同种子初始化的重叠片段。每个候选区域都被看作一个二分类问题,即前景或背景。Enreds和Hoiem结合了选择性搜索[45]和CPMC[84],从超像素分割算法开始,然后合并区域用作种子,来产生更大的区域,类似CPMC。但是,生产高质量的分割算法非常耗时,不适用于大规模数据集。传统计算机视觉的主要优势是方法原理简单,可以生成具有较高召回率的推荐区域,如在中等规模的数据集上,如PascalVOC。但是,上述方法主要基于低级视觉提示,如颜色或边缘,这些方法不能与整个检测模块共同优化,因此,无法利用大规模数据集的功能来改善表示学习。

2)基于锚点的监督学习方法

基于锚点的监督学习方法根据预先定义的内容生成推荐的锚点。Ren等人提出的区域推荐网络(Region Proposal Network,RPN)使用3×3卷积核将该网络滑过了整个特征图,以监督学习的方式在深度卷积特征图上生成潜在区域。该方法考虑了锚点尺寸和纵横比,对于特征图的每个位置均设置k个锚点。这类不同的锚点尺寸和纵横比,可以匹配图像中不同尺寸的目标。根据真值标签(Ground Truth,GT),将物体位置与最合适的锚点匹配作为监督信号。每个锚点均提取256维特征向量,并将其送入两个同级分支分类模块和回归模块。分类模块用于评价物体类别得分,回归模块输出4个实数值作为物体所在位置估计。根据GT,预测每个锚点是目标还是背景。单发多盒检测器(Single Shot Multi-Box Detector,SSD)[42]也采用了类似RPN的锚点匹配的思路,SSD为每个锚定分配了潜在区域的分类概率,并在下个阶段首先评估潜在区域是前景还是背景。尽管基于锚点的监督学习方法取得了令人满意的检测与识别性能,但锚点的参数是通过启发式方式手动设计的,具有多个比例和长宽比,不同的数据集需要不同的锚点设计思路,因此,这些设计可能并不是最佳的选择。Zhang等人提出了一种基于SSD的单次缩放不变面部检测器,该检测器根据不同特征图的有效感受野[88],设计了不同的锚定规则用来匹配不同的目标。朱等人介绍了一种通过扩大输入图像尺寸并减小锚距来匹配小物体的锚设计方法。Ghodrati等人开发了Deep Proposals,该方法预测了有关低分辨率深层特征的目标潜在区域,然后将上述候选区域投影至高分辨率浅层特征图中,并在其中进行进一步完善。Redmon等人通过学习先验来设计锚先验使用k均值聚类的训练数据。后来,张等人引入了单发细化神经网络(ingle-Shot Refinement Neural Network,RefineDet),RefineDet首先根据原始的手工设计锚点和这类锚点通过学习的偏移量进行细化;然后学习一组新的本地化偏移量,进一步精炼锚点,这种级联的优化框架极大地提高了锚点质量和最终的预测精度。蔡等人提出的Cascade-RCNN采用了与RefineDet类似的思想改进锚点的级联的方式。

3)基于关键点的方法

基于关键点的方法分为基于角点的方法和基于中心的方法。

Denet以概率的方式重新提出了目标检测问题,建模了分布角类型的对象(左上、右上、左下、右下),并在对象的每个角上应用朴素贝叶斯分类器以估计边界框的置信度得分。这种基于角点的方法不仅消除了锚定问题,而且还更有效地生成了高质推荐区域。后来基于Denet的方法,Law和Deng提出了CornerNet,该方法直接对角上的分类信息进行建模。CornerNet建模的左上角信息的右上角和右下角具有新颖的特征嵌入方法和角池层,可正确匹配属于同一对象的关键点,从而获得最新的结果公开基准。

对于基于中心的方法,在每个位置上预测物体中心位置,并物体的高度和宽度直接回归,无须任何锚点先验。朱等人提出了一个无须功能选择锚(FSAF)的框架,插入具有FPN结构的一级检测器。与FSAF类似,Zhou等人提出了一个基于单个沙漏网络的基于中心的新框架,其没有FPN结构。此外,他们应用了基于中心的方法解决更高层次的问题,如3D检测和人体姿势识别,并全部获得了最新技术成果。段等人提出了CenterNet,该方法结合了基于中心的方法和基于角点的方法的思想,与基准方法相比,CenterNet取得了显著进步。

总之,区域推荐技术通过减少潜在候选区域的搜索空间,缩短了检测算法的处理时间,对于保证算法的快速性至关重要。

2.边框分类和回归模块

在基于滑动窗口的物体检测框架中,算法的本质是对图像子区域进行逐一分类。图像分类是计算机视觉的根本任务之一,在图像分类的相关研究中几乎涵盖了所有适用于分类的机器学习算法。由于背景的干扰和小目标区域特征提取困难,直接使用神经网络分类器对复杂场景下的小目标进行分类是不可行的。

对于目标潜在区域,除了可以进行分类操作,还可对区域的范围进行细微的调整。当检测框离物体边框较近时,可以采用边框回归算法对检测框进行微调。在当前的物体检测框架中,边框回归已经成为默认使用的组件文献[18,23,63,64]。在边框回归中,本部分使用回归方法调整检测框的位置,包括大小和长宽比。

式中,(x,y),w,h分别为检测框方向的中心、宽度和长度;xt,xs分别对应目标框和初始框;(tx,ty,tw,th)是作为回归目标的四维向量。在训练阶段,算法以检测框内子图像为输入,以(tx,ty,tw,th)为回归目标训练回归器,如回归树、支持向量回归、神经网络等。在测试阶段,回归器根据输入图像内容,取得输出;输出经过反参数化,对检测框进行微调。

目标检测结果有两种形式,分别为对象检测(矩形框)和实例分割(像素级)。对象检测已得到一定的研究,是传统的检测设置,目标是通过矩形边界框定位对象。在对象检测算法中,仅需矩形框注,在评估过程中,需要预测边界框与标准之间的交并比(Intersection over Union,IoU),计算GT预测区域的覆盖程度。不同于对象检测结果,实例分割是一种新型的结果输出形式,检测结果输出的并不是粗糙的矩形,实例分割需要对边界框中每个像素进行精确分类。由于像素级的预测更加精确,因此,实例分割对空间未对准更加敏感,对空间信息的处理有更高的要求。实例分割的评估指标除了在掩码预测上执行IoU计算,其他功能几乎与bbox级检测相同。

2.1.2 检测和识别的框架

基于CNNs的物体检测器分为双阶段检测器和单阶段检测器两大类。双阶段检测器首先生成一组稀疏分布的目标潜在区域,然后通过深度CNNs 对目标潜在区域的特征向量进行编码,最后进行对象类别预测。单阶段检测器没有单独的候选区域生成阶段,它们通常会考虑将整幅图像作为潜在对象,并尝试将每个区域分类为背景或目标类型。双阶段检测器在许多公共数据集上可达到最前沿的检测性能,然而它们通常不具备较高的处理速度。虽然,单阶段检测器面向实时目标检测器的应用,但与双阶段检测器相比,其性能相对较差。

1.双阶段检测器

双阶段检测器将检测任务分为区域推荐和候选区域预测两个阶段。在区域推荐阶段,检测器试图寻找图像中所有可能包含物体的区域。在候选区域预测阶段,使用类别标签信息作为模型监督信息,训练基于CNN的深度学习模型并对候选区域进行分类,该区域可以是背景,也可以是预定义的类标之一。接下来,回顾一些极具影响力的两级检测器。

Girshick等人提出了RCNN,该检测器是开创性的双阶段目标检测器。2014年,Felzenszwalb等人提出了基于传统检测框架的SegDPM检测器。当时,在VOCImageNet数据集上,state-of-the-art方法的mAP为40.4%,而RCNN显著地提高了检测结果,其mAP为53.7%。RCNN的检测过程分为候选区域生成、特征提取和候选区域分类3个部分。对于每幅图像,RCNN首先会生成一组稀疏候选区域(约2000个区域),用于剔除容易被识别成背景的区域。然后,裁剪每个推荐区域并将其调节为固定大小,之后编码为固定维度的(如4096维)特征向量。紧接着,将该特征向量送入SVM,进行特征分类。最后,使用提取的特征作为输入来回归边界框,以便推荐区域的边界框紧紧地绑住物体。与传统手工的特征描述符相比,深度神经网络生成分层特征并捕获不同层中的不同比例信息后再分类。基于迁移学习理论,RCNN在ImageNet上,预先训练卷积网络的权重,再重新初始化一个完全连接的层用于最终的检测任务,微调预训练模型。实验结果显示,将Imagenet数据集的知识迁移至新的任务,可显著提高检测识别性能。

受空间金字塔匹配思想[46]的启发,文献[47]提出了SPP网络,它能够提高RCNN网络的处理速度并提高特征的区分能力。SPPNet采用区域推荐网络产生候选目标,并将这些候选区域输入到CNN模型中,使用深度卷积神经网络计算图像的特征图,并提取固定长度的特征向量。SPPNet将特征图划分为N×N的网格,用于获取N个值(允许获取不同位置的信息),并在网格的每个特征元素上执行合并操作,从而给出固定长度的特征向量。给每个N×N的特征向量连接网格中的全连层,以给出该区域的特征表示,提取的特征被反馈到SVM分类器和边界框回归器中。与RCNN相比,SPP层可以处理各种纵横比例的图像,但不调整它们的大小。因此,该网络不会受信息丢失和几何失真的影响。

尽管在检测器的学习策略方面取得了不小的进展,但区域推荐阶段仍然依赖于传统方法,如SelectiveSearch[45]或EdgeBox[48],这类方法统一基于低级视觉,无法以数据驱动的方式进行学习。为了解决该问题,文献[34]提出了Faster RCNN的检测网络,该网络设计了新型区域推荐网络——Region Proposal Networ(RPN),RPN可以通过下列方式学习有监督的学习方法。RPN是一个完全卷积的网络,它可以输入任意大小的图像,并在特征图的每个位置上生成一组候选区域。该网络使用N×N的滑动窗口在特征图上滑动,并为每个位置生成特征向量。然后,将特征向量馈入两个同级输出分支,即对象分类层(根据对象分类层是否对提案进行分类确定其是否为对象)和边界框回归图层,再将上述结果输入到实际对象的最后一层,进行分类和边界框的回归。RPN可以插入至FastRCNN中,整个框架可以将大量训练数据按照端到端的方式对整个检测网络进行训练。RPN支持以数据驱动的方式生成候选区域,还能提升深层骨干网络的区分能力。提速后的RCNN能够在GPU上达到5FPS的预测速度,并在许多公开基准数据集上,获得了最前沿的检测和识别结果,如PascalVOC2007、PascalVOC2012和MSCOCO。当前,有大量基于Faster RCNN的变体检测器用于不同的计算机视觉任务[39,49-51]

快速的RCNN特征算子计算输入图像的特征图,并在特征图上计算推荐区域的特征,在不同区域之间采用共享计算的方式进行特征提取。然而,这种计算共享在区域分类阶段没有共享,每个特征向量依然需要经过一个全连接层区分开。由于每幅图像可能有成百上千的候选区域,因此,计算量可能非常大。深度网络会减少候选区域的空间信息,所以简单地去除全连接层会导致检测性能急剧下降。戴等人提出了基于区域的全卷积共享计算网络(RFCN),用于区域推荐过程。RFCN生成了位置敏感打分图,该打分图将不同类别的相对位置信息进行编码,使用位置敏感的ROI合并层(PSROI池化),通过编码目标区域的每个相对位置来提取空间感知区域特征。

在DCNN特征表示中,深层特征在语义上很强,但是在空间信息上表示能力较弱,而浅层特征在语义上较弱但空间信息上较强。Lin等人基于该属性提出了将深层特征与浅层特征相结合的特征金字塔网络(FPN)特征图,用于检测不同比例的目标。本部分的想法是利用深层的语义信息增强浅层特征的表达能力。FPN在检测多尺度物体方面取得了重大进展,并已广泛用于许多其他领域,如视频检测[53-54]和人体姿势识别[55-56]等。

大多数实例分割算法均是物体检测算法的改进变形。早期方法[57-59]通常生成的细分类的候选区域,然后通过RCNN快速进行细粒度分类。后来,戴等人提出了一种称为MNC的多阶段学习算法,该算法将整个检测框架分为多个阶段,并预测边界框的候选区域,随后由区域分类器对其进行分类。上述早期工作以多种方式执行bbox和mask预测。为了提高算法整个过程的灵活程度,He等人提出了MaskRCNN,可预测物体的边界框和并行细分模板。基于MaskRCNN,Huang等人提出了一个具有高质量区域得分的感知框架,名为Mask Scoring RCNN,预测模板的质量并校准模板之间对于未对准置信度的分数。

2.单阶段检测器

双阶段检测算法由区域推荐和候选区域预测两个阶段组成。与双阶段检测算法不同,单阶段检测算法没有用于区域推荐的单独阶段。双阶段检测算法通常将图像上的所有位置视为可能出现的候选区域,并尝试将每个推荐的区域分类为背景或目标对象。

早期较为成功的基于深度学习的单阶段检测算法由Sermanet等人提出。分类网络输出网格在输入的每个区域上进行预测,从而指示对象是否存在。识别目标之后,通过学习回归器优化物体边界框的位置。为了检测多尺度目标,将输入图像调整为多个尺度后再送入网络进行检测。

后来,Redmon等人开发了一种称为YOLO的实时检测器。YOLO将目标检测任务视为回归问题,在图像空间上将整个图像划分为固定数量的网格单元,如使用7×7网格,每个单元存在一个或多个潜在目标。在最原始的算法实现中,每个单元格被认为包含最多两个对象。对于每个单元格,做出的预测包括以下信息:该位置是否包含物体,边框的坐标和大小(宽度和高度),以及对象的类别。整个框架是一个单一的网络,它省略了候选区域的推荐过程,该步骤优化了端到端的方式。基于精心设计的轻量级架构,YOLO可以做到预测速度45帧/秒,使用更简化的特征提取网络速度达到155帧/秒。但是,YOLO还面临一些挑战:①它只能检测到在给定位置的两个物体,很难检测小物体和拥挤的物体[40];②仅最后一个使用特征图进行预测,不适用于以多种比例和纵横比预测对象。