郑婷婷,杨 雪,戴 阳
(长安大学 信息工程学院,西安 710064)
目标检测是计算机视觉应用的基础,在图像处理中任务中发挥着至关重要的作用.目标检测是一种利用算法在图像中搜索感兴趣区域的技术,结合了目标分类和定位两个任务.在人脸检测、人体姿势估计、实例分割等领域的到了广泛的使用.
传统的目标检测模型主要包括Haar 特征+Adaboost+Cascade、HOG 特征+SVM、HOG 特征+Cascade、DPM 特征+Latent SVM 等,这些算法虽然推动了目标检测的发展,但仍然存在以下两点问题:一是基于滑窗的区域选择没有针对性,耗时较长,窗口冗余;二是手动标记的特征对于多变的情况具有较差的鲁棒性.随着卷积神经网络的发展,这些问题已经得到了解决.
自2013年Girshick 等[1]提出R-CNN 框架后,在此基础上的一系列框架不断被提出,如Faster R-CNN、Mask R-CNN 等的two stage 框架和YOLO、SSD、RetinaNet 等的one stage 框架,二者都是基于锚框的目标检测.相比传统的目标检测方法,基于卷积神经网络的锚框的方法能够进行更为精细的检测.但使用锚框仍存在以下两方面的问题:一是通常需要一组非常大的锚框,例如:DSSD[2]超过4 万,RetinaNet[3]超过10 万.这是因为检测器被训练用以分类每个锚框是否与真实框尽可能的重叠,所以需要大量的框以确保与大多数的真实框最大程度的重叠.最终只有一小部分框与真实框重合,这会导致正负样本的不平衡,并减慢了训练的速度.二是使用锚框会引入许多超参数的组合问题,即已有方法把目标在哪和目标有多大绑在一个框里,通过局部分类器一次性判断各种不同大小、不同比例的框是否为目标,这会造成超参数的组合问题.同时,超参数通常与检测任务和数据集相关,难以调优和通用.
而anchor free的目标检测可以消除框,改善锚框带来的各种问题,进行更快、更精细的检测.所谓基于关键点的anchor free的目标检测,其实质就是使用one stage 网络将目标边界检测为一对关键点.通过将目标检测为成对关键点,就可消除现有的one stage 检测网络中对一组anchor的需要.为进一步了解近期anchor free的目标检测关键技术的发展进程,本文首先综述了基于CornerNet 模型、CenterNet 模型、FCOS 模型3 个不同方向的anchor free 目标检测的主要思想和网络架构,其次对不同模型的优点和不足进行了详细的说明和分析,最后对anchor free 目标检测的现有问题和未来发展趋势进行展望.
基于角点的目标检测方法通过组合从特征图中学习到的角点对,来预测边框.这种方法不需要设计锚框,减少了对锚框的各种计算,从而成为生成高质量边框的更有效的方法.基于角点的anchor free 目标检测模型主要有CornerNet和CornerNet的优化CornerNet-Lite.
Law 等[4]提出了一个基于配对关键点(左上角和右下角)的目标检测方法,算法步骤:(1)使用单个卷积神经网络Hourglass-104[4,5]预测这两个位置的热图集合来表示不同目标种类的角点位置.在角点热图上使用非极大值抑制,选择前k个左上角点和前k个右下角点.该方法中还引入了角点池化,这是一种新型的池化层,其可以帮助网络更好的定位角点;(2)预测一个嵌入向量[6],对每一个检测到的角点,让属于同一类物体的对应角点之间的嵌入向量距离最小;(3)为了产生更紧凑的目标框,预测一个偏置L1 损失[7]来微调角点的位置.该方法的流程图如图1所示.
图1 CornerNet 流程图[4]
依据文献[4]实验结果,该方法在MSCOCO 数据集上实现了42.2%的精确度,效果优于其之前的所有单级检测器,使mAP 有所提高,相较于框的目标检测其必有新颖之处,例如:角点池化,它可以帮助卷积网络更好地定位边界框的角点;嵌入向量,它是对角点进行分组,对于预测到的角点根据它们的嵌入向量之间的距离差异被分成不同的组;损失函数,使用焦点损失函数[3],其重点学习难样本和平衡正负样本以帮助更好的训练网络.
但是在其他方面还有许多不足,例如:在速度上,每张图像的处理时间为1.147 s,这对于需要实时或交互速率的视频来说很慢;在精度上,尽管可以通过减少处理的像素数量来加快处理时间,但是这样会导致精度的大幅度下降;在全局性上,CornerNet 缺乏对物体全局信息的考虑,即因为每个目标物都有两个角点,算法对识别目标物的边界框很敏感,同时又无法确定哪两个角点属于同一个物体,所以会产生一些错误的边框.因此,对于这些问题,Law 等[8]提出CornerNet-Lite的高效目标检测和Duan 等[9]提出CenterNet的关键点三元组进行解决.
CornerNet-Lite的高效目标检测是在CornerNet的基础上进行的优化,是Cornernet的两个高效变体的组合,优化包括两点:(1)CornerNet-Saccade 使用类似于人眼的注意力机制消除了对图像的所有像素进行处理的需要,通过减少像素个数来提高检测速度.CornerNet-Saccade 可以用于线下处理,不用牺牲精度也可提升速度.CornerNet-Saccade是第一个在基于关键点的目标检测方法中使用Saccade的;(2)引入了新的紧凑骨干架构CornerNet-Squeeze,通过减少每个像素的处理量来加速图像处理.它融合了SqueezeNet[10]和MobileNet[11]的思想,并引入了一种新的紧凑型沙漏骨干(54 层,CornerNet的沙漏骨干104 层),广泛使用1×1 卷积,瓶颈层和深度可分离卷积[12].CornerNet-Squeeze 可用于实时处理,提升精确度而无需牺牲速度,是第一篇把Squeeze和沙漏网络组合用于目标检测的文章.
CornerNet-Saccade的算法步骤:第一步是获取图像中可能的目标位置.(1)先把原图进行缩小和裁剪;(2)将缩小的完整图像输入到骨架网络(沙漏网络:卷积、下采样和卷积、上采样)中预测attention maps和检测缩小后的图像中的目标并生成粗边框(两者都提出可能的对象位置).通过使用不同尺度的特征图来预测3 个attention maps,用于小、中、大物体;(3)从预测的attention maps和粗边框中得到可能的目标位置.第二步是检测目标.(1)对第一步(3)的可能位置中选取前k个位置,把这k个位置与对原图裁剪得到的图片进行对应,得到在可能的位置处检测到目标;(2)对检测的结果基于soft-NMS 进行处理,处理方式与CornerNet[4]一样,从而得到目标物的边界框;(3)利用得到的边界框的尺寸来确定目标所在图像的缩放大小,进行目标的合并且大小与原图一致.在训练时,采用与CornerNet 相似的训练损失来训练网络以预测角点热图、嵌入和偏置.CornerNet-Saccade的流程图如图2所示.
图2 CornerNet-Saccade的流程图[8]
CornerNet-Squeeze是CornerNet-Lite 研究的另一个方案,降低每个像素点上处理成本.在CornerNet中,大多数的计算都耗费在Hourglass-104[4,5]上,非常耗时.为了降低Hourglass-104 网络的复杂度,引入Squeeze和MobileNet的思想[10,11],设计了一个轻量级的Hourglass-52.训练CornerNet-Squeeze 使用了与CornerNet 中一样的损失函数和超参数,唯一不同的是batch size.
Squeeze 提出了3 种降低网络复杂策略:(1)用1×1 卷积替换3×3 卷积,减少输入通道的数量;(2)减少3×3 卷积的输入通道;(3)下采样后延(此文没用到),沙漏网络是对称的,延迟下采样会在上采样期间产生更高分辨率的特征图,再执行卷积,会增加计算量.
由文献[6]实验结果可知:(1)在COCO 数据集上CornerNet-Saccade的计算速度比CornerNet 提升了6 倍,且精度提高了1.0%,这说明CornerNet-Saccade在追求高准确率的同时,速度也得到了很大的提高;(2)在COCO 数据集上CornerNet-Squeeze的34 ms 时有34.4%的准确度,而YOLOv3的33 ms 时有33.0%的准确度,提高了当前流行的实时检测器YOLOv3的速度和准确度.
基于中心点的目标检测方法是对特征图的每个位置预测它是目标中心点的概率,并且在没有锚框先验的情况下进行边框的预测.基于中心点的Anchor free目标检测模型主要有CenterNet (中心点和角点)和CenterNet (中心点).
由于CornerNet 缺乏对物体全局信息的考虑,通常会遭受大量不正确的目标边框的困扰,为解决该问题,Duan 等[9]提出了CenterNet的用于目标检测的关键点三元组方法,即在CornerNet的基础上加入一个中心关键点的热图,并预测了中心点的偏置.相较于CornerNet,CenterNet 关键点三元组方法进行了如下优化:(1)确定中心区域的大小,能更准确的定位目标;(2)为了增强中心点和角点信息,提出了中心池化和级联角点池化(丰富了边界和内部信息,而CornerNet的角点池化只有边界信息).该方法提高了准确性和查全率.在COCO数据集上,CenterNet的AP 达到了47.0%,比现有的一级检测器至少好4.9%.
算法步骤:该方法的检测步骤与CornerNet[4]的步骤类似,(1)在CornerNet的步骤(1)中再预测一个中心热图,在热图上采用非极大值抑制,选择前k个中心点.该方法中引入的是级联角点池化和中心点池化;(2)在CornerNet的步骤(2)中添加一个中心偏置;(3)两个角点用来检测潜在的目标框,然后用中心区域判断中心点是否在中心区域内,最后确定最终的边界框的位置.CenterNet的流程图如图3所示.
由文献[9] 实验结果可知,该算法的AP 相较于CornerNet 有很大的提高.但是,基本上所有的目标检测器都会把潜在的目标位置列举出来,并对每一个物体进行分类.这样做是非常浪费时间、低效的,而且还需要额外的后处理,如非极大值抑制等,使网络变得很复杂.而Zhou 等提出的CenterNet[13],即将目标当作中心点来检测不需要这些步骤,极大提高了检测速度.虽然不需要进行非极大抑制等操作,但CornerNet 在完成关键点检测后,还需要将左下角关键点和右上角关键点进行两两匹配,导致检测速度有所下降.
Zhou 等[13]提出的基于CenterNet的将目标作为点的方法规避了低效和额外的后处理等缺点.该方法通过其边界框中心的单个点来表示所检测的目标,然后可以直接从中心位置的图像特征回归其他属性,如目标大小、尺寸、3D 位置、方向甚至姿势.因此,基于中心点的方法相对于其他基于边界框的目标检测器来说,其具有更简单、速度更快和准确度更高的特点.图4所示为在COCO 数据集上该方法与基于框的几种方法在速度和准确度上的比较.
图4 几种方法比较[13]
该算法的流程如下:首先,将图像输入完全卷积网络生成热图,该热图中的峰值对应于目标中心.其次,将输出的热图中每个类别的峰值点单独提取出来,即热图上的所有点与其相连的8的临近点比较,若该点的值不小于其8 个临近点,则该点保留,最后保留满足所有要求的前100 个峰值点.最后,对每个峰值处的图像特征预测得到目标框的高度和宽度信息(根据不同的任务预测不同的属性,如对于3D 边框估计,需要预测目标绝对深度、边框尺寸和方向[14]).该训练网络是单个网络前向传递的,因为每个目标仅有一个中心点,所以没有非极大值抑制等后处理.
将目标作为点的方法对于上述几个基于关键点估计[15]的目标检测器来说,不同之处在于:(1)该方法不需要在关键点检测之后进行组合分组,这明显提高了算法的计算速度;(2)该方法仅仅需要为每个目标预测单个中心点,而不需要进行非极大值抑制后处理;(3)损失函数中不仅有关键点损失(焦点损失[3])和偏置损失,还加入了目标大小损失,这样可以提高算法的准确度.
由文献[8]实验可得,该方法在COCO[16]数据集上实现了速度与准确度的权衡,其中AP为28.1%的模型处理速度达到了142 FPS,AP为37.4%的的模型处理速度达到了52 FPS,AP为45.1%的模型处理速度达到了1.4 FPS.该方法通过预测一个中心点解决了2D和3D 目标检测,以及姿态估计,把这3 个任务很完美的统一到了一起(在这里主要综述了2D 目标检测).虽然该方法简单、快速、准确,但是在训练过程中,如果两个不同的目标重叠了,共享同一个中心点,在这种情况下,CenterNet 会把这两个目标当成一个目标来训练,只会检测其中一个,这样就会存在大量的误检,这是该方法的一个不足.
Tian 等[17]提出的FCOS是一种基于全卷积的单级目标检测器,是像素级别的目标检测,其主要思想类似于语义分割.该方法不需要锚框,因此其完全避开了锚框的缺点.FOCS 仅凭借后处理非极大值抑制,该方法优于之前的基于锚框的一级探测器,其优势在于更简单、灵活,可以提高检测的精度.算法步骤如下:首先,对输入的原始图像进行预处理操作;然后将预处理之后的数据送入主干网络中获取输入数据的feature map,对获得的feature map 上的每一像素点进行回归操作,对网络进行训练以获得网络模型;再将得到的模型用于测试,利用特征金字塔网络进行多级预测,从而得到多个head,从多个head 中可以获得预测的结果;最后使用非极大值抑制后处理获得最终的检测结果.FCOS的流程图如图5所示.
图5 FCOS的流程图[17]
FCOS的新颖之处:(1)在远离目标中心的位置上会产生一些不好的框,FCOS 中为了降低这些不好的结果,引入了Center-ness 分支,即利用中心分支来抑制低质量预测边界框;(2)在网络中,除了最后的预测层,在卷积层中加入了组标准化GN,使得训练更加稳定;(3)FCOS 中,特征金字塔网络中利用P5 生成P6和P7,而不是用骨干网络的C5,这使得网络的性能得到略微的提高.
根据文献[10]实验结果可知,相比于CornerNet[4],FCOS[17]在mAP 上有0.5%的提高.虽然FCOS 性能有略微的提高,但是相对于CornerNet 来说是有优势的,如其主干网络是ResNet-101 而不是Hourglass-104[5],该网络更快更简单;除了非极大值抑制,不需要其他的后处理,而CornerNet 还需要将具有嵌入向量的角点分组等.实验也表明了,FCOS 可以检测到各种各样的物体,包括拥挤、遮挡、高度重叠、极小和极大的物体.
基于深度学习的目标检测算法可分为两大类:基于锚框的目标检测和基于Anchor free的目标检测.目标检测中非常重要的两个性能:精度和速度.本文在VOC2007和COCO 数据集上,分别对这两类目标检测算法进行了性能上的比较和分析.
基于锚框的目标检测算法分为两种:two stage 检测算法和one stage 检测算法.two stage 检测算法中典型的目标检测算法有:R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN 等.从R-CNN 算法到Mask RCNN 算法,它们依次不断地在检测的准确度和速度上进行改进.但是,这些算法的实时性很差,难以满足实际的需求.表1总结了two stage的目标检测算法在VOC2007和COCO 数据集上的性能,“—”表示没有相关的数据.
表1 Two stage的目标检测算法性能比较
由表1数据可以得出,在two stage 目标检测算法中,每个算法在精确度上都是从前往后不断地提高,而检测的速度没有达到这样的特性,也就是说在保证精度的前提下,实时性没有得到显著提高.因此,研究者们提出了基于回归的目标检测算法,即one stage 目标检测算法.
One stage 检测算法中典型的算法有YOLO 系列、SSD 及RetinaNet 等.该类算法虽然在实际中的应用成为可能,但是实时性和准确度还有待提高.表2罗列了one stage 算法在VOC2007和COCO 数据集上的性能,“—”表示没有相关的数据.
表2 One stage的目标检测算法性能比较
从表2的数据可以得到,one stage 算法不但在精确度上有所提高,而且检测的速度也有明显的提升.由此可见,相比于two stage 算法,其更有实用性.但是,在实际应用中,one stage 模型的实时性还满足不了需求.因此,研究者们提出了基于anchor free的目标检测,此种方法的提出,极大的满足了目标检测在实际应用中的实时性需求.
第1~3 节介绍的算法是基于关键点的anchor free的目标检测算法,其基本思路是输入图像、提取关键点、尺度预测及位置回归的所有过程在一个卷积神经网络中实现,不需要提前设置锚框,极大地改善了检测的实时性,在很大程度上满足实际应用的需求.表3对本文中所列举的各类目标检测模型的机制、优点、缺点、适用范围及实现成本进行了总结.表4总结了各个算法在COCO 数据集上的性能.
从表4各个基于关键点的anchor free 目标检测算法的性能比较可见,通过逐步改进网络,相比于基于锚框的目标检测算法,由表1和表2所示,anchor free 目标检测算法不仅在精确度上有很大提升,检测速度也得到明显提高.例如CornerNet 模型,该算法在COCO 数据集上准确度达到42.1%,超过所有基于锚框的检测算法.在CornerNet 上改进的CornerNet-Lite 模型中引入Saccade、Squeeze 来减少像素个数和降低网络复杂度,因此精确度提高了1%和运算速度提高了6 倍.而CenterNet 模型中,为更好的检测中心点和角点,该算法中提出中心点池化(center pooling)和级联角点池化(cascade corner pooling),使得在COCO 数据集上达到47% mAP,超过目前所有的one stage 检测算法,并大幅度领先于基于关键点的anchor free 检测模型,其领先幅度至少为4.9%,但是检测时间略慢.基于CenterNet的将目标作为点的模型,相比于其他模型来说,由于没有额外的后处理,使得该模型更简单,在COCO 数据集上mAP 达到45.1%,高于YOLO、SSD、RetinaNet 等基于锚框的one stage模型.FCOS 模型通过对不同特征级别的像素点进行回归,共享不同特征层之间信息,后处理仅用非极大值抑制,使得该模型参数效率更高、更灵活,相比于锚框的检测,检测精度有很大提高,其mAP 高达44.7%.由此可见,基于关键点的anchor free 目标检测算法具有更高的检测精确度和检测速度,因此其更具有实用性.
表3 各类目标检测模型总结
表4 基于关键点的anchor free 目标检测性能比较
近年来,卷积神经网络正在不断的被运用到计算机视觉领域,尤其是在目标检测方向已经有很多基于卷积神经的目标检测模型,极大地提高了检测的精度和运算时间.本文主要对基于关键点的anchor free 目标检测方法进行了综述,根据检测关键点个数的不同,将基于关键点的anchor free 目标检测模型进一步分为基于角点的目标检测模型、基于中心点的目标检测模型以及基于全卷积神经网络的目标检测模型.对每类模型的方法进行了研究、分析和对比,总结了每类模型的思路及其优缺点,并对基于关键点的anchor free目标检测算法与基于锚框的检测算法性能做了对比,由此可以看出anchor free 目标检测算法不论是在速度还是精度上都有非常大的改善.
目前,在交通等各领域的发展中,目标检测是一大研究课题,速度和精度检测仍是重中之重,在现有研究的基础上,我认为该领域中研究热点及发展趋势如下:
(1)从专注精度的CornerNet、CenterNet、FCOS和专注速度的CornerNet-Squeeze,anchor free 目标检测未来的方向更加专注于精度和速度的结合.同时为了提高目标的检测精度,目前大多算法只是对单一时间、单一空间的信息进行融合,研究者可以从多维度,对多层级的信息进行融合以提升算法的准确度与鲁棒性.
(2)目标检测依赖大量的训练样本,在数据标注上消费很大成本,anchor free 目标检测在精度上已经有所提升,那么如何对小规模数据的监督学习进行更有效的训练,使其检测精度大幅度提高将会促进目标检测检测领域的进一步发展.
(3)Anchor free 目标检测对已知类的检测已日趋成熟,如何实现未知目标类的检测,即从已知类别迁移到对未知类别的目标进行检测也将成为未来研究的热点.