基于深度学习的目标检测算法研究进展*

2021-10-03 04:12谢永强李忠博李少南
通信技术 2021年9期
关键词:候选框锚点卷积

刘 阳,谢永强,李忠博,齐 锦,李少南

(军事科学院系统工程研究院,北京 100071)

0 引言

目标检测(Object Dection,OD)是一种从视频或者图片中找到感兴趣的区域并标记出来的行为动作,可以通过算法提取特征来识别定位特定类别的对象。目标检测主要应用在人脸识别、无人驾驶、指挥以及安防等领域。目标检测功能的核心不在于硬件设备,而在于算法设计的优劣。不同算法性能的优劣将直接导致目标检测在不同场景下的检测效果。

自1998 年美国工程师提出目标检测概念以来,产生了大量基于手工设计特征的传统算法。这些算法大多是借鉴穷举的思想,在基于滑动窗口生成的候选框内提取特征,并将特征交给分类器去识别。常见方法包括Hear 特征+Adaboost 算法[1-2]、Hog 特征+SVM 算法[3]等。因为早期很多的目标检测算法缺乏有效的特征表示,所以设计了许多复杂的特征表示和在有限资源情况下处理特征加速的技巧。然而,传统的目标检测算法仍存在问题:为生成足够的候选区域,计算机的逻辑运算开销巨大;在提取特征时由于特征较多,筛选过程过于缓慢,分类速度和精度达不到实际应用的标准。Girshick 等[4]率先提出了将具有卷积神经网络的区域应用于目标检测,从而打破了传统目标检测算法性能趋于饱和的僵局。

近15 年来,基于深度学习的目标检测算法研究有了长足的进步。基于深度学习的目标检测算法主要分为基于锚点类模型和基于无锚点类模型两种。基于锚点类模型又分为单阶段方法和二阶段方法。单阶段方法只需要提取特征、分类和定位回归即可。二阶段方法比单阶段方法多一个生成候选框的步骤,即提取特征后生成候选框再分类定位回归。基于无锚点类模型主流算法分为基于关键点和密集预测两类。因为基于深度学习的目标检测算法各有优势,所以本文综合分析了各类算法的主要特点和存在的问题,以期能够帮助读者理解目标检测算法的原理和内涵。

本文系统分析了基于深度学习的目标检测算法,从单阶段、二阶段两方面出发,对基于锚点类的目标检测模型做出了深入分析,且总结了模型的主要特点和存在的问题,并从关键点和密集预测[5]类模型来分析基于无锚点类模型的研究进展。

1 基于锚点的目标检测算法

基于锚点的目标检测算法是由预先定义的锚点生成候选框,然后使用候选框进行分类和定位。卷积神经网络发展于2012 年,近年来逐渐成熟。由于卷积神经网络能够对数字图像有较好的特征表示,因此如何将卷积神经网络应用于目标检测是研究的重点。2014 年,Girshick 等首先提出了将这种网络结构应用在目标检测场景中,并命名为R CNN算法。从那时起,目标检测算法进入基于锚点的时代,同时迎来了快速发展,开始进入单阶段和二阶段交替发展阶段。目前,主流的基于锚点类算法按照出现时间和发展顺序可分为二阶段方法和单阶段方法。二阶段方法基于回归,而单阶段方法是在二阶段方法的基础上少一个生成候选框的步骤,相比于二阶段方法检测速度更快,更适合部署移动平台。二阶段方法检测精度更高,更适合精准检测的应用场景。图1 给出了近年来优秀的目标检测算法。

图1 2013 年11 月至2020 年10 月目标检测算法总览

1.1 二阶段目标检测

二阶段目标检测算法是基于回归的算法,由两个阶段组成。先通过策略生成锚点框,后将锚点框通过处理后进行回归定位。二阶段的经典主流算法主要有R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN 以及FPN 等。

1.1.1 R-CNN

