深度卷积应用于目标检测算法综述

2022-05-17 06:01董文轩梁宏涛刘国柱
计算机与生活 2022年5期
关键词:卷积特征算法

董文轩,梁宏涛,刘国柱,胡 强,于 旭

青岛科技大学 信息科学技术学院,山东 青岛266061

目标检测(object detection)作为计算机视觉领域的核心问题之一,其任务是在图像或图像序列中对目标进行精确定位和分类。但目标检测任务中存在各类干扰因素,如目标物体本身的纹理、形态等,以及成像时的光照强弱、遮挡和模糊等。基于上述因素,目标检测性能成为计算机视觉领域亟待解决的问题,针对这些因素,众多学者对目标检测算法进行了研究与改进。

传统目标检测算法大致划分为下述三步:

(1)区域选择:先定位目标位置,通过不同尺度和长宽比的滑窗对图像或图像序列进行遍历,再通过穷举策略将所有可能包含检测目标的位置框出。

(2)特征提取:提取目标候选区域的视觉特征,例如SIFT(scale invariant feature transform)、HOG(histogram of oriented gradient)、Haar、LBP(local binary pattern)等特征提取算子进行特征提取。

(3)目标分类:使用分类器通过提取到的特征对目标进行分类,常用的分类器有DPM(deformable parts model)、Adaboost、SVM(support vector machine)等。

传统目标检测方法虽在检测领域取得了一定的成果,但也暴露出其固有的弊端。区域选择阶段通过滑窗选取候选区域策略,存在时间复杂度高和冗余窗口多的弊端,导致后续特征提取和分类的性能降低。由于目标的本身因素和成像环境因素,导致人工手动设计特征的方法存在鲁棒性不好、泛化性差、检测精度低等问题,传统的目标检测方法已经难以满足人们对目标检测追求高性能的需求。

近年来,在Hinton、Bengio、Lecun的引领下,大量深度神经网络论文相继发表,深度学习得到了快速发展,通过引入深层语义特征,来解决传统目标检测算法的弊端。2012 年,Hinton 等通过卷积操作构建深度神经网络AlexNet,并在ImageNet图像识别比赛斩获冠军,基于深度卷积神经网络的目标检测算法成为了研究学者关注的焦点。

1 数据集与评估指标

1.1 数据集

数据集对于有监督算法的训练、评估至关重要,并且权威的数据集,更是衡量不同算法间优劣的标准。针对目标检测任务,目前应用最多的两类数据集分别是PASCAL VOC数据集和Microsoft COCO数据集。

PASCAL VOC 数据集源自PASCAL VOC 视觉挑战赛,从2005 年开始,官方每年都会为挑战赛提供一系列多类别、带标签的图片。起初官方只提供了4 个类别的图像,2007 年增加到了20 个类别,VOC2012类别如表1 所示。目前学术界使用最多的两个版本分别是VOC2007和VOC2012,模型训练、测试也存在两种策略,一种是train2007+train2012 用作训练,test2007 用作测试;另一种是train2007+test2007 +train2012 用作训练,test2012 用作测试。由于第二种策略获取训练数据更多,训练出的模型效果更好,使得该策略成为主流。

表1 VOC2012 类别Table 1 VOC2012 categories

Microsoft COCO 数据集源自微软2014 年出资自研,该数据集以场景理解为目标,从复杂的日常场景中截取。数据集中图像包含91 类别,32.8 万张图像和250 万个标注,涵盖图像分类、目标检测、图像分割等多个计算机视觉任务。该数据集解决了场景理解中的三个核心研究问题:(1)检测对象的非标志性视图;(2)对象之间的上下文推理;(3)对象的精确二维定位。相较于PASCAL VOC 数据集主要应用于自然图像中的目标检测,Microsoft COCO 数据集被设计用于发生在其自然环境中的目标检测,同时Microsoft COCO 数据集平均单张包含的目标也比PASCAL VOC 数据集要多,且目标更小,较小的物体更难识别,需要更多的上下文推理来识别。

1.2 评估指标

为了将不同目标检测算法进行多方位对比,提出一系列公认的评估指标,如交并比、检测速率、精准率、召回率、平均精确率、平均精确率均值等。

