基于深度学习的车道线检测方法与流程

文档序号:18942509发布日期:2019-10-23 01:16阅读:1679来源:国知局
基于深度学习的车道线检测方法与流程

本发明属于车道线检测技术领域,具体涉及一种基于深度学习的车道线检测方法。



背景技术:

自动驾驶在缓解交通拥堵、减少交通事故、提高道路及车辆利用率等方面具有巨大潜能,已成为众多企业的竞争热点。自动驾驶集中运用了现代传感技术、信息与通信技术、自动控制技术、计算机技术和人工智能等技术,代表着未来汽车技术的战略制高点,是汽车产业转型升级的关键,也是目前世界公认的发展方向。其中车道线检测是自动驾驶的核心技术,传统的车道线检测方法多是手工特征提取或采用霍夫变换进行检测,这种方法耗时且泛化性差,特别是对于车道线的检测精度较低。



技术实现要素:

本发明的目的是为解决传统的车道线检测方法耗时且检测的精度低的问题,而提出了一种基于深度学习的车道线检测方法。

本发明为解决上述技术问题采取的技术方案是:基于深度学习的车道线检测方法,该方法包括以下步骤:

步骤一、从tusimple数据集中随机选取出m张图像,并对选取出的m张图像中包含的车道线进行标注,获得标注后图像;

步骤二、将步骤一获得的标注后图像输入全卷积神经网络fcn8s,利用输入图像对全卷积神经网络fcn8s进行训练,直至损失函数值不再减小时停止训练,获得训练好的全卷积神经网络fcn8s;

步骤三、将待进行车道线检测的图像输入步骤二训练好的全卷积神经网络fcn8s,得到全卷积神经网络fcn8s输出的二值化车道线掩码图;

步骤四、对步骤三的二值化车道线掩码图进行后处理,获得后处理过的二值化车道线掩码图;

步骤五、提取后处理过的二值化车道线掩码图中的全部车道线点,并对提取出的车道线点进行聚类,以将每个车道线点归类到对应的车道线;

根据聚类结果,提取出驾驶系统当前所在车道的左侧车道线上的车道线点以及右侧车道线上的车道线点;

步骤六、分别对提取出的两条车道线上的点进行拟合,得到驾驶系统当前所在车道的左侧车道线以及右侧车道线;

步骤七、将步骤六拟合得到的左侧车道线以及右侧车道线显示在待测图像中,完成待测图像中的车道线检测。

本发明的有益效果是:本发明提出了一种基于深度学习的车道线检测方法,首先将检测车道线的任务视作像素级的语义分割问题,通过全卷积神经网络fcn8s划分车道线和背景,再通过后处理和dbscan聚类方法提取当前车道两侧的左右车道线坐标,最后通过拟合算法对左右车道线进行拟合,本发明方法对视频检测达到平均50帧每秒,检测精度能够达到92.3%,可以实现精确快速的检测效果,有效克服了传统的车道线检测方法耗时且检测的精度低的问题。

附图说明

图1是本发明的基于深度学习的车道线检测方法的流程图;

图2是本发明的fcn8s网络输出的二值化车道线掩码图;

图3为后处理输出的二值化车道线掩码图;

图4为车道线检测结果示意图。

具体实施方式

具体实施方式一:如图1所示,本实施方式所述的基于深度学习的车道线检测方法,该方法包括以下步骤:

步骤一、从tusimple数据集中随机选取出m张图像,并对选取出的m张图像中包含的车道线进行标注,获得标注后图像;

步骤二、将步骤一获得的标注后图像输入全卷积神经网络fcn8s,利用输入图像对全卷积神经网络fcn8s进行训练,直至损失函数值不再减小时停止训练,获得训练好的全卷积神经网络fcn8s;

fcn的网络结构根据最终恢复到输入图像尺寸的倍数,可分为fcn-32s、fcn-16s、fcn-8s,本发明中选用fcn-8s;

