APP下载

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

2021-08-23陈辉东丁小燕刘艳霞

北京联合大学学报 2021年3期
关键词:目标检测卷积神经网络深度学习

陈辉东 丁小燕 刘艳霞

[摘 要] 目标识别和定位是计算机视觉领域研究的主要问题,图像分割、目标跟踪、目标行为分析等都是以图像中的目标检测为基础的。随着深度学习技术的发展,目标检测算法取得了巨大突破。在广泛调研相关文献的基础上,对目标检测算法进行分析和对比,分别研究基于区域提取的两阶段目标检测架构和直接位置回归的一阶段目标检测架构的本质特点和发展过程,并提出未来的发展方向。

[关键词] 目标检测;深度学习;卷积神经网络

[中图分类号] TP 391.4  [文献标志码] A  [文章编号] 1005-0310(2021)03-0039-08

Abstract:  Target recognition and localization are the main research issues in the field of computer vision. Image segmentation, target tracking, target behavior analysis are all based on target detection in images. With the development of deep learning technology, target detection algorithm has made a great breakthrough. On the basis of extensive research on relevant literature, this paper analyzes and compares the target detection algorithm, respectively studies the essential characteristics and development process of two-stage target detection architecture based on region extraction and one-stage target detection architecture based on direct location regression, and puts forward the direction for future development.

Keywords: Target detection;Deep learning;Convolutional neural networks

0 引言

目标检测包括分类(Classification)和定位(Location)两方面。目标检测应用领域广泛,包括人脸检测、行人检测、车辆检测等。由于检测物体形状各异,实际场景存在背景复杂、遮挡严重及光照影响等问题,设计高精度的检测模型具有很大挑战。传统的目标检测算法分为3个步骤,如图1所示。

1)候选区域选择:通常使用滑动窗口(Sliding Windows,SW)算法,通过不同大小的滑窗在输入图像上划定目标可能存在的区域,对目标进行初步定位。

2)特征提取:使用局部二值模式(Local Binary Pattern,LBP)、方向梯度直方图(Histogram of Oriented Gradient,HOG)等算法对候选区域进行特征提取。

3)分类:通过支持向量机(Support Vector Machines,SVM)、Adaboost等算法对提取的图像特征进行分类。

传统目标检测算法没有针对性地使用滑动窗口去检测目标,不仅效率低,准确率也不高,而且人工选择的特征对于形状各异的不规则物体鲁棒性较差[1-5]。随着深度学习技术的发展,利用卷积神经网络(Convolutional Neural Networks,CNN)[6]提取图像特征,从而实现目标检测,已成为机器视觉领域研究的热点之一。

目前,基于深度学习的目标检测方法主要有两大分支,分别是基于区域提取的两阶段目标检测模型和直接进行位置回归的一阶段目标检测模型。

1 两阶段目标检测

区域提取算法的核心是卷积神经网络CNN,具有局部连接和权值共享优势,在物体分类应用中具有很好的鲁棒性[6]。区域提取操作首先利用CNN骨干网提取图像特征,然后从特征图中找出可能存在的前景目标(候选区域),最后在候选区域上进行滑动窗口操作,进一步判断目标类别和位置信息,这大大减少了计算的时间复杂度。

1.1 R-CNN

Region CNN(R-CNN)[7]由Ross Girshick提出,是基于深度学习目标检测的开山之作。该算法在VOC2007数据集上的所有类别的平均精准度(mean Average Precision,mAP)达到66%,突破了多年以来可变型部件模型(Deformable Part Model,DPM)方法无法逾越的瓶颈,显著提升了检测率。R-CNN算法主要分為4步,如图2所示。

1)输入训练集图像。

2)采用选择性搜索(Selective Search,SS)算法从待检测图像中找出2k个区域候选框,并缩放成227×227的固定大小,这些候选框大概率包含要检测的目标。

3)通过CNN骨干网提取每个候选框的图像特征,会得到固定长度的特征向量。

4)把特征向量同时送入SVM分类器和全连接网络,分别进行分类和位置回归,输出分类概率和对应位置的坐标信息。

