基于深度学习的目标检测算法研究综述

2020-06-09 10:11王天宝
计算机与现代化 2020年5期
关键词:卷积物体神经网络

曹 燕,李 欢,王天宝

(成都信息工程大学,四川 成都 610225)

0 引 言

目标检测[1]主要是对输入图像中的物体类别和位置进行判断,实质上是图像分类和目标定位的结合,是计算机视觉领域中的一个重要研究方向。目标检测在人脸识别、无人驾驶等领域取得了广泛的应用。在深度学习[2]兴起之前,传统的目标检测算法大多采用人工特征来进行检测,人工特征主要针对目标的某个具体特征进行检测。其中,Sobel、Prewitt、Roberts、Canny和LoG[3-6]等描述子主要用来做边缘检测;Harris、FAST、CSS和DOG[7-9]主要用于角点检测等。人工设计特征的好坏对目标检测的精度起到了决定性作用。深度学习使用非线性模型将原始输入数据逐层转化为更高层次、更抽象的特征,具有强大的学习和表征能力,能够自动发现分类或检测任务所需要的特征。深度学习的发展极大地推动了目标检测,基于深度学习的目标检测获得了广泛的关注,成为了当今计算机视觉领域的研究热点之一。

1 深度学习目标检测算法

卷积神经网络AlexNet[10]、GoogleNet[11]、ResNet[12]等在图像分类任务中取得了较好的成果。研究人员将这些卷积神经网络应用到目标检测中,相对于传统的目标检测算法,在速度和准确度上都有了极大提升。基于深度学习的目标检测算法主要分为2类:1)以R-CNN[13]系列为代表的基于分类的目标检测框架(two stage);2)以YOLO[14]、SSD[15]算法为代表的基于回归的目标检测框架(one stage)。

2 基于分类的检测算法

基于分类的目标检测算法首先利用Selective Search[16]、Edge Boxes[17]等算法生成可能包含待检测目标的候选区域(Region proposal)[18],再对这些候选区域进一步进行分类以及位置校准得到最终的检测结果。

2.1 OverFeat

Sermanet等人[19]在AlexNet的基础上做了改进,提出了OverFeat算法。OverFeat是最先将深度学习应用到目标检测中的算法之一。OverFeat利用卷积神经网络提取特征,可同时实现图像分类、定位以及目标检测任务,不同任务之间共享特征提取层,在ILSVRC 2013[20]数据集上的mAP达到了24.3%。虽然OverFeat相对传统算法有显著改进,但共享特征层的表达能力不强,对小目标的检测效果不好,整体效果仍然差强人意。

2.2 R-CNN

Girshick等人提出的R-CNN算法首先采用Selective Search方法,将输入图像分割成多个模块,再基于颜色、纹理等相似度对这些模块进行合并,最终得到大约2000个不同大小的候选区域,并将这些区域归一化到固定大小;然后使用卷积神经网络对这些候选区域分别进行特征提取,采用多个SVM对这些提取到的特征进行分类;最后对这些区域进行位置校准。R-CNN在VOC[21]数据集上获得了58.5%的准确率,但是R-CNN存在以下2个问题:1)对每个候选区域进行特征提取会产生大量重复运算,无法做到实时更新;2)由于卷积神经网络的全连接层要求所有输入大小相同,R-CNN将图片缩放到相同大小,破坏了物体的长宽比,导致部分有用信息丢失,影响检测效果。

2.3 SPP-Net

为了解决R-CNN只能检测固定大小图像的问题,He等人[22]提出了SPP-Net。SPP-Net只需要对输入图像进行一次卷积得到整张图片的特征图(feature map),然后将不同大小的候选区域映射到特征图上。为了满足全连接层对输入大小一致的要求,SPP-Net采用空间金字塔池化层(Spatial Pyramid Pooling, SPP),利用不同大小的池化窗口将这些映射到特征图上的候选区域统一到相同维度,最后利用SVM进行分类,同时利用边框回归来微调候选框的位置。空间金字塔池化层使得SPP-Net能够处理不同大小的图片,并且完整保存了输入图片的信息。同时由于SPP-Net只需要对图像进行一次卷积,减少了运算时间,其检测速度比R-CNN快38~102倍,在VOC2007和Caltech 101数据集上取得了较好的成绩。但同R-CNN一样,在SPP-Net中,确定候选框、特征提取、训练SVM、训练边框回归模型这些步骤依然是单独进行的,导致训练时间较长;在训练时将所有的样本存储到磁盘上会占用大量空间;SPP-Net只能对空间金字塔池化层后的全连接层进行微调,无法同时更新前面的卷积层。

