APP下载

基于视觉的目标检测方法综述

2020-04-24李章维胡安顺王晓飞

计算机工程与应用 2020年8期
关键词:卷积精度特征

李章维,胡安顺,王晓飞

浙江工业大学 信息工程学院,杭州310023

1 引言

目标检测是计算机视觉的重要内容,是众多计算机视觉任务的基础。其应用范围非常广泛,如人脸检测、无人驾驶、目标跟踪、智能交通等。近年来,随着大数据的出现以及计算机处理能力的提升,出现了一系列以卷积网络为核心的检测算法,目标检测精度与检测速度得到大幅提升,拓宽了计算机视觉应用范围,带来了更多应用价值。卷积神经网络是目前检测算法的主要研究路线。

目标检测可分为基于手工特征(Feature-Based)和基于卷积神经网络(CNN)两种方法。本文介绍了三种手工特征和三种机器学习方法,分析了Feature-Based方法检测效果差的原因,详细描述了基于CNN 的多种目标检测方法,梳理了每种方法的改进和不足之处,介绍了该方法的检测效果,为了解、学习以及进一步发展目标检测提供一些参考。

2 目标检测发展简介

2012 年以前,目标检测主要利用Haar、HOG(梯度直方图)、LBP(局部二值模式)等手工特征和AdaBoost、SVM(Support Vector Machine)、DPM(Deformable Part Model)等机器学习方法(称为Feature-Based 方法)。2012 年,Krizhevsky 等 对CNN(Convolutional Neural Networks)网络做出改进,在CNN 的基础上训练了一个大的神经网络DCNN(Deep Convolutional Neural Networks)。DCNN 以错误率比第二名低10%的巨大优势获得ILSVRC-2012 比赛冠军,CNN 网络得以再次被重视。同年,Uijlings 等用选择性搜索(Selective Search),从整幅图像中选出有用区域并提取特征进行检测,为后续CNN衍生出的TWO-STATE方法奠定基础。此后,目标检测的速度和精度大幅提升,基于CNN 的检测方法成为主流。

目标检测效果受多种因素影响,例如光照条件、遮挡情况、应用场景、物体尺寸等,Feature-Based方法受手工特征设计质量高低和机器学习方法自身存在的缺陷影响,检测效果差,在实际运用中受到多种限制。基于CNN 方法通过提取更深层次特征,大幅提升检测速度与检测精度,增强了目标检测在实际应用中的效果。但是,基于CNN 方法仍有不足之处,例如,使用基于CNN方法时仍需要在检测精度与检测速度之间进行权衡。

3 基于手工特征的检测方法

3.1 手工特征

图1给出了三种手工特征模板。LBP特征(局部二值模式)如图1(a)所示,模板中心周围的像素值均与模板中心像素值比较,大于中心像素值为1,小于中心像素值为0。从模板左上角开始,顺时针旋转组成的二进制数对应的十进制数即为中心点像素值。Ojala 等人[1]对LBP特征做出改进,提出了具有灰度不变性和旋转不变性LBP特征。LBP特征对光照具有很强的鲁棒性,针对的是物体的纹理特征,当物体纹理与背景纹理相似时,会降低检测效果。HOG 特征如图1(b)所示,Block 在Window 内滑动,内部包含多个Cell。Block 内所有Cell的梯度直方图串联即为Block 的梯度直方图(Block 的HOG 特征描述),为了获得光照不变性和阴影不变性,需要对比度归一化Window 内重叠的Block。Window内所有Block 的梯度直方图串联即为Window 的HOG特征描述,通过滑动窗口,收集整幅图片的HOG 特征[2]。HOG特征提取的是物体边缘特征,对图像中的噪声敏感;图1(c)所示是四种基本Haar特征,每种特征特征值等于白色区域的像素和减去黑色区域的像素和。Haar特征利用灰度图中物体表面明暗变化提取特征,因此Haar特征对光照鲁棒性很差。

图1 三种特征模板

3.2 机器学习方法

