基于TensorFlow和OpenCV的车道线识别方法与流程

文档序号:17892487发布日期:2019-06-13 15:45阅读:555来源:国知局
基于TensorFlow和OpenCV的车道线识别方法与流程

本发明属于车辆自动驾驶图像识别技术,具体涉及一种基于tensorflow和opencv的车道线识别方法。



背景技术:

车道线识别算法是自动驾驶算法中的重要组成部分,该算法采用的是图像处理技术,从车前ccd相机中采集到的原始道路图像中提取车道线上的点,并建立车道线方程,以完成对道路图像中的车道线识别的功能。但是,由于道路图像复杂,干扰项多,导致基于传统的图像处理方法不能够满足自动驾驶车辆对车道线识别精度的要求。



技术实现要素:

针对上述问题,本发明提出了一种基于tensorflow和opencv的车道线识别方法,该识别方法采用的算法融合了当前先进的图像识别技术和传统图像处理技术的优点,前者通过神经网络模型提取道路图像中的车道线特征,实现了对道路图像的车道线区域像素点级的分类功能;后者针对车道线的特点建立一系列的图像处理算法,这些算法能够进一步地去除干扰项目,获得更佳的车道线识别效果。本发明提出的算法具有效率高、识别率高的特点,并且在实际应用中也有较好的鲁棒性。本发明提出的设计方法包含以下步骤:

步骤1.图像数据集的制作方法:制作图像数据集的原始图像数据来源于车前ccd相机采集到的彩色道路图像,本发明利用这些图像生成用于神经网络训练的图像数据集。该制作方法包括图像标注方法、图像处理方法和生成图像数据集方法。图像标注方法通过手工进行图像标注,利用labelme标注软件将原始图像中的车道线区域框选出来,输出的标注图像为二值图像;图像处理方法是将标注图像和原始图像分别经过处理后生成神经网络模型训练所需要的两种图像,包括训练时的神经网络输入图像和计算交叉熵时的输入图像;生成图像数据集方法是利用tensorflow的图像数据集格式tfrecord,将图像处理方法中的两种图像打包成图像数据集。

步骤2.神经网络模型的设计方法:神经网络模型由tensorflow搭建,本发明搭建该模型,然后对模型进行训练后用于提取车道线特征。该模型共有8层,分别为卷积层1、卷积层2、卷积层3、最大池化层、反最大池化层、反卷积层3、反卷积层2、反卷积层1,每层具有特定的过滤器尺寸、过滤器深度和过滤器移动步长,有些层还使用了全零填充。在设计时,反卷积层3的输入等于卷积层3的输出与反最大池化层的输出的线性加权和。

步骤3.可变阈值的图像二值化方法:在实际使用中,训练好的神经网络模型会输出具有明显车道线特征的图像,可变阈值的图像二值化方法可以将这些输出图像进行二值化处理,处理后的图像可以去除更多的干扰项,使车道线特征更加明显。本发明将待处理的图像的像素点的值与阈值比较,如果像素点值大于阈值,就将其设置为255,否则设置为0。可变阈值与待处理图像的像素点之和具有一次函数关系,其斜率和截距可根据实际情况进行调整。

步骤4.提取车道线坐标点的方法:本发明利用opencv建立提取车道线坐标点算法,从经过二值化处理后的道路图像中提取出车道线坐标点。该方法先设定一个中间值,然后进行图像的行扫描和列扫描,行扫描的增量为8,列扫描的增量为1。图像行扫描的过程中,如果像素点的值满足以下两种情况,将不再扫描下两列数的两个像素点的值,并记录下一列数的一个像素点作为车道线的坐标点:

(a)像素点所在列数小于或等于中间值,像素点的像素值大于100,相同行向x轴正方向偏移1列像素点的像素值大于100,相同行向x轴正方向偏移4列像素点的像素值小于100;

(b)像素点所在列数大于中间值,像素点的像素值大于100,相同行向x轴负方向偏移1列像素点的像素值大于100,相同行向x轴负方向偏移4列像素点的像素值小于100。

