APP下载

基于RCNN的车辆检测方法研究*

2018-08-23朱茂桃张鸿翔方瑞华

机电工程 2018年8期
关键词:标定卷积车辆

朱茂桃,张鸿翔,,方瑞华

(1.江苏大学 汽车与交通工程学院,江苏 镇江 212013;2.上海干巷车镜实业有限公司,上海 201518)

0 引 言

近年来,随着人们对车辆安全性能的关注,高级辅助驾驶系统(ADAS)受到车企的广泛关注。因此基于计算机视觉的车辆检测算法具有重要价值。

传统车辆检测方法的步骤为:在给定的图像上选取感兴趣区域,根据特征算子(常用的有SIFT、HOG等)对感兴趣区域提取特征[1-2],使用训练的分类器进行分类[3-4]。MU K等[5]针对基于边缘的车辆检测方法容易受到噪声和背景的干扰,导致检测不准确的问题,提出了一种基于多尺度边缘融合的车辆检测方法;WU B F等[6]提出了一种实时的车道线检测算法和基于模糊逻辑的车辆检测算;KIM Z W[7]提出了基于概率特征分组的实时车辆检测方法并将其运用于车辆跟踪。但是传统目标检测存在两个主要问题:(1)基于滑动窗口的区域选择策略缺乏针对性,耗时长;(2)人工提取的特征没有很好的泛化能力。

2012年开始,各种视觉任务都启用了卷积神经网络(CNN)来构建新的模型。CNN优于传统算法的3个主要因素:(1)大规模的训练数据;(2)网络结构更加复杂、更深、参数更多;(3)GPU对计算的加速,使以往需要数周的训练过程只需一天甚至数小时以内就可以完成。ADAS的视觉感知部分属于计算机视觉的范畴,因此,很多传统的车辆检测算法正在被深度学习所取代。

本文根据RCNN系列深度学习检测算法建立数据集,对Faster R-CNN算法调参,最后比较RCNN、SPPnet、Fast R-CNN和Faster R-CNN算法的检测效果[8-11]。

1 RCNN系列深度学习检测算法

针对卷积神经网络的问题,GIRSHICK R提出了RCNN采用Selective Search方法,得到可能存在检测目标的若干图像局部区域[12],然后将这些区域分别输入到CNN中得到区域特征,在特征图上接分类器,判断对应的区域是否属于要检测的目标,最后针对标定框进行回归以修正预测框的位置。但RCNN存在着重复计算的问题。HE K将空间金字塔池化层引入CNN提出了SPPnet,降低了CNN网络对输入图片尺寸的限制,提高了准确率。基于SPPnet的思路,GIRSHICK R又提出了Fast-RCNN,采用自适应尺度池化,将候选区域映射到CNN最后一个卷积层的特征图上,只需要提取一次特征,从而提高了检测速度。但Fast R-CNN存在提取候选区域耗时长的问题,因此GIRSHICK R等人提出了Faster R-CNN算法。

2 基于Faster R-CNN的车辆检测算法

Faster R-CNN算法由两大模块组成:(1)RPN候选框提取模块;(2)Fast R-CNN检测模块。其中,RPN用于提取候选框;Fast R-CNN基于RPN提取的proposal检测并识别proposal中的目标。

与SPPNet和Fast R-CNN相比,Faster R-CNN采用CNN提取特征和候选区域,并将两个网络权值共享、联合调优,实现了端到端的目标检测,既解决了提取候选区域耗时长的问题,又保证了检测的准确率。

2.1 模型训练

2.1.1 CNN网络架构选取

CNN网络有两个可选方案:(1)选择经典的VGG16[13];(2)选择ZFnet[14]。经过测试ZFnet精度为58.5%,VGG16精度为66%。VGG网络的精度高,但计算量大。为了减少计算量,选用ZFnet。ZFnet是基于Alexnet的微调版本[15],其top-5错误率为11.2%。ZFnet使用ReLu作为激活函数,使用了交叉熵代价函数,通过使用较小的过滤器以保留更多的原始像素信息。

网络结构如图1所示。

图1 ZFnet网络结构

ZFnet特征提取部分包含了5个卷积层、2个全连接层,在ZFnet中第5个池化层包含256个通道,称为特征图,共有神经元个数为9 216(256×6×6),第6和第7全连接层的神经元个数都是4 096,通过这个网络训练完毕后,最后提取特征。

2.1.2 训练RPN网络

RPN原理如图2所示。