R-CNN首先通过SS算法提取2k个左右的感兴趣区域(Region of Interest, RoI),再对感兴趣区域进行特征提取,相比全局无差别的滑窗操作,其效率和准确率都提高了很多,但也存在一些缺陷。比如,对2k个感兴趣区域分别通过CNN网络提取特征,彼此之间的权值无法共享,存在重复计算;对2k个左右的候选区域分别进行特征提取、目标分类和位置回归,生成的中间数据需要单独保存,还会消耗过多的存储资源;对输入的图像必须强制缩放成固定大小,会导致目标物体产生变形,影响检测准确率。针对重复计算和输入图片固定大小的问题,SPP-NET[8]给出了解决方案。

1.2 SPP-NET

SPP-NET是由Kaiming He等在R-CNN的基础上提出的。在R-CNN网络中,第一个全连接层的输入需要固定的大小,但是卷积层对输入尺寸并无要求。因此,只要在最后一个卷积层和第一个全连接层之间做些处理,保证输入全连接层的尺寸一致即可解决输入图像尺寸受限的问题。SPP-NET在最后一个卷积层之后加入空间金字塔池化(Spatial Pyramid Pooling,SPP)层[8],在SPP 层中对Conv5层输出的特征图采用3个不同尺度的池化核进行池化操作,分别得到16×256、4×256和1×256维的特征向量,再把该层输出结果进行拼接,就可得到固定长度为5 376的输出。SPP 层结构图如图3所示。

与R-CNN相同,SPP-NET也需要预先生成候选区域,但输入CNN特征提取网络的不再是2k个左右的候选区域,而是包含所有候选区域的整张图像,只需通过一次卷积网络即可得到整张图像和所有候选区域的特征。这大大减小了计算的时间复杂度,速度比R-CNN提高了100倍左右。

1.3 Fast R-CNN

Fast R-CNN借鉴SPP-NET中的特征金字塔思想,对R-CNN网络进行了改进,检测性能获得提升[9]。不同于SPP-NET采用3个尺度的池化核,研究者提出的RoI Pooling把各种尺寸的候选区域特征图映射成统一尺度的特征向量,如图4所示。

首先,将不同大小的候选区域都切分成M×N块,再对每块都进行max pooling得到1个值。这样,所有候选区域特征图就都统一成M×N维的特征向量了。

此外,研究者还提出了多任务模型,即同时训练分类任务和位置回归任务,并共享卷积特征,进一步提高了模型训练速度,如表1所示。

可以看出,R-CNN训练用时是Fast R-CNN的8.8倍,R-CNN每幅图像的测试用时是Fast R-CNN的146倍,Fast R-CNN的检测速度获得很大提升。Fast R-CNN存在的问题是,利用SS算法产生候选框对时间消耗非常大。为解决这个问题,Ren等人于2015年提出了Faster R-CNN。

1.4 Faster R-CNN

SPP-NET和Fast R-CNN都需要单独生成候选区域,无法进行端到端的训练,计算量很大且无法用图形处理器(Graphics Processing Unit,GPU)进行加速。针对这个问题,Ren等人于2015年设计了区域生成网络(Region Proposal Network,RPN),提出Faster R-CNN[10]模型。

Faster R-CNN模型的输入图像不再通过SS提取候选区域,而是先用CNN骨干网提取图像特征,这极大地提高了网络的实时性。经过骨干网提取的特征图由RPN网络和后续的检测器共享,特征图进入RPN网络后,对每个特征点预设9个不同尺度和形状的锚盒,计算锚盒和真实目标框的交并比和偏移量,判断该位置是否存在目标,将预定义的锚盒分为前景或背景,再根据偏差损失训练RPN网络,进行位置回归,修正RoI的位置,最后将修正的RoI传入后续网络。

RPN网络输出的推荐框RoI就是从特征图(CNN骨干网从原始图像中提取的)中检测出的潜在目标,将不同大小的RoI进行RoI Pooling后,得到固定大小的特征向量,输入到后续的全连接网络,对前景目标再次进行目标细分类和位置回归,得出最终检测结果,如图5所示。