步骤三、将待进行车道线检测的图像输入步骤二训练好的全卷积神经网络fcn8s,得到全卷积神经网络fcn8s输出的二值化车道线掩码图;

步骤四、对步骤三的二值化车道线掩码图进行后处理,获得后处理过的二值化车道线掩码图;

步骤五、提取后处理过的二值化车道线掩码图中的全部车道线点,并对提取出的车道线点进行聚类,以将每个车道线点归类到对应的车道线;

根据聚类结果,提取出驾驶系统当前所在车道的左侧车道线上的车道线点以及右侧车道线上的车道线点;

步骤六、分别对提取出的两条车道线上的点进行拟合,得到驾驶系统当前所在车道的左侧车道线以及右侧车道线;

步骤七、将步骤六拟合得到的左侧车道线以及右侧车道线显示在待测图像中,完成待测图像中的车道线检测。

步骤三输入至训练好的全卷积神经网络fcn8s的图像为3通道rgb图像;而且图像输入全卷积神经网络fcn8s之前,均进行图像的预处理,预处理包括对图像的缩放并归一化;对图像进行缩放的目的是使输入图像与网络训练时图像尺寸保持一致。

二值化车道线掩码图上每个像素值表示该通道所属类别:车道线或背景;

fcn8s的网络结构如表1所示,表1中详细的描述了fcn8s网络每一层的网络结构名称、输入来源、输入通道、输出通道、卷积核尺寸、步长、填充(padding)、当前层的图像或特征图尺寸以及补充说明,此外在解码层对转置卷积涉及的dilation和output_padding参数取值额外进行了说明。

总的来看,fcn8s网络分为编码层和解码层,编码层也称下采样层,本发明采用vgg16结构进行提取特征,原始的vgg16是包含16个卷积层,本发明中采用了前13个卷积层(conv)作为编码层,避免层数越深时,下采样过程中对车道线信息全部丢失。编码层的输入是一个三通道的320*160的图像,每次卷积运算后接上relu激活函数和批处理层,能使模型学习到的特征更复杂,且能优化训练过程。在卷积运算中,卷积核大小设置为3*3、步长为1、padding为1,这样使得每次进行卷积运算后不改变特征图的尺寸,经过2-3次卷积提取特征后使用最大池化层(maxpooling)使特征图尺寸折半进行下采样,而通道个数不发生改变,下一个卷积层中使特征图的通道翻倍,直到放大到512维通道数时通道不再增加。在编码层中,从320*160的三通道图像输入,最终生成10*5的512通道的特征图,输出到解码层。

在解码层,也称上采样层,使用转置卷积运算进行上采样过程,转置卷积运算上卷积运算的反向过程,解码层的首个转置卷积层transconv1将maxpooling5层的输出进行上采样两倍尺寸,得到20*10的特征图,再与maxpooling4得到的特征图相加并再进行两倍上采样,得到40*20的特征图,再与maxpooling3得到的特征图相加后再进行两倍上采样,得到80*40的特征图。这是因为每次进行上采样都会结合在编码层得到的浅层特征,从浅层特征图中能很好的获得关于图片的语义信息,尤其是对于车道线检测来说,下采样的层数越深,由于车道线占图片总比例非常小,通常情况下学习的多为背景的特征信息,所以在解码过程中上采样与浅层特征的结合尤为重要。fcn8s网络结构通常的做法是在第21层转置卷积层transconv3将与maxpooling3叠加的特征图直接从40*20上采样8倍恢复到320*160的尺寸,但是本发明在设计中分三次转置卷积运算(transconv3、transconv4、transconv5)进行上采样,每次上采样两倍,这种方式可以与直接上采样8倍达到相同的效果,同时使模型在解码层的学习效果更好。