实现方式:在最后一层卷积的特征图上用一个3×3的滑窗生成一个长度为256(对应于ZFnet)维长度的全连接特征,然后在这个256维的特征后产生两个分支的全连接层:(1)分类层用于判定该候选区域是前景还是背景;(2)回归层用于预测候选区域的中心锚点对应的预测框坐标x,y和宽高w,h。采用滑动窗口的方式保证了分类层和回归层关联了最后一次卷积的全部特征图。然后用分别为2×k和4×k个大小为1×1步长为1的卷积核实现上一层特征到分类层和回归层的特征映射。

图2 RPN原理图

图中的anchor字面上可以理解为锚点,位于之前提到的n×n的滑窗中心处。对于每个滑窗可以同时预测k个区域。k个区域即k个预测窗口,每一个预测窗口又可以用一个比例,一个高宽比和滑窗中的锚点唯一确定。用3种比例和3种高宽比确定出当前锚点位置处对应的9个预测窗口,即k=9。

Anchor正负样本标定规则如下:

①对每个标定框,与其重叠比例最大的anchor记为正样本(保证每个标定框至少对应一个正样本anchor);

②对①剩余的anchor,如果其与某个标定区域重叠比例大于0.7,记为正样本(每个标定框可能会对应多个正样本anchor,但每个正样本anchor只可能对应一个标定框);如果其与任意一个标定框的重叠比例都小于0.3,记为负样本;

③对①、②剩余的anchor,弃去不用;

④跨越图像边界的anchor,弃去不用。

2.1.3 定义损失函数

分类损失:每个anchor后面接有一个二分类softmax,得到anchors的分类概率。其公式如下:

(1)

回归损失:在每个anchor后接上一个回归函数,计算预测窗口与标定窗口之间的损失。其公式如下:

(2)

(1)预测框,即RPN网络预测出区域的中心位置坐标和宽高;

(2)锚点预测窗口:9个锚点对应9个不同比例和高宽比的预测窗口,每个预测窗口都有一个中心点位置坐标和宽高;

(3)目标位置:标定框也对应一个中心点位置坐标和宽高。

(4)

(5)

式中:(x,y)—预测框的中心坐标;(w,h)—预测框的宽高;(xa,ya)—锚点预测窗口的中心坐标;(wa,ha)—锚点预测窗口的宽高;(x*,y*)—标定框的中心坐标;(w*,h*)—标定框的宽高。

定义损失函数:RPN的损失函数是由分类损失和回归损失按一定比重组成。RPN总损失函数为:

(6)

式中:λ—比例系数。

2.1.4 RPN和CNN参数共享和联合调优

因为分别训练RPN和Fast R-CNN两种不同任务的网络模型,会导致无法共享网络权重,需要采用交替训练方法:

(1)用ImageNet模型初始化,独立训练一个RPN网络;

(2)仍然用ImageNet模型初始化,但是使用上一步RPN网络产生的区域作为输入,训练一个Fast R-CNN网络,至此,两个网络每一层的参数完全不共享;

(3)使用第二步的Fast R-CNN网络参数初始化一个新的RPN网络,但是把RPN、Fast-RCNN共享的那些卷积层的学习率设置为0,也就是不更新,仅仅更新RPN特有的那些网络层,重新训练,此时,两个网络已经共享了所有公共的卷积层;

(4)仍然固定共享的那些网络层,把Fast R-CNN特有的网络层也加入进来,形成一个联合网络,继续训练,微调Fast R-CNN特有的网络层,此时,该网络已经实现了内部预测区域并实现检测的功能。

2.2 车辆检测

Faster R-CNN运用同一个ZFnet网络将分离的RPN定位和CNN分类进行结合,从而实现了端到端的目标检测。实现步骤为:

(1)给定输入图像,经过卷积操作得到最后一层的卷积特征图;

(2)使用滑动窗口对特征图进行卷积,在最后一层卷积层上得到候选区域;

(3)对(2)得到的候选区域进行非最大值抑制(NMS[16]),得到评分前300的候选区域;

(4)在提取的特征向量后面接分类层和回归层分别计算分类评分和边框回归评分。

3 实验及结果分析

本文采用Faster R-CNN算法对车辆进行检测。

3.1 训练样本处理

数据集由采集的路况图片数据组成,包含了4个季节各种天气状况下的图片。原始影像大小为1 280像素×720像素。

3.2 数据集的构建

该试验的训练集由行车过程中采集的车辆正样本与负样本各4 000张,共8 000张组成;验证集由正负样本各1 000张,共2 000张组成;测试集由正负样本各1 000张,共2 000张组成。其中验证集是用于调参,测试集用于检验算法的好坏。

本研究使用LabelImg分别对训练集、验证集和测试集图片上的车辆进行统一的标注,标注界面如图3所示。

图3 图片标定示例

