基于机器学习的单线激光雷达进行车辆识别与跟踪方法研究
2019-07-15刘伟王世峰公大伟王泽王锐
刘伟,王世峰,公大伟,王泽,王锐
(长春理工大学 光电工程学院,长春 130022)
科技进步促进无人驾驶的快速发展,环境感知影响着无人驾驶汽车[1]的安全性和稳定性,对同样行驶在道路上的其它车辆进行识别和跟踪是环境感知中的重要组成部分。实时检测出前方车辆的位置、速度以实现目标车辆的稳定性跟踪至关重要,进而使自主行驶车辆做出运动控制决策。文献[2]提出一种模式识别算法,结合激光扫描仪和视频传感器对目标物体进行检测,激光扫描仪估计距离以及观察对象的轮廓信息,模式识别算法可以根据轮廓和形状信息对物体进行分类,在此基础上提出了新的车辆特征识别方法。文献[3]提出一种基于图像的目标识别方法,该方法受光照影响较大,光强会导致图像的分辨率过低,不能准确地识别出目标车辆;文献[4]提出了一种基于车辆轮廓的跟踪算法,此方法受阴影和光照影响较大,且在有雨雪天气下,准确率会大大降低,影响到检测的稳定性。
本文提出了一种基于单线激光雷达的车辆识别与跟踪方法,对点云数据使用改进的层次聚类算法分离出目标车辆,然后对目标车辆进行多个特征的提取,同样也提取非目标车辆的特征,最后通过参数寻优使分类器效果达到最佳,从多个不同类别的目标中准确的分出车辆。识别出目标车辆后,采取线性卡尔曼滤波器进行跟踪,在无障碍物遮挡的情况下,跟踪稳定,一旦出现障碍物遮挡,那么所跟踪的车辆便会中断,需重新确定新的跟踪目标。
1 目标车辆识别
1.1 数据的预处理
本文采用SICK LMS511(PRO)单线激光雷达作为传感器,其主要参数见表1。针对10%反射率的物体,距离可以达到40m,大保护距离(最远80m的保护区域),选定扫描角度为180°,角度分辨率为0.167°,所以每帧数据有1080个点,角度与距离构成了每个点的信息,基于上述指标设定进行数据的采集。
表1 单线激光雷达主要性能参数
提取出激光雷达每一帧的数据,采用凝聚层次聚类算法[5],将数据分割成段。凝聚层次聚类算法的策略是先将每个点看作一个簇,每一步合并两个最接近的簇,聚类意味着一组类似的物体被标定或紧密地聚集在一起,然后合并这些簇为越来越大的簇,直到一个目标物中所有的点都在一个簇中,簇间距离度量方法采用最小距离为:
式中,|p-p'|是两个点p和p'之间的距离,cj1,cj2为两个簇,这里给出采用最小距离的凝聚层次聚类算法。在该算法的基础上进行了改进,不仅比较相邻两点之间的距离,同时比较每个点与后两个点之间的距离,将一个点作为一簇,如果与下一个点的距离小于阈值,则归为一簇,反之归为另一簇,再与后两个点比较,如果小于阈值则归为一簇,否则归为另一簇,这样可以达到更好的聚类效果,流程图如图1所示。
图1 凝聚层次聚类算法
聚类完成后,每一帧数据被分成m段,S={s1,s2,…,sm}每一段有n个点,并将极坐标系下数据转化成笛卡尔坐标系下数据。如图2所示,在高架桥上用相机拍摄的车辆场景实物图,通过上述聚类方法对采取的目标车辆数据进行聚类,聚类效果如图3所示。
图2 目标车辆
图3 车辆点云数据聚类
1.2 特征提取和车辆识别
根据激光雷达特性设计出简易的安装方式,如图4所示,将激光雷达安装在车辆的正上方,高度设定为1640mm,并向下倾斜安装,倾斜角度按检测前方目标车辆的距离进行标定,根据我国汽车外形尺寸[6]指标可知:大部分车型的后防护杠的高度均在500mm~650mm范围之间,同时标定激光雷达距所检测的前方目标车辆距离为20m,这样便可计算出激光雷达的倾斜角度α。激光雷达和相机同时使用,相机安装在车辆正前方,实验过程中,设置激光雷达的角度参数为0°到180°,即水平180°的视野范围,如图5所示。同时配以相机进行辅助处理,相机视野角度范围为0°~180°,根据同一时间,提取出存在目标车辆的每一帧数据,经过聚类处理提取出目标车辆的数据点。
图4 传感器安装位置
图5 激光雷达扫描范围
激光雷达扫描目标车辆后,经过聚类后会形成类似“I”和“L”两种形状的数据点簇,再经过相机进行辅助,找出每一帧所检测到的目标车辆,手动提取车辆和非车辆的数据点簇,对于“I”型特征采取最小二乘法进行直线拟合,对于“L”型特征则采取角点特征进行直线拟合,方法如下:通过文献[7]可知,在分割后的每一段中,若点pk存在角点特征,则至少应满足下述条件:
(1)点pk左侧连续的Q个点在同一条直线上;
(2)点pkPk右侧连续的Q个点在同一条直线上。
图6 角点特征
如图6所示为Q=4的情况,然后利用文献[7]中递增式的直线提取方法判定激光雷达数据在同一条直线上,经过计算,判定阈值为100mm,且Q>8。角点函数f(k)与该点左侧的点及其本身所拟合的直线和该点右侧的点及其本身所拟合的直线这两者之间的夹角有关,f(k)是对pk做为角点特征的程度的近似衡量标准,其值由(2-5)式计算得到,式中各量的几何含义如图7所示。
计算机基础教学是面向非计算机专业的计算机教学,它的目标是培养学生掌握一定的计算机基础知识、技术方法和拓展学生的视野,为后续课程学习做好必要的知识准备,使学生能在一个较高的层次上利用计算机、并处理计算机应用中可能出现的问题[1]。
图7 角点函数几何意义
激光雷达获取到目标车辆的数据点不同于非目标车辆的数据点,所获取的目标车辆具有不同于其他目标物体的高度信息值,根据实验标定出激光雷达检测前方固定距离的目标车辆,这样所获取到目标车辆至激光雷达的平均距离无太大变化,对于目标车辆位于实验车辆的正前方,会出现类似于“I”型的一条线段的数据点,对于目标车辆位于实验车辆的两侧时,会出现类似于“L”型的两条线段的数据点。经过聚类后拟合出直线,特征向量包含目标车辆的位置和几何特征,对于“I”型特征,只有一条线段,对于“L”型特征,具有两条段。
对于只有1条线段的聚类,提取如下五个特征:(1)组成该聚类线段的所有数据点的个数;(2)根据线段的起始点坐标,计算该线段长度;(3)根据目标数据点的高度信息计算出线段的中心高度;(4)计算线段中心到传感器的距离;(5)求出线段的斜率。
对于有2条线段的聚类,提取如下六个特征:(1)组成该聚类线段所有数据点的个数;(2)根据角点函数计算出两条线断之间的角点,然后再取每条线段的起始点坐标,分别计算出每条线段的长度;(3)分别计算出两条线段的中心高度,再做平均值;(4)计算两条线段中心到传感器的距离的均值;(5)分别计算两条线段的长度的比值和乘积;(6)求出两条线断在地面投影的夹角。
2 目标分类
2.1 分类器选择
对于分类器来说,机器学习领域提供了很多分类器,例如朴素贝叶斯(Naïve Bayes)、神经网络(Neural Network),支持向量机(SVM)[8]等。其中Naïve Bayes假设样本间是相互独立的,因此在关联比较强的样本上效果很差;神经网络需要大量的参数,并且学习时间过长,甚至可能达不到学习的目的;SVM基本上不涉及概率密度及大数定律等,因此不同于现有的统计方法,从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预测样本的“转导推理”,大大简化了通常的分类和回归等问题。SVM在小样本训练集上能够得到比其它算法好很多的结果。SVM之所以成为目前最常用,效果最好的分类器之一,在于其优秀的泛化能力,这是因为其本身的优化目标是结构化风险最小,而不是经验风险最小,因此,通过margin的概念,得到对数据分布的结构化描述,因此减低了对数据规模和数据分布的要求,SVM需要解决下面的优化问题:
式中,w与x有相同的维度,c,b为实数,(w,b)为一个超平面,ξi为函数间隔,距离超平面最近的点则被称为支持向量。训练矢量通过函数φ映射到一个高维空间。c>0为错误项的惩罚参数,k(xi,xj)=φ(xi)Tφ(xj)称为核函数(kernel function)[9-10],对于大多数分类问题,径向基函数被认为是一个最常用且最有效的核函数:
图8 支持向量机原理图
2.2 交叉验证和网格搜索
为了获得更可靠的分类结果,提出一种K-folder交叉验证方法。选择合适的训练数据集和测试数据集,首先将训练集分成K个相同尺寸的子集,每次用K-1个子集进行训练,用剩下的一个进行测试,然后这个过程将执行K次,每次测试之后都会返回一个正确率和最优的两个参数c和r,然后将这些K个分类结果的平均值作为分类器的最终准确度进行计算,交叉验证过程还能够有效地防止过拟合。在使用交叉验证时,提出了一个“Grid-search”的方法寻找c和r,尝试各种(c、r)值,并选择交叉验证准确度最高的值。找出c和r序列的指数增长是一种确定良好参数的实用方法(如,C=2-5,2-3,…,28;r=2-5,2-3,...28)。本次实验通过10-folder交叉验证进行了参数的优化和准确度的提高。
图9 网格搜索
网格搜索算法首先使用一个粗糙的网格,在确定一个网格上较好的区域之后,一个更好地网格搜索在哪个区域上被执行,如图9所示,首先确定是一个较粗糙的网格,在灰度较暗的区域上寻找更好的c和r来提高交叉验证的正确率,最终得到一个最高的正确率如图9中“x”所示的点。
在得到最优RBF核参数之后,接下来进行训练和测试,在MATLAB上安装libsvm工具箱,首先选取训练样本303个,通过其中的正负样本进行训练生成一个模型,其次另选取测试样本64个,分类效果如表2所示:
表2 LibSVM分类结果
对于非车目标做进一步的分析,首先通过设定距离阈值去掉离散点;其次把车辆目标的数据点的个数、平均值、中心高度作为阈值范围;然后把非车的每一类目标进行阈值比较,滤除接近目标车辆的数据点;最后用同样方法重新与车辆目标进行分类,选取训练样本263个,测试样本64个,实验结果表明正确率有所提高,分类效果如表3所示:
表3 LibSVM分类结果
3 目标车辆跟踪
因为激光雷达具有较高的扫描频率,在对同一目标进行跟踪时,连续两帧数据中位置变化很小,假设目标作匀速运动且过程噪声为高斯白噪声,对识别出的车辆目标利用线性卡尔曼滤波器[11]进行跟踪。
3.1 单目标跟踪
对识别出的目标车辆采取线性卡尔曼跟踪滤波器进行跟踪,以估计目标车辆的运动信息,根据图10所示,目标车辆的状态向量Xk包括目标在x方向和y方向的位置和速度,测量向量yk为目标在x方向和y方向的位置,分别为:
根据状态转移矩阵F:
式中,Δt为传感器扫描周期。测量矩阵H为:
系统中每一时刻的不确定性都是通过协方差矩阵Q给出的,所以要引入一个协方差矩阵Q来表示预测模型本身的噪声,则:
式中,δ为过程噪声;
设过程测量噪声协方差矩阵ε,
式中,σ为测量噪声,程噪声协方差Q和测量噪声协方差ε的确定是建立运动模型中的难点。过程噪声协方差不容易获得,设定值根据当天实验天气和所跟踪的目标车辆的反射率进行多次预测而获得的经验值,这样可使跟踪过程不会因为误差大而中断跟踪。对于测量噪声协方差,主要由传感器的测量误差所决定,可以通过事先测量一些比较稳定的目标,求出测量误差。初步确定二者测量值后,还需通过运行程序调整以使跟踪状态达到最佳状态。
图10为对实验车辆前方某同向行驶的车辆进行的跟踪实验。从曲线中看出:前3.0秒目标车辆处于自主行驶车辆的正前方并无出现大幅度变动状态,车辆行驶较为平缓,此段为低频成分为主,与此同时在y方向开始出现轻微的变化现象;3.0秒至6.0秒时间段目标车辆偏离同车道,驶向左车道,随后又驶回同车道,此段曲线可以看出,在x方向上,在3.0秒和6.0秒之间,出现了中频和高频成分,3.0秒至5.0秒时刻段,波频处于中频变化,5.0秒至6.0秒时刻段,有两个时刻出现了高频变化。从虚线可看出,通过卡尔曼滤波能够有效地控制高频变化,能够实现较稳定的持续跟踪,保持了此情况下跟踪的连贯性。
图11中y轴方向上,前2.5秒内一直处于低频变化,该段段较为平滑;从2.5秒到3.,0秒之间,出现了中频变化,跟踪目标车辆出现了相对移动;在3.0秒至6.0秒之间,由于目标车辆的变道更改,出现了接近前后7米的距离变化,而且在3.5秒时刻出现了一个高频波,同样通过卡尔曼滤波有效地滤除了高频波,保持了此情况下跟踪的连贯性。
在该实验中,通过分别对x轴和y轴方向的跟踪,分别滤波后,实现了实验车辆对目标车辆的识别并跟踪锁定,取得了较为理想的效果。
图10 x方向上滤波前后对比
图11 y方向上滤波前后对比
为验证本文中所述的车辆识别和跟踪算法的有效性,以乘用车辆OptoBot-IV配备单线激光雷达为实验平台,在长春市城市道路上进行数据采集。通过激光雷达采集周围环境的深度信息,因特尔i5处理器的笔记本电脑对数据进行处理,在Matlab运行环境下对采集的目标数据进行处理,首先通过层次聚类算法进行数据分割,在分类器的选用上,选取了分类效果较高的支持向量机(SVM),共进行了两次分类:第一次对目标车辆分类实现了预期的效果,在滤除掉类似车辆目标特征值得基础上进行了第二次分类,正确率从90.6%提高到了93.7%。目标识别实验显示,在较理想的状况下,如图12(a)和图12(b),可对白车从第1372帧开始跟踪,能够准确地识别目标车辆,细线框为识别出的车辆,粗线框为当前帧下的跟踪位置估计状态,当出现车辆遮挡时,如图12(c)和图12(d)所示,此时跟踪在第1672帧处中断,这样由于黑车的长时间遮挡出现了目标车辆的跟踪中断现象。对识别出的目标车辆,灰色区域为当前帧下跟踪时所出现的黑色车辆遮挡情况,这样由于黑车的长时间遮挡出现了目标车辆的跟踪中断现象,此时需要重新确定目标并进行跟踪。
图12 车辆目标识别与跟踪
4 结论
本文介绍了使用单线激光雷达利用人工智能技术的机器学习技术进行多车检测的方法。首先对点云数据预处理,使用层次聚类算法分割出不同目标物体;然后进行多种特征的提取并使用支持向量机进行(SVM)分类,二次分类后,识别准确率有所提升;最后对识别出的目标车辆进行了线性卡尔曼跟踪。实验结果表明,在多数工况环境下,跟踪对象会被切换,从分类结果中可以看出,道路边界等物体经常被识别成目标车辆,成为误检。
在此基础上,今后的工作重点将放在进一步提高识别正确率和多用途上:1)采用多个单线激光雷配置不同俯仰角,从而降低车辆漏检率;2)增加人形目标识别能力,进一步细分车辆环境内目标的类型;3)在线下实验充分进行条件下,开展在线实时车辆识别的开发工作。