第24层分类层(classifier)是利用1*1的卷积核整合通道信息,将32维降低为2维,生成每个像素点预测的类别向量,再对每个类别向量利用softmax函数,将类别向量归一化,每个像素点的所属类别为类别向量中概率最大的类,最终生成二值化的车道线掩码图。

表1fcn8s网络结构表

具体实施方式二:本实施方式与具体实施方式一不同的是:所述步骤二中采用的损失函数为带权交叉熵损失函数(weightedcrossentropyloss),对于待测图像中的任一像素,该像素的真实类别为y(y=1代表该像素为车道线点,否则该像素点为非车道线点),该像素预测为类别y的概率为p,则该像素的交叉熵损失值wce(p,y)为:

wce(p,y)=-αtlog(pt)

其中:αt代表权重系数;

将待测图像中所有像素的交叉熵损失值做加和运算,获得总的交叉熵损失值;

直至总的交叉熵损失值不再减小时停止训练。

本实施方式的损失函数与标准交叉熵损失函数的区别在于多了一项αt参数,αt是给定每一个类别一个权重,给定样本个数较少的类别更多的权值,可以使模型对样本个数较少的类别也能学习的很好。使得样本少的样本的总损失与样本多的样本的总损失平衡,以解决样本不均衡的问题。

本发明中采用有界逆类加权(uijlingsjrr,k.e.a.vandesande….selectivesearchforobjectrecognition[j].internationaljournalofcomputervision,2013,104(2):154-171.)的方法,确定αt的取值;

在车道线检测中,共分为背景和车道线两类。pclass代表所有像素点中每一类的像素点出现的频率,由于pclass的取值范围为[0,1],加上一个超参数c,默认取值为1.02,用于保证c+pclass>1,ln(c+pclass)>0,接着计算对数的倒数超参数的取值和概率的取值范围共同限制了αt的取值范围为[1,50],对于样本较少的类别,该类的权值会较大,最大取值为50,对于样本较多的类别,该类的权值会较小,最小取值为1。

具体实施方式三:本实施方式与具体实施方式一不同的是:所述步骤二中采用的损失函数为focalloss(linty,goyalp,girshickr,etal.focallossfordenseobjectdetection[j].ieeetransactionsonpatternanalysis&machineintelligence,2017,pp(99):2999-3007),对于待测图像中的任一像素,该像素的真实类别为y,该像素预测为类别y的概率为p,则该像素的损失值fl(p,y)为:

fl(p,y)=-αt(1-pt)γlog(pt)

其中:αt和γ均代表权重系数;

将待测图像中所有像素的损失值做加和运算,获得总的损失值;

直至总的损失值不再减小时停止训练。

本实施方式的损失函数在带权交叉熵损失函数基础上乘上(1-pt)γ,可以平衡易分类样本点和难分类样本点的差异,在带权交叉熵损失函数中,若有两个车道线样本点的预测概率为0.7和0.3,则前者为易分类样本点,后者为难分类样本点。对于易分类样本点(前者)通过乘以(1-0.7)γ,使得该损失值相对缩小,而难分类样本点通过乘以(1-0.3)γ使得其损失值要大于易分类样本点损失值,从而更好的学习难分类样本点;γ参数用于调节易分类与难分类样本学习的权重,也需要提前给定。

focalloss损失函数中涉及αt和γ两个参数,αt的含义与它在带权交叉熵损失函数中的含义相同,但取值范围不同,在这里为[0,1],而γ参数控制着难分类像素点和易分类像素点的加权比例,γ取0时,focalloss损失函数转化为带权交叉熵损失函数,γ一般取值为0.5,1,1.5,2等。

在本发明中,可以选择带权交叉熵损失函数与focalloss损失函数中的任一种作为损失函数。

具体实施方式四:本实施方式与具体实施方式二或三不同的是:所述步骤五的具体过程为:

将后处理过的二值化车道线掩码图的左上角顶点作为坐标原点,以二值化车道线掩码图的宽度方向为x轴、高度方向为y轴,从左上角顶点到右下角坐标依次增大;