交并比(intersection-over-union,IoU),指产生的预测框(candidate bound)与原标记框(ground truth bound)的交叠率,即两框交集与并集的比值,最理想情况是完全重叠,即比值为1,该指标用于评估算法的定位准确性。检测速率(frames per second),表示每秒算法所能处理的图像张数,用于评估算法的实时性。如表2混淆矩阵与式(1)所示,精准率(Precision)指被正确识别成正例的正例数所占的比例,表示模型检测出的目标为真正目标物体的比例。如式(2)所示,召回率(Recall)指测试的所有正例样本中,被正确识别成正例的正例数,表示所有真实的目标被模型检测出的比例。精准率和召回率是针对单张图片某一类别的指标,同时针对精准率和在某些情况下存在矛盾,例如只检测出了一个结果并且准确,那么精准率为100%,反观召回率就很低。因此提出平均精确率(average precision,AP),表示为精确率-召回率曲线上的精确率对召回率的积分,如式(3)所示,AP 是针对数据集中某一个类别而言的,用于评估检测算法对某一个类别的检测效果。平均精确率均值(mean average precision,mAP)指AP 值在所有类别下的均值,mAP 是针对整个数据集的评估,用于评估检测算法对所有类别的检测效果。

表2 混淆矩阵Table 2 Confusion matrix

2 基于深度卷积的目标检测算法

基于深度卷积神经网络的目标检测算法依据检测步骤可分为两类:一类是基于候选区域的Two-stage(两阶段)目标检测算法;另一类是基于回归的Onestage(单阶段)目标检测算法。Two-stage 目标检测算法先选取图像的候选区域,再对候选区域可能存在的目标进行回归定位和分类,使整体检测过程划分为两个阶段,代表算法如RCNN 系列等。One-stage目标检测算法不单独选取候选区域,省略了候选区域生成步骤,将特征提取、目标分类和位置回归整合到一个阶段进行操作,代表算法如YOLO 系列、SSD系列等。以时间为基线,各类典型算法出现时间如图1 所示。

图1 目标检测算法发展时间轴Fig.1 Timeline of target detection algorithm development

3 Two-stage框架

Two-stage 目标检测算法先对图像进行选取候选区域操作,再对候选区域进行分类和位置定位,使检测过程划分为两个阶段,代表算法有R-CNN(regions convolutional neural network)、SPPNet(spatial pyramid pooling network)、Fast R-CNN、Faster R-CNN、R-FCN(region-based fully convolutional networks)、Cascade R-CNN、Libra R-CNN 等,下面将分别进行介绍和分析。

3.1 R-CNN

目标检测算法在标准的PASCAL VOC 数据集上的检测性能,在过去的几年里停滞不前。当时,通过集成系统取得较优的检测性能,它通常采取将多个低级图像特征与高级上下文相结合方式。直到Girshick等将卷积神经网络(convolutional neural networks,CNN)应用于目标检测任务,提出经典的两阶段目标检测算法R-CNN,R-CNN 的出现成为运用深度学习进行目标检测方面的里程碑。R-CNN 模型框架如图2 所示,算法结合两个关键点:(1)通过卷积给出自下而上的区域建议,来定位和划分对象;(2)当缺乏训练数据时,先进行有监督预训练操作,后进行微调,实现性能的提升。R-CNN 将AlexNet与选择性搜索算法(selective search)相结合,先从单张图像中提取可能包含目标物体的区域候选框2 000 个,将候选区域放缩成固定格式进行特征提取,再通过SVM对候选区域的特征进行分类,使用非极大值抑制(non maximum supression,NMS)筛选区域候选框,最后采用边界框回归(bounding box regression)得到检测结果。

图2 R-CNN 模型结构Fig.2 R-CNN model structure

相较传统算法,R-CNN 性能有所改进,但仍存在以下问题:(1)使用选择性搜索算法导致候选框数量过多、选择重复、浪费算力、效率低;(2)训练过程中的操作,选取候选框、特征提取、SVM 分类、边界框回归各个模块间独立,非端到端的整体;(3)不同尺寸的候选框不采用任何策略,直接变为相同尺寸,改变原有图像的固定尺寸,丢失部分原图信息。

3.2 SPPNet

针对R-CNN 存在的对所有候选区域分别提取特征、计算量大、输入图片固定尺寸、丢失原图信息等问题,He 等提出空间金字塔池化网络(SPPNet)以移除对网络固定尺寸的限制。如图3 所示,将SPP 层放在最后一层卷积之后,从而避免了对卷积特征的重复计算,减少计算量;再对卷积产生的特征图进行池化操作,避免因固定特征输入尺寸而丢失原图细节的问题;输出固定长度的特征图,最终进入分类器中进行目标检测。

图3 空间金字塔池化(SPP)Fig.3 Spatial pyramid pooling(SPP)

