高海涛,朱超涵,张天棋,郝飞,茅新宇
(南京工程学院机械工程学院,江苏南京 211167)
目标检测(Object Detection)是一种通过提取/分析目标几何和统计特征进行图像分割识别目标的技术,其在安防、姿态估计、无人驾驶等领域得到广泛使用。由于检测对象复杂多样,再加上获取图像时有光照、遮挡等因素干扰,目标检测一直是计算机视觉领域具有挑战性的研究之一。在深度学习算法出现之前,传统目标检测通常利用滑动窗口对手工特征进行提取、匹配,存在检测目标单一、时间和空间复杂度较高并且鲁棒性差等问题。随着深度学习算法的广泛应用,基于深度学习的目标检测通过高效的网络结构和高算力GPU(Graphics Processing Unit),在检测精度与效率等方面显著提高,逐渐成为当前的主流算法[1-3]。
基于深度学习的目标检测可以总结为有锚框构架和无锚框构架两类。有锚框目标检测算法将目标边界划分为多个锚框来预测每个目标的偏移量和类别,其进一步又可以分为单阶段法和双阶段法两种[4]。其中,单阶段方法直接生成回归物体的类别、位置信息,而双阶段方法则先生成样本候选框,再对样本分类,获得目标信息。由于需要获取的锚框数量巨大,正负样本严重不平衡,训练效率低,使得有锚框检测算法存在运算速度慢的突出问题[5-7]。此外,锚框机制也引入了更多的超参数,如锚框的数量、大小和宽高比等,这增加了算法的设计难度,使得数据集调优困难,通用性较差。
无锚框检测方法则将目标框检测转变为对多个关键点/域的检测,通过获得关键点/域的位置信息来预测边框[8],该方法不需要设计锚框,减少了对锚框的各种计算,节省了算力和时间,是目标检测领域一个全新的方向。根据关键点/域选取的不同,无锚框检测可以归结为关键点法和中心域法两种。关键点法中的关键点主要为角点或者中心点。角点法是通过角点的特征信息匹配生成检测框,避免了预设锚框带来的计算冗余问题[9],典型算法如CornerNet、CornerNet-Lite 等。中心点法通过关键点三元组(左上角点、右下角点和中心点),回归得到目标中心点的位置、偏移量等信息,预测目标边框,典型的算法有CenterNet、CenterNet++等。中心域法则利用全卷积算法,逐像素地直接预测物体的中心区域坐标和边界框的尺度信息,在特征提取过程中充分利用了图像的整体信息,典型的算法如FSAF(Feature Selective Anchor-Free Module for Single-Shot Object Detection)、FCOS(Fully Convolutional One-Stage Object Detection)等[10-13]。
无锚框目标检测算法种类众多、适用范围不尽相同,为了进一步理清无锚框目标检测关键技术及网络结构,本文作者总结了各代表性无锚框检测算法的思想、网络构架及关键技术,着重分析了各算法的特性,并进一步通过实例实验定量对比了各种检测算法的性能,对未来的研究进行了总结和展望。
1.1.1 ConerNet 算法
ConerNet 算法是基于关键点检测中经典的架构之一,主要包括1 个骨干网络和2 个预测分支,网络结构如图1 所示。骨干网络通常是Hourglass-104,两个预测分支分别定义为Top-Left 预测模块和Bottom-Right 预测模块,每个分支均含有1 个角点池化模块和3 个输出。3 个输出分别是热力图(Headmaps)、偏移向量(Offset)以及嵌入向量(Embedding)。热力图含有角点的位置信息。偏移向量用来修正取整计算时损失的精度信息。最后通过联合2 个分支输出的嵌入向量,将同一个目标的左上角和右下角的两个角点成组,从而实现基于角点的无锚框目标检测。
图1 ConerNet 网络结构Fig.1 ConerNet network structure
角点池化(Corner Pooling)是ConerNet 算法的最主要创新,其核心是认为输出角点应该是最大响应点[14]。如图2 所示,针对图像中左上角点,过当前预测角点作两条直线,分别与图像的u轴和v轴平行,当两条直线刚好“触碰” 到目标最边缘点时,则输出当前预测结果。通过利用图像中额外信息,Corner Pooling 不仅大幅提高了角点预测的精确度,也大大提升了目标的整体检测效率。ConerNet 算法也存在着一些不足,比如:缺乏对检测目标全局信息的考虑、识别速度慢等。
图2 Corner pooling 原理Fig.2 Corner pooling principle
1.1.2 CornerNet-Lite 算法
CornerNet-Lite 算法是由LAW 等[15]提出的旨在解决CornerNet 因追求准确性而出现高昂的网络处理代价的问题,网络结构如图3 所示。它是CornerNet两个变体CornerNet-Saccade 与CornerNet-Squeeze 的组合,其中,前者通过引入注意机制,变单阶段检测为先裁剪兴趣区域再做精细检测的双阶段检测,从而减少了推理时间,提高了检测精度。CornerNet-Squeeze 则通过采用轻量化的Hourglass 主干网络,减少了每个像素的处理量,提高了检测效率[16]。尽管CornerNet-Lite 在速度和精度两方面均有提高,但未能从根本上解决CornerNet-Saccade 和CornerNet-Squeeze 两种变体模块之间的矛盾冲突,前者需要强大的主干网络以生成足够准确的特征图,而后者则要通过减弱主干网络的表达能力以实现加速,二者的融合仍有改善提高空间。
图3 CornerNet-Lite 的网络结构Fig.3 CornerNet-Lite network structure
1.2.1 CenterNet 算法
CenterNet 通过关键点三元组(左上角点、中心点、右下角点)表示物体实现目标检测,其原理是通过左上和右下2 个角点生成样本目标框,如果目标框准确,那么在其中心区域能够检测到目标中心点的概率就会很高,反之亦然[17-18]。CenterNet 首先通过热力图预测关键点,如角点的位置、类别等信息;然后,根据偏移向量将角点映射到输入图像的相应位置;接着,通过嵌入向量辨识角点,从而利用同一个目标的左上和右下角点生成预测框。针对每个预测框定义一个中心区域,根据左上和右下角点的置信度计算中心点的置信度,判断中心区域是否含有中心点,若有则保留预测框,实现目标的检测。如图4 所示,CenterNet 的网络结构比较简单,它不仅可以进行二维目标的检测,还可以通过简单修改进行三维目标的检测。与CornerNet 算法相比,尽管CenterNet 在感知目标区域内部信息能力有所提升,但是仍然不能够充分利用目标的内部信息,以致当多个目标的中心点混叠在一起时,多个目标将会被训练成同一目标,从而只输出一个中心点,极大地影响了检测结果。
图4 CenterNet 网络结构Fig.4 CornerNet network structure
1.2.2 CenterNetV2 算法
针对误检问题,ZHOU 等[19]进一步提出了基于概率的双阶段目标检测方法CenterNetV2,其算法结构与单阶段和双阶段算法结构对比如图5 所示。该方法通过其边界框中心的单个点来表示所检测的目标,然后直接从中心位置的图像特征回归目标大小、尺寸、3D 位置、姿态等信息。与基于关键点估计的目标检测相比,该算法的优点有:(1)通过一个单阶段算法得到预测框并对其赋予分值,但是该分值与分类无关,只是用以区分前景或背景。通过单阶段算法较好地区分前景与背景,大大减少了无效的预测框,提高了推理速度。(2)利用极大似然估计,设计了新的损失函数,同时优化了第一和第二阶段的算法,提高了算法的检测精度和检测速度。
图5 CenterNetV2 算法结构对比Fig.5 Comparison of CenterNetV2 algorithm structures:(a)single-stage;(b)dual-stage;(c)probability dual phase
1.2.3 CenterNet++算法
为了改善性能,DONG 等[20]将特征金字塔网络(Feature Pyramid Networks,FPN)引入到CenterNet中,提出的CenterNet++算法能够在多分辨率特征图中进行目标检测,它具有更好的通用性和更丰富的感受视野。如图6 所示,骨干网络处理输入图像并输出特征图C3-C5,特征图输入到FPN 后输出多分辨率特征图P3-P7。针对每个分辨率的特征图,分别用热力图和回归两种方法预测关键点。通过热力图预测,生成3 种热力图预测角点和中心关键点;通过回归预测时,为实现左上角点和右下角点的解耦,要将Ground-Truth 框分割成4 个完全相同的子框,分别用左上角的和右下角的子框来监督回归。在推理过程中,回归向量作为线索,在相应的热力图中找到最近的关键点,以细化关键点的位置。最后利用有效的三元组关键点确定预测框。
图6 CenterNet++多分辨网络结构Fig.6 CenterNet++multi-resolution network structure
FCOS 是一种像素级目标检测方法,其通过各点像素逐点回归铺设锚点替代锚框来检测目标[21-22]。如图7 所示,FCOS 通常采用ResNet 或ResNeXt 作为基础网络,C3-C5 的特征层作为FPN 的输入,输出P3-P7 作为检测层送入后续检测子网络,并在5 个检测层分别对应的理论感受中心铺设锚点,采用特定规则划分锚点的正负样本。在FCOS 中,5 个检测层共享一个检测子网络。FCOS 最突出的特征是通过“中心度” 分支计算当前位置与待预测目标中心点之间的归一化距离抑制差的检测框,大幅度提高了总体性能。此外,FCOS 是一种基于全卷积神经网络的目标检测方法,它只需要非常小的修改就可以扩展到其他视觉检测应用,比如实例分割、关键点检测等。
图7 FCOS 网络结构Fig.7 FCOS network structure
无论是否采用锚框,目标检测算法都需要预先定义目标表示形式,比如矩形框或者中心点等,这实质上是提供一种先验信息。受此启发,DUAN 等[23-25]提出一种更为泛化的锚点,将若干个锚框组建成点集(Pointset Anchor),通过点集的分布,实现目标检测、实例分割、位姿估计等多种检测任务。该网络称为PointSetNet,如图8 所示。该网络实质上是RetinaNet的一个扩展,也就是根据不同的检测任务,用相应的点集替换RetinaNet 中的锚框。
图8 PointSetNet 网络结构Fig.8 PointSetNet network structure
对上述的无锚框目标检测算法从原理机制、核心特性、优缺点以及适用范围等几个角度进行总结比较,结果如表1 所示。
表1 各类无锚框目标检测模型总结Tab.1 Summary of various anchorless target detection models
(1)从原理机制看,无锚框目标检测算法的核心就是利用先验点信息,将检测目标转换成点的检测,化整体为部分,依靠点集特征信息减少超参数组合优化问题[26],均衡训练所需的正负样本,进而减少了模型训练时参数的组合、读取时间和计算量,提高了模型训练的效率。
(2)从检测速度看,无锚框目标检测算法大多利用单阶段检测器,经过单次检测即可直接得到最终的检测结果,其牺牲了检测精度,换取了检测速度的提高[27-29]。采用双阶段检测器的无锚框目标检测如CenterNetV2,在保证足够的准确率和召回率的基础上,对建议框进行分类,寻找更精确的位置,提高了检测精度,并依靠创新概率算法,弥补了检测速度较慢的缺点,达到了二者的平衡统一。
(3)从检测精度看,无锚框目标检测算法在提高了检测精度的同时也增加了网络的复杂程度[30]。一些算法试图向轻量化发展,如FCOS 通过引入中心度分支,抑制低质量检测框,以提高算法的效率和精度;CenternNet++则采用特征图分块、向量回归等,减少内存消耗和降低计算耗时,尽可能地提高精度。
为进一步定量对比无锚框目标检测算法的性能,以检测精度和速度作为主要衡量指标,利用搭载了2张NVIDIA GTX 2080Ti 显卡的Dell T7920 图形工作站进行算法实验。在Linux20.04 系统下,通过Anaconda 配置算法所需虚拟环境。为保证多种算法数据对比的严谨,实验采用相同的深度学习Pytorch 框架。
利用常用的微软MS COCO 数据集进行算法的训练和测试。为了尽可能衡量模型性能,在MS COCO中随机选取包含自然图片、动物和生活用品等80 种不同类型的目标图片(见图9)。这些图片背景复杂,目标数量较多,目标尺寸小,检测任务具有一定的难度,其结果可以作为一个衡量标准。
图9 MS COCO 数据集图片Fig.9 MS COCO dataset image
实验过程中,除算法所需骨干网络不同外,采用相同训练参数。输入图像尺寸为512 像素×512 像素;学习率(Learning Rate)为1.25×10-4;批次图片个数(Batch_Size)为32;训练总轮次(Num_Epochs)为500;加载数据集线程数(Num_Workers)为10。运行后获得每个模型最佳检测指标如表2 所示。
表2 基于MS COCO 数据集的多种目标检测模型性能对比Tab.2 Comparison of the performance of multiple object detection models based on MS COCO dataset
CornerNet 是最早期的无锚框目标检测方法之一,通过创新角点池化算法,其精度远高于同时期有锚框目标检测方法。相比SSD 和YOLOv3,其mAP(Mean Average Percision)值分别高了35.37%和28.35%,而FPS(Frames Per Second)则又分别低了77.25%和90.49%,说明速度有所降低。为此,CornerNet -Squeeze 通过采用轻量化的Hourglass 主干网络,减少每个像素的处理量,以提高检测效率。CornerNet-Squeeze 的mAP 值相比CornerNet 略有下降,降低了18.29%。CornerNet-Squeeze 的FPS 值相比CornerNet则有显著提高,提高了近7 倍。CornerNet-Saccade 则通过引入注意机制,变单阶段检测为双阶段检测[31],减少推理时间,以提高检测精度。相比CornerNet,CornerNet-Saccade 的mAP 值和FPS 值均有一定程度的提高,分别提高了3.56%和67.44%。尽管Corner-Net-Saccade 和CornerNet-Squeeze 相比CornerNet 在目标检测性能方面有了不同程度的提高,但CornerNet-Saccade 和CornerNet-Squeeze 相结合的CornerNet-Lite算法却无法实现检测精度与速度的较好平衡,Corner-Net-Lite 的算法融合问题有待进一步解决。
CenterNet 也是一种通过关键点进行目标检测的方法,在CornerNet 的角点池化算法基础上,提出了中心点池化和候选角点池化算法,网络能够更加聚焦于中心点特征信息的提取,有利于提高检测精度[32]。CenterNet、CenterNetV2 以及CenterNet++的mAP 值分别达到了45.0%、56.4% 和44.6%,平均值为48.67%;而CornerNet、CornerNet-Squeeze 以及CornerNet-Saccade 的平均mAP 值为40.03%;CenterNet及其两种改进方法的mAP 均值相比CornerNet 及其两种改进方法的mAP 均值提高了21.57%。CenterNet及其两种改进方法的mAP 均值比SSD 和YOLOv3 的mAP 值分别提高了56.48%、48.37%。虽然Center-Net 及其改进方法在精度上有了一定程度的提高,但是在检测速度方面,与CornerNet 及其改进方法相比,几乎没有改变。CenterNet 及其两种改进方法的FPS均值为14.90,而CornerNet 及其两种改进方法的FPS均值为15.13。在CenterNet、CenterNetV2 以及CenterNet++三种算法中,CenterNet++通过采用FPN 和Res2Net,在检测精度和速度上达到了较好的平衡[33-34],其mAP 值和FPS 值相比SSD 分别提高了43.41%和61.38%,而相比YOLOv3 在精度方面也提高了35.98%。
通过FPN 结构的多级预测机制,FCOS 和Point-SetNet 的检测精度显著提高。FPN 作为原始主干网络的附加项,融合在卷积神经网络之中。通过自下而上的特征提取和自上而下的多层采样两个部分,提取不同尺度的特征信息,达到特征融合的目的,在兼顾速度的同时提高了准确率。FCOS 和PointSetNet 的mAP值分别为49.0%和46.2%,相比SSD、YOLOv3、CornerNet、CenterNet 分别提高了57.56%、49.39%、16.39%、8.89% 和 48.55%、40.85%、9.74%、2.67%,说明FCOS 具有更优的检测精度。
综上所述,与有锚框的检测网络相比,无锚框目标检测算法提高了检测精度,缩短了运算时间。本文作者针对7 种具有代表性的无锚框目标检测方法进行了综合分析,根据网络结构的不同,分析其核心特性及优缺点,最后运用数据集测试其性能,为算法选用提供借鉴。通过上述算法比较与归纳,总结出无锚框目标检测算法的未来研究方向:
(1)轻量化。为了易于部署和运用,深度学习网络结构应逐步减少模型中所需要的参数组合,减少计算量。如CornerNet-Lite 的优化角度,基于关键点的检测方式,需要大量关键点特征信息,在点集信息的处理上需要耗费大量算力,优化轻量化网络结构,使其能更快更好地完成检测任务,轻量化是提升无锚框检测算法实用性的重要方向。
(2)双阶段检测器的运用。无锚框检测网络的检测器大多以单阶段检测器为主,双阶段检测器相比单阶段检测器,多了一步候选框的预检测,这无疑加大了网络运算所需时间,但同时也很大程度上提高了检测精度,减少了相似点之间的误检测概率。只有少数的如CenterNet++运用了自主优化的双阶段检测器,达到了速度和精度的相对平衡。在无锚框检测网络中运用双阶段检测器,并对其优化,缩小网络计算量,提高特征获取能力是一大研究方向。
(3)多尺度目标的检测。无锚框的检测方法大多依赖目标的关键点信息对目标进行定位检测。图像的尺寸大小、关键点信息是否清晰都会对整个检测网络产生影响,并且未来检测方向大多以高分辨率图片、视频为主,因此需要让网络结构能适应多尺度的对象。可以通过调整上下采样次数、卷积层感受野大小、融合注意力模块等方法来优化无锚框网络结构,提升其检测精度及鲁棒性。
(4)有/无锚框算法的融合。无锚框的检测方法实质上并没有抛开锚框这一概念,只是将整个目标的锚框框缩小转移到了目标的各个关键点上,并没有打破锚框的局限性,仍然运用了微小矩形框完成检测流程,所以需要进一步研究关键点的检测机制,真正融合基于锚框和无锚框两种检测方法,提高检测效率是未来研究的一个方向。