本发明属于先进驾驶辅助系统技术领域,具体设计一种基于集成学习级联分类器的车道线检测方法。
背景技术:
先进驾驶辅助系统(Advanced Driver Assistant System),简称ADAS,利用安装于车上的摄像头等传感器收集车内外的环境数据,进行静、动态物体的检测、识别与跟踪,从而能够让驾驶者在最快的时间察觉可能发生的危险,以提高驾驶安全性。其中,车道线检测技术是利用图像传感器数据判断车道线是否存在、以及车道线出现的位置。
现有的车道线检测方式可分为基于图像处理的方法和基于机器学习的方法。基于图像处理的方法利用车道线的颜色、纹理、形状、几何等低层特征识别车道线,其中大多数方法使用哈夫变换将图像空间的线变换为哈夫空间的点进行车道线的识别。
基于机器学习的方法中,已有一些方法包括从图片数据中提取Haar-like特征用于训练分类器,然后用基于滑动窗的办法区分图片中车道线和非车道线区域,进而用Hough变换对获取的车道线区域中心像素坐标进行曲线拟合,得到车道线的曲线方程。这些方法能够获得准确的车道线区域,但是不能获得准确的车道线位置,也不能得到车道线方程,同时Haar-like特征对亮度变化敏感不适合实际交通场景,且这种特征的训练时间较长。另外一些方法使用逆投影变换、图形学连通域分析、Hough变换、曲线拟合得到候选车道线后,用深度神经网络模型识别车道线、或图像中各像素属于车道线的置信度。这些基于深度学习的办法效果较好,但是由于每个像素都要经过多层、大量卷积滤波操作,计算量和内存占用量都非常高,不适合交通场景嵌入式产品的应用。
技术实现要素:
针对现有技术所存在的上述技术缺陷,本发明提供了一种基于集成学习级联分类器的车道线检测方法,可以在单个CPU或DSP上实时的获取图中车道线准确的位置和方向信息,进而得到车道线方程,同时对交通场景的亮度变化具有一定鲁棒性。
一种基于集成学习级联分类器的车道线检测方法,包括如下步骤:
(1)在各种天气、光照及路况下,利用图像传感器进行采集,获取一定数量关于车道线的彩色图像,进而对图像中的车道线轮廓进行标定;
(2)对标定的车道线轮廓从上到下进行截取得到多个patch(以车道线为中心的细小区域),并将这些patch作为正样本;对车道线轮廓以外的图像区域进行截取得到多个patch(不包含车道线的细小区域),并将这些patch作为负样本;
(3)提取每个patch的LBP(Local Binary Pattern,局部二值模式)特征,将所有patch的LBP特征作为输入进行训练,得到由多层分类器级联而成的车道线分类模型;
(4)利用图像传感器采集得到车前方当前帧的彩色图像,利用时域和几何信息确定该图像中的感兴趣区域,并对感兴趣区域进行patch截取以及LBP特征提取;然后将感兴趣区域中每个候选patch的LBP特征逐个输入所述的车道线分类模型中,以鉴别出所有包含车道线的patch;最后根据这些车道线patch的中心点坐标,优化计算出当前帧图像中的车道线方程,实现对车道线的检测。
所述的步骤(1)利用图像传感器进行采集的过程中,需将图像传感器架设于前车窗中上部位置,方向水平向前,且图像传感器的俯仰角度应保证地平线位置不要低于图像高度的2/3。
为了加速计算,所述的步骤(3)中首先计算原图像的积分图,进而利用积分图中的积分信息直接计算获取各patch的LBP特征。
所述的步骤(3)中每层分类器均由集成学习方法训练得到,任一输入只有所有层分类器都判决为正样本,则模型才判决输出为车道线patch;若输入被任一层分类器判决为负样本,则不再参与下一层分类器的检测,模型判决输出为背景patch。
所述的集成学习方法采用Adboost算法或Gradient Boost算法,从而实现将各弱分类器合成为一个强分类器;其中,Adboost在每次迭代结束后,增加分错样本点的权重,减少分对样本点的权重,这样使得经常被分错地样本点被赋上很高地权重;而Gradient Boost每次迭代是减少上次预测的残差(residual),在残差减少的梯度(Gradient)方向上建立一个新模型。
所述的步骤(4)中确定图像中的感兴趣区域:即利用上一帧图像检测结果中车道线的交点即消失点作为地平线所在位置,使地平线作为感兴趣区域的上边界,本车引擎盖前沿作为感兴趣区域的下边界,检测结果中最靠近两侧的车道线与本车引擎盖前沿的交点分别作为感兴趣区域的左右边界,从而确立感兴趣区域。
所述的步骤(4)中优化计算当前帧图像中的车道线方程:即建立以下车道线方程表达式:
y=a0+a1x+a2x2
其中:x和y分别为车道线上任一点在图像中的横纵坐标,a0~a2均为方程系数且这些系数通过以下优化函数求解得到;
其中:分别为上一帧图像检测得到的车道线方程中对应的方程系数,xi和yi分别为对应车道线方向上第i个车道线patch中心点在图像中的横纵坐标,λ0~λ2均为平衡因子,i为大于0的自然数。
本发明基于LBP特征和集成学习级联检测器的车道线细小区域(patch)检测方法,相对Haar-like特征,LBP特征能够去除亮度变化对检测的影响;相对目前的卷积神经网络车道线检测方法,集成学习级联检测器方法能在单个CPU或DSP上实现车道线的实时检测;相对目前的车道线大块区域检测方法,细小区域检测方法能够得到车道线准确的位置和方向信息,得到车道线细小区域后,使用基于最优化的办法得到车道线方程。
附图说明
图1为本发明基于集成学习车道线检测方法的训练流程示意图。
图2为Adaboost集成学习训练的流程示意图。
图3为Gradient Boost集成学习训练的流程示意图。
图4为本发明基于集成学习车道线检测方法的测试流程示意图。
图5为感兴趣区域的示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
如图1所示,本发明基于集成学习的车道线检测方法的训练流程包括:
步骤1:架设图像传感器,获取需提取车道线的彩色图像。本实施方式面向先进驾驶辅助系统ADAS,所以对于图像传感器架设有一定要求。一般来说图像传感器假设在前车窗中上部位置,方向水平向前,实际安装中很难保证水平,但是图像传感器俯仰角度应保证地平线位置不要低于图像高度的2/3,最好是图像高度的1/2,如果图像传感器俯仰角过大容易产生车道线的漏检。为提高算法的鲁棒性和适应性,采集的图像需要包括各种路况、天气和光照下的情况。
步骤2:使用自有标定工具,将图像中的车道线轮廓标定出来。
步骤3:使用自有样本截取工具,根据自有标定工具给出的车道线轮廓,将完整的车道线从上到下截取成一个个小方块,每个小方块是以车道线为中心的细小区域,小方块的宽高比可以任意选取。这些小方块作为训练的正样本,图像中其他区域的小方块作为训练的负样本。
步骤4:获取每个训练小方块的LBP特征,为加速计算,首先由原始图像得到积分图,然后从积分图直接获得单尺度块LBP特征;具体过程如下:
步骤4-1:首先由原始图像得到积分图,积分图中每个单元存储的信息是原图中此位置左上角所有像素之和,由积分图可以得到原始图像中任意区域内的积分。
步骤4-2:利用积分图得到单尺度块LBP特征。首先将原始图像分为固定尺寸的块,块中又分为更小固定尺寸的子块。对于每个块中的子块,和它周围的8个子块比较子块内像素和(用上述积分图实现),如果若周围子块的像素和大于中心子块的像素和,则该周围子块的位置被标记为1,否则为0。这样,3×3邻域的8个子块经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该邻域中心子块的LBP值,并用这个值来反映该区域的纹理信息。
步骤5:用集成学习训练级联分类器,得到车道线分类器模型;具体过程如下:
步骤5-1:构造训练数据集合。
假设样本i的LBP特征为xi,样本标记yi为1和-1(分别表示是否是车道线细小区域样本,即正样本和负样本),则构成的训练数据集合为{xi,yi},1≤i≤W。
步骤5-2:训练集成学习级联分类器。
对于正在学习的第i层分类器,首先导入已经训练好的前i-1层分类器,将前i-1层分类器判决正确的正样本加入本层训练数据,同时从负样本集中采集未使用过的负样本加入本层训练数据。
用集成学习得到该层的强分类器。集成学习假设一个弱分类器的性能仅仅比随机猜测稍好一点,将学习得到的弱分类器结合成一个强分类器,从而取得更好的分类效果。集成学习的办法有许多,本实施方式仅以Adboost和Gradient Boost为例,说明集成学习级联分类器检测车道线细小区域的方法。
方法1:Adboost在算法开始时,为每个样本赋相同权重值。在每次迭代结束后,增加分错样本点的权重,减少分对样本点的权重,这样使得经常被分错地样本点被赋上很高地权重。进行N次迭代(由用户指定)后,将会得到N个简单分类器(basic learner),将它们组合起来(如加权、投票等),得到最终地学习模型,如图2所示,具体过程为:
1.1初始化每个样本的权重。
1.2遍历所有样本所有LBP特征,选择使分类误差最小的特征作为分类门限,即学习出弱分类器h1(x)。
1.3计算学习出的弱分类器的错误率,并与固定门限比较,若该弱分类器的错误率大于固定门限,则放弃本轮学习训练出的弱分类器,重新学习弱分类器;若该弱分类器的错误率小于固定门限,则计算弱分类器h1(x)的权值,权值应反比于该弱分类器的错误率。
1.4再根据错误率和预测结果更新样本权重。增加分错样本点的权重,减少分对样本点的权重,这样使得经常被分错的样本点被赋上很高的权重。
然后从步骤1.2重复执行,直到完成预定数目(假设为T个)弱分类器ht(x)的学习,t=1,2,...,N,N小于等于T。
1.5计算得到的每个弱分类器用其权值进行线性加权,生成该层的级联分类器H(x)。
方法2:Gradient Boost与传统Adboost区别是,每次迭代是为了减少上次预测的残差(residual),而为了消除残差,可以在残差减少地梯度(Gradient)方向上建立一个新模型。在Gradient Boost中,每个新模型的建立是为了使得之前模型的残差往梯度方向减少,与传统Boost对正确、错误样本进行加权有很大区别,如图3所示,具体过程为:
2.1给定训练的初始值。
2.2首先对当前所有类别(总类别数K)的预测估计值Fk(x)进行Logistic变换,将预测值变为概率值。
2.3对于每个类别、每个样本,求预测残差减少的梯度方向。
2.4根据每个样本的LBP特征、其残差减少梯度方向,新建由J个叶子节点组成的决策树,使得残差数据得到拟合。
2.5为当决策树建立完成后,得到每个叶子节点j的增益(用于预测)。
2.6将当前得到的决策树与之前学习的决策树合并起来,作为新模型。
然后从步骤2.2重复执行,直到完成预定数目(假设为T个)决策树的学习,t=1,2,...,N,N小于等于T。
如图4所示,本发明基于集成学习车道线检测方法的测试流程包括:
步骤1:架设图像传感器,获取需提取车道线的彩色图像。
步骤2:提取感兴趣区域。该模块的主要作用是根据前一帧的车道线识别结果,得到车道线的交点,根据透视变换的特性(平行线经过透视变换交于同一点),交点(消失点)就是地平线所在位置,从交点以下作为本帧车道线检测感兴趣区域;同理,由于架设在本车车窗上的图像传感器能够拍摄到本车引擎盖区域,所以前帧检测到的车道线位置决定了本帧感兴趣区域的最左、最右、最下区域,如图5所示。
步骤3:计算积分图和单尺度块LBP特征。
步骤4:采用集成学习遍历感兴趣区域,得到车道线细小区域,车道线细小区域的检测结果如图5中的小方框。
步骤5:基于最优化方法得到车道线方程。
在得到车道线细小区域后,取每个细小区域的中心点,用二次曲线描述车道线方程:
y=a0+a1x+a2x2
其中:(x,y)是车道线细小区域的中心点的坐标,用最优化方法求解以下二次曲线系数:
其中:第一项是误差项,第二项是表示时域平滑的正则项,是前帧计算得到的车道线对应参数,λ0、λ1、λ2是平衡因子。
当车道线是直线时,得到的车道线方程如图5感兴趣区域中的实线部分。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。