虽然SPPNet 提高了检测速度,但仍存在部分缺点:(1)采取多段式训练,需存储大量特征,存储空间大;(2)SPPNet 只对其全连接层进行微调,而忽略了所有以前的层;(3)沿用SVM 分类器,训练繁琐。

3.3 Fast R-CNN

Girshick针对R-CNN 和SPPNet 各模块独立,导致占用大量存储空间的问题,提出将特征提取模块、区域分类和边界框回归模块整合在一起的Fast R-CNN 算法。Fast R-CNN 模型架构如图4 所示,算法采用VGG16替代AlexNet作为主干网络对图像进行特征提取。同时,受SPPNet 启发,将SPP 层简化为ROI Pooling加在卷积网络之后,将每个区域均匀分成若干小块,每个小块得到该区域的最大值。另外,Fast R-CNN 引入softmax函数替代了R-CNN中的SVM 处理分类,并引入奇异值分解,将目标分类和位置回归合并,降低计算复杂度,检测速度精度得到相应的提升。

图4 Fast R-CNN 模型结构Fig.4 Fast R-CNN model structure

但Fast R-CNN 仍存在不足:(1)生成候选区域沿用选择性搜索算法(selective search)导致提取特征和获取正负样本候选框耗时耗空间;(2)训练过程中选取候选框的操作,与其他模块间独立,仍是个非端到端的整体。

3.4 Faster R-CNN

针对Fast R-CNN 存在因采用选择性搜索算法生成候选区域,耗时耗空间的问题,Ren 等提出了Faster R-CNN算法。Faster R-CNN模型架构如图5 所示,算法采用区域建议网络(region proposal network,RPN)取代Fast R-CNN 中选择性搜索算法来生成候选区域,将候选区生成、特征提取、目标分类和位置回归合并,实现端到端结构的目标检测模型。图像经共享卷积层获取特征图,通过3×3 窗口滑动生成特定长度的低维向量,送入两个全连接,分别进行分类和预测框回归操作。Faster R-CNN 提出了锚框(anchor)概念。锚框位于滑动窗口的中心点,由大小不一的边界框组成,用来检测同一位置上的多个目标。经RPN 网络处理后获得大约300 个精确候选区域,大大减少候选框,减少模型计算量。

图5 Faster R-CNN 模型结构Fig.5 Faster R-CNN model structure

虽然Faster R-CNN 突破了Fast R-CNN 的速度瓶颈,但仍存在问题:(1)Faster R-CNN 采用ROI Pooling层存在两次取整近似计算,丧失网络平移不变性,导致检测信息和提取出的特征不匹配;(2)采用锚框机制,进行多次下采样操作,导致网络模型对小目标检测效果较差。

3.5 R-FCN

针对Faster R-CNN 采用ROI Pooling 层存在两次取整近似计算,丧失网络平移不变性,导致检测信息和提取出的特征不匹配,降低检测的准确度,Dai 等提出了R-FCN 算法。R-FCN 基于全卷积,针对分类网络与检测网络之间的位置敏感性矛盾,通过在全卷积后添加1×1 卷积输出位置敏感分数图,如图6 所示。对感兴趣区域进行了编码处理,使ROI Pooling 层后不再接全连接层,避免了重复计算,提升了检测的精度和速度。

图6 位置敏感分数图Fig.6 Position-sensitive score maps

R-FCN 作为Faster R-CNN 的改进版,通过引入位置敏感分数图,提升了检测速度,但将原来的VGG16的主干网络换成ResNet 系列网络,加深主干网络的模型深度,导致依然难以满足目标检测的实时性要求。

3.6 Cascade R-CNN

Faster R-CNN 因使用固定IoU 阈值分辨正负样本,造成所选候选框不准确,存在检测噪声,若盲目增大IoU 阈值,检测效果反而变差。造成这一现象的两个因素:一是训练过程中正样本指数消失导致的过拟合;二是探测器最优的IoU 与输入假设的IoU 不匹配。针对上述问题,Cai等提出多阶段(multi-stage)检测架构的Cascade R-CNN 算法。Faster R-CNN与Cascade R-CNN 检测架构对比如图7 所示,表示输入图像,表示检测头,0 表示候选区域,表示分类,表示边界框回归。Cascade R-CNN 由一系列探测器构成,通过IoU阈值的递增逐阶段训练。探测器通过学习上一个探测器的数据分布,减少网络检测噪声,最终实现提高检测框精度的作用。

图7 Faster R-CNN 与Cascade R-CNN 检测架构Fig.7 Faster R-CNN and Cascade R-CNN detection architecture