R-CNN 是Girshick 等[4]提出的第一个工业级精度的二阶段目标检测算法,将PASCAL VOC 2007测试集的平均精度均值(mean Average Precision,mAP)从之前最好的35.1%提高到了66%。R-CNN的实现过程如图2 所示。R-CNN 算法首先通过选择性搜索[6]生成约2 000 个建议框,将每个建议框调整为同一尺寸即227 pixel×227 pixel,后将其放入AlexNet 中提取特征得到特征图。SVM 算法对提取的特征进行处理,然后每个类别都会形成一个对应向量,同时也会出现一个分值,最后使用非极大值抑制的技巧进行比对处理。同时,使用基于回归的方法调整生成的矩形框,使之对目标的包围更加精确。R-CNN 算法使目标检测的精度得到了质的改变,是将深度学习应用到目标检测领域的里程碑之作,也奠定了基于深度学习的二阶段目标检测算法的基础[7]。

图2 R-CNN 算法实现流程

R-CNN 的主要特点是将大规模的卷积神经网络应用于候选框来提取特征,但也存在一些问题。第一,每个候选框需要单独计算,且有的候选框重叠在一起,导致所需计算资源巨大;第二,训练过程的4个步骤单独完成,缓存数据独立保存,导致训练过程复杂;第三,前两个缺点导致运行速度相对较慢,无法满足实时性需求;第四,对图像的输入大小有约束,要求图像的尺寸为227 pixel×227 pixel,对图像要进行缩放操作会破坏图像的信息,降低检测器的检测精度。

1.1.2 SPP-Net

针对卷积神经网络的候选框的重复计算和缩放图像造成的信息损失问题,He 等[8]基于卷积神经网络于2015 年提出SPP-Net 算法。SPP-Net 在R-CNN 的基础上去掉了在输入图像上生成候选框并将其统一成同一尺寸的操作。将SPP 层放入全连接层和倒数第一个卷积层之间,将获得特征向量的方式设置在卷积操作之后,减少了操作,降低了复杂度。SPP-Net 具体实现流程如图3 所示。

图3 空间金字塔池化层结构

SPP-Net 创新使用了空间金字塔结构,只提取一次特征,大大减少了计算量,相对提高了运行速率。但是,SPP-Net 也存在一些问题。第一,它仍然保留了R-CNN 的生成候选框、提取特征、SVM分类和定位回归4 个步骤,中间数据依旧保存,时间消耗仍然巨大;第二,分类网络的初始参数被直接接入骨干网,没有针对具体的检测问题做调整;第三,由于输入图像不需要缩放成统一尺寸,增加了感兴趣区域的感受野,导致权重不能及时更新;第四,SPP 的调整只能调节全连接层,当网络足够深的时候无法起作用。

1.1.3 Fast R-CNN

针在2015 年Girshick 等[9]继承R-CNN 的同时吸收了SPP-Net 的特点,提出Fast R-CNN 算法,将感兴趣区域池化层(ROI Pooling Layer)放在倒数第一个卷积层后,用来将ROI 特征生成固定比例的特征图,并将其与全连接层连接。同时,Fast R CNN 网络具有双层分支输出——第一个输出通过Soft max 函数来计算类别上的概率分布,第二个输出矩形框的精准调校信息。具体实现流程如图4 所示。

图4 Fast R-CNN 算法实现流程

Fast R-CNN 使用了和金字塔池化层类似的感兴趣区域池化层,但是感兴趣区域池化层更简单,可以直接将导数结果传回骨干网络。此外,Fast R-CNN 将提取特征后的分类步骤和边界框回归步骤添加到深度网络中进行同步训练,其中训练速度和测试速度较R-CNN 有较大提升。Fast R-CNN 存在两个问题:一是生成候选框仍然是使用选择性搜索,虽然速度较R-CNN 有较大提升,但仍然无法满足实时性需求;二是仍然保留了SPP-Net 的各模块单独运算,计算量仍然巨大。

1.1.4 Faster R-CNN

针对SPP-Net 和Fast R-CNN 都使用了选择性搜索的算法模块,造成计算量巨大的问题。为了解决这个问题,Ren 等[10]提出了Faster R-CNN 算法。在Fast R-CNN 的基础上添加区域建议网络[11],替代了传统的特征提取方法,提高了网络的训练速度,通过神经网络的权值共享实现了端到端的训练。Faster R-CNN 的具体实现方式如图5 所示。

图5 Faster R-CNN 算法实现流程

R-CNN、Fast R-CNN、Faster R-CNN 属于同一体系的不断优化。表1 列出了3 个模型的使用方法、缺点和改进程度。