2.4 Fast R-CNN

Fast R-CNN[23]继承了SPP-Net能够处理不同输入大小图片的优点,但是将SPP-Net多尺度空间金字塔池化层简化为池化窗口大小,可以任意设定单尺度的ROl Pooling;同时引入了多任务学习模式,将多个步骤简化到一个卷积神经网络中;对卷积神经网络的全连接层输出做SVD分解得到2个向量,分别用于softmax分类以及边框回归。Fast R-CNN检测时所有的特征都存放在显存中,释放了大量磁盘空间。Fast R-CNN主要分为以下4个步骤:

1)利用卷积神经网络提取图像特征。

2)利用区域生成算法提取候选区域,并将这些区域映射到特征图上。

3)利用ROl Pooling将候选区域池化到固定大小的特征表示。

4)分别应用softmax做多分类目标识别,应用边框回归对边框位置进行微调。

Fast R-CNN极大提升了检测速度,在精度上也有了一定提高,但是对候选区域的提取依然采用Selective Search方法,消耗了大量时间,仍然无法达到实时性的要求。

2.5 Faster R-CNN

Faster R-CNN[24]利用RPN网络提取候选区域,并将RPN和Fast R-CNN融合到一个网络中共享卷积特征,实现了真正意义上的端到端训练。RPN是一个全卷积网络,其思想是通过在特征图上做窗口滑动,将锚点框(anchor)映射到原图,得到不同大小和比例的候选区域。RPN主要有2个输出:1)分类支路采用softmax得到anchor属于物体或背景的概率;2)边界框回归支路对anchor的位置进行校准得到4个坐标值。Faster R-CNN的主要步骤为:

1)利用卷积神经网络对输入图片提取特征。

2)利用RPN生成k个不同大小和比例的候选区域。

3)ROI Pooling利用RPN生成的候选区域和卷积神经网络提取到的共享特征图得到固定大小的候选区域特征图(proposal feature map)。

4)利用softmax对proposals进行具体类别的分类,利用边框回归获得物体的精确位置。

Faster R-CNN利用RPN进一步提升了检测速度,同时提高了检测精度。由于Faster R-CNN经过多次下采样丢失了物体细节信息,对小物体的检测效果仍然不好。

2.6 HyperNet

为了获得较高的召回率,一些目标检测算法通常需要生成上千个候选区域,这极大影响了检测效率,虽然Faster R-CNN在最后的检测阶段只采用300个候选区域,在一定程度上提升了效率,但对小物体的定位准确度不高。Kong等人[25]提出的HyperNet将候选区域的生成与检测任务结合,在产生较少候选区域的同时保证较高的召回率。HyperNet的主要思想是将不同卷积层的特征联合起来得到超特征(Hyper feature)。虽然低层特征图的分辨率低,对于小目标的定位精度不高,但低层特征有助于提高召回率。HyperNet通过联合低层特征,提高了对小目标的检测效果。在随后的目标检测算法中对于小目标的检测也沿用了HyperNet的思想。

2.7 OHEM

为了提高基于分类方法的效率,Shrivastava等人[26]提出了在线困难样本挖掘(OHEM)用于训练基于分类的检测器。其主要思想是利用Bootstrapping[27]技术,对随机梯度下降算法(SGD)进行修改,移除原有的一些多参数和启发式学习。检测数据集中包含有大量容易样本(easy examples)以及少量困难样本(hard examples),OHEM利用自动搜索困难样本策略进一步提高了检测器的效率。当数据集越复杂,规模越大时,OHEM的优越性越明显,在VOC2007和VOC2012数据集上分别获得了78.9%和76.3%的平均检测精度。