Cascade R-CNN 使用级联架构本质上是一种新型的模型集成训练的操作,虽然提升了网络精度,但也增加了网络模型的复杂度,同时采用更深的ResNet101作为主干网络,延长了网络训练和预测的时间。

3.7 Libra R-CNN

Faster R-CNN 检测性能受数据不平衡的限制,包括三个层次:样本水平、特征水平和目标水平。为了减轻由此造成的不利影响,Pang 等提出了Libra R-CNN算法。Libra R-CNN 采取了三个新的操作:IoU 平衡采样来解决样本不平衡,平衡特征金字塔来解决特征不平衡,平衡L1损失来解决目标水平不平衡。IoU平衡采样:采用分桶策略,通过IoU 对正负样本进行均匀采样。平衡特征金字塔:如图8所示,将不同层级的特征图通过差值或下采样的方法统一到4 层,将汇集的特征进行融合,使用non-local结构对融合特征进一步加强。平衡L1 损失:回归Loss 使用Balance L1 替代Smooth L1,使得Loss较大样本和较小样本界限处的梯度更加平滑。

图8 平衡特征金字塔Fig.8 Balanced semantic pyramid

但Libra R-CNN 进一步加深主干网络,使网络模型更为复杂,难以满足实时的要求。

3.8 小结

上述Two-stage 目标检测算法分为先选取图像的候选区域,再对候选区域可能存在的目标进行回归定位和分类两个阶段。改进方式主要在于:(1)如何获取高效的候选区域,如Fast R-CNN 采用的RPN 网络;(2)如何将获取的特征高效利用,如Cascade R-CNN的级联架构和Libra R-CNN 的特征金字塔。但这些改进方式,无一不在增加模型的复杂程度,虽然检测精度不断提升,却导致训练和检测速度降低,难以满足端侧实时检测的要求,故而目前目标检测发展趋势开始面向高效One-stage架构的目标检测方法。

表3 总结了这类算法发表时所用的主干网络、检测速率、检测时的GPU 型号,以及在VOC2007 数据集、VOC2012 数据集和COCO 数据集上的检测精度(mAP)。“—”表示无相关数据,mAP 值中的括号表示以其作为训练集。表4 总结了Two-stage 目标检测算法改进方式、优势以及局限。

从表3 可以看出Two-stage 目标检测算法采用更深的ResNet101和ResNeXt101作为主干网络,检测精度得到了大幅的提升,后期以检测难度更大的COCO数据集作为算法性能的评价指标。从表4 可以看出,Two-stage 目标检测算法虽精度有所提高,但算法模型的加深,带来更高的计算复杂度,导致算法的检测速率降低,难以达到实时检测的要求。

表3 Two-stage目标检测算法性能对比Table 3 Performance comparison of two-stage target detection algorithms

表4 Two-stage目标检测算法总体分析Table 4 Overall analysis of two-stage target detection algorithms

4 One-stage框架

One-stage 目标检测算法不单独选取候选区域,省略了候选区域生成步骤,将特征提取、目标分类和位置回归整合到一个阶段进行操作,代表算法有YOLO系列、SSD 系列、RetinaNet、CornerNet、EfficientDet 等,下面将分别进行介绍和分析。

4.1 YOLO 系列

针对两阶段模型复杂,参数多,训练时间久,实时检测效果差等问题,Redmon 等提出首个基于回归分析的目标检测算法YOLO(you only look once)。YOLO 模型结构如图9 所示,算法将图像缩放为448×448,在图像上放置×网格。经过若干个卷积层与池化层,再经过两层全连接层,输出目标分类和边界框。其中每个子网格负责检测落在本网格中的目标,预测出物体类别、置信度和边界框位置。最后通过NMS 剔除重叠边界框,实现目标检测。

图9 YOLOv1 模型结构Fig.9 YOLOv1 model structure

YOLO 虽然在速度上超过了Faster R-CNN,但还存在以下局限性:(1)采用×网格进行预测,若相同网格存在多个目标存在漏检问题,并且对小目标检测效果不佳;(2)没用采用Faster R-CNN 的锚框机制,预测相对位置,直接预测绝对位置,增加了训练难度;(3)预测框的长宽比是根据训练集人为预设的,对于新数据集泛化能力差。