设定高度阈值q,高度阈值q的设定原则为:将后处理过的二值化车道线掩码图中所有车道线点在y轴方向的最低点加上25,获得高度阈值q的取值;

利用高度阈值q对后处理过的二值化车道线掩码图中的全部车道线点进行筛选,即筛选出y轴方向坐标大于等于q的车道线点;

对筛选出的车道线点进行聚类(采用的是dbscan算法),以将筛选出的每个车道线点归类到对应的车道线;

提取出驾驶系统当前所在车道的左侧车道线上的车道线点以及右侧车道线上的车道线点。

归好类之后,需要提取当前车道两侧的车道线。本发明中将图像底端中点视作当前车辆的中点,其在图像中的坐标为(图像宽度/2,图像高度)。提取当前车道两侧车道线分三步进行:第一,计算每类车道线的中点坐标,记为meanli,计算其与当前车道中点的距离,记为distli;第二,找到每类车道线最底端的横坐标,并计算其与当前车辆中点横坐标的差值,记为diffli,这是因为根据最低端的横坐标可以判断该车道是在当前车辆的左边或是右边;第三,从当前车辆右边的车道中(diff≥0)找到这些车道距离车辆中点meanli最小的一个车道,视为当前车道右车道,同样的从当前车辆左边的车道中(diff<0)找到这些车道距离车辆中点meanli最小的一个车道,视为当前车道左车道,将左车道和右车道上的点的坐标输出,用于车道线的拟合。

具体实施方式五:本实施方式与具体实施方式四不同的是:所述步骤六中采用的拟合方法为线性回归(最小二乘法)或多项式岭回归。

为了保证拟合结果,考虑到在某条车道线上具有的车道线点可能比较少,那么对一个较少的样本采用曲线拟合的方法可能造成与真实车道线形状不符的情况。所以,当车道线点数较少时采用线性回归(最小二乘法)进行拟合,否则采用多项式岭回归进行曲线拟合。

具体实施方式六:本实施方式与具体实施方式五不同的是:所述步骤四的具体过程为:

经过形态学闭运算(先膨胀后腐蚀)将步骤三获得的二值化车道线掩码图中同一条车道线上存在的断点进行连接,并对全部的车道线点进行平滑,获得平滑后的二值化车道线掩码图;

对平滑后的二值化车道线掩码图进行去噪处理,获得后处理过的二值化车道线掩码图。

所述对平滑后的二值化车道线掩码图进行去噪处理具体为:对平滑后的二值化车道线掩码图进行邻接区域(图像中窄条的长方形区域)分析,统计每个邻接区域的车道线点个数和每个车道线点对应的坐标,给定噪声区域的阈值,若某个邻接区域中车道线点个数少于噪声区域的阈值,则将该邻接区域视作噪声区域,从平滑后的二值化车道线掩码图中去掉,获得后处理后的二值化车道线掩码图。

最终得到的后处理后的二值化车道线掩码图能够保证同一条车道线的车道线点尽可能的相连,同时图像上没有噪声干扰。

图2展示了fcn8s网络输出的二值化车道线掩码图,经过后处理得到的二值化车道线掩码图如图3所示,虚线圈内区域表示同一条车道线存在断点,而在后处理得到的车道线掩码图中被很好的连接上,有利于聚类模块更好的归类。而在两幅图的实线圈区域可以看到由于进行了闭运算操作,不同车道线在距离较远的位置由于拍摄视角的原因较为接近,以至于被误连接。对于这种情况,通过舍去车道线距离较远的位置的车道线点,以此来提高聚类模块的精度和稳定性。

特别地,本发明方法不仅适用于单张图像的检测,同样适用于视频图像的检测,检测时只需先将视频图像分割为多个单张图像即可。

实验部分

1、车道线数据集

