张 林
深度学习的车道线检测方法
张 林
(西安汽车职业大学 智能制造工程学院,陕西 西安 710600)
随着人工智能技术的不断发展,无人驾驶技术已经成为当下社会发展的热门,车道线检测是无人驾驶技术的关键一环,但传统的基于视觉的车道线检测方法处理时间较长、过程繁琐、需要人为干预。基于深度学习的车道线检测可大大减少此类问题。文章设计了一个完成双任务的Enet网络,分别解决目标区域分割问题和不同车道区分问题,以实现端到端的检测。与主流车道线检测网络模型deeplab v3和YOLO v3进行对比。实验验证表明,网络模型的最终训练准确率为99.8%,相对于deeplab v3和YOLO v3网络分别提升1.2%和0.8%。
车道线检测;深度学习;端到端;实例分割
无人驾驶的相关概念最早由美国国防部于1980年提出,主要通过人工智能、自动化、通信以及计算机等相关技术的融合来实现车辆的自主决策[1]。无人驾驶汽车实质上为软件和硬件共同协作的产物,首先需要搭建多种车载传感器用以接收和感知周围的环境信息,再通过处理器对各种输入信息进行处理,并根据已处理的信息最终完成对汽车的控制[2]。
其中,感知作为无人驾驶技术的基础,必须保证较高的准确率和鲁棒性才能确保后续的处理部分正常运行。而车道线检测作为感知环节中的重要一步,出现了多种的检测方法,传统的车道线检测方法处理过程较为繁琐,其核心部分为边缘特征的提取和特征点的拟合,检测率容易受到环境因素影响且运算速度较慢,更重要的是在面对不同环境条件时,需要人工选择滤波算子,并进行手动调参,工作量大的同时稳定性较低[3]。
Xiao J S等[4]提出了一种基于道路结构模型和扩展卡尔曼滤波的新算法,通过边缘点所选的线参数检测相应的直线,利用车道边界点的坐标估计车道参数,再通过扩展卡尔曼滤波器对其进行更新。Byambaa等[5]提出了一种基于卡尔曼滤波的无人驾驶车道检测算法,利用卡尔曼滤波中的抛物线方程和圆方程模型来估计车道线的参数,该方法对曲线车道有着较好的表现。Zhang Z C等[6]提出了一种新的车道线处理算法,在Caltech lane数据集上可以达到97.2%的识别率。Wang Q D等[7]利用边缘点曲率来确定感兴趣区域,并对曲率区域进行映射,得到与曲率参数对应的车道线
近年来,随着人工智能领域的不断发展,产生了基于深度学习技术的车道线检测方法,对于不同环境下的检测均有良好的表现,并且随着硬件性能的提升和深度学习技术的进步,算法的表现也在不断地提高。Ding L等[8]以VGG16为卷积神经网络的基础,利用空洞卷积提取车道线特征,将车道线分为虚线和实线,并结合实例分割,最后通过拟合实现对车道线的检测,该方法在速度和精度间取得了很好的平衡。Haddad等[9]提出了一种车道线全自动分割的新模型,该分割算法采用多分辨率处理算法,逐步增加比例因子和主动轮廓控制点,检测准确率较高,且算法实时性强。Xiao D G等[10]提出了一种车道线检测的DNN,对像素之间的依赖关系和通道依赖关系进行同步建模,这种方法与常规建模方法相比,只需要较少的参数和卷积运算,极大地提升了运算速度。Nguyen等[11]提出了一种混合深度学习和高斯处理(DL-GP)的网络,该网络结合了一个紧凑的卷积编译码网络和一个强大的非参数分级GP分类器,可以有效地缓解网络训练过程中的过拟合问题,同时保持着优秀的检测能力。
本文提出一种网络模型,在保证检测准确率和检测速度的同时,实现端到端检测,同时针对现有的开源数据集做了一定补充,以提升网络模型的稳定性和广泛性。
过去常用的目标检测网络模型都属于非端到端模式,非端到端网络的输入端不是直接的原始数据,而是在原始数据中提取的特征,这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来的一个思路是提取图像的一些关键特征,即图像感兴趣区域提取,这实际就是一个降维的过程。特征提取的好坏异常关键,甚至比学习算法还重要。这就需要海量的专业标注图片作为必备的实验数据,不仅获取难度大,也极为花费时间,且场景的变化以及图像采集源的变化都会导致输入数据结构发生变化,需要人为进行调参。而采用端到端模型,图像特征由网络自行提取和学习,也就是说将特征提取这一环节融入算法,不需要再进行人为干涉,不仅减少了实际操作流程,同时也有很好的表现。
如图1所示,前面的编码阶段都使用3×3卷积核的卷积层和2×2的最大池化层,每一个卷积层都使用Rectified Linear Unit(Relu)的激活函数,后面的解码阶段都使用4×4卷积核的卷积层。
本文所设计的车道线检测网络包括5个阶段:
1)Stage 1:encoder阶段。包括5个bottleneck,第一个bottleneck做下采样,后面4个重复的bottleneck。
2)Stage 2-3:encoder阶段。stage2的bott- leneck2.0做了下采样,后面有时加空洞卷积,或分解卷积。stage3没有下采样,其他都一样。
3)Stage 4:属于decoder阶段。比较简单,一个上采样配置两个普通的bottleneck。
整体网络架构是基于encoder-decoder的网络ENet,本实验优化了网络结构,将网络整体划分为两个处理过程。因为ENet的encoder比decoder包含更多的参数,所以两个处理进程如果共享encoder的所有网络,可以满足实验需求。因此,原始的Enet的encoder包含三个stage,Enet会对这两个进程共享前三个stage,把第四个stage和实例分割的输出结果传播给decode stage。分割处理最后输出的是一个单通道图片(二分分割),嵌入处理输出的是N通道的图片,N是嵌入尺寸。每个处理过程的loss是相等的权重,然后通过网络进行反向传播。
图1 网络架构
首先要引入目标检测的几种手段,常用的处理方法有分类、对象检测、语义分割、实例分割。对于本实验而言,分类的思想是将标明图中存在车道线。对象检测的思想是标明图中所有的车道线,可以得到其数量和位置。语义分割的思想是将车道线和其他信息区分,注明图中的车道线类。而实例分割的思想可以将图中所有的车道线标明,得到其数量和位置,并对于不同的车道线,将其划分为了不同种类。可以看出,对于目标检测这一任务而言,实例分割是对象检测和语义分割的结合与升级,拥有更加良好的表现。
因不同车道线对应的作用不同,故车道线检测问题本质上可以看作一个实例分割问题,即每一条车道线都形成一个独立的实例,但整体都属于车道线这个类别。基于这个理念,本实验将实例分割的问题转化为一个语义分割与嵌入向量的聚类。
基于这一理念,实例分割利用聚类损失函数,训练后输出一个车道线的像素之间的距离,因同属一条车道线的像素点之间距离近,不同车道线像素点之间的距离远,故可以得到各条车道线。损失函数的公式为
式中,var为像素聚类方差项;为车道线数量;N为单一车道线的像素个数;µ为车道线的平均像素特征表示;X为第个像素的特征表示;v为同一车道像素与聚类中心点距离阈值。
式(1)表明,所有远离阈值v的映射将向车道线的均值附近靠拢,该损失函数的作用是让同属一条车道线的像素足够收敛。
式中,dist为聚类中心距离项;为车道线数量;d为不同车道中心点距离阈值;µA、µB分别为不同车道线的平均像素特征表示。
式(2)表明,所有近于阈值d的映射将向远离车道线的中心发散,该损失函数的作用是让不同车道线的像素划分明确。
迭代的终止条件为各个车道线的线间中心距>d,以及属于每条车道线的像素离该车道线的距离<v。
综上,分别完成了对两个分支的处理,现在只需对两个分支的处理结果进行聚类,即可得到实例分割的结果。在进行聚类时,首先需要使用Mean shift算法。
该算法使得簇中心沿着密度上升的方向移动,防止将离群点选入相同的簇中;之后对像素向量进行划分:以簇中心为圆心,以2v为半径,选取圆中所有的像素归为同一车道线。重复该步骤,直到将所有的车道线像素分配给对应的车道。以上述处理过的图像为例做聚类的结果如图2所示。
图2 聚类效果图
图2(c)即为对图2(a)和图2(b)做聚类处理后的效果图,可以明显看出聚类后的图像既包含了车道线这一类信息,又以不同颜色明确区分了不同车道线,完成了实例分割这一任务。
网络模型的训练在Windows10(x64)系统下进行,所需环境为Python3.5.2,cuda-9.0,cudnn- 7.0,tensorflow 1.10.0-gpu版本,opencv4.0.0版本,在显存为6 g的GTX-1060显卡下测试可达到0.04秒处理一张图像,约为25 fps。
本实验还调用了来自python和tensorflow的一些工具,例如:tensorboard,(该工具可以使网络训练过程变得可视化,用户可以监控到网络训练准确率和损失率的变化)pyqt,config等。在训练模型中,训练数据集约为130 600张,大小为26.7 GB,测试数据集的张数约为9 000张,大小为2.14 GB,开发环境参数如表1所示。
表1 开发环境
设备参数 CPUI5~6 300 hq VGANVIDIA GTX-1 060 6 G 操作系统Windows 10 开发环境Tensorflow-keras 程序语言Python3.5 RAM20 GB 训练数据26.7 GB 测试数据6.84 GB
表2为本网络模型所采用的各项参数,每层内含有2个卷积层并且后面都有接一个最大池化层。
表2 Enet网络参数配置
使用的各项名称参数 最大池化层2x2 卷积3x3 激活函数RELU 步长1 优化器Adam 批量大小8 学习速率5e-5 损失函数mean shift聚类g 批次大小32 训练迭代次数20
表3为本网络模型所采用的各项参数,其中每层内含有2个卷积层并且后面都有接一个最大池化层。
表3 T-net参数配置
使用的各项名称参数 最大池化层2x2 卷积3x3 激活函数RELU
表3 (续)
使用的各项名称参数 步长1 优化器Adam 批量大小10 学习速率5e-5 损失函数MSE 批次大小32 训练迭代次数20
本文使用部分Tusimple数据集,拍摄的图片中有好的天气和一般的天气。图片集中有2车道、3车道、4车道和高速公路,拍摄时间也是在一天中的不同时刻。标注的信息是.json格式,指明了坐标和离散化的坐标,也标记出了当前车道和左右车道。由于Tusimple数据集使用的图像分辨率为1 280×720,这一分辨率较高,本实验在实际训练时将输入图像的分辨率统一调整为512×256。
前处理网络分为两个处理任务:语义分割处理和二值分割处理,所以需要针对两者的损失函数分开进行交替训练。将上述两个网络训练完成后可以得到训练准确率为99.8%。为了进一步验证本文所使用网络模型的可行性,在此选取了车道线检测主流网络deeplab v3以及YOLO v3作为参照组进行对比。首先是对于deeplab v3的训练,采用同样的训练集,在训练5万次后,其准确率稳定于98.6%。其次是对于YOLO3的训练,其最终准确率为99%左右。
综上所述,使用本文所使用的网络模型相对于deeplab v3以及YOLO v3在检测速度上有所下降,但在准确率上分别可以提升1.2%和0.8%,有明显改进。
本文设计了一个双分支Enet网络完成车道检测处理。通过训练实现了端到端的车道线检测。主要结论如下:
1)基于图像分割的思想,把车道线检测问题转化为实例分割问题,并将解决实例分割的问题拆分为嵌入处理和二值分割,嵌入处理的目的为区分不同的车道线,二值分割的目的为区分车道线以及背景信息,然后对两个处理过程的结果进行聚类,得到实例分割结果。
2)实验表明,本文的网络模型的训练准确率为99.8%,相对于deeplab v3和YOLO v3网络分别提升了1.2%和0.8%,且在复杂环境下有良好的表现。
[1] ALY M.Real Time Detection of Lane Markers in Urban Streets[J].IEEE,2014:4621152.
[2] YANIV A,ANDRAS F,AMNON S S.Off-road Path Following Using Region Classification and Geometric Projection Constraints[J]. IEEE, 2006(1):689-696.
[3] LOOKINGBILL A,ROGERS J,LIEB D,et al.Reverse Optical Flow for Self-supervised Adaptive Autonomous RobotNavigation[J].International Journal of Computer Vision,2007,74(3):287-302.
[4] WANG C,HU Z,UCHIMURA K.A Novel Lane Detec- tion Approach Fusion by Vehicle Localization[C]// Intelligent Control & Automation. Piscataway:IEEE, 2011:1218-1223.
[5] 石林军,余粟.基于多约束条件下的霍夫变换车道线检测方法[J].计算机测量与控制,2018,26(9): 9-12,38.
[6] LI J, XIANG J A, HAN G He. Lane Detection Based on Visual Attention[C]//In Image and Graphics (ICIG), 2011 Sixth International Conference on.Piscataway: IEEE,2011:570-575.
[7] GUO K Y, LI N,ZHANG M.Lane Detection Based on the Random Sample Consensus[C]//In Information Technology,Computer Engineering and Management Sciences (ICM),2011 International Conference on. Piscataway: IEEE,2011(3):38-41.
[8] KAZEMI F M,SAMADI S,POORREZA H R,et al. Vechicle Recognition Using Curvelet Transform and SVM[C] //Proc of the 4th International Conference on Information Technology.Piscataway:IEEE.2007:516- 521.
[9] HUANG L,ZHANGY S.Identification of Traffic SignsUsing Deep Convolutional Neural Network[J].Modern Electronic Technology,2015,25(1):101-106.
[10] 段建民,李岳,庄博阳.基于改进SIS算法和顺序RAN- SAC的车道线检测方法研究[J].计算机测量与控制, 2018,26(8):280-284,289.
[11] NIU S F,LI L.Application of Neural Network and Bayesian Filter in the Prediction of Change of Channel [J].Science and Technology and Engineering,2016 (14):212-216.
Lane Line Detection Method Based on Deep Learning
ZHANG Lin
( School of Intelligent Manufacturing Engineering,Xi'an Automotive Vocational University, Xi'an 710600, China )
With the continuous development of artificial intelligence technology, driverless technology has become a hot topic in the current social development. Lane line detection is a key link of driverless technology, but the traditional vision-based lane line detection method takes a long time to process, and the process is tedious, requiring human intervention. The lane line detection based on deep learning can greatly reduce such problems. In this paper, an Enet network is designed to complete dual tasks, which solves the problem of target area segmentation and different lane differentiation respectively to achieve end-to-end detection.Compared with mainstream lane line detection network models deeplab v3 and YOLO v3, the experimental verification shows that the final training accuracy of the network model used in this experiment is 99.8%, which is 1.2% and 0.8% higher than deeplab v3 and YOLO v3, respectively.
Lane line detection;Deep learning;End-to-end;Instance segmentation
U495
B
1671-7988(2023)12-48-05
张林(1995-),女,硕士,助教,研究方向为汽车机械,E-mail:zhanglin4424@163.com。
10.16638/j.cnki.1671-7988.2023.012.010