谭力凡 吴俊,2 曹立波 廖家才
(1.湖南大学,汽车车身先进设计制造国家重点实验室,长沙 410082;2.湖南师范大学,长沙 410082)
主题词:前方车辆检测 AdaBoost算法 道路纵向测距模型 压缩跟踪
汽车被动安全技术飞速发展的同时,智能驾驶和辅助驾驶技术也逐渐成为研究热点[1]。车辆检测技术是智能网联汽车及高级驾驶辅助系统的关键技术之一,准确、实时的前方车辆检测技术可为具有避撞功能的驾驶辅助系统提供有效决策依据,提高安全性和驾驶舒适性。
近年来,国内外学者对基于视觉的车辆检测算法开展了大量研究工作,其中,利用特征与模板结合的检测方法较为有效[2]。朱志明等[3]、金立生等[4]将Haar-like特征与AdaBoost算法相结合,实现了较为准确的车辆检测效果。Sun等[5]利用AdaBoost分类器实现本车道前方车辆检测,但检测效果受光照变化影响较大。文学志等[6]通过改进AdaBoost算法中弱分类器的生成方法降低了训练所需时间,但车辆被遮挡时的检测效果不理想。Jong-Min Park等[7]利用AdaBoost算法进行车辆检测,并通过水平与垂直边缘进行信息验证,但未使用跟踪算法。李云翀等[8]通过车底阴影特征检测车辆,利用梯度特征的AdaBoost方法进行验证,并用卡尔曼滤波进行跟踪,但车底阴影特征易受光照和天气影响。
以上研究结合Haar-like特征与AdaBoost算法实现了前方车辆检测,但传统AdaBoost分类器采用滑窗检测方式,效率不高,不易满足车辆检测实时性要求,且受制于AdaBoost算法原理,在环境变化或遮挡时易出现漏检测,降低检测准确性。针对以上问题,本文提出一种基于AdaBoost和压缩跟踪的前方车辆检测方法,通过Haar-like特征及AdaBoost算法训练分类器,利用道路纵向测距模型分割感兴趣区域并优化检测窗口,通过压缩跟踪算法的在线更新特性抵抗环境变化的干扰,最后分析了不同天气条件下的检测效果。
待检测的目标车辆位于本车前方,因此将采集道路图像所用的相机安装在本车前风窗玻璃处,如图1所示。
图1 相机安装位置
为估算前方道路物体与本车之间的距离,需要利用道路纵向测距模型,以获得图像坐标系与世界坐标系的转换关系。基于小孔成像的道路平面纵向测距模型如图2所示,其中O-XYZ为世界坐标系,Oc-XcYcZc为相机坐标系,uOov为图像坐标系,其主点坐标为(uo,vo),相机安装高度为h,相机俯仰角(即光轴与水平面夹角)为α,相机焦距为f=|OoOc|,假设路面水平,Z轴上有一点P,坐标为(0,0,ZP),其在图像坐标系中的投影点为P′,坐标为(uo,vP′),PP′连线与光轴夹角为β,与路面垂线夹角为γ。
图2 道路纵向测距模型(侧视图)
由图2几何关系可得
结合式(1)、式(2)和式(3)可得
其中,主点坐标(uo,vo)和焦距f为相机内参数,可通过张正友相机标定法[9]获得,相机高度h和俯仰角α可由测量得到,因此,当相机型号和位置确定,便可利用确定的测距模型计算出图像中物体与相机的实际距离。
AdaBoost是一种迭代算法,其核心思想是通过对同一样本集训练得到多个弱分类器,同时在训练过程中不断调整训练样本的权重,以提升弱分类器的性能,再将这些弱分类器加权组合形成一个强分类器,在实际检测时,将一定数量的强分类器串联,构成级联分类器,当待测图片通过所有强分类器时,才输出为最终的检测目标[10]。
理论上,训练样本数量越多,得到的分类器性能越好,且由于实际道路场景中非车图像多于车辆图像,因此负样本的数量应多于正样本数量[11]。本文选取9 285张正样本与55 700张负样本进行训练。其中,正样本为车辆尾部图片,包括中国道路常见的轿车、跑车、SUV、载货汽车、公交车等,并将所有正样本归一化为24像素×24像素的灰度图加入训练,如图3a所示。负样本为道路场景中的非车目标,包括路面、树木、房屋、护栏和指示牌等,同时,为提高检测准确性,负样本中添加了一图多车和包含不完整车体图片,以防止分类器将多辆相邻的车或车体的一小部分误识别为目标车辆,如图3b所示。
图3 用于AdaBoost训练的部分样本
Haar-like特征是一种快速、有效的图像特征提取方法,最早由Papageorgiou C.等[12]提出,Paul Viola等[13]利用积分图法快速计算Haar-like特征,并将其应用于人脸检测。Haar-like特征利用相邻的黑色和白色矩形框表示某一区域灰度变化情况,并通过计算得到的特征值区分不同图像区域。本文使用边缘特征、线性特征、中心环绕特征[12]进行分类器训练,如图4a~图4c所示。类似于人脸,车辆尾部及其相对于周围环境均具有明显的灰度变化,如车灯与后保险杠、车顶与天空等,利用Haar-like可对其特征进行有效表达,如图4d所示。
图4 3类Haar-like特征及其对车辆尾部特征的描述示意
最终训练得到的级联分类器共包含24个强分类器和1 516个弱分类器。
传统AdaBoost分类器在线检测通过滑动检测窗口的方式实现,检测窗口以自左向右、自上向下的顺序,以每次移动1个像素的幅度对整幅图像进行遍历检测。当较小尺寸的检测窗口完成遍历后,便以一定比例(默认为1.1)扩大,再次进行遍历,窗口尺寸变化范围在24×24(正样本归一化尺寸)至待测图像尺寸之间,该范围可自定义设置。通常,车辆图像位于整幅待测图像的下半部分,且所占面积较小,若采用默认的滑窗检测方式,将有大量检测窗口在车辆出现概率极低的无效区域中遍历搜索,消耗检测时间,不易满足实时性的要求。
根据GB 1589—2016的规定[14],我国车辆宽度限值为1 600~3 000 mm,因此,对于相同距离的不同车辆,其图像尺寸也有相应的限值。由于正样本归一化尺寸为24像素×24像素,即分类器可检测的车辆最小图像尺寸为24像素×24像素,由小孔成像模型可知,物体实际尺寸与实际距离的比值等于图像尺寸与相机焦距的比值,由此计算得到,本文所用相机可检测到最远车辆距离为72 m,因此,将0~72 m设定为车辆检测的感兴趣区域,结合道路纵向测距模型和车辆高度,可以得到相对应的图像感兴趣区域,对该区域分割提取,以过滤掉不存在车辆的天空区域,缩小检测窗口的搜索范围,降低检测耗时。
另一方面,在检测窗口尺寸逐渐扩大过程中,只有当其与车辆图像尺寸接近时,才能对目标进行有效检测。因此,对于距离远、图像尺寸小的车辆,使用大尺寸检测窗口无法有效识别,对于距离近、图像尺寸大的车辆也是如此。为减少无效检测窗口带来的计算消耗,本文将检测区域由远及近划分为若干个子区域,采用多尺度的检测窗口并行搜索,每个子区域对应的检测窗口尺寸范围由道路纵向测距模型和车辆宽度限值计算得到。理论上,子区域划分越细,检测速度越快,但由于路况复杂多变,划分过细会导致检测准确性下降,因此,本文采用3个子区域进行划分,3种不同尺度的检测窗口在各自区域内同时遍历检测,每个子区域内的检测窗口也在一定的小范围尺寸内变化。如图5所示,以A区域为例,其位于待测图像最上方,用于检测距离远、图像尺寸小的车辆目标,因此采用小尺度检测窗口进行搜索,窗口变化范围在24像素×24像素与50像素×50像素之间,而位于B、C区域的车辆图像尺寸较大,因此选用较大尺度的窗口进行检测,以此避免小尺度窗口搜索而造成时间消耗,从而提高检测效率。
图5 使用多尺度窗口进行检测
遮挡、环境变化、目标姿态变化等原因会导致检测过程中目标丢失,因此需要跟踪算法对目标进行持续定位。压缩跟踪是一种基于压缩感知的简单高效跟踪算法[15],其流程如图6所示。第t帧时,采集检测到的若干张目标图片(正样本)和目标周围的背景图片(负样本),并进行多尺度变换,以更好地表达图像特征,然后将变换后的图像通过稀疏测量矩阵进行特征降维,通过朴素贝叶斯分类器对降维后的特征进行训练,得到一个二分类器。第(t+1)帧时,在上一帧跟踪到的目标位置附近采样若干个尺寸相同的图像,同样通过稀疏测量矩阵对其降维、提取特征,然后利用第t帧训练得到的朴素贝叶斯分类器进行分类,分类得分最高的图像确定为跟踪目标。因为对图像特征进行了降维处理,算法运行速度极快,同时由于对朴素贝叶斯分类器进行了在线训练和更新,从而可以有效抵抗遮挡和环境变化带来的干扰。
图6 压缩跟踪算法原理
为提高检测准确率,本文采取跟踪与检测同时进行,利用跟踪结果弥补检测失效的策略,具体流程为:
a.当同一目标被检测算法连续检测到n次(本文取n=3)时,即判定该目标为车辆目标,在图像中标记出其位置,同时调用跟踪算法对其持续跟踪;
b.当被连续检测到的目标在某帧消失时,判定该目标检测临时失效,利用跟踪结果标记目标位置;
c. 当被跟踪目标连续消失m帧(本文取m=5)时,判定该目标已离开图像范围,不再对其跟踪,直至新目标出现并被连续检测到n次;
d.当被跟踪目标在m帧内被重新检测到(本文以检测窗口与跟踪窗口的面积重叠率大于50%作为同一目标的判定依据)时,使用检测目标对跟踪算法进行更新,继续对目标进行跟踪。
由跟踪流程可知:对于误检目标,因其持续时间短暂,不易满足连续检测次数条件,不作为车辆目标输出;而对于漏检目标,则通过跟踪算法进行持续定位。
本文使用搭载1.6 GHz Intel®CoreTMi5 CPU和4 GB RAM的便捷式计算机进行实车试验,软件平台为Visual Studio 2013搭载OpenCV 3.0.0函数库。利用安装在前风窗玻璃上的相机采集晴天、阴天、雨天、夜晚等不同工作条件下共3 680帧视频图像进行实时车辆检测,本文算法在试验环境中每帧的平均检测时间为26.5 ms。
在实际驾驶环境中,碰撞事故往往发生在本车及相邻车道之间,因此,本文记录在试验过程中位于本车及相邻车道上的车辆,并采用车辆检测率(True Position Rate,TPR)和误检率(False Detection Rate,FDR)对算法的有效性进行评价[16],其表达式为:
式中,TP为分类器检测出的车辆数;AP为实际道路中的车辆总数;FP为被分类器误检为车辆的数目。
不同工作条件下的车辆检测结果如表1所示。
表1 不同工作条件下的车辆检测结果
由表1可知,本文算法在晴天、阴天等光照良好、视野清晰的天气条件下,表现出较高的检测准确性,除雨天外的平均检测率达到93.0%,误检率为0.4%,与传统的Haar-like特征与AdaBoost结合的检测方法[3-4]相比,检测率有所提高,误检率明显降低,且经感兴趣区域分割与检测窗口多尺度优化,将每帧检测时间缩短至26.5 ms,使算法在准确检测的同时,保持了较高的实时性,图7展示了本文算法在不同工作条件下的检测结果。由于压缩跟踪算法的加入,使车辆在被短暂遮挡、光照变化等情况下仍能被检测出,如图8所示,当右侧车道车辆进入树阴时,仍能通过跟踪算法识别出,体现了算法在环境变化中的适应性,有效提高了车辆检测率。
图7 不同天气条件下的检测结果
图8 压缩跟踪算法对车辆的识别效果
试验过程中,由于雨水被车轮卷起形成水雾,聚集在车辆尾部,使车尾特征变模糊,尤其是距离较远、图像尺寸较小的车辆,如图7c所示,导致雨天的车辆检测率下降。另一方面,漏检主要集中在相邻车道且距离很近的车辆,这些车辆位于图像边缘,其尾部特征与位于图像中间位置的车辆稍有不同,不易被分类器识别,因此后期需要在正样本集中添加该类车尾图片进行训练。
本文提出了一种基于AdaBoost和压缩跟踪算法的前方车辆检测方法,该方法结合AdaBoost算法和Haarlike特征进行正、负样本训练,得到车辆检测分类器,并通过感兴趣区域分割与检测窗口多尺度优化方法缩短检测时间、提高检测效率,最后利用压缩跟踪算法对检测到的车辆进行实时跟踪,以抵抗遮挡和环境变化的干扰,增强算法的适应性,有效提高了检测准确率。试验结果表明,该方法在光照良好、视野清晰的天气条件下,能够准确识别出前方车辆位置,并具备较高的实时性,能够为具有避撞功能的车辆智能驾驶系统提供有效决策依据。