基于改进AdaBoost+Haar的车辆检测算法

2019-09-19 06:08黎向锋赵伟康豆心愿2左敦稳
测控技术 2019年2期
关键词:分类器宽度样本

黎向锋, 赵伟康, 豆心愿2, 李 堃, 左敦稳

(1.南京航空航天大学 机电学院,江苏 南京 210002; 2.吉林大学 汽车工程学院,吉林 长春 130000)

随着经济的不断发展,生产力的大幅提高,国内汽车的产量和销量均稳定增长。汽车作为代步工具给人们的出行带来了极大便利,但也带来了诸多棘手的难题,譬如交通事故、堵塞等[1]。先进辅助驾驶系统(Advanced Driver Assistant System,ADAS)能够在发生危险前发出警报,保证驾驶安全,因而变得越来越重要,其发展势头迅猛。车辆检测是ADAS的重要组成部分,引起了越来越多的国内外学者的关注。

利用单目视觉技术进行车辆检测,成本低廉,因此应用十分广泛,通常可分为3类:① 基于车辆特征的方法,如任薇[2]根据车底阴影特征,使用高斯混合模型对图像聚类,使用模型中的均值和方差自适应提取车底阴影与路面交线,经过滤波合并检测到车辆,该方法实时性好,但受光照影响大,鲁棒性差;② 基于模板匹配的方法,如李璟[3]对目标分块提取Hog特征值,并对每个分块赋予不同权值,计算与模板相关性最大的区域作为目标,该算法鲁棒性好,但计算量大,实时性低;③ 基于机器学习的方法[3],该算法实时性好,鲁棒性高,是近年来研究的热点,如王蕾[4]利用角点检测算法找出ROI,提取射影不变量特征,使用朴素贝叶斯分类器找到目标,算法实时性好,但容易受外界环境影响,导致分类器的检测率不高;刘公俊[5]先通过图像处理找出存在车底阴影可能存在的感兴趣区域,使用离线训练的分类器检测该区域,找到目标,该算法速度快,受外界环境(光照、雨雪和天气)影响大,产生漏检。因此,通过对AdaBoost+Haar算法的训练和检测方式进行改进,提高了检测率和检测速度,降低了虚警。

1 改进的训练算法

在AdaBoost算法中,通常是训练多个强分类器串联形成一个级联分类器[6]。一般而言,分类器前面几级中包含的弱分类器数量较少,复杂度低,可用来区分与目标差别大的对象。越往后,强分类器包含的弱分类器个数会逐渐增多,复杂度高,可用来区分与目标相似的对象。待检测样本若未通过强分类器则直接丢弃,直至通过所有强分类器,样本才会被判断为目标。该方法相较于其他的检测算法,计算量小,检测率高,但仍不能满足实时性的要求。

在图像中,道路与天空占据了图像大部分区域,且一般是纯色块,定义为简单样本,将剩下负样本定义为复杂样本,复杂样本的纹理复杂、颜色多样,一般多为树木、房屋等。对负样本进行分类,使用正样本和简单负样本训练一个只包含6个强分类器的分类器C1,同时用一个同样数量的正样本和未分类的负样本训练一个只包含6个强分类器C2。

图1 分类器检测效果

如图1(a)所示,使用C1检测的目标窗口集中在了车的前端盖板上和道路上有车以及道路栏杆的部分,车子前盖和有车区域之间明显存在一个无目标带,纯路面和天空区域已经几乎全部过滤掉了。图1(b)中,使用C2检测的目标窗口大部分都集中在车区域的前端盖板上和道路上有车区域,但仍有部分检测窗口存在天空和无目标道路区域。因此C1检测结果比C2更集中,区域更小,数量也更少。

基于此本文构造一种新的强分类器级联方案,其结构如图2所示。首先由正样本和简单负样本训练出一个能够过滤图像中的道路天空区域的分类器,接着在后面级联上由复杂负样本训练出来的一个分类器。这样分类器的结构先简单后复杂,使用这个分类器进行目标检测的时候,在分类器的前几级就会过滤掉图像中的道路及天空等大部分的纯色简单区域,提高效率。

图2 分类器级联结构图

2 改进的检测算法

AdaBoost+Haar检测算法的检测率高,但由于需要检测的窗口数量大,降低了检测算法的效率,无法达到实时性的要求。

检测算法的检测流程是多尺度、从左上到右下遍历整幅图像。在天空区域,由于没有检测目标,检测算法浪费了近一半的时间,而且还可能存在虚警。在路面区域车辆是近大远小的,因此,与本车实际距离较近的车不需要用小尺度的检测窗口去检测目标,同理,在与本车实际距离远的区域也无需用大尺度的窗口去检测。因此可以得出结论,检测算法有大量的时间浪费在了非目标检测区域和多余尺度上。

本文提出一种根据车宽度调整检测框宽度的算法。该算法利用逆透视变换算法[7]标定法将图像坐标与世界坐标系的路平面建立一对一的映射关系。根据车的宽度算出检测窗口的边长范围来过滤检测窗口数量,提高效率。