为了改善图像数据,本研究进行数据增强。对图像进行3种不同的随机变换:随机裁剪、随机翻转、随机颜色失真。

本次试验中,采用查准率、查全率计算出平均准确率来进行评价:

(7)

(8)

(9)

式中:TP—正确的正例;FP—错误的正例;FN—错误的反例;Pre—查准率;Rec—查全率;mAP—平均准确率。

在测试阶段,当预测框与标定框重叠面积达到标记外围框的90%以上时,视为检测成功。

3.3 实验及结果分析

本文使用Tensorflow深度学习框架实现Faster R-CNN算法。首先使用3.2节创建的数据训练集和验证集对模型进行调参,然后通过控制变量法对Faster R-CNN的参数进行优化,研究其对mAP的影响,最后使用测试集对RCNN、SPPnet、Faster R-CNN与Faster R-CNN算法进行测试和对比。实验用计算机CPU为Intel E5-2620 V3,GPU为GeFore GTX 1080ti,软件环境为Python3.6。

Faster-RCNN算法需要设置一些超参数来对mAP进行调优:dropout值、批处理(batch size)、NMS前后候选区域个数。试验结果如表(1~3)所示。

Dropout在模型训练时随机让网络中某些隐含层节点的权重不产生作用,是用来防止过拟合的一个参数。Dropout值对mAP的影响与数据集大小相关,调试Dropout值使mAP最大。表1说明:在将Dropout的值从20%提高到80%的过程中,当Dropout值取60%时,mAP取最大值0.835。

表2说明:当候选区域数量减少时,mAP也逐渐减少。这是因为NMS是用来选取候选区域里分数最高,并且抑制那些分数低的窗口。如果候选区域数目减少,经NMS后,由于取样少,将导致预测框不能很好地框出图中车辆位置,从而导致mAP下降。但如果候选区域数量过多,会导致计算量很大,故一般取2 000个NMS前候选区域(300个NMS后候选区域个数)为宜。

表1 Dropout值对mAP影响

表2 不同NMS数目对mAP影响

表3 不同的batch size对mAP影响

NMS前后预测框的对比如图4所示。

图4 NMS前后预测框对比图

本研究保持Dropout值和候选区域个数不变,研究batch size与mAP之间的关系。表3说明:当batch size减少时,mAP也逐渐减小。这是因为采用batch是梯度下降算法和随机梯度下降的折中方案。batch size越大越接近梯度下降算法,mAP越高,但计算耗时长,极端的,当batch为整个训练集时,采用batch等价于梯度下降算法;batch size越小越接近随机梯度下降,mAP越低,但计算速度快,当batch size为1时,采用batch等价于随机梯度下降算法[17]。综合考虑这两方面因素,取区域提议阶段batch size为100,检测阶段batch size为50。

本研究分别使用RCNN、SPPnet、Fast R-CNN和Faster R-CNN等4种算法对车辆进行检测,4种算法在测试集上的正确率和召回率如图5所示。可以看出:基于RCNN检测算法的正确率得到提高。从RCNN到SPPnet解决了不同尺寸输入图片转化成相同尺度向量的问题,从SPPnet到Fast R-CNN节省了对整张图片进行CNN特征提取的操作,从Fast R-CNN到Faster R-CNN提出了RPN,并将RPN和Fast R-CNN共享网络,进一步提高了准确率。

图5 4种算法的检测精度对比图

笔者采用同一台服务器对本文所有试验测试,测试集图片大小为1 280像素×720像素。表4说明RCNN、SPPnet和Fast R-CNN都采用Selective Search方法提取候选区域耗时长;Faster R-CNN在Fast R-CNN基础上采用卷积特征与RPN共享的方法,使得检测时间缩短到了69 ms左右。

实验结果表明:基于深度学习的Faster R-CNN算法可以满足车辆检测的实时性要求。

表4 4种算法的检测速度对比图

4 结束语

本研究针对车辆检测对于高实时性和高准确率的要求,分析了RCNN系列深度学习算法在车辆检测领域的有效性。结果表明:基于Faster R-CNN的车辆检测算法可以达到每张69 ms的识别速度和91.3%的准确率,提高了实时检测车辆的效果。

猜你喜欢

标定卷积车辆
基于3D-Winograd的快速卷积算法设计及FPGA实现
使用朗仁H6 Pro标定北汽绅宝转向角传感器
卷积神经网络的分析与设计
从滤波器理解卷积
CT系统参数标定及成像—2
CT系统参数标定及成像—2
车辆
基于傅里叶域卷积表示的目标跟踪算法
基于匀速率26位置法的iIMU-FSAS光纤陀螺仪标定
基于MATLAB 的CT 系统参数标定及成像研究