深度学习网络的学习是基于大数据样本的,数据集的复杂性越高,模型学习的性能和泛化性相对较高,本发明采用的是tusimple车道线检测数据集(thetusimplelanechallange)。

tusimple数据集介绍

本发明选用2018年6月举办的tusimple车道线检测挑战数据集,相比于传统车道线数据集,tusimple数据集更加注重实用性,将很多智能驾驶当中的实际问题考虑了进来。

fcn8s模型训练

由于车道线检测可以视作样本不平衡的分类问题,其背景的样本个数远大于车道线样本;

fcn8s模型训练过程中选取了标准交叉熵损失函数(crossentropyloss,ce),带权交叉熵损失函数(weightedce)和focalloss三种损失损失函数,共设计了7组实验,包含5组不同参数情况下的focalloss的对比、1组带权交叉熵损失函数和1组标准交叉熵损失函数,下面的表2中将对这7组实验参数和实验结果进行详细说明。

表2模型训练对应损失函数参数列表

模型训练除损失函数外的其他参数均一致,如表3所示:

表3实验其他参数列表

fcn8s共进行了30epoch进行训练,采用adam优化算法,初始学习率设置为0.01,在第10、18、24轮时减半学习率,模型训练的batchsize为32,网络输入分辨率为320*160,网络输入归一化参数为每个通道的均值和方差,数值上为mean=[0.36221257,0.4058522,0.4073866],std=[0.19146983,0.21310195,0.23031688],该数值通过计算所有tusimple样本每个rgb通道的像素值统计得出。

iou指标反映的是预测车道线点与真实车道线标注重合的情况。在训练集的训练结果可以看出,weightedce训练的模型检测车道线的能力远低于其他损失函数学习的模型;在训练集上γ取1的focalloss训练的模型取得最高的iou指标得分0.4,γ取2.5训练的模型在训练集上呈现上升的趋势。

recall指标反映的是所有标注出的车道线的预测情况,recall指标也称查全率。在训练集上的训练结果可以看出,ce的检测车道线的能力远低于其他损失函数学习的模型;在训练集上weightedce取得最高的recall指标得分0.98,但是在后续的实验中发现,weightedce训练的模型的泛化性不强;在focalloss训练的模型中,γ取1时的模型在训练集上取得0.81。

precision指标反映的是所有预测为车道线的像素点实际为车道线的比例,也称准确率。在训练集上的训练结果可以看出,ce的准确率明显高于其他模型,这与recall指标呈现相反的结果,ce训练的模型在训练集上precision指标收敛在0.64,说明ce训练的模型对于车道线点的准确率很高;focalloss训练的模型中,各参数均取得相似的收敛结果,为0.4左右。

本实验中iou和precision指标值相对较低,是因为在label标注文件中,车道线相对较细,在损失函数设计时会放大车道线点的损失值,因而模型在学习时更多的将车道线周围点也都预测为了车道线,因此车道线分割结果与真实标注的结果的iou和precision指标值就相对偏低。

通过分析7组模型在训练集和测试集iou、recall、precision三种指标的对比结果,可以发现在precision指标上ce训练的模型的效果最佳,但是ce训练的模型在iou和recall指标的表现上都比较差,这说明ce训练的模型对于车道线点虽然准确率高,但是全面预测能力较弱,所以不考虑ce训练的模型;我们还可以看出在本次实验中,γ取1的focalloss训练的模型在三种指标上较优于weightedce和其他γ取值的focalloss训练的模型,所以,我们选取采用γ取1的focalloss损失函数在epoch为30训练的模型作为训练模型权重。

fcn8s的参数量为18643746,检测一张320*640分辨率的图片在gpu1070的环境下平均10毫秒左右。

dbscan聚类算法参数选取:

聚类模块采用的是dbscan聚类算法,该算法需要指定邻域范围eps和邻域内最少核心点个数minpts。本发明中对训练集的label图片进行聚类,在理想车道线分割的情况下,对eps和minpts两个参数分别取值,共设计8组对比实验,如表4所示,从中选取最优参数。