AdaBoost[3]通过选取多个最优弱分类器组成强分类器,多个强分类器级联成最终分类器。AdaBoost 算法,训练前期,选取最优弱分类器比较快速,后期最优弱分类器的选取越来越困难,需要大量的训练样本,训练时间越来越长,而且容易出现过拟合。

SVM(Support Vector Machine)引入核函数的概念,在低维度计算高维数据。SVM 的分类效果与核函数选取以及核函数参数有关,核函数的参数是不定的(训练得到),参数的选取与训练过程中模型收敛速度和过拟合情况有关。

2008 年,Felzenszwalb 等人[4]提出DPM(Deformable Part Model)算法,利用图像金字塔,提取同一图像不同尺度的特征。DPM 使用的特征,本质是一种改进的HOG 特征,取消了HOG 特征的block,改变了Cell 梯度直方图的归一化方式,通过对图像金字塔采集特征得到HOG 特征金字塔,特征金字塔顶部是粗略HOG 特征,底部是精细HOG 特征。DPM 设计了根滤波器(root filter)以及部件滤波器(parts filter),root filter匹配目标粗略HOG 特征,得到目标整体轮廓并得到匹配分数,parts filter 匹配目标精细HOG 特征,得到目标部分细节并得到匹配分数,最后综合两种滤波器匹配得分,确定检测结果。DPM 连续三年获得CVPR VOC 挑战赛冠军,设计者本人Felzenszwalb,在2010 年被VOC 授予“终身成就奖”,可见DPM的成功之处。DPM只对刚性物体和高度可变物体检测效果好,其模型复杂,在模型训练过程中,正样本选取复杂,root filter 和parts filter的位置作为潜在变量(latent values)进行训练,训练难度大,检测精度低。

Uijlings 等[5]提出选择性搜索(Selective Search),通过先对图像做分割,再对分割区域做相似性融合,得到整幅图像中目标可能存在区域,提取可能区域HOG 特征,利用SVMs 分类,得到检测结果。Selective Search结合了分割和枚举搜索的优点,通过对可能区域提取HOG 特征,判断可能区域是否有目标,不用对整张图片提取特征再进行判断,检测精度有所提升。由于Selective Search 对刚性物体和非刚性物体都可以较好地提出可能区域,Selective Search成为提取目标可能存在区域的常用方法。

3.3 改进Feature-Based方法

近年来,Feature-Based方法得到改进,冯等[6]利用增加新的Haar特征结合AdaBoost算法提升了人脸检测的精度,但是训练时间更长,抗干扰能力差,检测速度慢;汪等[7]以及欧阳等[8]改进了AdaBoost选取最优弱分类器时权值更新的方法,降低过拟合对检测结果的影响,提升了系统的检测速度与检测精度,但是仍未摆脱手工特征抗干扰能力差的束缚;吕等[9]将HOG特征与LBP结合用于药材识别,通过检测图像纹理和边缘特征,提升了药材识别率,但是其抗干扰能力差,泛化能力弱;闫等[10]将AdaBoost 中的弱分类器与SVM 级联构成最终的分类器用于车标识别;杨等[11]结合AdaBoost和SVM用于识别棉叶螨危害等级,比单独使用AdaBoost 和SVM 取得更高识别正确率,其模型复杂,训练困难,抗干扰能力差。

4 基于CNN的目标检测

4.1 TWO-STATE

4.1.1 DCNN

Krizhevsky 等[12]在CNN 网络基础上设计了dropout层,用于减少卷积网络训练中学习到的参数,减少网络训练过程中的过拟合情况,并设计新的激活函数ReLUs(Rectified Linear Units)作为神经元的激活,加快网络收敛速度。Krizhevsky用120万张图片训练一个大的神经网络DCNN(Deep Convolutional Neural Networks),在ILSVRC-2012比赛中DCNN的top-5错误率比第二名减少了10%。图2 是DCNN 的网络结构,图片输入DCNN网络经过多次卷积、池化以及全连接最后输出一个1 000 维的向量,对应可以检测出1 000 个类别。DCNN检测速度慢,检测精度较低,训练速度慢。