步骤5.建立车道线拟合方程的方法:利用提取到的车道线坐标点可以建立车道线拟合方程并求解该方程。本发明采用多项式函数作为车道线拟合方程的基本形式,每条车道线拟合方程建立时,其未知量的个数与在该车道线上提取到的坐标点的个数相等,并且该方程的自变量的最高次数为未知量个数减一,这保证了该方程是完全可解的。

本发明的有益效果:本发明提出的车道线识别方法融合了传统opencv算法的高效率和深度学习算法的高识别率的优点,根据本发明提出的方法所设计的程序在intel(r)core(tm)i5-7400和nvidiageforcegtx1050ti的机器环境中仅占用了约68.469ms的运行时间,对车道线坐标点的识别准确率达到了90.446%,并对车辆阴影、光照条件等外界环境具备较好的鲁棒性。

附图说明

图1为本发明中图像数据集制作过程示意图;

图2为本发明中神经网络模型示意图;

图3为本发明中图像扫描坐标系;

图4为本发明中提取车道线坐标点的流程图。

具体实施方式

为了使本领域的技术人员更好地理解本发明所提供的方案,下面结合附图对本发明进行具体阐述。

1.图像数据集的制作方法:

图像数据集用于训练神经网络模型,训练后的神经网络模型具有车道线特征提取的功能,如图1所述为图像数据集制作过程示意图。制作图像数据集的原始图像数据来源于车前ccd相机采集到的彩色道路图像,这些彩色图像经过图像标注、图像处理和生成图像数据集三个过程后获得图像数据集。

图像标注使用了labelme软件从彩色道路图像中标注出车道线区域。标注时将车道线区域定义为车道虚线、车道实线、车道双虚线和车道双实线所在区域。标注后的图像为二值图像,二值图像中的车道线区域的像素点的像素值为255,其余部分的像素点的像素值为0。因此,从二值图像中可以看到车道线区域为白色,其余部分为黑色。

完成图像标注后进入到图像处理环节。图像处理环节用于处理图像标注输出图像时包括图像裁剪、图像缩放和图像二值化过程,用于处理彩色道路图像时包括图像裁剪、图像缩放和图像灰度化。图像裁剪就是从图像高度方向按照固定的大小将待处理图像中的非车道线区域去除,尽可能地保留图像中的车道线区域,图像的宽度则保持不变,这一处理可以极大地减小图像的大小,有助于提高图像识别算法的效率和准确率。图像缩放使用的是双线性插值法将图像裁剪后的输出图像的大小缩放至固定的尺寸并且图像缩放后其宽度和高度相等,这一处理的目的是为了满足神经网络模型对输入图像尺寸的要求。图像二值化是将图像缩放后的输出图像的像素值与固定阈值比较,并根据比较结果修改像素值,当图像的像素值小于阈值时,其将被设定为0,否则被设定为255,这里图像二值化用于标注图像裁剪并缩放后的输出图像,二值化的目的是让它们变为纯粹的二值图,以提高神经网络模型的训练质量。图像灰度化是将图像的颜色转换为灰度,图像的灰度化用于彩色道路图像裁剪并缩放后的输出图像,在尽可能地保留图像信息的前提下,这有助于减小图像的数据量。图像处理环节生成神经网络模型训练所需要的两种图像,它们分别是训练神经网络模型时的输入图像和计算交叉熵输入图像,前者是彩色道路图像经过图像裁剪、图像缩放和图像灰度化后获得的,后者是彩色道路图像先经过图像标注过程,标注的输出图像再经过图像裁剪、图像缩放和图像二值化后获得的。

完成图像处理后进入生成图像数据集环节。在图像数据集中封装了图像处理环节中获得的两种图像,即训练神经网络模型时的输入图像和计算交叉熵输入图像,该环节将这两种图像按照tfrecord文件格式打包成数据集。

2.神经网络模型的设计方法:

