基于全卷积网络及K-means聚类算法的车道线检测的研究
2021-06-29闽南科技学院蒋紫韵
闽南科技学院 蒋紫韵
上海电子信息职业技术学院 曹元元
车道线的检测是自动或智能辅助驾驶的核心问题之一。目前,在复杂场景下对车道线检测存在精度不高、准确性差等问题,本文提出一种基于全卷积网络及K-means聚类的分割算法,旨在解决复杂环境下车道线检测存在的问题。本文的方法通过进行大量数据的训练来获取的全卷积神经网络模型,利用模型可以准确检测到车道线,从而减少交通事故的发生。本文算法主要包括以下步骤:首先,使用图像预处理,采用二值化、直方图均衡化、中值滤波等预处理方法来获取图像的细节信息;然后,对预处理后获取的图像进行K-means聚类算法获取图像的感兴趣区域;最后,利用全卷积神经网络训练模型,检测出复杂场景下的车道线。实验证明本文算法的鲁棒性和准确性较高。
随着智能汽车快速发展,自动驾驶已成为热门话题,其中车道线识别是自动驾驶系统中的一个重要模块,可以辅助驾驶员观察车道环境,如:车道标记位置、行人和其他异常事件,减轻驾驶员的驾驶压力,实现防撞预警,降低交通事故的发生风险。因此,研究车道线检测技术有着很高的实用价值。
目前,基于机器视觉的车道线检测算法主要有两种类型,分别为基于特征的识别方法和基于模型的识别方法。在一些不良路段,如:路面存在阴影、有部分车道线存在残缺以及道路模型不符合预先假设等问题时,传统的检测方法使得识别效果降低。基于特征的识别算法是对预处理后的图像,采用各种特征提取算子来获取道路边界线和车道线标志线从而完成车道线的检测。随着人工神经网络的发展,大量的训练模型使得检测方法更有效,基于模型对车道线检测也取得了较好的效果。Gopalan R,Tsai Hong,Shenier M,etal在论文中提出对图像进行haar-like特征和边缘特征的窗口滑动计算,对每个像素建立边缘特征,然后输入到分类器进行分类,从而实现图像的像素级分割。最近,基于深度学习的检测算法,尤其是卷积神经网络在机器视觉领域表现了其强大的能力。文献中提出了一种基于图像分割的道路检测方法,这种分割是通过合并来自立体视觉系统的2D和3D图像处理数据而得出的,最后道路模式识别是通过人工神经网络进行的,经过训练获得最终结果,但这种算法准确率不高且运行速度也不快。文献中提出的算法引入了似然理论以构建道路检测的置信度图,并使用KITTIROAD基准对二进制图和置信度图进行了评估和比较,这种策略与简单的二进制映射相比可以更好地解决歧义环境,但是该算法的准确性和实时性只能达到一般的效果。为了克服上述问题,本文提出基于全卷积网络的车道线检测的算法。实验证明本文算法具有较好的效果,能够较好地将车道线从视频中分割出来,且利用FCN-16S架构和聚类方法解决复杂环境下车道线的检测的问题。
1 检测模型与算法
1.1 全卷积神经网络
YannLecun于1988年提出了卷积神经网络(CNN),该网络建立了多层可以自动提取图像上特征,一般在前边较浅的卷积层采用的是较小的感知域,可以获取图像上的一些局部细节特征,而在后边较深的卷积层则使用较大的感知域,来获取图像的大小、位置和方向等抽象的特征信息。这些抽象的特征信息对于图像的分类、图像中物体粗略定位很有效及可以检测出图像包含了哪种物体,但是因为采用感知域,在获取像素级的分割,效果较差。
由Long J,Shelhamei E,Darrell T于2015年提出了全卷积网络(FCN)是一种端到端的卷积网络,该网络用于解决图像分割,解决CNN在图像分割的局限性。全卷积神经网络(FCN)与CNN最主要的区别就是FCN将CNN末尾的全连接层转化成了卷积层,称为卷积化。然后,再利用双线性插值将图像特征恢复到输入图像的大小,最后,计算图像分类的损失,得到分割的结果。FCN模型示意图如图1所示。
图1 FCN模型示意图
以经典神经网络实例(Alexnet)为例,当上图CNN网络中输入原图像是227×227×3大小时,1-5层是卷积层,当第5层输出256个特征图,每个特征图的大小为6×6,即第5输出层的大小为256×6×6,而后边的输出层6、7、8长度为4096、4096、1000的一维向量。上图FCN网络中的6、7、8层都是通过卷积得到的,卷积核的大小全部是1×1,第6层的输出大小为4096×7×7,第7层的输出大小是4096×7×7,第8层的输出大小是1000×7×7,即1000个大小是7×7的特征图(称为heatmap)。原图在FCN网络中经过多次卷积,使得图像的分辨率越来越低,为了将低分辨率的heatmap恢复到原图的大小,使原图上每一个像素点的分类预测更有效,需对heatmap进行反卷积。在论文中首先采用了一个上池化操作,再对其进行反卷积,使得图像分辨率提高到原图大小。
图2 车道线检测流程图
1.2 K-means聚类算法
K-means算法是一种基于简单高效、易于理解和实现的迭代求解的聚类算法,通过学习的方式求解最优的分类。它采用距离作为相似性评价指标,把得到紧凑独立的簇作为最终的目标。假设给定的数据集有n个数据对象,将其划分为k类,其基本思想:
图3 晴天下的车道线检测效果图
图4 树阴遮挡下的道路检测效果图
图5 强光照射下的车道线检测效果图
(1)先确定一个k值,即k个样本,每个样本代表一个簇的平均值或中心,即先选择k个类别中心;
(2)对于每个样本,将其标记为距离类别中心最近的类别,即:
其中,xi代表第i个数据对象,zj代表第j个类别中心。
(3)将每个类别中心更新为隶属该类别的所有样本的均值,即:
其中,cj是第j类所有数据对象的个数。
(4)重复(2)与(3)两步,直到类别中心的变化小于某阈值,表示重新计算的类别中心的位置变化不大,趋于稳定,则可认为聚类已达到期望的结果,算法终止。
1.3 车道线检测算法的总体设计
本文对于图像分割实现,首先对原道路图进行预处理,再利用多次迭代的K-means聚类算法对预处理后的道路图进行操作,自动选择聚类中心,以便更好的检测出车道线的形状,最后采用全卷积网络模型进行检测,车道线检测流程图如图2所示。
2 实验结果与分析
2.1 数据集
本文的数据集采用的是国外开源的KITTI车道数据集,但该数据集的车道数据仅为289张,训练样本不足,为了建立的模型可以适用于多种车道环境,则一部分采用智能手机以视频的形式采集数据,拍摄的视频包括了晴天、阴天、雨天等不同天气情况及不同路况(平直、弯曲)的车道环境。另外,也从百度AI Studio中下载的ColorImage_road01,ColorImage_road02数据集中节选了1012幅图片。之后将收集到的每个图像和相应的车道图像标签水平翻转,使数据集增加了一倍,最后用于网络训练的图片有4032张。
2.2 模型训练
本文模型使用Python开发,采用的后台是TensorFlow GPU版本。硬件使用Intel Core i3-3220中央处理器,8GB内存,操作系统Linux Ubuntu 16.02 LTS。实验证明在Linux操作系统的运行速度比windows系统要快,更加节约时间,有利于实现实时性。
2.3 实验结果及分析
在公路上,本文将全卷积神经网络加K-means聚类算法进行车道线检测,在车道线检测中,对车道线附近的车辆进行检测,该系统可以提高车辆安全性,减少交通事故的发生。以下是从视频的检测结果中取出6帧来显示的,如图3,4,5所示。
总结:本文对于车道线检测,提出了结合传统特征与深度学习的方法。利用全卷积神经网络加K-means聚类算法通过大量的车道线样本进行训练,利用生成的模型检测公路上的车道线,同时检测到车道线附近车辆位置,为自动驾驶提供车辆的准确位置,从而避免交通事故的发生。实验表明,本文实现的算法准确率较高,鲁棒性较好,但是本文算法的实时性不高,今后将如何减少时间开销作为重点研究,来实现系统的实时性。