Faster R-CNN只利用CNN骨干网提取一次特征,实现了RPN网络和检测头(进行分类和位置回归的全连接层)的权值共享,不仅降低了计算复杂度,而且实现了端到端的训练。但是,Faster R-CNN 在检测过程中,RPN网络需要对目标进行一次回归筛选以区分前景和背景目标,后续检测网络对RPN输出的RoI再一次进行细分类和位置回归,两次计算导致模型参数量大,使模型精度提高的同时,目标识别速度很难进一步提升。

1.5 Mask R-CNN

2017年,Kaiming He等在Faster R-CNN中增加了并行的mask分支——小型全连接卷积网络(Fully Convolutional Networks for Semantic Segmentation,FCN)[11-12],对每个RoI生成一个像素级别的二进制掩码。Mask R-CNN算法扩展了Faster R-CNN,适用于像素级的细粒度图像分割。该算法主要分两部分:通过RPN网络产生候选框区域;在候选框区域上利用RoI Align提取RoI特征,得到目标分类概率和边界框预测的位置信息,同時也对每个RoI产生一个二进制掩码。如图6所示。

在Fast R-CNN中,采用RoI Pooling产生统一尺度的特征图,这样再映射回原图时就会产生错位,使像素之间不能精准对齐。这对目标检测产生的影响相对较小,但对于像素级的分割任务,误差就不容忽视了。Mask R-CNN中用双线性插值解决像素点不能精准对齐的问题,即RoI Align。比如,将320×240的原始图像映射为32×24的特征图,需要将原始图像中的每320/32个像素映射到特征图中的1个像素。如果将原始图片中32个像素映射到特征图中,得到32×32/320=3.2个像素。RoI Pooling四舍五入得到3个像素,会产生像素错位;但RoI Align使用双线性插值可精确计算3.2个像素。在使用RoI Align代替RoI Pooling后,Mask R-CNN在目标检测领域取得了出色的结果,超越了Faster R-CNN。Mask R-CNN模型灵活性较强,稍加改动即可适用于目标检测、目标分割等多种任务,但由于继承了Faster R-CNN的两阶段计算方法,其实时性仍不够理想。

1.6 两阶段目标检测对比分析

上述基于区域提取的目标检测算法不断发展并逐步优化,检测精度也不断提高,最终实现了图像实例分割。具体来说,R-CNN 率先尝试用CNN卷积神经网络提取图像特征,相比传统手工设置特征的HOG、DPM等算法,取得了很大进步,检测率显著提升。SPP-NET的主要贡献是将整张图片输入到卷积层提取图像特征,并在最后一个卷积层后加入空间金字塔池化,提高了检测速度和多尺度目标的检测率。Fast R-CNN的主要创新点是让分类任务和位置回归任务共享卷积特征,解决了目标定位和分类同步问题,检测速度进一步提升。Faster R-CNN提出用可训练的RPN网络生成目标推荐区域,解决了前几种算法无法实现的端到端的学习问题。Mask R-CNN则在 Faster R-CNN 的基础上,将 RoI Pooling层替换成了 RoI Align层,使得特征图和原图的像素对齐得更精准,并新增了一个mask掩码分支用于实例分割,解决了同时进行目标定位、分类和分割的问题。

上述基于区域提取的目标检测方法首先产生感兴趣区域的推荐框,再对推荐框进行分类和回归,虽然检测精度一直在不断提高,但是检测速度普遍较慢,不适合对实时性要求较高的应用场景,其性能对比如表2所示。

为进一步提高目标检测实时性,一些学者提出一种将目标检测转化到回归问题上的简化算法模型,在提高检测精度的同时提高检测速度,并分别提出了YOLO[13]和SSD[14]等一系列基于位置回归的一阶段目标检测模型。

2 一阶段目标检测