针对YOLO 使用全连接对边界框进行回归预测,定位不准,模型训练召回率和检测精度低的问题,Redmon等提出了YOLOv2算法。YOLOv2 以DarkNet19作为主干网络,卷积层应用批归一化(batch normalization,BN)操作,使数据的分布相对稳定,加速模型学习速度;采用分类网络高分辨率预训练(high resolution classifier),将分类网络先在高分辨率的ImageNet 数据集上进行训练,再使用检测数据集对其进行微调,提高模型训练的稳定性;引入锚框机制,锚框的宽高通过-means 算法对训练集锚框进行聚类获取,得到先验框的宽高,提高模型在不同训练集上的泛化性能;锚框位置预测是通过左上角格点坐标来预测偏移量,便于模型训练收敛;加入了Passthrough 层,进行特征融合,避免损失细粒度特征;引入了多尺寸训练方法,使卷积核可以学习到不同尺寸的特征,提高模型鲁棒性。

相对于YOLOv1,YOLOv2 虽然解决了模型训练困难、泛化能力差等问题,但其仍存在以下局限:(1)由于采用较深的主干网络,导致小目标检测的召回率不高;(2)对于密集群体目标检测效果差,检测精度还有优化空间。

针对YOLOv2 小目标检测效果差的问题,Redmon 等在YOLOv2 的基础上改进提出了YOLOv3 算法。YOLOv3 模型结构如图10 所示,算法采用DarkNet53作为主干网络提取特征,获取更深层次的图像特征;引入残差网络ResNet 的跨层加和操作,进行多尺度预测,跨尺度特征融合,提高对小目标的检测精度;延用YOLOv2 先验框操作,采用-means算法对数据集锚框进行聚类操作;分类使用logistic替换softmax 进行输出预测,支持目标多分类。

图10 YOLOv3 模型结构Fig.10 YOLOv3 model structure

YOLOv3 在推理速度上大幅提升,虽然解决了YOLOv2 小目标检测的问题,但其在每个网格中固定预测两个box 这种策略,相较于R-CNN 系列网络,存在检测召回率低,定位精度不佳,密集物体检测效果差的问题。

2020 年4 月,Bochkovskiy 等结合近几年的单阶段和双阶段的目标检测算法以及技巧,在YOLOv3的基础上进行改进,提出了YOLOv4算法。YOLOv4采用了CSPDarkNet53替代了DarkNet53,SPP+PAN 替代了FPN,来增加感受野,进行特征融合;加上YOLOv3的head,就构成了YOLOv4 的模型框架。同时Bochkovskiy等还加入只在训练阶段耗时增多,但不影响推理耗时的“赠品”(bag of freebies)技巧,如CutMix、Mosaic(马赛克)数据增强等;以及微提高了推理耗时,却显著提升性能的“特价”(bag of specials)技巧如SPP-block(spatial pyramid pooling block)、PAN(pixel aggregation network)、DIoU-NMS(distance intersection over union non maximum supression)等。

YOLOv4 结合一系列调优技巧,虽然检测精度有所提高,但仍存在以下问题:(1)多个“特价”技巧叠加在一起,宏观上仍增加模型的复杂程度,增加了训练、预测时间;(2)锚框获取延用YOLOv3 的聚类策略,导致锚框的长宽比只能适应大部分目标,缺少泛化性。

2020年6月,Jocher提出了YOLOv5。YOLOv5包含4 个模型,根据模型深度和特征图宽由小到大依次 是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。YOLOv5 模型分为输入端、Backbone、Neck、输出端四部分,YOLOv5s 模型结构如图11 所示。输入端采用了自适应锚框计算,以获取合适的锚框;自适应图片放缩,减少模型计算量,同时提高对小目标的检测效果。Backbone 采用Focus 结构用于降低下采样过程中的信息损失,借鉴CSPNet的CSP(cross stage partial)结构用于增强卷积的学习能力。Neck 采用了FPN+PAN+CSP 结构,加强了特征融合。输出端采用了GIOU_Loss 做为边界框的损失函数,采用加权NMS 的方式对边界框进行筛选,增强对遮挡、重叠目标的检测能力。

图11 YOLOv5 模型结构Fig.11 YOLOv5 model structure

相较于YOLOv4,YOLOv5更为灵活,但精度略微降低。同时,目前YOLO 系列大都采用锚框的策略,导致模型计算量增加和正负样本严重不平衡的问题。