2.1 地平线

本文把地平线以下区域作为感兴趣区域。由于透视变换的关系,在世界坐标系中两条车道线在无穷远处相交。过这个点的水平线即是实际世界坐标系中的无穷远处,是天空和路面的分界线,也就是地平线。由郭磊[8]等人推导出来的图像坐标中yp与世界坐标的YP关系如下:

(1)

式中,H为图像的高度;α0与γ0分别为摄像头镜头的垂直视野角和俯仰角。

2.2 计算尺度范围

安装在汽车上的摄像头经过标定后,世界坐标系中的道路平面和图像坐标系一一对应。本文车宽匹配算法将左下角点作为起点,由左至右、由下至上遍历整个图像,相较于传统滑窗算法以顶边为基准放大窗口,本文将底边将作为参考边,该参考边同时也是汽车和路面的接触区域且与汽车宽度一致,可根据汽车宽度使用逆透视变换算法计算检测窗口宽度范围,过滤多余尺度的检测窗口。根据GB 1589-2016[9]车辆宽度极限值为2.55 m,取轿车宽度为1.6~2.5 m,如图3所示。程序检测时,由车辆复杂宽度W的范围确定图像中不同行r检测框底边w的范围,这样可以根据车的宽度来自适应调整检测窗口的大小,减少了超过一半的候选检测框的个数,在保证检测率的同时极大地提高了检测效率。

图3 车宽匹配算法

2.3 算法流程

所提出的自适应车辆检测算法先确立地平线,然后根据车的宽度范围自适应地调整图像中不同行的检测框范围,具体算法如图4所示。

图4 检测顺序图

3 实验验证

图5为经逆透视变换得到的,靠里的两条绿线代表的车宽是1.6 m,靠外的两条黄线代表的车宽是2.5 m,图像检测窗口在不同行的尺寸见表1所示,可以看出通过宽度滤波,改进的算法检测窗口数量是传统算法的0.26倍,可过滤大量的无关窗口。

利用C++编程语言,基于Visual Studio 2010开发平台,所用的计算机为64位Windows系统,4.00 GB内存,双核四核心2.5 GHz处理器。本文训练的正样本9285张,负样本57000张,其中简单负样本34652张,复杂负样本21048张,归一化尺寸24×24,Haar特征类型为CORE。使用如下两种方案,训练出对应的分类器:① 分类器C3,直接由正样本和未分类的负样本训练一个共有26个强分类器级联的分类器;② 改进的分类器C4,训练一个共有24个强分类器级联的分类器。其中前6级由正样本和简单样本训练,后18级由正样本和复杂样本训练。

图5 逆透视变换图

行数传统检测窗口改进算法检测窗口范围55024~160110~16053024~160100~14051024~16088~12449024~16076~10847024~16066~9545024~16054~80

使用传统算法在进行训练分类器C3、实际训练到14级时,弱分类器个数已经超过622个,已经发散。由图6的ROC曲线可知在相同的误检率情况下,改进的分类器C4比C3检测率更高,说明改进的分类器的泛化性能更强。

图6 分类器C3、C4 ROC曲线图

为了客观高效地评价改进训练方法的分类器的泛化性能和检测的效率,本文使用的是KITTI[10]、BenchMark Dateset[11]数据集以及自己收集的图片,随机挑选,一共500张,共有车辆目标1788个。分3种方式进行测试:① 使用分类器C3+滑窗检测;② 使用分类器C4+滑窗检测;③ 使用分类器C4+本文车宽匹配算法检测,结果如表2所示。

表2 检测结果统计

从图7中可以看出,改进的算法能够在光照复杂的场景下检测到多个目标,鲁棒性好,检测稳定。由表2的方式1和方式2,明显看出使用C4比C3的检测率更高,效率也提高了30%,这主要是由于,C3未对负样本分类,已经发散,弱分类器个数过多,检测效率下降;由方式2和方式3可以看出,使用新的检测算法比传统算法检测速度提高了4.5倍,这主要是由于地平线缩小了检测范围,车宽过滤了大量的检测框个数,而检测率降低主要是由于部分车辆的“高度”超过了地平线的范围,无法检测。

图7 方式3部分检测效果图

4 结束语

本文提出改进AdaBoost+Haar的车辆检测算法,能够高效快速地检测到车辆。算法对硬件的要求低,有很好的泛化性能,能够在不降低检测率的情况下将检测速度提高了7倍,同时还能有效抑制虚警。因此该方法是可行的。

猜你喜欢
分类器宽度样本
用样本估计总体复习点拨
推动医改的“直销样本”
基于差异性测度的遥感自适应分类器选择
基于实例的强分类器快速集成方法
随机微分方程的样本Lyapunov二次型估计
村企共赢的样本
红细胞分布宽度与血栓的关系
孩子成长中,对宽度的追求更重要
基于层次化分类器的遥感图像飞机目标检测
一种基于置换的组合分类器剪枝方法