4.1.2 R-CNN

Girshick等人[13]提出R-CNN方法,先从图片中选出候选区域(Region proposal),再利用CNN 网络(Convolutional Neural Networks)进行检测,得到候选区域的检测结果,如图3。R-CNN检测步骤如下:

(1)用Selective Search 从图片中提取约2 000 个候选区域(Region proposals)。

(2)将每个候选区域缩放(wrap)成固定尺寸(227×227)输入到CNN网络,得到一个4 096维的特征向量。

(3)用特定类别的SVM对特征向量打分。

(4)非极大值抑制确定类别。

R-CNN在PASCAL VOC 2010数据集上的类别平均检测精度mAP(mean Average Precision)为53.7%,在VOC 2012数据集上的mAP为53.3%,比之前最好的检测结果提高30%。精度的大幅度提高与R-CNN网络训练方式有关。R-CNN模型首先在ILSVRC 2012数据集上预训练(pre-training),然后从VOC数据集中Selective Search 出大量候选区域,wrap 成固定大小(227×227)作为训练样本进行微调(fine-tuning),Girshick指出微调的过程提升8%的mAP。R-CNN也存在很多缺点:

(1)步骤繁琐:Region proposals+wrap+pre-training+fine-tuning+训练SVMs(每个类别都需要训练出一个SVM)。

(2)模型训练时间长。

(3)检测速度慢,只是计算一张图片的候选区域以及计算候选区域的特征,在GPU上用时13 s,在CPU上用时53 s。

(4)R-CNN的输入图片需要进行wrap操作,破坏原始图像的信息,影响检测精度。

4.1.3 SPP-net

2015年,He等[14]提出空间金字塔池化(SPP-net),取消了R-CNN将输入图片wrap成固定尺寸造成信息损失的约束。SPP-net检测步骤如下:

图2 DCNN网络结构

图3 R-CNN网络结构

(1)在输入图片上select search出2 000个候选区域。

(2)resize 整个图片大小,对图片最小边做变换:min(w,h)=s,s ∈S={480,576,688,864,1 200}。

(3)提取图片resize 后的特征图(feature maps,与S对应,5张特征图)。

(4)每个候选区域最小边做变换:min(w,h)=s,s ∈S={480,576,688,864,1 200},候选区域选取s 原则是使候选区域的像素值最接近224×224,找到候选区域的s 后在s 对应的特征图(feature map)上找到候选窗口的位置,用SPP-net提取特征。

(5)提取的特征通过全连接层,输入SVMs 得到检测结果。

与R-CNN 相比,SPP-net 不用对每个候选区域(Region proposal)都进行卷积操作,候选区域最小边变换后,直接映射到对应的feature map 上得到候选区域特征,检测速度是R-CNN 的24~102 倍。SPP-net 训练时,输入图片是可变尺寸,增强了网络的尺度不变性,降低网络训练时,过拟合的可能性。SPP-net 的输出采用SVMs作为分类器,模型训练复杂,耗费时间长。

如图4 所示是SPP-net 网络结构,window 是Region proposal在特征图上的映射位置,对window做空间金字塔,最大值池化(Max pooling)图4 中每一个网格,每个网格均得到一个1×256 的向量(256 是最后一层卷积层的filter 数量),所有网格的向量拼接即为window 的特征向量,得到的特征向量经过全连接层,再送入SVMs得出分类结果。

4.1.4 Fast R-CNN

2015 年,Girshick 等提出Fast R-CNN[15],用ROI(Region Of Interest)池化层代替SPP-net 的空间金字塔池化,没有采用SVMs 作为分类器,在全连接层(FC)后面增加两个输出层分别用于检测类别和位置。Fast R-CNN检测过程如下:

(1)从输入图片获取感兴趣区域(ROIs),对输入图片进行一系列卷积、池化得到feature map。

(2)ROIs映射到feature map上,得到每个ROI的特征图。

