高效快速的Adaboost算法车体检测

作者:蒲业壮 沈晓红 文章来源:北京工商大学 发布时间:2010-07-09
分享到

随着计算机和机器人技术的飞速发展,智能车辆(Intelligent Vehicle)研究已经取得了长足进展,并广泛应用于军事、科研、民用等各个领域。从长远来说,智能汽车技术可以广泛应用于各行业和各个领域。导航技术是智能车辆的关键技术之一,要使智能车实现视觉导航,必须实现两个基本任务:一是能够实时跟踪车道的变化;二是能够检测车道内的障碍物(车辆、行人及其他)。只有精确了解车道信息,才可以准确地获得本车相对于车道的位置和方向;只有准确地检测出车道内的障碍物,才能有效避开障碍物。本文主要介绍对车道线内障碍车辆的检测。

由于障碍车辆的出现具有不可预知性,无法根据预先设定的电子地图避开障碍物,只能在行驶过程中及时发现,而且必须实时处理。这就要求检测必须具有较高的实时性和准确性。本文采用Adaboost算法构造基于车体外形特征的检测器,力求减小训练时间,提高检测准确率。

Adaboost算法

Adaboost算法是1995年由Yoav Freund和Robert E.Schapire提出的,是目前最具实用价值的机器学习方法之一,它是一种迭代的学习方法,可以将一组弱学习算法提升为一个强学习算法。Adaboost算法本身是通过改变数据分布来实现的,它根据每次训练集中每个样本的分类是否正确,以及上次的总体分类准确率,来确定每个样本的权值,将每次训练得到的弱分类器最后融合起来,作为最后的决策分类器。这里所说的弱分类器是指它的分类结果应该比随机猜想的准确性稍高,即准确率大于50% , 随着弱分类器个数的增加,最终集成的强分类器的错误率将趋近于零。

1.矩形特征

Adaboost用于车体检测时,需要从车体中抽取大量的一维简单特征,这些简单特征均能在一定程度上区分车体和非车体。Adaboost算法中选取的弱特征是由1~4个矩形组成的矩形。Viola选取的矩形特征原形有4种,见图1。矩形特征值就是图中灰色部分所有象素的灰度值之和减去图中白色部分所有象素的灰度值之和后得到的值。其中的方框表示所被检测的矩形区域。在这样的一个区域内,这四种矩形特征的大小和位置都是可以任意选择的。其中:双矩形特征如(A)和(B)所示。三矩形特征如(C)所示,四矩形特征如(D)所示。


图1   待检测窗口中的矩形特征范例

在检测系统中,我们做的标准检测窗口大小为24×24。计算特征矩形的特征值时,需要扫描检测窗中的所有部分。如果每次都按照定义分次统计矩形内所有像素值的差值,计算量非常大,为了提高计算速度,我们应用积分图计算特征值。

2.积分图

所谓的积分图像其实就是对原图的一次双重积分(先是按行积分,然后是按列积分)。那么它的积分表示即为:

其中,?(x',y')是原图像,?'(x,y)是积分图像。

积分图包括图中一个点的上面和左面的所有像素值的和,是一个离散的加和,因此在点(x,y)的积分图像的计算方法就如下:

如图2在(x,y)点的积分图像的值是所有在这个点的左上方的点的和。在矩形D中的像素和可以通过四点计算得到。图3中在点1的积分图像的和可以通过矩形A内的点的和得到。在点2的值就是A+B,在点3的值就是A+C,在点4的值就是A+B+C+D。在D内的点的和可通过4+1-(2+3)计算得到。


图2  在(x,y)点的积分图像的值


图3  在矩形D中的像素和

3.弱分类器

为了能使得这些分类器足够简单,我们把分类器和这些矩形特征一一对应。亦即每个分类器就由一个特征的值来决定。于是我们得到如下的简单分类器原型:

其中,hi(x):基于简单特征的分类器,x :待检测子窗口,?j(x):对于子窗口的矩形特征值计算函数,pj:一个表示不等式方向的符号因子,只有正、负两种,θj:对应分类器的阀值。

训练分类器

1.单个强分类器训练过程

(1)取N个训练样本{x1,x2},{x2,x2}…{xN,yN}。其中yi的取值范围为{1,0},对应样本的真与假。假设训练样本中有个假样本有m个假样本,n个真样m+n=N本。

(2)初始化权值:

(3)在第t步,(0≤t≤T)。

①权重归一化:

②对每一个特征?i( ),为其训练一个简单分类器hi( ),即确定 θj和pi以极小化

指标:

③取第t代的特征为Ht=hp,其中公式6,即把获得最小分类误差的那个特征作为这一代选取的特征。

④对权重进行更新:

⑤迭代完T步后,可以获得T个分类器,H1,H2,ΛΛ,HT,则最后的强分类器构造为:

其中

2.分类器工作过程

将多个强分类器级联(cascade)起来就可以组成一个车体检测系统。组成强分类器的弱分类器个数随着级数的增加而增加。每层的强分类器经过阈值调整,使得每一层都能让几乎全部的车体样本通过,而拒绝很大一部分非车体样本。而且,由于前面的层使用的矩形特征数很少,计算起来非常快,越往后通过的候选匹配图像越少,尽管矩形特征增多,计算量却减少,检测的速度加快,使系统具有很好的实时性。其工作过程如图4所示。


图4  分类器的工作过程

实验结果分析

实验利用OpenCV作为二次开发工具,它是Intel公司开发的数字图像处理和计算机视觉软件,可以进行数字图像处理和计算机视觉识别。构造了对动态视频检测的车体检测系统,配置是P IV 2、0G 256M DDR内存,PCI-X400图像采集卡,运用2 000样本,构造了20层分类器,准确率可达99%,误检率为0.1%,可以做到车体实时跟踪。检测不出来的情况多发生在车体有遮挡的情况,如前车遮挡当了后车的大部分时,后车检测不出来,但这不影响实际应用,因为只要检测到前方有障碍车辆,就会自动采取措施。


图5   实验结果

结语

本文基于Adaboost算法将多个简单分类器组合成一个强分类器,再将多个强分类器级联组成一个车体检测系统。实验证明,以上算法具有检测精度高,实时性好的优点,应用前景广阔。

收藏
赞一下
0