在8组对比实验中,eps和minpts的取值都是取在一个(0,3]之间较小的范围内,这是由于实际的交通场景中距离越近,车道线与车道线之间间隔越大,距离越远,车道线与车道线之间间隔越小,对于间隔越大的车道线,dbscan参数对聚类效果影响较小,但是对于间隔越小的车道线,eps和minpts两个参数有可能会使得两个车道线被分类为同一条。

本发明为尽可能的将距离较远处同时不同车道线之间间隔较小的样本正确的进行聚类,将eps和minpts参数均取在一个较小的范围内。从表4中可以看出,当eps=1和minpts=1或eps=1和minpts=2时,平均归类正确的准确率最大且为98.0%,当eps小于1时,准确率为0%;eps大于1时准确率逐渐降低。本发明选取eps=1、minpts=1作为dbscan聚类算法的输入参数。

表4dbscan聚类参数选取

各阶段结果展示:

各个模块整合后,每张图片的检测流程及每个模块的输出结果进行展示,如图4所示:

车道线检测系统会先读取一张图片或获取视频的一帧,通过语义分割模块的fcn8s网络得到车道线分割掩码图,通过后处理填补车道线断点,其中闭运算采用椭圆形结构核,并进行1次闭运算,邻域分析结束后对样本点(即车道线点)个数少于70的邻域区间进行舍去,保留主要的车道线;接着在聚类模块中对于320*160分辨率的图像舍去纵坐标低于某一个阈值(车道线纵轴最低点加上25)的车道线点,再对剩余车道线点进行归类并提取当前车道所在车道线,在拟合模块对两条车道线进行分别拟合,其中拟合模块的判断阈值选取为100,若左右两条车道线中至少有一条样本个数少于100,则采用线性回归方式拟合,若左右两条车道线的样本点个数均等于或大于100,则采样2阶多项式岭回归拟合,最终将拟合结果显示在图像上。

车道线检测精度及用时分析

本发明设计的车道线检测方法以精度(accuracy)作为整个系统的评价指标。

精度指标反映了每张图像上,预测车道线正确坐标个数cim与真实标注车道线坐标个数sim的比值。与precision指标不同的是,一个预测为车道线的像素坐标点是否预测正确,取决于在同一高度下与真实标注的同一条车道线的像素点的距离差,是否小于像素数阈值。若小于像素数阈值,则称该车道线像素点预测正确,否则预测错误。像素数阈值的计算过程如下代码所示:

像素数阈值计算代码

pixel_thresh=50#初始像素数阈值

#计算当前车道左右车道线的倾斜角度

angles=[laneeval.get_angle(np.array(x_gts),np.array(y_samples))forx_gtsingt]

#根据倾斜角度,角度越靠近90°,像素数阈值相对降低,容错范围减小

#角度越偏离90°,像素数阈值相对提高,容错范围提高

threshs=[laneeval.pixel_thresh/np.cos(angle)forangleinangles]

由于较远处的车道线相比近处的车道线产生的影响较少,对远处车道线进行舍去。在初始像素数阈值为50的条件下,tusimple训练集检测精度为92.3%。

车道线检测系统各个部分的用时,在实际路况检测中,模型是处于预先加载好的状态,图像是通过摄像头采集的,不需要单独去加载,所以总时间中不计入读取模型和读取图像的时间。

320*160分辨率的图像读取后,对数据进行预处理用时1ms,输入到网络中进行车道线分割用时9ms,对分割掩码图进行后处理用时3ms,聚类并提取当前车道所在车道线用时3ms,拟合2ms,最后拟合车道线展示在图像上用时1ms,总计用时19ms,相当于平均20ms每张图像,视频检测平均50帧每秒,可满足实时性检测的要求。

本发明的上述算例仅为详细地说明本发明的计算模型和计算流程,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1