(3)对ROI 特征图做ROI 池化,得到固定长度的特征向量。

图4 SPP-net网络结构

(4)特征向量经过FC 层,由输出层,得到分类结果和目标位置。感兴趣区域ROIs是从输入图像上选择性搜索出的多个目标区域(object proposals)。

如图5 所示是ROI 池化层结构。 w×h 的ROI 区域,被拆分成W×H 个网格,每个网格的大小为w/W×h/H ,池化每个网格,均得到一个向量,所得向量拼接即为ROI区域的特征向量。ROI池化是SPP-net的一种特殊情况,只用金字塔的一层图像。

图5 ROI池化

Fast R-CNN 利用端到端的思想,用两层输出层代替SPP-net 的SVMs 分类器,不用为每个类别分别训练出一个SVM,简化训练步骤。但是ROIs区域是在图片输入到CNN 网络前获得,因此,Fast R-CNN 并不是真正意义上的端到端。不包括ROIs的获取时间,Fast R-CNN网络检测一张图片耗时0.3 s。ROIs 的获取限制了Fast R-CNN的检测速度,导致其不能满足实时检测要求。

4.1.5 Faster R-CNN

针对Fast R-CNN 在CNN 网络外获取ROIs 的不足,Ren等[16]提出Faster R-CNN方法,在Fast R-CNN网络的基础上设计了RPN(Region Proposal Networks)网络,在整个网络内部获取Region proposals,实现真正意义上的端到端。图6是RPN网络的结构。proposal的提取耗时10 ms)。

图6 RPN网络结构

图7是Faster R-CNN的检测过程。检测步骤如下:

(1)图片经过卷积网络得到Feature maps。

(2)RPN网络从Feature maps获取Region proposals。

(3)proposals 和Feature maps 分别进行ROI 池化得到各自特征向量。

(4)根据proposals特征向量检测其类别、位置。

(5)根据Feature maps的特征向量对结果进行调整。

Faster R-CNN 是端到端的模型,为减少整个网络的计算时间,RPN网络与Fast R-CNN网络共享卷积层,整个网络处理一张图片耗时198 ms,接近实时检测的速度,仍不能实现实时检测。

图7 Faster R-CNN检测过程