表1 R-CNN、Fast R-CNN、Faster R-CNN 对比

1.1.5 R-FCN

针对Faster R-CNN 对每个ROI 进行大量的重复计算问题,2016 年Dai 等提出R-FCN[12]方法,引入了位置敏感分数图,以解决在图像分类中图片自身的变化不会更改图片属性的矛盾问题,从而达到将几乎所有的计算权值都在整幅图像上共享的目的。位置敏感分数图使用感兴趣区域池化层来完成信息采样,融合分类与位置信息。R-FCN在PASCAL VOC 2007 数据集上取得了mAP 值为83.6%的成绩。具体实现方式如图6 所示。

图6 R-FCN 算法实现流程

FCN 提出了位置敏感分数图,提高了CNN 的建模几何变换能力,但缺乏对候选区域全局信息和语义信息的利用。

1.1.6 FPN

2017 年,Lin 等[13]在Faster R-CNN 的RPN 层的基础上进一步提出了特征金字塔网络(Feature Pyramid Net works,FPN)算法。该设计结构可以使不同分辨率的信息特征融合,使得特征图具有较强的语义。FPN 的网络结构如图7 所示。

图7 FPN 算法实现流程

FPN 采用自顶向下的结构,在过程中通过最近邻插值的上采样方法进行特征图放大,可以最大程度地保留特征图的语义信息,但是内存占用巨大,导致速度执行过慢。

1.1.7 二阶段方法的相关改进工作

R-CNN 解决了不用卷积神经网络进行分类的问题,但是需要进行边界框定位回归且利用SVM 分类器分类。Fast R-CNN 解决了边界框和标签不能共同输出的问题,但是生成候选框仍是采用选择性搜索方法,消耗时间过长。Faster R-CNN 解决了选择性搜索问题。Mask R-CNN[14]是一个灵活的模型,可应用于检测、分割以及识别等多种任务。之后大量的二阶段方法在网络结构的改进方面都围绕着R-CNN框架,而MR CNN[15]、HyperNet[16]、CRAFT[17]等方法都是在围绕R CNN 的特征层和分类器做调整。A-Fast R-CNN[18]加入对抗学习,增加了识别的泛化能力。Light Head R-CNN[19]针对检测速度慢设计了一种全新的结构。针对小目标检测问题,SNIP[20]利用金字塔结构在训练期间减少尺寸差异。Cao[21]通过引入注意力机制来解决高分辨率下的特征图与感受野的平衡问题。TridentNet[22]提出了参数共享策略。之前大量的研究都是改进网络结构,Peng[23]提出了一种大的mini batch的目标检测模型MegDet,提高了精度。此外,为了平衡质量与数量的关系,加入级联检测提出了Cascade R-CNN[24]。

1.2 单阶段目标检测

二阶段单阶段目标检测算法是直接进行定位回归的算法,比二阶段方法减少了分阶段步骤,所以检测速度更快。基于深度学习技术的单阶段目标检测主流算法主要包括REDMON[25]等提出的YOLO算法及其系列和Liu[26]等提出的SSD 算法及其系列。两种算法系列均是对原始图像直接进行特征提取,计算出目标物体的类别概率和位置坐标值[7]。

1.2.1 YOLOv1 算法

2015 年,Redmon[25]等提出了YOLO 方法,最大特点提升检测速度达到45 张/秒,开始了端到端的目标检测技术的发展。YOLOv1 先对图像进行预处理,将图片调整为指定大小,然后类似于回归处理来进行卷积提取检测。具体网络结构如图8 所示。YOLOv1 相对于Faster R-CNN,牺牲了检测准度和定位精度,但是检测速度提高了近7 倍。

图8 YOLOv1 结构

1.2.2 SSD 算法

针对YOLOv1 算法精度差的问题,Liu[26]等提出了结合YOLO V1 和Faster R-CNN 的算法SSD。如图9 所示,SSD 算法使用VGG16 作为基础网络。由于不同卷积层所包含特征的尺寸不同,SSD 使用了特征金字塔预测的方式,通过多层模型参考模式来实现不同大小的检测。在PASCAL VOC 2007 数据集测试300 pixel×300 pixel 的图像,实时速率达到59 张/秒,mAP 值达到76.8%。