2.8 FPN

随着网络深度加深,高层特征图会提取到大量语义信息,但分辨率比较低;低层特征图分辨率比较高,但是含有较少语义信息,只利用高层特征对于小目标检测无法达到较好的效果。Lin等人[28]提出的FPN通过侧向连接(lateral connections)将分辨率较低但语义信息丰富的高层特征与语义信息较少但分辨率较高的低层特征融合在一起。FPN主要分为3个部分:

1)自底向上的通道(Bottom-up pathway)。这是卷积神经网络的前向计算通道,采用多个池化通道对图片提取特征从而得到不同大小的特征图。

2)自上而下的通道(Top-down pathway)。经过不同网络深度池化后的特征图大小不一样无法直接进行特征融合,这个通道主要对高层的特征图进行上采样使得其特征图大小与需要融合的低层特征图大小一致。

另外,转子偏心也会引起磁路不平衡进而产生轴电压,在2极电机中比较明显。主要是因为转子偏心后,两个极下的磁通经过的气隙长度不相等,即气隙磁阻不同。磁通路径根据磁阻大小进行分配,导致形成了匝链转轴的磁通,同样会在轴两端感应出轴电压。

3)侧向连接。主要用于融合高层与低层特征,使得低层特征也能获得较多的语义信息。

最后对这些融合后的特征图进行检测。采用多尺度特征融合使得FPN对小物体的检测提升效果比较明显,在COCO[29]数据集上得到了较好的检测效果。

2.9 Mask R-CNN

Faster R-CNN虽然采用了ROI Pooling来获取统一维度的候选区域,但ROI Pooling在池化过程中对特征图采取的取整去零操作带来的像素偏差会对边界框的定位造成一定的影响。He等人[30]提出的Mask R-CNN利用RoIAlign,采取双线性插值法来获得特征图的像素值,从而获得更准确的像素信息。Mask R-CNN除了输出边界框的位置信息和目标种类置信度,还增加了目标掩模(object mask)输出支路,利用全卷积网络对每个候选区域预测分割掩模(segmentation mask),使得对于物体的输出可精确到像素级。Mask R-CNN在人体关键点检测、实例分割任务上有较好的效果。

2.10 IOU-Net

在目标检测算法后处理阶段一般通过非极大值抑制(Non-Maximum Suppression,NMS)移除重复并且分类置信度较低的预测框,保留分类置信度较高的预测框。但是分类置信度的高低不能很好地表示预测框位置的准确性,NMS在重复移除预测框的过程中可能忽略了那些分类置信度较低但定位置信度较高的预测框,导致最终对物体的检测精度不理想。Jiang等人[31]提出的IOU-Net首先预测检测框与真实框之间的IOU,在NMS阶段保留IOU较高的预测框,同时更新预测框的分数,使得预测框同时有最高的分类置信度与位置置信度;为了获得更准确的预测框,一些目标检测框架[32-35]会利用边框回归器重复对边框进行位置校准,然而多次回归使得输入的分布容易发生变化[36]并且导致最后检测精度下降,为了解决这一问题,利用IOU-Net作为稳健的定位精度估计器,Jiang等人[31]同时提出了基于优化的边框校准(optimization-based bounding box refinement),使得网络可以自适应迭代合适的步数以实现边框位置校准;Mask R-CNN提出的RoIAlign解决了ROI Pooling由于取整去零带来的像素偏差问题,但是没有充分考虑到不同大小候选区域带来的差异,为此,IOU-Net提出了PrROI Pooling,采用积分方式来获取特征值。IOU-Net在COCO数据集上获得了较好的检测效果。

2.11 基于分类的检测算法小结

目标检测算法不仅要求有较高的准确度,同时也要求能够满足实时性。R-CNN、SPP-Net、Fast R-CNN采用Selective Search的方法相对于传统目标检测算法在精度和速度上都有所提升。但由于Selective Search聚类方法会消耗大量的时间,现在基于分类的方法比如Faster R-CNN、FPN、Mask R-CNN等大多使用RPN来产生候选区域,在速度和精度上又有了进一步提升,但实时性仍不理想,Mask R-CNN的检测速度仅为5 f/s。为此,研究人员提出了基于回归的目标检测方法,这种方法不需要产生候选区域,直接在原图上得到最终的检测结果。