在两阶段检测方法不断发展优化的同时,一阶段检测网络则从检测实时性角度对检测方法进行Mask R-CNNResNeXt-10111.0078.273.939.8 解决特征图与原图不对齐的问题,同时实现检测与分割 实例分隔代价太高优化,适用不同场景的任务。SSD(Single Shot MultiBox Detector)和YOLO(You Only Look Once)系列是一阶段中的经典方法。一阶段目标检测算法不通过中间层提取候选区域,而是在整个卷积网络中进行特征提取、目标分类和位置回归,通过一次反向计算得到目标位置和类别,在识别精度稍弱于两阶段目标检测算法的前提下,速度有了极大的提升,这使得基于深度学习的目标检测算法在许多对推理速度要求高的任务中得以应用。

2.1 YOLO v1

不同于以R-CNN为代表的两阶段检测算法,YOLO网络结构简单,速度比Faster R-CNN快10倍左右,具有较好的实时性[15]。

該模型把输入图像统一缩放到448×448×3,再划分为7×7个网格,如图7所示。每格负责预测两个边界框bbox的位置和置信度。这两个bbox对应同一个类别,一个预测大目标,一个预测小目标。不同于Faster R-CNN的锚盒,bbox的位置不需要初始化,而是由YOLO模型在权重初始化后计算出来的,模型在训练时随着网络权重的更新,调整bbox的预测位置。模型在训练过程中通过真实目标边界框(Ground Truth,GT)计算物体中心在哪个网格中,然后就由这个网格负责检测该物体(跨越多个网格时,物体也仅由包含其中心点的网格负责检测)。

该算法实时性很高,但由于把图像粗略划分为7×7个网格进行预测,对小目标的检测效果不佳;而且每个网格只能预测一个类别,无法应对多个类别的目标同时落在同一个网格的情况。另外,YOLO v1直接预测bbox的位置,会导致神经网络在训练初期不稳定。

2.2 YOLO v2

YOLO v2[16]把原始图像划分为13×13个网格,并借鉴Faster R-CNN中的锚盒,通过聚类分析,确定每个网格设置5个锚盒,每个锚盒预测1个类别。YOLO v2通过预测锚盒和网格之间的偏移量进行目标位置回归,更有利于神经网络训练,性能指标提升了5%左右。

另外,输入图像经过多层CNN网络提取特征后,较小的对象特征可能已经不明显甚至被忽略掉了,学者设计了passthrough层检测细粒度特征,如图8所示。YOLO v2把最后一个池化层之前的26×26×512的特征图拆成4份的13×13×512,同时经过1×1卷积和2×2池化,得到13×13×1 024的特征图,然后把两者拼接在一起输出。这有利于改善小尺度目标检测精度。

由于带标签的检测数据集样本数量较少,学者进一步提出用词向量树WordTree 混合COCO检测数据集(学习目标位置回归)和ImageNet分类数据集(学习分类特征),并使用联合优化技术同时在两个数据集上进行联合训练,在YOLO v2的基础上实现了超过9 000种物体类别的检测,称为YOLO 9000[16]网络。

2.3 SSD

SSD算法对YOLO进行了改进,提高了对小目标检测的准确率,并保证了检测速度。SSD保留了网格划分方法,但从基础网络的不同卷积层提取特征,如从conv4 、conv7、conv8、conv9、conv10和conv11层输入到后面的分类和回归网络,如图9所示。

每层特征图中的锚盒大小和个数都不同,conv4后的特征图中每个特征点预设4个锚盒,conv7、conv8和conv9后的特征图中每点预设6个锚盒,conv10和conv11后的特征图中每点预设4个锚盒。随着卷积层数的递增,锚盒尺寸设置由小到大,以此提升SSD对多尺度目标的检测精度。

2.4 YOLO v3

YOLO v3通过聚类分析[17],每个网格预设3个锚盒,只用了YOLO v1和YOLO v2中darknet结构的前52层,即没有全连接层的部分,并大量使用残差结构进行跳层连接,如图10所示。残差结构的基本模块由卷积(conv)、批归一化(BN)和Leaky Relu激活函数组成。

为了降低池化操作给梯度计算带来的负面效果,YOLO v3直接摒弃了YOLO v2中的5次最大池化,通过在5次卷积操作时,设置stride=2来实现降采样。

