基于卷积神经网络的目标检测模型综述
2019-12-11许必宵孙知信
许必宵,宫 婧,孙知信
(1.南京邮电大学 物联网学院,江苏 南京 210003;2.南京邮电大学 宽带无线通信与传感器网络技术重点实验室,江苏 南京 210003;3.南京邮电大学 现代邮政学院,江苏 南京 210003)
0 引 言
目标检测是一种利用算法在图像中搜索感兴趣目标对象的计算机视觉技术[1]。检测过程主要分为两步,首先对目标类别进行检测,然后使用边框对目标所在位置进行标注[2]。图像按照像素矩阵存储,需从中抽象出目标类别和边框位置有关的语义信息才能进行目标检测,这种语义信息即图像的特征。由于传统特征提取方法泛化能力差并且精度较低,随着卷积神经网络(convolutional neural networks,CNN)的出现,特征提取方法开始被深度学习替代。
CNN通过在具有标签的训练数据集上进行学习,形成能够提取数据特征的复杂网络结构,然后就可以提取各种相似数据的特征[3]。一开始,CNN被设计用来识别手写签字即LeNet-5[4],该模型首次使用梯度反向传播算法(back propagation,BP)进行监督式训练。2010年后,随着计算机GPU性能的提升,CNN在图像处理中变得不可替代,在计算机视觉场景中应用广泛[5]。
基于卷积神经网络的目标检测模型使用卷积神经网络提取图像特征,然后根据特征进行目标分类和边框回归,无需复杂的人工特征设计过程。所以深度学习和CNN的提出不仅促进了神经网络学的发展,更是促进目标检测等计算机视觉技术的发展。
1 基础介绍
本节将介绍目标检测模型的发展历史,其中会着重介绍目标检测模型中优秀的CNN结构和训练方法。
1.1 传统的目标检测模型
传统目标检测模型的主要流程是先对输入图像进行预处理,即去噪、增强以及剪裁伸缩等,然后利用滑动窗口方法对图像进行候选区域筛选,接着使用特征提取算法包括Sift、HOG、DPM等对候选区域进行特征提取[6],最后利用分类算法对提取的特征进行分类。分类方法包括AdaBoost、SVM[7]等,分类结果用来判断候选区域中的目标所属类别,通过目标类别再对目标进行边框回归。传统的目标检测模型有很多缺陷,例如人工特征存在性能问题,不同特征需要选择合适的分类器,因此鲁棒性不是太强。
相对于传统的目标检测模型,基于深度学习的目标检测模型具有更强大的特征表达能力,泛化能力强、鲁棒性较好[8]。
1.2 卷积神经网络结构
目前深度学习技术被用于计算机视觉领域主要依靠三种神经网络结构:卷积神经网络、深度信念网络(deep belief network,DBN)和堆叠自动编码器(stacked belief network,SAE)[9]。而CNN由于其精度高和速度快的优势相比其他两种使用更为广泛[10]。
目前在目标检测模型中应用广泛的CNN结构有很多,2012年Hinton等提出Alex-Net[11]模型,主要用于图像分类领域,并在ImageNet数据集上将结果错误率降低到15.3%,一举成为ILAVRC挑战赛第一名。再后来,牛津大学提出的VGGNet[12]由于窄而深的标准卷积结构成为主流卷积神经网络结构,实验证明其迁移学习能力很强;用于目标检测模型的还有两种主流卷积神经网络ResNet[13]和GoogLeNet[14],ResNet由于其很深的层次结构同时使用残差节点使其精度有了较高的提升,GoogLeNet复杂的Inception结构具有多卷积核的特征,结果表明其能够有效提升计算资源利用率。后来为了提升模型应对特殊场景的性能,也有其他卷积神经网络结构被应用,例如DarkNet[15]、DenseNet[16]等等。
1.3 目标检测模型的训练
基于深度学习的目标检测模型中卷积核权重W和偏置项b等参数是通过梯度下降和反向传播算法求解的。这种方法的主要思想是利用输出和标签值之间的损失误差在CNN结构中以梯度下降法从输出层向输入层逐层传播,然后根据梯度值来迭代优化参数。例如式1表示误差函数:
(1)
训练目的是使得误差代价越来越小,因此更新参数时都会以误差函数J的梯度方向进行迭代,具体如式2:
(2)
其中,η是学习效率。基本所有目标检测模型中的卷积神经网络训练都是采取这种方法。
2 基于卷积神经网络的目标检测模型
本节将具体介绍近年来提出的基于卷积神经网络的目标检测模型,可以分成候选区域和回归方法两类。
2.1 基于候选区域的目标检测模型
2.1.1 基础单尺度特征模型
这类检测模型真正起源应该是由Girshick等提出的R-CNN[17],后来成为此类模型的基准,模型结构如图1所示,基本结构使用AlexNet。R-CNN中使用了一种selective search (SS)的方法提取候选框,相比滑动窗口,这种先分离再聚合的筛选方式获取候选框更准确。另外,R-CNN采用独立训练的SVM分类器和线性回归模型分别进行目标分类和边框预测。在VOC 2012数据集上的实验结果相比当时最佳检测模型的mAP提高了30%。
图1 R-CNN网络结构示意
R-CNN同样具有很多问题,例如固定的输入尺寸使得图像需要被拉伸和裁剪,使得细节特征受到损害;多环节流程使得模型精度由于环节之间接口复杂而降低;另外每个候选框都单独进行特征提取,使得该网络模型的实时性大大降低。针对R-CNN的缺陷,一系列基于R-CNN改进的模型被提出。
He等[18]从卷积可视化的角度去分析如何避免图像尺度对卷积计算的影响。SPP-Net因此诞生,以ZF-Net作为特征提取网络,引入图像金字塔的概念,使用一种多卷积核的金字塔特征池化方式。相比R-CNN,SPP-Net可以实现不同尺度输入的多层卷积计算,不需要进行裁剪伸缩等预处理操作,保存了底层一些细节特征。
Girshick等结合R-CNN和SPP-Net的优点,提出直接将目标分类和边框回归都交给CNN来完成,形成端到端的目标检测模型Fast R-CNN[19]。Fast R-CNN设置了一个多目标损失函数,使得分类和回归两个任务共享卷积特征,不需要分为多个阶段,节省了存储空间和计算时间。和SPP-Net一样,采取了最大值池化层ROI Pooling将卷积特征变成固定大小的ROI特征,送入全连接层。Fast R-CNN加快了检测速度,在VOC 2007上的结果比SPP-Net也提高了4%。
Ren等[20]提出了Faster R-CNN模型,汲取Fast R- CNN的经验继续将候选框推荐部分也由CNN完成,图像输入到VGG中获取特征后通过一个区域推荐网络(region proposal network,RPN)获取候选框,然后将每个候选框对应的特征送到池化层。RPN利用滑动窗口和不同尺度的anchor筛选出1K~2K的候选框。Faster R-CNN利用RPN不仅加快了检测速度,在VOC 2012上mAP达到了70%。但是,Faster R-CNN仍然还是由多个阶段构建而成。
以上的模型都是使用单尺度特征即最高卷积层的输出作为Feature Map,也有很多文献提出类似的模型。文献[21]中提出一种MR-CNN模型,对SPP-Net改进后提出了一种多区域形式的CNN结构,对每个proposal进行尺度形变获取不同的region来增强特征,从而提高检测精度;文献[22]中提出OHEM算法,模型根据输入样本的损失进行评估,筛选出对结果影响较大的难样本,然后融入到随机梯度下降法中进行训练。实验证明这种算法能够有效提高Fast R-CNN的检测精度。
Dai等[23]提出了R-FCN模型,他们认为Faster R- CNN第一部分卷积提取网络是ROIs共享的,存在位置不敏感性问题,第二部分是每个proposal的分类和回归层,每个ROI都不共享。因此,模型检测精度较低,而且这样做不能充分利用分类网络。R-FCN模型能够解决位置敏感问题。
R-FCN的关键部分如图2所示。在预训练最后一个卷积层获得Feature Map后进行3个分支流程,首先在该Feature Map上使用RPN获取ROIs,然后从Feature Map上获取一个K×K×(C+1)维的位置敏感得分映射(position-sensitive score map)用来分类;接着,再从Feature Map上获得一个K×K×4维的位置敏感得分映射用来回归;最后,在两个映射上面分别执行位置敏感对应池化方法获得对应的类别和位置信息。
图2 R-FCN结构
R-FCN考虑了目标位置对检测精度的影响,利用敏感位置得分来求解最后的结果,虽然计算得分矩阵花费了较多时间,但有效克服了位置平移带来的误差,在VOC2012上mAP最高达到82%。
下面将对上面几种流行的模型对于同一数据集进行实验对比,结果如表1所示。‘-’表示模型没有在该数据集上测试过,2007表示VOC 2007,2012表示VOC2012。
表1 单尺度特征目标检测模型结果对比 %
单尺度特征下的目标检测模型存在很多问题,选取的特征属于高语义输出,在底层一些细节信息在高层特征容易损失,因此一些尺度较小的目标检测精度非常低,后来很多文献都提出多尺度特征的检测模型。
2.1.2 多尺度特征下的目标检测模型
根据感受野的理论,很多局部微细的条纹以及形状的变化经过多层卷积的处理变得越来越不明显。因此,大部分单尺度特征目标检测模型对小尺度目标的检测精度较低。多尺度特征不再单一选择最后一层卷积输出作为图像的特征而进行多层特征融合。
较早开始考虑融合多尺度特征方法的是Bell等[24]提出的inside-outside net (ION),优化小目标物体的检测精度,提高对目标遮挡等环境的适应能力。ION设计了两个子网络Outside Net和Inside Net,Outside在ROI区域之外利用两个循环卷积神经网络层完成上下文特征提取,充分提取全局上下文信息。Inside在ROI区域之内从Conv3、Conv4以及Conv5三个卷积层提取ROI对应的三个尺度特征,最后和上下文特征融合,提高小目标检测的精度。
Kong等[25]提出了HyperNet,对特征融合策略做了优化,不同层采样的方式不一样,在层次较低的卷积层使用最大池化技术,对较深层次的卷积层通过添加一个反卷积操作来进行上采样操作,并且还需要使用局部响应正则化手段来归一化多个Feature Maps。模型和Faster R-CNN前向推测时间近似,但在结果上mAP却高出1.6%。
Kim等[26]提出的PVANET,基于Faster R-CNN优化得到,该网络使用了C.ReLU、Inception、HyperNet以及残差网络模块等技术,最主要是采用了Inception的结构,在不同层使用多个卷积核完成特征提取,提高感受野对多尺度的适应能力,并且在模型中融合了HyperNet的部分结构提高特征的多尺度性。
Lin等[27]提出将特征金字塔网络模型FPN用于多尺度特征的融合。FPN主体网络采取ResNet,模型中最核心的部分如图3所示。利用自底向上的线路完成图像的初步特征提取,利用自顶向下的线路完成特征的语义传递,利用横向连接完成多尺度特征的融合。文献中将FPN用在Faster R-CNN的特征提取网络中和区域推荐网络RPN中,使得不同尺度的候选区域对应不同层不同尺度的特征。结果证明这种模型在COCO数据集上提高了小尺度目标检测精度。
图3 FPN结构示意
He等[28]提出的Mask R-CNN模型是利用FPN完成目标检测任务,Mask R-CNN主要目的是实现高精度的实例分割任务,相比目标检测模型仅仅多了一个使用FCN网络完成目标Mask提取的分支。Mask R-CNN也创新地使用ROI Align池化技术来避免量化造成的精度失配等问题,提高了目标检测精度。
下面将上述模型对同一数据集进行实验结果对比,如表2所示。其中‘-’表示模型没有在数据集上测试过,2007表示VOC 2007,2012表示VOC2012。
表2 多尺度特征目标检测模型结果对比 %
将多尺度特征的检测模型在目标尺度复杂的COCO数据集上进行结果对比,从数据分析看出多尺度特征的融合能够有效提高检测精度。
2.2 基于回归方法的目标检测模型
相比基于候选区域的目标检测模型,基于回归方法的目标检测模型省去提取候选框的步骤,采取一阶段式模型,即直接在特征图上采取回归方法。目前有很多文献在研究这类模型。由于大部分采取多尺度特征融合的方式,所以不进行特征尺度的区分。
Redmon等[29]提出YOLO,他们认为基于候选区域的检测模型效率较低的原因是其复杂的区域推荐方法。因此,提出将整张图作为输入,取得结果后直接在输出层上回归边框的位置并且判断其属于哪一类物体,这样模型的计算效率会大幅度提高。YOLO首先将一幅图像进行网格划分,分成s×s个网格,如果检测目标的中心位置在某个网格中,那么此网格就负责预测此目标。YOLO使用多任务损失函数,同时负责目标分类和边框回归。YOLO虽然效率较高,但是存在很多问题,如对于紧邻的目标以及小尺度目标的检测效果不是特别好,只能预测一类目标和泛化能力弱等等。
Najibi等[30]提出类似于YOLO的G-CNN模型,与YOLO的区别在于,笔者认为边框搜索不是一个简单的线性搜索过程,如果直接使用传统线性的搜索方法无法取得最优解,因此使用一种迭代回归的方式,然后逐步逼近最优解,实验证明检测结果优于YOLO。
Liu等[31]提出一种多尺度特征融合的模型SSD,和YOLO类似的地方在于SSD将分类的过程和回归的过程转化为一个目标函数。但是,SSD融合了RPN的anchor思想,提出类似的piror box方法产生目标的预选框。SSD使用底层Feature Map实现小目标检测,高层Feature Map完成大目标检测。SSD相比YOLO精度更高,检测效率也比Faster R-CNN更高。
基于SSD优化的模型有很多,Jeong等[32]提出了RSSD模型,认为SSD有两个问题,首先是相同物体会被大小不同的边框同时检测出来,然后SSD对小尺度的物体检测结果比较差。RSSD模型改善了SSD的特征融合方式,利用分类网络增加获取的Feature Map之间的联系,减少了重复框的出现,同时增加了Feature Map的个数使得模型能够检测到更多尺度的目标;Fu等[33]提出DSSD,使用Resnet-101替代原来的VGGNet,在分类回归之前使用残差模块,在辅助的SSD额外特征卷积层后面添加了几层反卷积层,整个网络就像沙漏一样呈现出宽窄宽的结构。结果显示DSSD提高了小目标的检测精度。
当然,在YOLO基础上改进的模型也相当多。Redmon等[34]提出了YOLO v2模型和YOLO 9000模型。YOLO v2对YOLO模型进行版本优化,YOLO 9000使用数量较大的分类数据集来协助检测模型的训练。相比YOLO具有三部分优化,首先对网络每一层的输入都做BN归一化操作,提高模型的收敛速度,使用anchor机制和聚类方法完成尺度聚类,然后为了提高模型的鲁棒性,还引入了多尺度训练方式。最后,模型使用WordTree原理来融合分类和检测的数据集,以达到增加检测类别的目的。
其实,基于回归方法的目标检测模型也在不断汲取基于候选区域的目标检测模型的优点,因此也有文献提出将两类模型相结合,其中比较典型的就是Kong等[35]提出的RON模型,如图4所示。
图4 RON模型结构示意
RON有两个比较重要的创新,采用多尺度特征同时设计了反向连接的结构,能够使其检测更多尺度的目标;融入了负样本挖掘,使用目标先验来引导模型对目标的搜索,训练时根据目标的先验结果来更新类别标签,预测时产生目标先验再进行类别检测。RON不仅精度高而且比较通用。
文中对已有的该类模型进行对比,由于这类模型很少在MS COCO数据集上进行实验,所以在VOC 2007和VOC 2012上进行对比,此外对相同配置同样分辨率输入情况下的检测效率FPS进行对比,结果见表3。基于回归方法的检测模型的检测效率大部分非常可观,较早的YOLO系列和SSD系列结果精度有很大上升空间,经过不断优化,目前这类模型在精度上能够满足要求,检测基本已经达到40 fps以上。
表3 回归方法类目标检测模型结果对比 %
3 结束语
文中主要对现有基于卷积神经网络的目标检测模型进行综述,总结了其优缺点,分析现有目标检测模型的发展空间。总体来看,尚有很多改进空间,例如类内局部语境信息和类间全局语境信息在检测过程中没有考虑,因此这些检测模型在应对复杂背景和多类遮挡环境下显得鲁棒性较差。还有如何优化特征提取网络的基本结构,在不增加计算负担的情况下提高精度等,都有待进一步研究。