针对之前YOLO 系列采用锚框的策略所导致的问题,Ge 等提出了基于YOLOv3 改进的YOLOX,剔除锚框的操作,降低模型计算量,缓解正负样本不平衡的问题。同时引入预测分支解耦(decoupled head),如图12 所示,通过一维卷积将不同通道数的特征图进行降维,然后两个平行分支分别使用2 个3×3 卷积进行操作,同时回归分支里还添加了IoU 分支,用于丰富YOLOX 检测头的表达能力。预测分支解耦极大地改善了模型的收敛速度,相较于非解耦的方式,解耦能带来4.2 个百分点的AP 性能提升。引入SimOTA(simplified optimal transport assignment)操作,获取每个真实框所拥有的正样本个数,以获得全局信息下的最优样本匹配方案,SimOTA 操作带来3.2 个百分点的AP 性能提升。相较于OTA,SimOTA运算速度更快,避免额外的优化参数。

图12 YOLO 系列检测头结构对比Fig.12 Comparison of structure of YOLO series head detection

4.2 SSD 系列

针对YOLO 存在小目标难以检测的问题,Liu 等提出了SSD 算法。相比YOLO 全连接层之后执行检测操作,SSD 采用卷积来直接进行检测。SSD 模型结构图如图13 所示,算法采取了多层次特征图对不同大小的目标进行检测,浅层特征图检测小目标,深层特征图检测大目标,解决了小目标难以检测的问题。同时借鉴了Faster R-CNN 中Anchor 技巧,提前设置长宽比不同的先验框,再在先验框的基础上预测目标检测框,减少训练复杂度。

图13 SSD 模型结构Fig.13 SSD model structure

但SSD 仍存在以下局限性:(1)不同尺度的特征图独立检测,造成不同尺寸的检测框对同一目标重复检测,增加了模型计算量;(2)由于检测小目标的浅层特征图含语义信息少,导致对小尺寸物体的检测效果比较差。

针对上述SSD 存在的两个问题,Jeong 等提出了RSSD 算法。RSSD 通过分类网络增加不同层之间的特征图联系,以减少重复预测框的出现;采用了一种深层和浅层特征融合的方式增加特征金字塔中特征图的个数,以检测更多的小尺寸目标。相对于SSD,RSSD 在目标分支上参数更新,采用仅由特定尺度目标所决定的策略,RSSD 中各个分类网络间参数共享,且各个尺度的目标都可以用于更新分类网络的同一套参数,需要训练的参数更少,训练速度更快。

针对SSD 骨干网络是VGG16,只能得到浅层特征图,对于深层次信息学习和表达能力不够的问题,Fu 等提出了DSSD 算法。DSSD 模型结构如图14所示,算法采用了更深的ResNet101 作为主干网络,以提取更深层次的语义特征;引入反卷积代替传统的双线性插值实现上采样,完成了深层特征图和浅层特征图的融合;预测模块引入残差单元,对小目标检测的效果得到显著提升。

图14 DSSD 模型结构Fig.14 DSSD model structure

相较于SSD,DSSD 虽然精度有所提升,但使用更深的ResNet101 作为骨干网络,训练时间变长,检测速度变慢。

Li 等借鉴了FPN 的思想提出了FSSD 算法,模型结构图如图15 所示,将浅层的细节特征和高层的语义特征结合起来。FSSD 在特征融合模块中,将不同尺度不同层的特征连接在一起,然后用一些下采样块生成新的特征金字塔,反馈给多盒探测器,以预测最终检测结果。使得算法的精度有了明显的提升,速度也没有下降太多。

图15 FSSD 模型结构Fig.15 FSSD model structure

2019 年,Shen 等提出DSOD 算法,DSOD 融合SSD+DenseNet的思想,DenseNet 提取网络结构用于避免梯度消失,使得网络在不进行预训练的收敛效果和使用预训练模型的效果一样好;相比于SSD,DSOD引入Dense Prediction 结构,大大减少了参数数量。

虽然DSOD 的精度有所提升,但采用DenseNet导致密集连接太重,并且每个DenseNet每层都会聚合前面层的特征,造成特征冗余,增加了模型的计算量。

4.3 其他系列

针对当时单阶段目标检测算法检测精度普遍低于同期双阶段目标检测算法的现状,Lin等研究发现,这是由于正负样本不均衡导致的,后提出了RetinaNet算法。RetinaNet网络架构如图16 所示,该算法结合了ResNet 和FPN 用作特征提取,以获取图像多尺度特征图,再通过两个FCN 网络分别实现分类与回归任务。同时采用了focal loss 替代了交叉熵损失函数,focal loss 通过提高困难样本的权重,使模型在训练时更专注于稀疏、困难样本的分类。

图16 RetinaNet模型结构Fig.16 RetinaNet model structure

但是RetinaNet 相较于其他单阶段检测算法,检测速度明显下降,难以满足实时检测的要求。

