倪朋朋,顾海全,董锋格,王文斌
(常州星宇车灯股份有限公司,江苏常州 213000)
车辆检测是计算机视觉领域广泛研究的热点之一,研究车辆检测对于智能驾驶、道路交通安全建设有着重要意义。通过车载摄像头,车辆可以实时检测道路上的车辆,从而为驾驶员提供驾驶辅助信息,降低交通事故率。
目前较常用的车辆检测方法是通过环形磁感线圈、超声波、微波雷达、红外线、气动导管、光电式传感器等设备仪器进行检测,目前比较流行的是基于视频分析的车辆检测方法[1]。视频检测是计算机图形处理领域的分支,机器视觉具有信息来源广、信息量大、属于非接触测量等优点[2]。而实现高精度的图像检测重点是选取目标特征和设计分类算法。目前主要使用的方法是根据车辆阴影、边缘特征进行的车辆检测[3]。光流法主要通过路面中车辆与摄像头相对运动速度实现[4],但该方法受光线响较大且计算复杂。VIOLA等[5]提出实时性强、检测速率快、准确率高的Haar-like人脸检测算法。随后,甘玲、刘晓克等[6-7]以Haar-like算法为基础进行深入研究,提出了基于旋转Haar-like的算法。
本文作者在上述研究人员提出的Haar-like算法的基础上提出新的Haar-like特征提取算法,并且通过多通道的级联分类器分别检测画面中不同状态的车辆,然后合并各个通道提取的特征信息,提高车辆识别的准确性。
Haar-like是一种经典的图像特征提取算法。它最早是由Papageorigiou等用于人脸描述[8]。基于Haar-like特征的Adaboost算法能够有效识别图像中的物体,判断是否存在车辆。首先通过训练样本进行特征提取,然后计算特征值并建立弱分类器,最后通过加权投票的方式将其构造成为强分类器。目前常用的Haar-like特征可以分为4类:边缘特征、线性特征、点特征(中心特征)、对角线特征,如图1所示。
这些特征方块的大小不固定,但其中的黑色和白色矩阵的比例总是固定的,将白色区域和黑色区域内部所有像素灰度值之和的差值作为特征值,通过积分图[9]能够快速获得区域中的像素和。为了提高检测率,本文作者采用Haar-like特征和扩展Haar-like特征(新特征)来表示车辆的特征结构,如图2所示。
图1 Haar-like特征
图2 新特征与Haar-like特征
如图3所示,在车辆正面的匹配过程中,尤其是在两个车灯之间的区域,新特征一不仅可以很好反映灰度特征的变化,还可以将弱分类器训练得更强。在车辆局部小范围灰度变化中,新特征具有较高的精度。车灯区域灰度比车灯之间区域灰度更浅,通过这种新的Haar-like特征能够对车辆分离较开的区域进行差异判断。新特征二能够更好地描述单个车灯与车灯周围灰度变化特征,能够显著地将车辆检测的准确度提高。Haar-like特征倾斜60°时可以反映车辆A柱(车前后挡风玻璃边框)范围内的边缘信息。通过采用这种新的特征矩形,还能减少弱分类器的数目。
图3 车辆矩形特征
本文作者使用的训练样本图片统一归一化为20像素×20像素,边缘特征能够在该样本图片中生成21 000个特征,线性特征能够生成13 230个特征,中心特征能够生成8 464个特征,对角线特征则能够生成20 736个特征。因此,普通Haar-like特征在样本图片中就能产生97 660个特征。新特征一由于是一种离散的特征,如果不加以约束,则计算较难并且特征数量会很庞大,因此限定新特征一的3个矩阵大小相同,长宽均为3像素,步长为1。限定后,新特征一生成的特征数量为778 688个。新特征二类似于对角线特征,产生的特征数量仍然为20 736个。本文作者也用到旋转60°的边缘特征,如图4所示。
图4 旋转60°的Haar-like特征计算示意
该特征可以由一个五元组r(x,y,h,w,α)表示,其中(x,y)表示矩形左上顶点,w为矩形的长度,h为矩形的宽度,α为矩形的旋转角度,假设图片样本尺寸大小为W×H,旋转矩形的长为a,宽为b,令X为W/w是沿x方向上的缩放系数,Y为H/h是y方向上缩放系数,公式(1)是计算该特征个数的方法:
(1)
倾斜60°边缘特征生成的特征数量为20 540个。由上述可得,通过扩展Haar-like特征,虽然可以提高检测的准确度,但是会使数据的运算量增加很多,导致训练时间变得更长。
为了快速算出Haar-like特征在样本中的特征值,VIOLA提出一种利用积分图像法快速计算Haar-like特征的方法[2],通过构造一张积分图(Integral Image),然后任何一个Haar-like特征的特征值都可以通过类似查表的方式和有限次简单运算得到。对于图像中的一点A(x,y),该点灰度值为I(x,y),I(x′,y′)表示输入图像上相关位置的灰度值,其积分图ii(x,y)的计算方法为
(2)
图5为基于Haar-like特征积分图的描述,i(x,y)为输入特征图像的某点(x,y)的像素值,s(x,y)为点(x,y)所在行的像素值的和,则计算积分图可以通过以下的递归方式:
s(x,y)=s(x,y-1)+i(x,y)
(3)
ii(x,y)=ii(x-1,y)+s(x,y)
(4)
图5 积分图描述
当点(x,y)处于一个初始状态时,即s(x,-1)、s(-1,y)时,像素和是0。在图5中点2的积分图值为A+B,点3的积分图值为A+C,点4的积分图值为ii5+ii1-(ii2+ii4),通过积分图,程序读取一次图像的灰度值就能够获得该Haar-like特征的特征值,而且它的计算时间也是一个常量。
本文作者给出的新特征一的计算公式为
[ii1+ii4-ii2-ii3]+[ii9+ii12-ii10-ii11]-[ii5+ii8-ii6-ii7]
(5)
新特征二的计算公式为
2×(ii2-ii5+ii4)-ii3+ii9-ii7-ii1
(6)
Adaboost 算法是一种简单、学习精度高的分类器算法,1995年由Yoav FREUND和Robert SCHAPIRE提出。Adaboost算法将许多分类能力一般的弱分类器组合成一个分类能力强的强分类器,再串联起多个强分类器完成图像中物体的检测,检测系统对错误率和识别速率的要求是级联级数的重要依据。
弱分类器分类的准确性一般大于50%,因为它是根据一些粗略的经验来分类的分类器,因此每一个Haar特征都对应了一个弱分类器,所有的弱分类器定义都是依据它所对应的Haar特征的参数。弱分类器定义如下:
(7)
其中:hj(x)为一个Haar-like特征的分类器值;x为待测子窗口;fj(x)为特征值;θj为阈值;pj为符号因子。
多个弱分类器构成强分类器,强分类器能够更好地处理对象,通过对训练出的多个强分类器进行级联,可以加快对图像中车辆进行分类检测的速度,排除大部分非车辆样本。强分类器训练过程如下:
(1)对已知的N个训练样本(x1,y1)、(x2,y2)、......、(xn,yn)的弱分类器权重进行初始化,N个样本中有M个为非车辆样本,L个为车辆样本,对于yi=0的样本w1~M=1/(2M),对于yi=1的样本w1~L=1/(2L)。
(2)进行t次迭代
①归一化权重:
(8)
②计算每个Haar-like特征所对应的弱分类器hj(x)的加权错误率:
(9)
③选取具有最小错误率的弱分类器hj(x)加入到强分类器中:
(10)
④加大错误率大的弱分类器权重,减小错误率小的弱分类器权重:
(11)
式中:如果输入特征被正确分类,那么e=0,否则e=1。
⑤经过t次迭代弱分类器级联成强分类器:
(12)
通过以上训练可以实现对已知样本的正确分类,通过T次重新划分样本权重,强化了对错误样本的训练,最后,将所有的弱分类器通过权重组合形成强分类器。
将大量的Haar特征弱分类器通过级联的策略组成一系列的强分类器。为了迅速除去数量较多的非车辆样本,每层弱分类器都要去除许多反例样本,同时正例样本必须要逐级通过所有层次的验证。训练层次越深,车辆和非车辆的样本就越难识别,通过增加每一层弱分类器数量以排除非车辆样本。因为很多非车辆子窗口在前期分类器层已经被排除掉,所以即使弱分类器不断被添加,该方法也不会因此而降低检测速度。为提高实时检测路面上各种车辆的鲁棒性,本文作者提出多通道分类器方式。多通道指的是对车辆正面、背面以及侧面样本分别训练出的强分类器,将不同的分类器检测结果合并,最后输出到图像中的所有车辆位置,如图6所示。多通道强分类器方法实现上比较简单,但可能会导致检测速度变慢。
图6 多通道分类器检测
训练时采用的是归一化为20像素×20像素的车辆样本,正样本来自MIT CBCL数据库以及作者所采集的图像共6 000张,主要包括车辆前后视图以及侧面视图。负样本主要为不包含车辆信息但是具有与车辆日常行驶环境相关信息的图片,负样本共12 350张,尺寸大小为60像素×60像素到128像素×96像素之间。图7为部分样本训练集,为了提高分类器的检测率,所选正样本包含了有一定倾斜度的车辆图像。
文中使用OpenCV开源计算机视觉库实现Adaboost算法对上述样本的训练。训练环境与测试环境为Intel Core i5、4G内存,训练时单个阶段分类器最小命中率设定为0.985,每个阶段的虚警率为0.5,训练层数为35层。
测试样本是从MIT Car Database、 INRIA Car Dataset车辆图像库以及网络中搜寻的,共516张,样本大小介于128像素×128像素和512像素×409像素之间。首先对测试样本进行灰度化,然后进行直方图均衡化,对该样本库进行测试,正确率达到91.5%,而且每张图片的处理时间可以达到22 ms,如表1所示。
图7 正负训练样本
表1 车辆检测结果
本文作者组建了车辆运行的视频库用来测试分类器的实时性,对于30 帧/s、480 dpi×320 dpi的视频,处理1帧时间为50 ms。在整个行车视频试验中,车辆检测率能够达到87%以上,在一定程度上能够满足实时检测路面车辆的要求。图8为各种状况下的车辆实时检测结果示例。
图8 车辆不同状态下实时检测结果
在Haar-like特征的基础上,提出了新的特征集以及其特征计算公式,使用新的特征集训练出更优的分类器,提高了检测精度。通过Adaboost算法训练出不同车辆姿态所对应的分类器,合并各个分类器的检测结果,实现多通道级联分类器。实验结果表明:新增加Haar-like 特征可以使Adaboost训练过程中的弱分类器精确度得到提高,特别在检测同一图像中出现各种状态的车辆时具有较高的鲁棒性。训练出的强分类器较原始Haar-like特征分类器检测率得到明显提高,并且也能满足实时检测的要求。