神经网络模型是是由tensorflow搭建的,本发明搭建的神经网络模型采用了上采样的思想,它不改变图像的尺寸,如图2所示为神经网络模型示意图。训练后的神经网络模型可用于提取车道线特征,该特征包括道路图像中的虚线、实线、双虚线和双实现。

本发明搭建的神经网络模型共有8层,它们分别为卷积层1、卷积层2、卷积层3、最大池化层、反最大池化层、反卷积层3、反卷积层2和反卷积层1。卷积层1的过滤器尺寸为2×2,过滤器深度为32,过滤器移动步长为1×1,不使用全零填充;卷积层2的过滤器尺寸为2×2,过滤器深度为64,过滤器移动步长为1×1,不使用全零填充;卷积层3的过滤器尺寸为3×3,过滤器深度为128,过滤器移动步长为1×1,不使用全零填充;最大池化层的过滤器尺寸为2×2,过滤器移动步长为2×2,使用全零填充;反最大池化层的过滤器尺寸为2×2,过滤器移动步长为2×2,使用全零填充;反卷积层3的过滤器尺寸为3×3,过滤器深度为64,过滤器移动步长为1×1,不使用全零填充;反卷积层2的过滤器尺寸为2×2,过滤器深度为32,过滤器移动步长为1×1,不使用全零填充;反卷积层1的过滤器尺寸为2×2,过滤器深度为1,过滤器移动步长为1×1,不使用全零填充;反卷积层3的输入等于卷积层3的输出与反最大池化层的输出的线性加权和。

该神经网络模型训练采用的数据集为本发明中所生成的图像数据集。训练时会从图像数据集中先获取训练神经网络模型时的输入图像,该图像经过神经网络模型后会输出尺寸大小相同的神经网络模型输出图像。然后再从图像数据集中获取计算交叉熵输入图像。最后将神经网络模型输出图像与获取到的交叉熵输入图像一起用于交叉熵的计算,计算得到的交叉熵值作为梯度下降算法的参数值,由梯度下降算法更新神经网络模型的参数值,达到训练的效果。

3.可变阈值的图像二值化方法:

本发明训练好的神经网络模型能够输出具有明显车道线特征的图像,可变阈值的图像二值化方法可以将这些输出图像进行二值化处理,处理后的图像可以去除更多的干扰项,使车道线特征更加明显。

该方法的原理是将待处理图像中的像素点的值与阈值比较,如果像素点值大于阈值,所述像素点值将设置为255,否则设置为0。但是这里的阈值不是固定不变的,而是随着每张待处理图像的像素点之和不同而改变的,阈值与待处理图像的像素点之和具有一次函数关系,其斜率和截距可根据实际情况进行调整。通常来说,确定其斜率和截距需要利用大批量的图像进行可变阈值的图像二值化过程,并根据二值化的效果获取斜率和截距的经验值。

4.提取车道线坐标点的方法:

本发明利用opencv建立提取车道线坐标点算法,从经过可变阈值的图像二值化方法处理后的图像中提取出车道线坐标点。首先,该方法以图像的左上角作为原点,以右方向作为x轴的正方向,以下方向作为y轴的正方向建立了图像扫描坐标系,如图3所示为图像扫描坐标系。然后,该方法利用opencv建立了坐标点的扫描方法,其实际是建立一种条件机制,在图像的扫描过程中,对符合条件的坐标点予以记录,作为采集的车道线坐标点。

图像的扫描分为行扫描和列扫描,行扫描从第0行开始,至最后一行结束,其方向为y轴的正方向,其增量为8;列扫描从第0列开始,至最后一列结束,其方向为x轴的正方向,其增量为1。行扫描和列扫描相互结合,就可以遍历符合扫描条件的数行像素点的值。如图4所示为发明中提取车道线坐标点的流程图,该流程图中假设待扫描图像的大小为100×100,根据该扫描方法,扫描时将会遍历第0行、第8行、第16行、第24行、第32行、第40行、第48行、第56行、第64行、第72行、第80行、第88行和第96行的大多数像素点的值,有少数像素点的值不会被访问。图像行扫描的过程中,如果像素点的值满足以下两种条件,将不再扫描下两列数的两个像素点的值,并记录下一列数的一个像素点作为车道线的坐标点:

