基于卷积神经网络的目标检测算法综述∗
2021-10-11卜乐平
王 灿 卜乐平
(海军工程大学电气工程学院 武汉 430033)
1 引言
当前目标检测不仅在学术界受到大量的研究,在实际生活中也得到了大量的应用,如视频火灾探测、无人驾驶、安全监控、无人机场景分析等。目前目标检测算法主要分为两种,基于图像处理的传统目标检测算法和基于卷积神经网络的目标检测算法。
在实际应用中,利用计算机视觉技术对目标进行自动检测是一项非常具有挑战性的任务。背景复杂、目标遮挡、噪声干扰、低分辨率、尺度和姿态的变化等因素都会严重影响目标检测性能。传统的目标检测方法基于手工设计的特征提取,对光照变化不具有鲁棒性,缺乏良好的泛化能力。在2012年之前的PASCAL VOC挑战赛[1]中,目标检测的性能几乎没有什么进展,这是由于传统算法的局限性导致的。最早出现的卷积神经网络是LeNet[2],但是真正让人们把注意放在深度学习上的是2012年 Hinton 等提出的卷积神经网络 AlexNet[3]。该模型在ImageNet大规模视觉识别挑战赛上以绝对的优势获得了当年的冠军。在这一转折点发生后,卷积神经网络就受到了越来越多人的关注,新的模型层出不穷。2014年,Girshick等在此基础上提出了R-CNN[4],第一次将卷积神经网络应用于目标检测,并且检测精度比传统检测算法提高了近30%,引起了很大的反响。从目前学术研究和实际应用来看,基于卷积神经网络的目标检测算法比传统的方法具有更高的精度和更短的测试时间,几乎已经完全代替了传统算法。
2 传统目标检测算法
传统的目标检测算法是基于图像处理,一般分为四个阶段,首先通过滑动窗口的方式在目标图像上产生候选框,然后采用尺度不变特征变化(SITF)[5]、Harr-like或方向梯度直方图(HOG)[6~7]等方法提取特征,再利用可变形部件模型(DPM)[8]、Adaboost[9]或支持向量机(SVM)[10]等对其进行分类,最后采用非极大值抑制(NMS)[11]对结果进行修正和优化。下面简要分析这四个步骤的优缺点。
1)候选框选取:由于目标大小和位置是不确定的,所以采用滑动窗口的策略,通过一系列不同大小的窗口来遍历图像。这种方法虽然可以精准地找出目标框,但是这种穷举的策略使该算法时间复杂度大,极大影响了目标检测算法的检测速度。
2)特征提取:手工设计的特征提取算法对目标背景和光线变化不大的识别任务有着良好的特征提取作用。但是对于一些场景和光线多变的识别任务来说,这种方法不能有效地进行特征提取。这些外部因素的影响使得具有鲁棒特征提取的算法设计变得困难。
3)分类:分类结果的好坏主要由输入的特征好坏决定,如果特征提取环节效果好,分类的准确性一般就会高。
4)修正优化结果:当所有的候选框都被分类后,我们还要选出位置信息与目标位置最接近的候选框。一般采用NMS选出最优框,NMS是将各候选框的位置跟真实框的位置进行比较,选出最优框。
综上所述,传统目标检测算法在特定场景下有着不错的性能,但是并不能适应现在目标检测任务要求。现在目标检测任务对反应时间、泛化能力和精准性都有很高要求。而滑动窗口策略会导致算法时间复杂度高,手工设计的特征提取器鲁棒性不够强,这两个缺点导致传统目标检测算法不能达到现代目标检测的要求。
3 卷积神经网络
在计算机视觉领域,特征提取和分类一直是其不可分离的一部分。在传统的图像处理中,提取特征的方法一般是基于统计规律或者一些先验知识而预先设计好的[12]。这种手工设计的特征提取方式,不能完全提取出原始图像的信息,鲁棒性也不强。卷积神经网络是专门用来处理图像数据这种具有类似网络结构的数据的神经网络[13]。卷积神经网络增加了局部感受野、稀疏权重和参数共享的概念[14]。这三种概念的提出使得卷积神经网络跟其他神经网络相比拥有一定平移和尺度的不变性,更加适合图像数据的学习。平移和尺度不变性保证特定特征的识别更加有效[15]。下面将对近年来优秀的模型进行简单的介绍。
1)2014年,Karen等提出了 VGGNet[16],该模型使用很小的(3×3)的卷积核来做特征提取,并证明了模型的深度越深、参数越多,提取特征的能力越强,效果越好。
2)2014年Christian等提出了Inception 系列[17~20]。Inception-v1将不同尺寸的卷积核和池化层混合在一起,增加了模型宽度,减少了模型参数。Inception-v2提出了将5×5的卷积核用两个3×3卷积核替代的方法,既保持了感受野的大小也减少了模型参数量。Inception-v3将7×7的卷积核分解成7×1和1×7大小的两个卷积核,即可以加速计算,同时可以使得网络深度增加,提高非线性表达能力。Inception-v4主要是将残差结构引入到其中,解决了卷积网络的达到深度一定后就容易陷入性能饱和的困境。
3)He等提出了 ResNet[21],解决了卷积神经网络收敛速度随着深度增加会越来越慢,甚至无法训练的情况。残差学习是该模型的核心思想,利用残差结构网络可以解决由网络深度增加带来的梯度消失的问题,并且增加深度可以大幅度增加准确性。
4)DenseNet[22]用前馈和反馈的形式将每一层连接到另一层,建立了层与层之间的密集连接。该结构可以缓解梯度消失、增强特征传播和重用,大幅度减少参数数量。
5)2017年,Andrew等提出了轻便型模型MoileNet-v1[23],在准确率小幅度降低的前提下,大幅度地减小了模型参数和运算量。
6)2018 年 Hu 等提出了 SENet[24],其核心是 SE(Squeeze and Excitation)块,运用了跳跃式传递的思想。压缩部分将特征图压缩成一维,这一维特征获得特征图全局视野,感受区域更广。激励部分把压缩后的数据作为全连接层的输入,然后对每个通道重要性进行预测,再将得到的每个通道的重新作用到之前特征图的每一个通道上。SE块只需增加较小的额外计算成本就可以显著提高卷积神经网络的性能。
7)2019年,Li等受到人体大脑结构的启发提出了SKNet[25],其模型使用了动态选择机制,该机制允许每个神经元根据输入信息的多个尺度来自适应地调整其接受区域的大小。
从表1可以看出,短短几年发展,卷积神经网络提取特征的能力越来越强,在TOP-1上的错误率从28%减小至18%。通常情况,目标检测的准确率高低与卷积神经网络息息相关,性能强大的卷积神经网络可以大幅度提升目标检测的准确率。
表1 部分卷积神经网络模型性能对比
4 基于候选区域的目标检测算法
基于候选区域的目标检测算法又称二阶段算法。该类算法首先在输入图像上选出候选区域,然后用卷积神经网络对候选区域进行特征提取和分类。下面对其主要模型进行介绍,并给出性能上的总结。
4.1 R-CNN
2014年Ross Girshick提出了R-CNN,使用选择搜索[26]算法替代了滑动窗口,解决了窗口冗余的问题,降低算法时间复杂度。同时用卷积神经网络替代了传统手工制作的特征提取部分,能更有效提取出图像的特征,提高网络对外抗干扰能力。
模型的性能相比传统目标检测算法有了很大的提升,但是也存在不少问题。R-CNN生成约2000个候选区域,特征提取耗时过多;卷积神经网络需要固定大小的输入,图像的裁剪或拉伸会导致图像信息的丢失[27]。
图1 R-CNN网络模型
4.2 SPPNet
为了解决R-CNN的问题,2015年Kaiming He等提出了 SPPNet[28]。SPPNet仅需要从整个图像上运行一次卷积层来获得特征图,极大地减少了特征提取所消耗的时间。然后将特征图上的候选区域输入金字塔空间池化,提取出固定长度的特征向量。
图2 金字塔空间池化层
SPPNet不需要固定大小的图像输入,减少了图像的裁剪或拉伸导致的图像信息丢失,同时避免了重复计算卷积特征。因此在处理测试图像时,准确度和速度都提升了。速度上的提升最为明显,提升约24倍~64倍。
4.3 Fast R-CNN
2015年Girshick等提出了Fast R-CNN[29],该模型在SPP-Net的基础上提出了ROI(Region of Interest)池化层,作用相当于单层的SPP Layer。具体过程如图3。
图3 Fast R-CNN流程图
Fast R-CNN不仅精度和测试速度性能好于SPP-Net,而且训练速度也大幅度提升,同等条件下比R-CNN训练快8倍。训练速度加快是因为使用了多任务损失,共同训练分类和边界框回归。
4.4 Faster R-CNN
2016年Ren等提出了Faster R-CNN[30],网络模型如图4。在结构上,该模型将特征提取、候选区域选取、目标框微调、和分类整合到了一起,使得综合性能有了较大的提高,真正实现了端到端。模型利用RPN生成候选区域,利用手工设计的锚框将候选框数目从之前的2000个减少到300个,同时候选框的质量也有本质的提高,使得检测速度和准确性都有大幅度提升。
图4 Faster R-CNN结构图
但是Faster R-CNN还存在不足之处,因为ROI池化层生成的每个特征向量需要经过多个全连接层,这大大增加了计算量,导致检测速度只能达到一秒5张。并且,Faster R-CNN对小目标的检测效果不是很好。
4.5 Mask R-CNN
2017 年 He等提出了 Mask R-CNN[31],该模型结合了Faster R-CNN和FCN[32]的思想,特征提取部分采用特征金字塔网络(FPN)[33]的架构,并用ROI Align池化层代替了ROI池化层,另外还加了Mask预测分支,具体结构如图5。
图5 Mask R-CNN结构图
新增的FPN架构,使模型的多尺度的特征提取能力得到了加强,对小目标物体的识别更加的精准。但是检测速度却和Faster R-CNN一样,大约一秒5张,不能满足实时监测应用要求。
4.6 TridentNet
2019 年 Li等提出了 TridentNet[34]。该模型验证了感受野对目标检测中尺度变化的影响,即大的感受野更有利于大目标的检测,小的感受野更有利于小目标的检测。
图6中仅显示TridentNet的主要部分,RPN和Fast R-CNN在各个分支都存在,为了简单起见而忽略。如图所示三叉戟块中的三个分支以不同的膨胀率共享相同的参数。不同的膨胀率使得每个分支的感受野不同,可以更好地实现多尺度的目标检测。共享参数让使用三叉戟块只用增加一点额外的计算。整个模型成功地解决了目标检测中尺度不变的问题,但是并没有提高检测速度。
图6 TridentNet结构图
4.7 D2Det
2020年Cao等提出了一种新颖的二阶段目标检测方法D2Det[35],它可以同时解决精确定位和精确分类的问题。模型引入了密集局部回归,该回归可以预测对象提议的多个密集框偏移,密集局部回归不限于固定区域内的一组量化的关键点,并且具有回归位置敏感实数密集偏移的能力,从而可以实现更精确的定位。为了进行准确的分类,引入了DRP(Discriminative RoI Pooling),分别从第一阶段和第二阶段提取准确的目标特征区域,进而提升性能。
4.8 小结
表3中指标含义如表2所示,“-”表示无相关数据。从表3可以看出,基于候选区域的目标检测算法的精度和检测速度越来越高,但是始终无法满足实时检测的要求。主要因为两点:1)候选区域的选定过于复杂;2)模型规模越来越大,越来越深,导致计算量越来越大。
表2 COCO数据集主要评价指标
表3 部分基于候选区域的目标检测算法在COCO数据集上的性能对比
5 基于回归的目标检测算法
基于回归的目标检测算法又称一阶段算法,该类算法省略了候选区域生成阶段,直接将特征提取、目标分类以及目标回归在同一个卷积神经网络中实现,真正意义上实现了端到端。下面对其主要模型依次进行介绍,并给出性能上的总结。
5.1 YOLO系列
2016年,Redmon等人提出了YOLOv1[36],该网络将目标检测的问题看作回归问题求解。单个的神经网络可以在一次评估后直接同时得到物体的位置和其所属类别及相应的置信概率。YOLOv1的优点就是检测速度很快,可以做到实时监测。但是对小目标的识别效果尤其不好,并且YOLOv1输入必须是固定大小的图片。
2017年Redmon等人在其基础上提出了YOLOv2[37],主要有三个改进的地方。1)使用了批量标准化操作,解决了有饱和非线性的模型的收敛困难的问题,并可以代替dropout。2)使用高分辨率图片对网络进行微调。3)使用锚框(anchor box)和卷积来做预测。
2018年Redmon等提出了YOLOv3[38]。该模型使用Darknet-53作为网络骨干。另外YOLOv3采用了FPN架构,在三个不同尺度的特征图上进行检测,提高了网络对小目标的检测效果。
2020年Bochkovskiy等提出了YOLOv4[39],该模型选择了CSPDarknet53作为主干网络,同时模型中加入了很多普遍适用的算法。例如加权残差连接、跨阶段部分连接、自对抗训练、跨小批量标准化和DropBlock正则化等。这些调优的手段使得该模型实现了当时最优的实验结果。
5.2 SSD系列
浅层特征图包含位置信息,对目标定位非常重要。深层特征图包含大量的语义信息,对图像目标的分类非常重要。受到该思想的影响,2016年Liu等提出了SSD[40],开创了应用多尺度的特征图进行目标检测的先河,从不同比例的特征图生成不同比例的预测。网络具体结构如图7,其中浅层的特征图用来预测小尺寸目标,深层的特征图用来预测大尺度目标,提升了小尺寸目标的检测效果。但是由于浅层特征图语义信息不够多,导致SSD对小目标检测效果还是很差。同时由于正负样本的不均匀,导致训练比较困难。
图7 SSD网络结构
5.3 RetinaNet
2017年Lin等发现了一阶段检测器精度落后二阶段检测器背后的原因并提出了RetinaNet[41]。他们认为训练过程中遇到的样本类别失衡是导致一阶段检测器精度落后的主要原因。为此,通过重塑标准的交叉熵损失函数,引入了名为“聚焦”的新损失函数。该损失函数降低了易分类样本的权重,以便检测器在训练过程中将更多的注意力放在分类困难的样本。图8为模型结构图,使用ResNet-FPN的结构来进行特征提取,并在特征金字塔的每一层输出两个子网,分别用于分类和anchor框定位回归。实验证明经过聚焦损失函数训练之后,RetinaNet不仅速度能够与之前的一阶段检测器相匹配,同时超越了二阶段检测器的精度。
图8 RetinaNet结构图
5.4 M2Det
2019 年 Zhao等提出了 M2Det[42]。由于之前特征金字塔仅根据固有的特征来构建,因此它们具有一些局限性。在M2Det中提出了更有效的特征金字塔,多层特征金字塔。该结构首先利用FFMv1将骨干提取的特征图进行融合得到基本特征,再利用TUM和FFMv2模块交替生成一系列的特征金字塔,最后利用SFAM模块将特征金字塔中尺度相同的特征层聚合起来。
5.5 CornerNet
同年Hei等发现使用锚框有很多缺点。例如锚框的数量巨大,容易使得正负样本不平衡;锚框的超参数难以确定等。于是提出了不使用锚框的神经网络模型 CornerNet[43],该模型只需检测一对关键点,即边界框的左上角和右上角,就可以确定目标位置和类别。主要是先利用角池化层来确定左上角和右上角,然后利用预测模块,一个用于左上角,另一个用于右上角。使用来自两个模块的预测,可以对角点进行定位和分组。
5.6 CenterNet
受到CornetNet的启发,Zhou等提出了Center-Net[44],同样没有使用锚框。CornerNet由于需要经过一对关键点的检测阶段,所以在检测速度上有所下降。而CenterNet将目标检测问题变成了一个中心点的估计问题,无需对关键点进行检测、分析和后期处理。它通过将对象建模成目标框的中心,并使用关键点估计找到中心,然后回归得到对象的大小、位置和方向甚至姿势。首先将图像传入卷积神经网络,得到一张热力图,热力图的分峰值点即中心点,然后利用峰值点附近的图像特征回归得到目标的宽高信息,最后通过输出结构得到预测值。
5.7 EfficienDet
2019年Tan等为了寻找一个兼顾检测速度和精度的模型,在 EfficienNet[45]的基础上提出了 EfficienDet[46]。该模型以 EfficienNet为主干网络,双向特征金字塔网络(BiFPN)为特征网络,同时引入了联合尺度缩放的方法。BiFPN可以快速地进行多尺度特征融合,其中应用了加权的思想。联合尺度缩放可以将主干网络、特征网络和框-类预测网络的深度、宽度和分辨率进行统一缩放,以达到最优效果。结合这些方法的EfficienDet模型参数比当时最先进的模型减少了4倍,并且检测速度提升了3倍。
5.8 CentripetalNet
为了解决基于关键点的探测器容易匹配错误的问题,Dong等提出了CentripetalNet[47]。该模型可以预测目标的角点位置和向心位移,并匹配其对应的角,这种方法比传统的嵌入方法更准确地匹配角点。同时为了充分利用角池化层后形成的部分特征图中的十字星特征,提出十字星形可变性卷积,可以增强对该特征的学习。经试验该模型在COCO数据集上性能表现超越了当前所有无锚框的目标检测器。
5.9 小结
从表4可以看出,基于回归的目标检测算法普遍检测速度快于基于候选区域的目标检测算法,并且在检测精度上也逐渐超越后者。但是检测精度的提升也导致了检测速度降低,未来应该更关注如何实现检测速度和精度的平衡。
表4 部分基于回归的目标检测算法在COCO数据集上的性能对比
从表4可以看出,基于回归的目标检测算法明显普遍检测速度快于基于候选区域的目标检测算法,并且在检测精度上也逐渐超越后者。但是检测速度的提升也导致了检测速度降低,未来应该更关注如何实现检测速度和精度的平衡。
6 当前存在问题与解决方案
6.1 存在问题
尽管目标检测算法整体上已经相对比较成熟了,但是在特殊场景下的表现还有很多优化空间,例如当被检测目标为小物体、被遮挡物体和密集分布物体等时,目标检测算法的表现与普通情况下有着显著的差距。下面将介绍这些问题的产生原因和解决方案。
6.2 小物体检测的解决方案
小物体的检测效果一直不好,主要是有三点:1)小物体图像的分辨率低,导致特征表达能力弱。2)在使用锚框的检测器中,即使锚框完全的包围住了目标,也容易因为目标太小造成IOU低,从而导致目标没有对应的锚框。3)训练数据集中,只有少量图像包含小物体,这容易导致检测器偏向于更多地关注中型和大型物体。并且小物体覆盖区域小,缺乏位置多样性,难以在检测时间内被检测器识别到[48]。
针对以上存在的不足,提出下面几点方法:1)增加输入图像分辨率,这可以大幅度提升小物体的特征表达能力,使用多尺度特征融合方法,例如FPN、STDN和BIFPN等。2)基于不同分辨率层使用不同锚定比例[49],利用方法FreeAnchor,使网络能自主学习配对锚框与目标。3)利用小物体对图像进行过采样,利用多次复制粘贴小物体来增强数据集。
6.3 被遮挡物体检测的解决方案
遮挡分为两类,类间遮挡和类内遮挡。遮挡导致特征表达不完整,增加了分类和定位的难度,一般是汽车和人群检测时容易发生遮挡现象。对于类间遮挡,很难有针对性的方法去解决,最好的方法是通过数据扩充来增加遮挡示例的数量,提高遮挡和变形监测的鲁棒性[50]。对于类内遮挡,主要有以下几种方法:1)引入Reploss损失函数,奖励逼近真实框的预测框,惩罚接近具有不同指定目标的其他预测框[51];2)使用部分遮挡关注区域(PORoI)合并单元代替RoI合并层[52];3)利用IoU损失函数进行边界框预测,将预测框的四个边界作为一个整体进行回归。
6.4 密集分布物体检测的解决方案
目标检测器在密集分布物体上的检测效果不佳,主要是因为:1)神经元的感受野通常沿轴排列并具有相同的形状,而物体通常具有不同的形状并沿各个方向排列;2)检测模型通常是在通用知识的基础上进行训练的,在测试时可能不能很好地概括处理特定的物体;3)位置接近的相似物体的预测框的位置难以确定;4)密集分布物体在经过NMS处理之后容易被视为单个对象。
针对前两个点不足,可以利用FSM(Feature Selection Modul)和 DRH(Dynamic Refinement Head)解决[53]。对于后两个问题,有以下解决方法:1)引入新颖的EM合并单元[54];2)使用Sofe-NMS,利用递减函数来衰减边界框的检测分数,确保NMS不会误删除候选框[55];3)引入新的网络替代NMS,可以减少NMS中的手工设计因素[56]。
7 结语
本文结合国内外现状,在对卷积神经网络研究的基础上,系统地总结了目标检测算法的发展情况,重点对基于卷积神经网络的目标检测算法进行研究分析,并对相关算法的优缺点和性能进行了简要的介绍。同时提出了目标检测当前存在问题和解决方案。
综合考虑,本文认为未来研究方向应该有以下几点:1)开发具有更多类别的大规模数据集。2)研究更加轻便的模型,减少或消除网络冗余。3)利用自动神经体系结构搜索深度学习绕过手动设计工程。4)检测器具有从少数例子中学习的能力。5)检测器可以定位并识别之前从未见过的类别。
对于目标检测的研究虽然还远远没有达到尽头,但鉴于过去五年来巨大的突破,我们对其未来的发展保持乐观态度。