基于深度学习的车道线检测系统的设计与实现
2024-12-12王昭
关键词:深度学习;车道线;检测系统;系统实现
0 引言
近几年来,由于我国经济和科学技术的飞速发展,人民的生活质量显著提升,都市道路日益发达,机动车的数量也越来越多,而机动车引发的各种交通安全事件也在逐年增多。在此背景下,研究并开发一种新型的无人车辆显得尤为重要,以提升车辆的安全性能,降低车祸发生率。在无人车辆技术中,道路识别是其中一个关键环节。利用视觉算法的车道线检测技术,以图像处理技术为基础,对图像中的交通标识进行提取。在快速道路上,道路标识类型多样,交通拥堵导致的道路标识区域受到严重干扰和侵蚀,使得道路线路识别面临严峻挑战[1]。
1 设计与实现背景
汽车辅助驾驶的首要目标就是尽量减少或防止车祸。当前,许多汽车已装备有自动驾驶辅助系统,包括车道偏离预警、碰撞规避以及路面物体辨识系统等。整个辅助驾驶系统包括数据采集、数据处理和预警处理三个模块。数据采集模块通过利用传感器、摄像机等方式获得周边环境的情况;数据运算模块基于获得的信息进行运算,得出相应的分析结论;当出现诸如汽车脱离正常行驶轨道、速度过快以及可能发生碰撞等威胁时,报警处理模块会给司机发出警告,并采取相应的安全防范措施。自动驾驶技术能够极大地减少道路交通事故,改善道路运行的安全性。而如今,随着各项科技的进步,无人驾驶也被提到了重要位置。包括特斯拉和蔚来在内的多家车企,以及谷歌和百度等人工智能企业,都投入了大量的人力物力进行这方面的研发,并且已经初见成效。自动驾驶系统由三大模块组成:系统感知模块、系统决策模块和系统控制模块。其中,系统感知模块的核心功能是利用多种传感器采集行车路线的相关信息;系统控制模块负责对整个汽车进行总体控制,使汽车能够实现自主驾驶。无人驾驶技术的发展与应用,不仅可以降低道路交通意外,提升道路安全性,还可以缓解道路拥挤,提高道路通行效率,提升城市的整体通行品质。准确地提取出道路信息,对车辆的行驶安全具有重要意义。因此,精确地判断出车道的位置,对于车辆辅助驾驶及无人驾驶等方面具有十分关键的作用。然而,现有的道路识别算法在精度、鲁棒性以及实时性能方面存在不足,特别是在更加复杂的场景下,难以满足实用要求。为此,以车道检测信息提取为研究对象,探索快速、精确、稳健的车道检测提取技术,可为无人驾驶与辅助驾驶提供重要的科学依据[2]。
2 设计目标
在自动驾驶和辅助驾驶中,车道识别对于确保汽车正常运行具有至关重要的作用。车道线识别一直是一项颇具挑战性的研究工作,原因在于真实环境结构复杂多变,各国交通规则各异,即便是同一国家,由于地形差异,各城市所采用的车道线标识类型也各不相同。这种类型差异是首先需要解决的问题。此外,车道线在使用过程中极易出现锈蚀、模糊等现象,导致某些图像处理方法难以对其进行有效识别。同时,天气对道路线识别的有效性也有显著影响,如下雪或大雨时,道路很可能被遮蔽,使得直接的道路标识无法使用,而必须采用其他规则来处理。
首先,对道路识别过程中的分段和拟合两个部分进行包装,并利用QT编写的程序界面,完成了对道路识别过程的可视化处理。该系统是在Windows环境下的可运行程序,也就是可运行的exe文件,能够完成对图像数据的采集、车道线的识别,对测试结果进行图像数据的存储,也是一种用于辅助行驶或无人驾驶的交通工具,可以帮助驾驶员获得外界的行车信息,从而提升驾驶员的行车安全。同时,还可以帮助其他试验者进行道路测量、评价其性能,从而提升试验人员的工作效率[3]。
3 基于深度学习的车道线检测系统的设计与实现策略
3.1 车道线图像数据标注与筛选
数据标注模块主要是对车道线区域进行标记,并将其按一定的文档形式存储起来。在车道线上的标记方法中,绘制方法是利用多边形方法。每个车行道都有自己独特的ID和分类特性,一个车道线可以不止一个。其中,车道线标识系统分为标志系统和可编辑系统两种模式。在进行标记时,标记者可以用滑鼠左键对道路线进行标记,最后单击右键完成标记,每个标记一个多边形时,都会将区域ID添加1,如果一条线路有不止一个车道线,那么当标记出这个线路的第一个区域时,可以用Shift+ID组合键选择其中的分道线ID,再接着对这个车道线的其它地区进行标记。在完成了一条车道线的标注之后,可以在修改的过程中调整车道线域的多边形点位。同时,该系统也提供了许多人性化的功能,比如可以进行图像的缩放、拖动、复原、删除等。一旦一幅照片上的所有车道都被标记完毕,再点击提交数据,就可以将标记的结果存储为JPEG格式。在最后的文件中,每个车道的ID、属性、多边形点的坐标都被以JSON的形式记录下来[4]。图1 显示了道路标线的局部截屏。
3.2 下采样
在原始图像中,将ROI区域先从原始图像中抽取出来,然后再将其提交给神经网络,会造成训练时间长。而且,当图像数量太多时,所需的感受野也会变得更大,才能达到最好的视觉效果。通过提高神经网络的隐藏层的方式,可以获得更多的感知域,但是这种方法并不利于网络的学习。而且随着网络的不断深入,其学习速度和学习难度也越来越大。因此,在提取出ROI区域后,首先要做的就是对ROI图像进行下取样。鉴于标签的特点(标签中包含了车辆路线的类型信息,如哪条车道线),可利用最近邻插值进行下取样。近邻插值法是一种基于目标影像的空间坐标和下取样尺度来求取原影像空间位置的方法,然后把原影像的影像坐标色彩值分配到影像坐标的色值上。这种邻插方法是通过将输出坐标相对于输入影像的变换坐标u来求出,将坐标u和它最近的4个点(n1、n2、n3、n4) 间的距离进行运算,将最靠近u的像素点色值分配到坐标u上。其计算过程为:
3.3 功能模块设计
3.3.1 数据获取模块
该系统采用杰锐微通的 DF 系列摄像机,采用USB端口,可以实现500万高清1080 P大角度无失真拍照,适用于 Windows、Android、Linux等系统,主要应用在监控视频、智能家居、智能汽车等方面。在实际应用中,该系统可以设置3个摄像机组件,即反光镜前方(P1) 、驾驶台面中部(P2) 和车前盖下部中部(P3) 。
3.3.2 相机控制模组
相机控制部分包含了相机打开和相机关机两大部分,而这两部分则是通过在网页编写的按键完成。开机是在相机的主控界面上单击“打开”键来激活,当这个按键被单击时,会激活与“打开”键相连的插槽函数open_camera_fun (),这个插槽函数会激活第一个相机,然后在“src_image”中出现所拍摄到的相机图片;若相机未开启,将提示“相机已开启”。在相机的控制区中单击“关闭”键就可以开启该功能,单击该键后,会激活close_camera_fun () ,与“关闭”键相连,这个插槽函数会先检测第一个摄像机的开启情况,如果没有开启,就会出现“摄像机没有开启”的提示。如果选择了“关闭”,系统就会提示是否要关掉相机,如果选择“确定”,就会关掉第一个镜头,如果选择“取消”,屏幕上的镜头就会一直开着。
3.3.3 检测功能控制模块
将所获得的最优的学习参数存储在 pth文档中,并将该方法的结构代码、拟合的程序代码和基于代码的Python类库等进行编译,在 Windows下创建一个动态类库(DLL) 。然后,通过装载 PDF文档,并调用相应的 DLL,完成了车道曲线的自动提取。该检测控制部分由两部分组成:一是探测函数打开,二是探测函数闭合,这两个函数是由前面的探测函数区的按键来完成的。开启该功能需要单击“打开”键,然后激活open_dect_fun (),open_dect_fun () 与“打开”键相连,该插槽函数会自动识别1号摄像机的开启状态,如果开启,将利用预组装好的分区和拟合模块对该影像进行处理,并在“result_image”中显示该影像;如果没有,系统就会提示:“请首先开启相机。”该功能可以通过单击“ 关闭”键来激活,当单击该键时,将会激活close_dect_fun (),这个插槽函数将会先检验这个探测功能打开,若没有打开,就会显示一个“探测功能尚未打开”的警告框;如果没有开启,就会出现一个“确认”对话框,提示是否已关闭探测功能。如果选择“确定”,那么探测能力将被切断,如果选择“取消”,探测能力将一直处于打开状态。
3.3.4 存储功能控制模块
储存控制模组包含储存功能的开启与储存机能的封闭,而这两项的控制则是通过储存于前页的储存功Zc1A24sh0V/YcttfizJOFFBE21+DsSzshXW1NbvDfeQ=能区按键来完成。开启该功能需要单击“打开”键,然后激活与“打开”键相连的open_mem_fun (),该插槽函数将检测到的检测功能开启。若开启,将在局部相应的地方存储原始图像数据、检测结果的图像数据和检测结果的点集数据;如果不是这样,系统就会提示:“请首先开启探测功能。”该功能可通过单击“关闭”键来激活,当单击该键时,将会激活close_mem_fun() 的插槽函数,该插槽函数将会第一次检测该插槽的储存能力是否开启,当该插槽没有打开时,会出现一个警告框,显示为“保存能力尚未打开”;否则,系统就会出现一个“确认”对话框,提示是否要关掉储存,如果选择“确定”,那么保存就会被关掉,如果选择“取消”,那么储存就会一直处于打开状态。
4 试验检测
针对当前车道线检测质量尚无成熟的评价准则,本文以C++与Python方法为基础,以深度卷积神经网络为重点,对车道线识别进行研究。本文通过对车道线的划分以及车道线的分割精度和召回率来判定标线的效果,采用Instance等级的图像分割方法,通过卷积神经网络可以将车道线像素区域和非车道线像素区域进行划分。因此,本文分别对这两种情形进行了实验。试验方案分别是ROI提取+下采样、ROI提取+ 逆透视变换,均能实现图像的分割。但是,当道路上有大量的交通工具时,+逆透视变换很可能会导致目标形状模糊,从而导致目标形状不清楚,分割效果不理想[5]。因此,利用ROI提取+下采样,通过对车道线像素区和非线像素区分别建立神经网络,可通过多个类别的学习来实现同一车道线像素的识别。相应于两个试验的计算公式如下:
在确定了感受野大小对网络识别能力的影响之后,采用相同的卷积核大小(8) 、图像尺寸384×384来建立多类别划分模型。通过上述公式检验发现,召回率达到73.2%;当图像尺寸为240×100时,该方法的召回率达到70.7%。
5 结束语
综上所述,现有的车道线识别方法存在空间耦合程度高、易受车辆遮挡和光照变化等问题,难以适用于复杂多变的道路环境。本文针对车道检测的实际应用要求,结合深度学习技术的特性,研究基于神经网络的车道线检测方法,通过预训练数据准备、车辆图片预处理、车道线分割神经网络建模和训练,最终完成车道线检测和显示,并对各模块的具体算法进行阐述,通过实验,验证了该方案的可行性。