针对RCNN系列、YOLO系列和SSD系列等算法,引用了Anchor导致正负样本不均衡,较多超参数计算复杂的问题,Law 等提出了CornerNet算法。CornerNet采用了预测左上角点和右下角点的位置对边界框进行定位,替代传统Anchor 与区域建议的检测方法,避免上述Anchor 导致的问题。CornerNet 模型结构如图17 所示,模型以Hourglass 作为主干网络,分别对左上角点和右下角点进行预测,同时对偏移进行预测,微调角点位置产生更为紧密的边界框。利用预测的Heatmaps、Embeddings 和偏移量,经后处理算法来获得最终的边界框。同时CornerNet 还采用了corner pooling,有助于模型对边界框进行更为准确的定位。

图17 CornerNet模型结构Fig.17 CornerNet model structure

但CornerNet由于需要左上角点和右下角点分组匹配产生边界框,此过程耗时较长,达不到实时检测要求;并且存在角点匹配错误,导致产生错误的边界框。

针对CornerNet 基于双角点再匹配的检测策略,导致计算复杂、检测速度降低,因此,Duan 等提出了CenterNet 算法。CenterNet 构建模型时将目标作为一个点,即边界框的中心点,相较于CornerNet,无需对左上角点和右下角点进行分组匹配,也不存在NMS这类后处理,提高了检测速度。CenterNet 通过特征图上局部峰值点(local peaks)获取关键点,再通过关键点预测中心点,并回归出目标相关属性,最终实现目标检测。相较于传统检测算法多重特征图锚点操作,CenterNet 通过采用高分辨率的特征图进行输出,以省略上述操作,提高模型效率。

但CenterNet 仍存在以下局限,由于边界框的中心点进行预测,导致对多个目标下采样时,目标中心存在重叠情况,模型只能检测出单个目标。

针对基于回归的检测算法存在检测精度较低的问题,Tan 等提出了EfficientDet 算法。EfficientDet包含7 种结构,分别为EfficientDet D1~D7,速度逐渐变慢,但是精度逐渐提高。Tan 等受PANet 算法的启发,移除掉了只有一个输入的节点,连接相同level的输入和输出节点融合更多特征,将自底向上和自顶向下相结合作为一个基础层,可重复使用,最终设计出加权双向特征金字塔网络BiFPN 作为特征网络。在相同骨干网络EfficientNet,BiFPN 比FPN 高4 个百分点,并且参数量更少。EfficientNet在模型设计时考虑了网络的宽度、深度、分辨率三要素。EfficientDet模型结构如图18 所示,算法将EfficientNet 作为骨干网络,而EfficientNet B0~B6 就可以控制骨干网络的规模;BiFPN 的通道数、重复层数也可以控制;输入图片的分辨率,这些组成了EfficientDet的结构。

图18 EfficientDet模型结构Fig.18 EfficientDet model structure

EfficientDet 具有参数少,推理速度快,准确率高的优点。但EfficientDet 的预训练成本高,作者使用32 个TPU 在数据集上训练,才达到各项SOTA(state of the art)的成绩,训练完整模型需要的时间和硬件成本过高。

4.4 小结

上述One-stage 目标检测算法省略了候选区域生成步骤,将特征提取、目标分类和位置回归整合到一个阶段进行操作。YOLO 系列的改进大都基于上一版本的局限进行改进,SSD 系列的改进都是基于最初的SSD 算法进行改进,其他系列介绍了剔除锚框操作的一些算法。上述One-stage 目标检测算法最主要的三个改进方式:(1)获取锚框的方式,如YOLOv2 引入-means 聚类方式;(2)特征的高效利用,如SSD系列的各种特征融合方式和EfficientDet的BiFPN;(3)剔除锚框的操作,如YOLOX 通过预测分支解耦直接获取预测框位置,CornerNet 通过角点获取预测框位置,CenterNet通过中心点获取预测框位置。One-stage 目标检测算法检测精度提升的同时,检测速度也得到提高,达到了实时检测要求。

表5 总结了这类算法发表时所用的主干网络、检测速率、检测时的GPU 型号,以及在VOC2007 数据集、VOC2012 数据集和COCO 数据集上的检测精度(mAP)。“—”表示无相关数据,mAP 值中的括号表示以其作为训练集。表6 总结了One-stage 目标检测算法改进方式、优势以及局限。

表5 One-stage目标检测算法性能对比Table 5 Performance comparison of one-stage target detection algorithms

表6 One-stage目标检测算法总体分析Table 6 Overall analysis of one-stage target detection algorithms