3 基于回归的检测算法

3.1 Deep neural network for object detection

Szegedy等人[37]首次提出了利用深度神经网络(Deep Neural Network, DNN)将目标检测当做回归问题处理。Szegedy将AlexNet最后的多分类层改为回归层,对每个目标输出二进制掩模(binary mask),如果某个像素在给定物体的边界框内则置为1,否则为0。为了检测多个距离相近的目标,神经网络需要输出多个二进制掩模。为了精确定位,将二进制掩模的像素放大到与输入图像一致,同时使用定位器进一步提高定位准确度。

3.2 可扩展的目标检测

Erhan等人[38]提出的神经网络模型对每个盒子预测一组边界框以及一个分数,表示这个盒子包含物体的可能性。在训练过程中采用聚类方法来得到物体的典型位置以便于与真实框进行匹配,随后的YOLOv2也采用了类似的思想来得到用于训练的anchor。

3.3 基于记忆的检测模型

Li等人[39]通过模拟大脑的记忆和预测机制设计了一种检测模型,首先在静态图上滑动固定大小的窗口以生成序列,接着利用卷积神经网络来提取这些序列的特征,最后长短期记忆以适当的顺序接收这些序列特征。Li等人提出的模型集成了特征学习和序列学习,可应用于预测监督场景中对象潜在的位置。

3.4 YOLO

YOLO的网络结构延续了GoogleNet的核心思想,利用卷积层来提取图片特征,利用全连接层来得到最后的检测结果。YOLO将输入图像分成S×S个网格,每个网格负责检测中心落在该网格的物体。YOLO的端到端训练和预测使得其具有较快的检测速度,可以达到45 f/s,然而YOLO的检测精度却只有63.4%;在YOLO算法中虽然每个网格预测B个边框,但是只预测一组类别概率值,并且最后只选择IOU最高的边框作为输出结果。如果一个网格中包含多个物体,YOLO只能检测出其中一个物体。

3.5 SSD

SSD借鉴了Faster R-CNN中anchor的机制,在特征图上生成一系列不同大小和长宽比的默认框,同时采用困难样本挖掘方法对负样本进行采样使得训练过程中正负样本的比例维持在1:3。SSD对每一个默认框输出相应的位置偏移以及类别置信度。值得注意的是,SSD将背景类别也当做了一个特殊的类别,也就是如果检测的类别为C类,那么每一个默认框需要预测C+1个类别置信度值,最后选择置信度最高的类别作为默认框所属的类别。SSD同时采用了特征金字塔的方式来做多尺度融合预测。SSD的检测速度达到了59 f/s,mAP为73.9%,相对YOLO来说有了较大提升,但是对小物体的检测效果仍然不理想。

3.6 YOLOv2

为了得到更快、更准确的检测效果,YOLOv2[40]在YOLO的基础上做了许多方面的改进:1)在每一层卷积层后加入了BN[41]层加快整个网络的收敛速度;2)使用高分辨率图像来训练网络模型。目前许多目标检测算法采用在ImageNet数据集上得到的预训练模型作为基础特征提取网络,但许多预训练模型的输入图像大小低于256×256。比如YOLO采用224×224的图像来训练分类网络,但检测时采用448×448的图像,导致模型需要适应分辨率的变化。YOLOv2首先利用224×224的图像来预训练分类网络,再用448×448的图像来微调网络模型,最后检测时采用448×448的图像,这样网络就不需要花时间适应不同的分辨率。除此之外,YOLOv2还用了K-means[42]聚类方法来确定anchor的大小、利用Darknet-19作为基础的特征提取网络等。与YOLOv2在同一时期提出的YOLO9000结合检测和分类数据集,在2类数据集上进行训练,可实现9000多类物体的检测。

3.7 DSSD