图9 SSD 结构

SSD 使用多层预测来替代单层预测,但还存在一些问题。第一,采用多层递进,使最后一层的感受野接收信息量增多,导致对小目标物体检测精度不够。第二,存在回归模型的通病,即可能无法收敛。

1.2.3 YOLOv2 算法

Redmon[27]针对YOLOv1 的不足和存在的问题提出了一种进阶结构YOLOv2。YOLOv2 在所有的卷积层上都添加了批标准化操作,省略了dropout操作,使得mAP 有了2% 的提升。YOLOv1 预测矩形框的位置可通过全连接来实现,而Faster R-CNN 中通过计算边界框相对于锚点的偏移量,并非直接预测边界框的坐标。于是,YOLOv2 引入了锚点框的概念来预测边界框,并去掉了全连接层。YOLOv2 的基础网络也进行了调整,使用了DarkNet19 分类网络。该网络有19 个卷积层和5 个最大池化层。YOLOv2 具体的网络结构,如图10 所示。YOLOv2 在PASCAL VOC 2007 数据集上的检测精度从66.4%提升到78.6%[7]。

图10 YOLOv2 主干网络结构

1.2.4 YOLOv3 算法

在YOLOv2 的基础上,在2018 年提出了更快、更好的YOLOv3[28]方法。YOLOv3 在整体结构上有较大改动,在基础网络上使用DarkNet 53,其网络结构如图11 所示。它的模型有106 层网络,精度与ResNet101 相同速度下更快。YOLOv3 使用类似FPN 的方法进行多尺度预测,在网络中3 个不同位置的3 种不同尺度的特征图上进行检测任务,使小目标检测精度有明显提升。对同一边界框进行多个类别的预测,使用多个独立的逻辑分类器代替Softmax 函数。这些改变使得YOLOv3 在MS COCO数据集上的准确率提高到了33.0%。

图11 YOLOv3 主干网络结构

1.2.5 YOLOv4 算法

2020 年,Bochkovskiy[29]等人提出了YOLOv4。该模型是集所有优秀的目标检测算法的调参技巧于一体的目标检测模型。它结合了加权残差连接、跨阶段部分连接、跨小批量规范化、自对抗训练、Mish 激活函数、CIoU 损失函数和DropBlock 规范化等方法。主干网络为CSPDarknet53,添加特征金字塔模块来增加感受野,使用PANet 来替代FPN 做特征融合。在MSCOCO数据集上,它达到43.5%的平均精度(Average Precision,AP),同时在TeslaV100 上达到实时速度65 张/秒的最新成果。YOLOv4 网络结构,见图12。

图12 YOLOv4 结构

1.2.6 RetinaNet 算法

针对样本类别不均衡的问题,Lin 等提出了RetinaNet[30]算法。该算法采用一种新的损失函数focal loss 来替代交叉熵损失函数。RetinaNet 算法可以使单阶段方法的精度媲美一部分二阶段方法,在MS COCO 数据集中mAP 值可以达到40.8%。虽然检测速度仍比单阶段方法慢,但仍然超过部分二阶段方法。

1.2.7 单阶段方法的相关改进工作