另外,为了提高小尺度目标检测精度,YOLO v3通过上采样提取深层特征,使其与将要融合的浅层特征维度相同,但通道数不同,在通道维度上进行拼接实现特征融合,融合了3×13×255、26×26×255和52×52×255共3个尺度的特征图,对应的检测头也都采用全卷积结构。这样既可以提高非线性程度,增加泛化性能及提高网络精度,又能减少模型参数量,提高实时性。因为如果直接用第61层输出的16倍降采样特征图进行检测,就使用了浅层特征,效果一般;如果直接用第79层输出的32倍降采样特征图进行检测,深层特征图又太小,不利于小目标检测;而通过上采样把32倍降采样得到的特征图尺度扩大1倍,然后和第61层输出的16倍降采样特征图进行拼接(特征融合),更容易提高多尺度目标检测的精度。

2.5 YOLO v4

YOLO v4[18]的特点是集大成者,像是检测算法所用训练技巧的集合。YOLO v4在原有YOLO目标检测架构的基础上,采用了近些年CNN领域中最优秀的优化策略,从数据处理、主干网络、网络训练、激活函数、损失函数等各个方面都进行了不同程度的优化,在COCO数据集上的平均精度(Average Precision,AP)和检测速率(Frame Per Second,FPS)分别提高了10% 和12%,被认为是当前最强的实时对象检测模型之一。

YOLO v4是一个高效而强大的模型,使得开发者可以使用一张1080Ti或者2080Ti GPU去训练一个超级快速和精确的目标检测器,降低了模型训练门槛。

2.6 一阶段目标检测对比分析

一阶段目标检测算法起步比两阶段目标检测算法要晚,具有后发优势,可以更好地吸收前者的优点,克服其不足之处。早期的一阶段目标检测算法虽然检测速度较快,但检测精度相对于两阶段检测算法还存在较大差距。随着目标检测技术的快速发展,目前一阶段目标检测模型的速度和精度都有了很大的提升,其性能对比如表3所示。

3 结论与展望

总体来说,基于区域提取的两阶段目标检测架构准确率较高,漏检率低,但检测速度较慢,无法满足对实时性要求较高或嵌入式移动平台的应用场景。基于位置回归的一阶段目标检测架构提供了另一个思路,直接进行分类和位置回归,提高了目标检测速度,漏检率和检测精度等性能也在后续版本中不断改善。除此之外,研究人员还在此基础上提出了难例样本挖掘[19]和多层特征融合[20]等方法进一步改善模型性能。目前大量涌现的Tensorflow、Pytorch及国内的JIT等深度学习框架為目标检测提供了高效的实现工具。即便如此,对于检测领域来讲,还有很多工作需要创新或改进。

1)小样本学习:上述目标检测架构都是基于深度神经网络的大规模模型,需要大量带标签的训练数据集才能学习到较好的性能。但获取大量带位置标签的数据样本的工作量巨大,而且很多应用场景根本无法获取。基于小样本的目标检测方法引起广大学者的研究兴趣,但检测精度还不尽如人意。借鉴支持向量机中的高阶核函数,引入图像特征的高阶统计信息,丰富小样本特征信息,增加特征表达能力,有望提高基于小样本的模型检测精度,应该是后续研究的方向。

2)弱监督学习:大规模的实例数据标注是一项非常昂贵且耗时的工程。将弱监督联合使用大规模图像级分类和小规模实例数据标注来训练网络模型,可大大减小标注成本,越来越多的科研人员开始关注这个研究方向。

3)3D目标检测:在自动驾驶等领域,2D图像不带深度信息,没办法有效避免碰撞,业界迫切需要基于3D的目标检测算法。尽管目前关于3D的目标检测已有不少的研究,但在实际应用中仍然存在很多问题。比如,对物体遮挡、截断及周围动态环境的健壮性问题,过于依赖物体表面纹理或结构特征容易造成混淆的问题,算法效率问题等,还需要进一步的探究。

[参考文献]