受到语义分割[43]和姿态估计[44]算法的影响,Fu等人[45]提出的DSSD算法采用编码-译码的网络结构来传递语义信息,但为了减少参数计算量,编码-译码网络结构不是采用对称的形式而是采用了沙漏结构。为了融合不同大小的特征图,DSSD采用反卷积来增大高层特征图的像素。Fu等人发现元素点积(Eltw Product)的方式比元素相加的方式能够获得更好的效果,因此DSSD采用元素点积的方式来融合语义信息。同时,DSSD在预测层加入了残差结构来更进一步提升检测精度。DSSD对小物体的检测效果较好,在输入图片大小为513×513的情况下,DSSD的mAP达到了81.5%。

3.8 DSOD

大部分目标检测框架采取像ImageNet这样的大规模分类数据集上进行预训练之后的网络作为主干网络,但由于分类和检测任务的损失函数以及种类分布不同导致网络学习效果有一定的偏差。虽然微调预训练网络可在一定程度上缓解偏差,但无法从根源上解决问题。Shen等人[46]提出的DSOD可针对检测任务重新开始训练神经网络。同时,DSOD还引入了DenseNet的思想,使得其参数量大大减少。DSOD虽然在mAP上相对SSD有了提升,但检测速度却有所下降。

3.9 YOLOv3

YOLOv3[47]在YOLO9000的基础上主要做了如下改进:

1)借鉴Faster R-CNN的思想。对每个候选框增加了“物体性”的预测,判断其属于前景或者背景的概率,不同的是,YOLOv3对每个真实框只分配一个先验边界框。

2)采用多尺度融合预测。YOLOv3借鉴FPN的思想,利用多尺度特征图,提取细粒度的特征,增加对小物体的检测效果。

3)采用Darknet-53作为主干网络。Darknet-53综合了YOLOv2的主干网络Darknet-19和ResNet的优点,在ImageNet上的Top-5准确率可媲美ResNet-152,同时减少了计算量,进一步提高了速度。

YOLOv3虽然相对YOLO9000提升了对小物体的检测效果,但对大物体的检测效果却略有下降。

3.10 Pelee

由于受到有限的计算能力和存储空间的限制,随着在移动设备上运行神经网络的需求增加,近年来出现了越来越多的轻量化神经网络模型[48-51],然而这些网络结构主要依赖于深度可分离卷积(depthwise separable convolution)。因此,Wang等人[52]提出了PeleeNet网络用于目标检测。PeleeNet是DenseNet[53]的变体,既遵循了DenseNet密集连接的结构又极大程度上减少了对计算能力和内存的要求。为了获取不同大小的感受野,Pelee采用了2种并列的密集连接层,最后通过拼接的方式将获取到不同大小感受野的特征进行融合。Pelee同时采用了类似DSOD的stem block,在不增加计算量的情况下可以增强特征表达能力。Pelee在iPhone 6s上的运行速度为17.1 f/s,在iPhone 8s上的运行速度为23.6 f/s。

3.11 基于回归的检测算法小结

基于回归的目标检测算法在速度上相对于基于分类的算法有大幅提升,基于分类的目标检测算法主要优势在于较高的精确度。随着算法的改进,一些基于回归的目标检测算法既有较高的精度又有较快的检测速度,其精确度甚至超过大部分基于分类的目标检测算法。

4 总 结

本章总结了基于深度学习目标检测算法的一些常见问题以及相应解决方案。

1)对于小目标的检测。目前的通用解决办法是采用Top-Down的网络结构,即将高层的语义信息与低层特征融合从而达到更好的检测效果。特征融合的方式有FPN的元素相加(Eltw Sum)方法、DSSD的元素点积方法,以及TDM[54]的调制模块通过卷积的方式将高低层信息融合到一起。