YOLO 系列和SSD 系列是单阶段目标检测算法的中流砥柱,几乎奠定了目标检测算法的发展模型。R-SSD[31]、DSOD[32]是基于SSD 的改进,解决小目标信息缺失的问题。RON[33]更加关注负例样本。STDN[34、PFPNet[35]解决了检测速度与精度平衡的问题。M2Det[36]采用多层金字塔结构,使得精度更高。

2 基于锚点的目标检测算法

基于锚点的模型是指在原图上铺设好大小一定的矩形包围框。然而,基于锚点的模型仍存在问题:预先设定的锚点框数量太多,当目标较少时会浪费大量资源;预设的锚点框大多为负样本,训练时会造成正、负样本失衡;预设的锚点框大多是凭人为经验设计的,其尺寸对数据集敏感,可能会影响检测精度;对于不同的场景,需要修改大量的超参数。为了解决上述问题,提出了基于无锚点的检测模型。以下从基于关键点和基于密集预测类模型两个方面来梳理基于无锚点的主流目标检测算法。

2.1 基于关键点的目标检测算法

在2018 年,Law[37]等人提出了CornerNet 算法,通过角点来检测边界框。在此基础上,Zhou[38]等人提出了ExtremeNet 算法,是一种新的目标检测方向。它选取上下左右4 个极值和1 个中心点作为关键点。Duan[39]等人发现CornerNet 只使用角点会出现精度不准的问题。为了解决这个问题,提出了CenterNet算法。它添加了中间结构,不仅能够检测物体的角点,还可以使物体的中心点进行检测匹配。

2.2 基于密集预测的目标检测算法

Tian 等人[40]提出了基于单阶段的全部由卷积层构成的FCOS 算法,没有锚点计算,同时增加多种结构来预测多尺度图像。为了特征层与图像进行自适应匹配,FSAF[41]算法不设置锚点来实现基于无锚点的模型。FASF 解决了基于锚点的两种限制问题:一是特征的选择问题;二是锚点的采样问题。

3 不同目标检测算法的性能比较

在目标检测领域中,在业界承认的ImageNet、COCO 等公开数据集进行算法性能验证是检测模型的最好方法。本文采用所有类别平均准确率(mPA)做为评价模型准确率性能的优劣,用每秒内可以处理的图片数量即帧率做为评价模型检测速度性能的优劣。相同环境下,帧率越大,检测速度越快。表2 是对基于锚点类模型和基于无锚点类模型中的主流算法进行性能指标参数的比较。可以看出,Faster R-CNN 在VOC 2007 数据集的mAP 值有73.2%,检测速度有7 帧/s。但因为Faster R-CNN可修改性很强,所以修改后的Faster R-CNN 算法可广泛应用于工业检测。总体来说,二阶段方法更适用于具有对生产的安全性、高效性、完整性要求高的自动化生产的工业场景。YOLOv4 在MS COCO 数据集的mAP 值为43.5%,对小目标物体有较强的泛化能力,检测速度达到了23 帧/s。最新的单阶段目标检测算法的检测精度已达到工业应用标准,且检测速度达到了近实时水平,适用于对实时性有较高要求的应用场景。而CenterNet 在MS COCO 数据集上,虽然mAP 值达到了47%,但是检测速度只有7.8 帧/s。总体来说,单阶段方法比无锚点类算法更适合有实时检测需求的应用场景。随着算法结构的复杂设计,未来一定是在精度提升的同时保证较快的检测速度,且部署量级需足 够小。

表2 不同目标检测算法的性能

4 目标检测算法的主要挑战

现在仍然有以下问题有待突破。第一,小目标问题。由于小目标尺寸小,仅占整个图像的部分区域,包含的特征信息较少,难以消除复杂特征背景的干扰。目前,很多目标检测算法通过融合多尺度的特征信息感知目标的上下文信息,以解决小目标的特征信息少的问题,但是仍然会造成误检和漏检等问题。第二,光照问题。可见光的目标检测已经趋于成熟,在逆光条件下甚至是在黑夜场景中对目标进行检测识别存在一定挑战。第三,传输时的恶劣信道问题。当数据图像经过网络传输造成损伤丢帧时,需要目标检测算法仍然可以识别。未来,在复杂的背景环境中要消除复杂特征的干扰,提升对目标检测的准确性和实时性。

5 结语

过去的10 年中,基于深度学习的目标检测在算法识别精度和检测速度上取得了显著成就。本文深入系统地分析了基于锚点的目标检测算法,从基于关键点和基于密集预测类模型两个方面梳理了基于无锚点的目标检测算法。结合目标检测的评价指标讨论模型的主要特点、存在的问题以及进一步扩展和改进这些目标检测模型的相关工作。本文的分析结果能够帮助读者理解主流的目标检测算法,了解目标检测算法对传统应用的支撑作用。

猜你喜欢
候选框锚点卷积
艺术史研究的锚点与视角
——《艺术史导论》评介
基于Two-Stage的目标检测算法综述
基于3D-Winograd的快速卷积算法设计及FPGA实现
5G手机无法在室分NSA站点驻留案例分析
5G NSA锚点的选择策略
5G NSA组网下锚点站的选择策略优化
基于深度学习的重叠人脸检测
卷积神经网络的分析与设计
从滤波器理解卷积
基于单帧标注的弱监督动作定位