[1] 蔡娟, 李东新. 基于优化k均值建模的运动目标检测算法[J]. 国外电子测量技术, 2016, 35(12):20-23.

[2] 何文浩, 原魁, 邹伟. 自适应阈值的边缘检测算法及其硬件实现[J]. 系统工程与电子技术, 2009, 31(1):233-237.

[3] 何巧萍. 基于视频图像处理技术的运动车辆检测算法研究及实现[D]. 长沙:长沙理工大学, 2006.

[4] ROSENBERG C, HEBERT M, SCHNEIDERMAN H.Semi-supervised self-training of object detection models[C]//IEEE Workshops on Application of Computer Vision. Breckenridge:WACV, 2005:29-36.

[5] VAPNIK V N. The nature of statistical learning theory[M].German:Springer, 1995.

[6] RAZAVIAN A S, AZIZPOUR H, SULLIVAN J, et al. CNN features off-the-shelf: an astounding baseline for recognition[C]//IEEE Conference on Computer Vision and Pattern Recognition Workshops. Columbus:CVPR, 2014:512-519.

[7] AGRAWAL P, GIRSHICK R, MALIK J. Analyzing the performance of multilayer neural networks for object recognition[C]// European Conference on Computer Vision. Switzerland:ECCV, 2014:329-344.

[8] BOSCH A, ZISSERMAN A, MUNOZ X. Representing shape with a spatial pyramid kernel[C]//International Conference on Image and Video Retrieval. Amsterdam:ACM, 2007:401-408.

[9] GIRSHICK R. Fast R-CNN[C]//IEEE International Conference on Computer Vision. Santiago :ICCV, 2015: 1440-1448.

[10] REN S, HE K, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017,39(6):1137-1149.

[11] HE K, GKIOXARI G, DOLLR P, et al. Mask R-CNN[C]//IEEE International Conference on Computer Vision.Venice:ICCV,2017:2980-2988.

[12] LONG J,SHELHAMER E,DARRELL T.Fully convolutional networks for semantic segmentation[C]//IEEE Conference on Computer Vision & Pattern Recognition.Las Vegas :CVPR,2015: 3431-3440.

[13] REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: unified, real-time object detection[C]//IEEE Conference on Computer Vision and Pattern Recognition.Las Vegas :CVPR, 2016:779-788.

[14] HE K, ZHANG X, REN S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J].IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015, 37(9):1904-1916.

[15] 周晓彦, 王珂, 李凌燕. 基于深度学习的目标检测算法综述[J]. 电子测量技术, 2017,40(11):89-93.

[16] REDMON J, FARHADI A. YOLO9000: better, faster, stronger[C]// IEEE Conference on Computer Vision & Pattern Recognition.  Las Vegas: CVPR,2016:6517-6525.

[17] HENRIQUES J F, CARREIRA J, RUI C, et al. Beyond hard negative mining: efficient detector learning via block-circulant decomposition[C]//IEEE International Conference on Computer Vision. Sydney:ICCV, 2014:2760-2767.

[18] BOCHKOVSKIY A, WANG C Y, LIAO H . YOLOv4: optimal speed and accuracy of object detection [Z/OL].(2020-04-23)[2021-05-20]. https://arxiv.org/abs/2004.10934.

[19] LIN T Y, GOYAL P, GIRSHICK R, et al.Focal loss for dense object detection[C] // IEEE International Conference on Computer Vision. Venice:ICCV,2017:2980-2988.

[20] 張姗,逯瑜娇,罗大为. 基于深度学习的目标检测算法综述[C]// 中国计算机用户协会网络应用分会2018年第二十二届网络新技术与应用年会论文集. 苏州:中国计算机用户协会网络应用分会,2018:129-132+141.

(责任编辑 白丽媛)

猜你喜欢

目标检测卷积神经网络深度学习
视频中目标检测算法研究
基于深度卷积神经网络的物体识别算法
行为识别中的人体运动目标检测方法
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现
移动机器人图像目标识别
基于卷积神经网络的树叶识别的算法的研究
基于P3电位的目标检测研究