图6 中的Feature map 是RPN 网络和CNN 网络共享的最后一个卷积层特征图。Feature map上设置一个中心设置锚点(anchor)的n×n 滑动窗口,每个锚点代表k 个锚盒,k 决定每个窗口得到的候选区域(Region proposal)数目。Ren 令n=3,设置3 种不同尺度、不同纵横比的锚盒(anchor box),每个滑动窗口提取9 个Region proposal。利用RPN 提取的Region proposals不仅包含的有用信息多,提取速度也快(每张图片Region

4.2 ONE-STATE

4.2.1 YOLO

2016 年,Redmon 等[17]提出YOLO(You Only Look Once)算法,将目标检测视为包含类别信息的空间位置回归问题,开辟了目标检测新思路。YOLO是端到端的设计,和Faster R-CNN 相比YOLO 只包含一个卷积网络,结构更简单。YOLO的网络结构如图8所示。经过多次卷积、池化以及全连接后,YOLO输出一个7×7×30的张量。

图8 YOLO网络结构

图9为YOLO的检测过程示意,检测过程如下:

(1)整张图片划分为S×S(Redmon 设计为7×7)的网格。

(2)图片输入CNN网络,输出一个7×7×30的张量。

(3)非极大值抑制得到检测结果。

由检测过程可知每个网格会得到一个1×1×30的张量,目标检测的结果由每个网格的张量信息确定,图10表示每个网格的张量信息。

图9 YOLO检测过程

图10 单个网格信息

YOLO只包含一个卷积网络,直接对整幅图片做卷积,利用图片全局信息,一次预测出图像中所有目标位置及类别。YOLO结构简单,泛化能力强、检测速度快,在GPU 上为45 f/s(Frame Per Second),可用于实时检测。YOLO网络训练使用224×224像素的图片,检测时使用448×448 像素的图片,其检测精度比Fast R-CNN和Faster R-CNN低,目标位置定位不准确,对小目标检测效果差。即使在理想情况下,YOLO一次最多检测49个目标。

4.2.2 YOLO9000

Redmon 等[18]对YOLO 进行改进,提出YOLO9000(YOLOv2)。其步骤复杂,实现难度大。

(1)结构改进:YOLOv2 在YOLO 结构基础上对每个卷积层都进行批归一化处理(batch normalization),提升了2%的mAP。批归一化使得模型不用考虑过拟合问题,因此YOLOv2移除YOLO网络中dropout层,加快了模型收敛速度[17]。YOLOv2 采用锚盒(anchor boxes)预测包围盒(bounding boxes),取消了YOLO 网络中全连接层,考虑到锚盒尺寸对检测精度影响,Redmon等采用K-MEANS 算法,利用训练集的包围盒,得到较好的先验尺寸。

(2)训练数据改进:因为YOLOv2 网络中没有全连接层,所以输入网络的图片可以是任意大小,Redmon对训练数据32 倍下采样,实现同一个网络对不同分辨率图像检测;在训练时将检测数据集和分类数据集混合训练,可以检测更多类别。

(3)模型训练方法改进:采用TWO-STATE 模型的训练思想,先用224×224 分辨率样本预训练,再用448×448的高分辨率样本微调,提升检测精度。

4.2.3 SSD

在YOLO 的影响下Liu 等[19],在VGG-16 模型的基础上,取消全连接层,增加多个卷积层(Liu 称其为卷积特征层,convolutional feature layers)提取特征,SSD 结构如图11。Covn4_3和卷积特征层输出的特征图中,每个位置均设置尺度不同、纵横比不同的默认盒(default boxes),同一张特征图中,每个位置default boxes 相同,default boxes尺度随特征图尺度变化,特征图随卷积深入尺寸越来越小,最后为一个1×1×256 的张量。Liu 在Classifier1 对应的特征图中每个位置设置4 个default boxes,Classifier2 对应的特征图中每个位置设置6 个default boxes。每个default box中包含对应位置的类别信息和位置信息,根据所有的default boxes信息最后利用非极大值,得到最终检测结果。Classifier1为Covn:3×3×(4×(Classes+4)),Classifier2为Covn:3×3×(6×(Classes+4))。

表1 是SSD 结构中获得每个卷积特征图的卷积操作。

SSD是一种端到端模型,利用YOLO的回归思想和Faster R-CNN 中的anchor 机制,检测速度比YOLO 快,检测精度可以达到Faster R-CNN水平。SSD对中小目标检测效果差,陈等[20]利用多尺度卷积的特点对SSD做出改进,实现对中小目标也有较好的检测效果:对小占比目标,利用反卷积和区域映射,在高分辨率特征图上提取小占比目标的特征;对中等目标,增加网络深度提取更抽象的语义信息;该方法在提升检测精度的同时增加了网络的复杂度,降低了检测速度。

图11 SSD网络结构

表1 获取每个卷积特征图的操作

5 统计与比较

常用的数据库有PASCALVOC、ImageNet、MS-COCO等。表2 为CNN 方法检测PASCAL VOC2007 数据集(20个类别),得到的所有类别平均精度mAP(mean Average Precision)。方法名后面的数字为输入图片的像素值(如YOLOv2 228 表示输入的图片像素值为228×228),V16表示用VGG16模型,RN表示用ResNet模型,*Faster R-CNN 表示此种方法的RPN 网络没有和卷积网络共享卷积层。

表2 不同算法在VOC2007测试集上的mAP

表3为FAST R-CNN结合不同Region proposals方法,检测VOC2007 测试集的mAP 比较,FAST R-CNN的训练集为VOC2007。

表3 三种Region proposals结合Fast R-CNN的mAP

表4 为CNN 方法检测PASCAL VOC2012 数据集(20 个类别),得到的所有类别平均精度mAP。方法名后面的数字为输入图片的像素值(如YOLOv2 544 表示输入的图片像素值为544×544),V16 表示用VGG16模型。

表4 不同算法在VOC2012测试集上的mAP

表5为不同方法提取候选区域(Region proposals),召回率和提取速度对比信息。

表5 不同方法获取Region proposals的比较

表6 为CNN 方法检测速度比较,其中Fast R-CNN的检测时间不包括感兴趣区域ROIs(Regions Of Interest)获取时间,SPP-net*表示不包括候选区域(Region proposal)获取时间。

表6 CNN方法的检测的速度

6 结语

6.1 总结

(1)Feature-Based检测方法,应用局限性大,检测效果与手工设计特征质量高低有关,手工设计特征往往具有针对性,对背景、光照、噪声等鲁棒性很差,泛化能力也弱。Feature-Based检测效果可以通过融合多种特征,以及结合多种机器学习方法得到提升,也可以通过设计新的手工特征以及根据目的,选择合适的机器学习方法得到提升[27-30]。

(2)TWO-STATE 和ONE-STATE 检测方法,是后续目标检测方法研究的基础,TWO-STATE 方法检测精度高、鲁棒性好,但是检测速度较慢。ONE-STATE方法与TWO-STATE方法相比,结构简单、检测速度快,但是检测精度较低,抗干扰能力差。基于CNN 的检测方法抗干扰能力比Feature-Based 方法强,如慕[31]利用HOG 特征结合SVM 的方法,改善了HAAR 特征结合AdaBoost算法检测人脸时,对侧脸不敏感的问题,Yang 等[32]利用CNN网络检测人体五官并根据五官的位置结构确定人脸,对光照影响下的人脸、侧脸以及部分脸都有很好的检测效果。

6.2 展望

目前,目标检测仍然是计算机视觉中的重点,人们对检测精度与检测速度有更高期望。随着CNN网络以及大数据的发展,用于检测的数据集会越来越丰富,几种典型CNN 框架可以进一步被优化,或者可以相互结合使用。基于CNN 的检测方法有很强的数据依赖性,训练网络需要大量样本,耗费大量计算资源,模型训练时间代价大。如何利用较少的样本,让网络学习到好的检测特征,加快网络学习速度,值得进一步研究。

基于CNN的检测方法,锚盒(anchor box)是其中的一个重要部分,锚盒方法需要手动设定大量的锚盒,确保目标真实包围框能被锚盒覆盖,只有与目标真实包围框有重叠的锚盒,用于确定目标位置,锚盒利用率不高,阻碍训练速度。在摆脱锚盒方法的基础上,确定目标位置,值得进一步研究,例如,Law 等[33]提出的角点网络(CornerNet),通过检测目标左上角和右下角确定目标位置,得到了较好的检测结果。CornerNet在MS COCO测试集上平均检测精度为42.2%,比目前的ONE-STATE方法检测精度都高,网络结构更简单。CornerNet 的检测瓶颈是角点检测,提升角点检测正确率,网络检测精度会大幅度提高。

CNN 网络的框架是以人的先验知识为基础搭建的,网络中的参数均是人为设定的,人为设定的参数不见得为最优,每一层的网络参数(如步长、卷积核数目),可以通过学习数据集,得到最优值,这种方法需要很强的计算能力支持,利用较少的计算,得到网络参数的最优值是重要的研究方向。通过学习数据集,网络自行选择或者搭建检测效果更好的框架也有很重要的研究意义。

端到端的模式仍然是后续研究重点。相对而言TWOSTATE方法,结构复杂,优化困难,因此,ONE-STATE方法是后续研究的重要内容。

猜你喜欢

卷积精度特征
根据方程特征选解法
热连轧机组粗轧机精度控制
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
超高精度计时器——原子钟
从滤波器理解卷积
不忠诚的四个特征
分析误差提精度
基于DSPIC33F微处理器的采集精度的提高
基于傅里叶域卷积表示的目标跟踪算法