(a)像素点所在列数小于或等于中间值,像素点的像素值大于100,相同行向x轴正方向偏移1列像素点的像素值大于100,相同行向x轴正方向偏移4列像素点的像素值小于100;

(b)像素点所在列数大于中间值,像素点的像素值大于100,相同行向x轴负方向偏移1列像素点的像素值大于100,相同行向x轴负方向偏移4列像素点的像素值小于100。

例如在扫描第16行时,如果中间值被设置为50,当扫描到该行第18列的像素点的值为200,第19列像素点的值为160,第22列的像素点的值为88,则可以看到这种情况是符合条件(a)的,那么将会记录下行数为16、列数为19的像素点作为车道线坐标点,并且在扫描中将不会再对第19列和第20列的像素点进行条件(a)的判定。

在条件中还引入了中间值,这里的中间值由用户自定义,一般来说约等于图像宽度的一半。在扫描过程中,中间值可以两个区域的像素点,当像素点的列数小于或等于中间值时认为该像素点在左侧,否则认为该像素点在右侧。对于左侧像素点在扫描时用条件(a)来判定是否为车道线坐标点,右侧像素点则使用条件(b)来判定。这种机制在实际使用中有助于提高道路边缘两侧车道线坐标点的识别准确率。

以下为opencv在图像扫描坐标系中提取车道线坐标点的详细步骤:

步骤1:设置中间值;

步骤2:设置y的值为0;

步骤3:设置x的值为0;

步骤4:如果x小于或等于中间值,则进入步骤5,否则进入步骤8;

步骤5:如果p(x,y)大于100,则进入步骤6,否则进入步骤14;

步骤6:如果p(x+1,y)大于100,则进入步骤7,否则进入步骤14;

步骤7:如果p(x+4,y)小于100,则进入步骤:11,否则进入步骤14;

步骤8:如果p(x,y)大于100,则进入步骤9,否则进入步骤14;

步骤9:如果p(x-1,y)大于100,则进入步骤10,否则进入步骤14;

步骤10:如果p(x-4,y)小于100,则进入步骤11,否则进入步骤14;

步骤11:x=x+1;

步骤12:记录p(x,y)作为提取到的车道线坐标点;

步骤13:x=x+1;

步骤14:x=x+1;

步骤15:如果x大于100,则进入步骤16,否则返回步骤4;

步骤16:y=y+8;

步骤17如果y大于100,则扫描结束,否则返回步骤3。

5.建立车道线拟合方程的方法:

建立车道线拟合方程并求解方程,最终得到车道线识别结果。车道线拟合方程利用采集到的车道线坐标点建立数学模型,然后用数学表达式来拟合的车道线。本发明采用多项式函数作为车道线拟合方程的基本形式,每条车道线拟合方程建立时,其未知量的个数与在该车道线上提取到的坐标点的个数相等。例如,通过本发明的算法,在某条车道线上采集到了4个车道线坐标点,它们分别为p1(x1,y1)、p2(x2,y2)、p3(x3,y3)和p4(x4,y4),则可以建立如下数学方程:

y=ax3+bx2+cx+d(1)

在方程中,需要求解的未知数为a、b、c和d,理论上,将p1、p2、p3和p4点的坐标值代入方程即可求解这4个未知数。在求解方程(1)时,本发明采取的方法是逆矩阵求解方程的方法。将车道线坐标点代入待求解的方程,可以将代入式整理成矩阵运算的形式,如式(2)所示:

在式(2)中,a、b、c和d为待求解的未知数,它们的值可由右侧的逆矩阵与向量(y1,y2,y3,y4)相乘获得。求得的a、b、c和d带回原方程(1)即可求解车道线方程。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

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