2)缺乏专门适用于检测任务的网络。当前卷积神经网络在目标检测任务上的主要弊端在于常用的卷积神经网络都是为分类任务而设计,为了获取图片的有用特征,网络中设计有大量的池化层,导致最后的特征图会被压缩得非常小,虽然采用Top-Down的结构融合语义信息能够改善对小目标的检测效果,但是由于经过多次池化,高层特征中小目标的语义信息丢失严重,而分辨率较低的高层特征图也不利于对大目标的检测。一种解决办法是减少网络中的池化层,使得最后的特征图具有较高的分辨率,但是同时也会导致感受野变小,不利于大目标的检测。Li等人[55]提出了一种专门用于目标检测任务的网络结构DetNet,并且在网络中引入带孔卷积(dilated convolution)[56-57]使得网络提取到的特征图能同时保持较大的感受野和分辨率。

3)正负样本不平衡。有研究人员认为,基于回归的检测算法精度低于基于分类算法的主要原因是为了在训练阶段产生足够的与真实框相匹配的正样本,大部分基于回归的算法会在特征图上产生密集的anchors,但只有少数的anchor包含目标,由此会产生大量负样本使得正负样本不平衡,而基于分类的回归算法在RPN生成候选区域阶段滤除了一部分负样本,并且对用来训练的样本进行了一次粗略的位置调整。RON[58]提出的对象优先(objectness prior)对每个锚框做二分类,判断其是否包含目标,在做检测时将正负样本的比例控制在1:3左右,从而减少对负样本的搜索空间;RefineDet[59]也采用了类似的方法,利用锚框校准模块(Anchor Refinement Module,ARM)来滤除一部分负样本并且调整锚框的位置,在目标检测模块(Object Detection Module,ODM)采用困难负样本挖掘方法进一步滤除负样本并且精确回归锚框的位置;除了改进网络结构,Lin等人[60]从损失函数方面来改善样本不平衡问题。Lin等人提出的焦点损失函数(Focal Loss)通过给样本分配不同的权重来滤除大部分容易负样本。总的来说,采用困难负样本来训练网络可增强网络的鲁棒性,因此,解决样本不平衡的主要思想是滤除容易负样本,保留困难负样本。

4)对于遮挡物体的检测。传统的非极大值抑制方法虽然能够去掉重复的检测框,但当2个目标重合时容易发生漏检的情况,Bodla等人[61]提出的平滑非极大值抑制(Soft-NMS)对与分类置信度最高检测框重叠度较大的检测框分配一个较低的分数,而不是像非极大值抑制算法直接滤除重叠度较高的检测框,从而改善对被遮挡目标的检测效果。

各种算法基于深度学习的目标检测模型性能对比如表1所示。

表1 基于深度学习的目标检测模型性能对比

算法VOC2007(mAP@IOU=0.5)VOC2012(mAP@IOU=0.5)COCO(mAP@IOU=0.5:0.95)检测速度/(f/s)FastR-CNN70.068.419.73FasterR-CNN73.270.421.97HyperNet76.371.4-0.88OHEM78.976.322.47YOLO66.457.9-45SSD300∗77.275.825.146SSD50076.874.931.219RON38477.675.427.415DSOD30077.776.3-17.4DSSD32181.580.033.29.5YOLOv278.673.421.640RefineDet32080.078.132.040.3RefineDet512+83.883.541.8-YOLOv3--33.0-

5 结束语

近年来,目标检测算法蓬勃发展,基于深度学习的目标检测框架仍是目标检测任务的主流方向。目前大部分目标检测算法采用anchor机制,在特征图上产生大量密集的anchor,再对这些anchor进行进一步的分类和位置校准。但大量anchor容易产生正负样本不平衡的问题,同时针对不同数据集需要设置不同尺度与长宽比的anchor。如何设计合适的anchor还需要进一步研究。一些研究人员尝试使用anchor-free的方法[62-63]来检测目标,但这一类方法对主干网络的要求相对较高。除此之外,如何优化目标检测框架,设计更好的损失函数、更适合目标检测任务的网络来更好地提取特征仍旧是未来目标检测算法的重点研究方向。

猜你喜欢
卷积物体神经网络
基于3D-Winograd的快速卷积算法设计及FPGA实现
深刻理解物体的平衡
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于神经网络的中小学生情感分析
我们是怎样看到物体的
基于傅里叶域卷积表示的目标跟踪算法
基于神经网络的拉矫机控制模型建立
为什么同一物体在世界各地重量不一样?