从表5 可以看出,One-stage 目标检测同系列算法,检测精度不断提高,甚至超过了Two-stage 目标检测算法精度。同一算法,主干网络模型越深,输入图片尺寸越大,检测精度越高,但在相同GPU 环境下检测速度降低。从表6 可以看出,主要针对小目标难以检测的问题,通过不同层的特征进行融合得以缓解,实现多尺度、高精度的预测效果。同时,检测速度也达到了实时检测的要求,可以实现端侧的快速部署。

5 总结与展望

本文在对目标检测算法广泛研究的基础上,系统总结了基于深度卷积神经网络的目标检测算法的发展历程,详细介绍基于候选区域的Two-stage 目标检测算法和基于回归的One-stage 目标检测算法。深入分析了各类算法的网络架构、优缺点以及在主流数据集上的实验结果。过去的几年里,基于深度卷积神经网络的目标检测算法进入了发展的快车道,期间虽取得了一定的成果,但仍存在进一步发展的空间。下面提供了这一领域前沿问题和研究方向,以促进后续目标检测算法的研究与完善。

(1)多领域目标检测和多元化数据集:目前主流数据集类别数较少,大都是单一领域,导致所训练的模型只在某一单个领域精通,遇到未知实物存在漏检、错检的问题。因此创建多元化的数据集,用来训练多领域目标检测模型。开发一种通用的目标检测模型检测出多领域的目标成为未来的研究方向。

(2)小目标检测:基于深度卷积神经网络的目标检测成为检测主流,通过深层网络对小目标进行特征提取,存在语义丢失的问题。针对这一问题,可通过浅层语义和传统图像检测算法相结合的方式,或许可以起到更好的效果。

(3)高精度轻量级网络架构:现有模型架构复杂,参数多,达不到边缘设备实时检测的需求,在保证高精度的前提下,使模型轻量化变得尤为重要。例如,2017 年,Google 提出了MobileNet 轻量化网络架构,通过深度分离卷积代替传统卷积的方式,将一个传统卷积拆分成为一个深度卷积和一个逐点卷积。深度卷积在不改变输入特征图像的深度的情况下,对每一通道进行卷积操作,得到和输入特征图通道数一致的输出特征图;再由逐点卷积对获取特征图进行升维和降维。进而降低了模型的参数量,实现模型的轻量化。再如2020年,华为提出了GhostNet,若传统卷积输出的通道数为,GhostNet先得到/2个通道数的特征图;随后对已获取特征图的每个通道单独进行线性变换;再将线性变换的结果与初次获取的特征图叠加,得到个通道数的特征图。相较于MobileNet,GhostNet 的性能和轻量化进一步得到提升。因此,在边缘设备市场的需求下,降低模型计算开销将成为主流方向之一。

(4)视频检测:针对视频实时检测的现实需求,在融入了时间序列这一特征的同时,视频检测中相邻帧存在大量冗余特征信息、视频聚焦失调、遮挡等情况,导致计算冗余和检测精度较低。因此,研究基于视频序列数据的目标检测算法,将成为未来研究热点之一。

(5)多模态检测:目前大多数检测模型存在数据集类别单一化问题,可以将RGB 图像、激光雷达图、3D 图像等多种模态的数据进行融合,对自动驾驶、智能机器人等领域至关重要。因此,如何将不同模态的数据融合,及训练好相关的检测模型迁移到多模态数据中将成为未来的研究重点。

(6)弱监督和小样本检测:现阶段目标检测模型是通过大规模的实例标注数据训练得到的,而数据标注是一项耗时、耗力的工程。弱监督目标检测降低数据标注成本,通过少量的标注数据高效训练网络。可通过迁移学习,从相关领域中迁移标注数据,再训练所需领域少量标注数据,以提升所需领域目标检测效果。

6 结束语

基于深度卷积的目标检测算法虽在各类场景取得一定优势,仍需进一步研究与完善,以解决目标检测领域所存在的挑战,实现精度和性能上的进一步提升。本文以历年具有代表性的目标检测算法为主线,首先介绍了目标检测算法背景,然后根据算法所基于的架构进行对比,综述了各类目标检测算法的关键技术和优缺点,最后针对前沿领域对目标检测算法进行了探讨与展望。

猜你喜欢
卷积特征算法
离散型随机变量的分布列与数字特征
哪种算法简便
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
Travellng thg World Full—time for Rree
从滤波器理解卷积
抓特征解方程组
不忠诚的四个特征
进位加法的两种算法
根据问题 确定算法