APP下载

基于改进SegNet算法的车道线检测方法

2020-02-04邓天民杨其芝周臻浩

科学技术与工程 2020年36期
关键词:像素点车道卷积

邓天民, 王 琳, 杨其芝, 周臻浩

(重庆交通大学交通运输学院, 重庆 400074)

车道线检测是辅助驾驶以及无人驾驶在道路环境感知模块的重要技术之一。目前针对车道线检测方法,主要包含三类:基于特征的车道线检测方法[1-4]、基于模型的车道线检测方法[5]以及基于深度学习的车道线检测方法[6-12]。

对于深度学习方法而言,主要是建立一个具有多层隐藏层的人工神经网络模型,将大量的数据通过网络训练提取出目标中更本质的特征,确保分类准确性的提升。与前两类方法相比,深度学习检测方法虽然能在模型训练时完成自动学习目标特征,以及自动修正学习参数。但缺乏公共车道和道路标记数据集也是另一个挑战。文献[6-7]主要针对数据库的采集标注进行研究,构建了车道线精细数据库。文献[8-10]主要基于卷积神经网络对车道线特征的提取分类,其中Pan等[10]提出了一种空间卷积神经网络,该方法实现了适用于检测出细长连续形状(如车道线)的目标的卷积网络模型。文献[11-13]主要基于深度学习的实例分割能在提取出车道线的基础上,实现不同的车道线的区分。其中Neven等[11]提出一种实例分割的方法检测车道线,该端到端网络是由一个车道分割分支和车道嵌入分支组成的。然而该方法在聚类操作中可能由于聚类错误导致检测失效并且聚类的实时性较差。随后,高轶康[14]为了去除由于语义分割模型的不准确性从而带来噪声的干扰,提出了一种基于层次聚类的主车道线特征点集提取算法。综上所述,由于卷积神经网络虽然对于目标提取有很高的精度,但是对车道线这种线状区域提取仍然比较困难,并且实时性较差。

针对上述问题,现提出一种改进SegNet算法的实时车道线检测方法,在保证不影响检测精度的前提下,达到减少模型运行时间。SegNet算法的优势在于可以只将池化索引保存,不用保存整个解码部分的特征图,达到节省内存空间的目的。首先,将SegNet改为非对称的编码与解码网络架构;其次,将其中的卷积层与BN层合并;最后,通过连通域约束与最小二乘法拟合等图像后处理技术对图像进行处理。

1 基于改进的SegNet网络模型

首先,对特征提取网络SegNet进行精简与改进,并结合连通域滤波与关联对车道特征点进行分类,对相同类别的车道特征点使用最小二乘法拟合为直线。基于改进SegNet算法的实时车道线检测方法的流程图如图1所示。

图1 基于改进后的SegNet算法流程图Fig.1 Based on the improved SegNet algorithm flowchart

1.1 原始网络结构

SegNet是一种图像分割方法,其主要包含一个编码器,以及其相对应的解码器,最后连接一个逐像素的分类层。其中四层下采样构成解码部分,四层上采样构成编码部分,使得该网络呈对称关系。

网络中的卷积部分包括4个卷积层(convolutional,Conv)、4个批量标准化(batch normalization,BN)层加激活函数(rectified linear unit,ReLU)及4个池化层(pooling),目标图像输入卷积层的特征提取部分,得到相应的特征图,再输入进反卷积;反卷积结构由4个上采样层(upsampling)和四个卷积层构成,对卷积部分的输出图进行反卷积,反卷积层得到的特征图大小将与原始输入图像大小一致,紧接着softmax层再将图像分类处理。其网络总体架构如图2所示。

图2 SegNet算法结构图Fig.2 SegNet algorithm structure diagram

该网络将目标图像中的每一个像素点分类并识别类别以完成图像分割的目的。与全卷积网络(fully convolutional networks,FCN)的不同点在于两者的编码及解码技术不同,SegNet特点是训练参数较少、速度较快、内存需求较低。

1.2 改进SegNet算法特征提取模块

为提高检测的实时性,对SegNet算法进行精简与改进,主要从两方面进行改进,首先是将模型原本的对称结构改为“多编码-少解码”的非对称网络架构,其次是SegNet算法卷积层与BN层的融合,以上两点均极大地减少了网络运行的时间,提高了实时性。

1.2.1 非对称网络结构模型

输入数据集中的图像,输出图像的车道分割掩膜图,分为对称的两个部分:前半段的卷积部分和后半段的反卷积部分。现研究目的是对SegNet进行精简与改进,利用改进后的 SegNet来进行车道线像素点位置的检测,得到检测图像,再使用连通域约束等后处理步骤来进行车道线拟合。改进后的SegNet架构主要分为编码部分和解码部分。但与未改进的SegNet相比,将该网络改为“多编码-少解码”的非对称网络架构,并且利用1×1卷积核实现图像通道数的降维,减少网络参数。这样加快了网络模型的运行速度,提高实时性。

为去除图像视觉信息冗余度高的特点,压缩步骤必不可少。在确保压缩后图像上下文信息不会减少且可能更多的情况,需使其感受野更大,将编码部分的13个卷积层用以提取不同比例的图像特征。同时,为了减少解码过程中边缘与细节信息的丢失,需要针对细节信息做出微调,将解码部分的四个上卷积层,通过下采样存储的索引信息完成上采样,并且在三个卷积层加入1×1卷积核用以减少网络参数。最终设计的改进后的SegNet算法架构如图3所示。

图3 改进后的SegNet算法结构Fig.3 The improved SegNet algorithm structure

将通过改进后的SegNet算法得到的结果选用softmax函数进行分类,判断各个像素特征是否属于车道线。并将实际的标签值与通过计算得到的值做交叉熵得到损失函数值,选取批量训练计算得到各个训练图片的损失函数值的平均。

1.2.2 SegNet算法卷积层与BN层融合

将SegNet算法中BN层与卷积层两者相结合的部分融合,提高模型的推理速度。其中加速网络的收敛是BN层的主要任务,由于加入BN层后网络推理的过程会消耗大量的内存,使得推理速度减慢,所以合并卷积层与 BN层十分必要。合并具体形式如图4所示。

图4 BN层合并Fig.4 BN layer merge

由于卷积层与BN层皆为线性变换,为两者合并提供了充分条件。假设输入的mini-batch:{x1,…,xn},BN层变化为

(1)

式(1)中:i∈[0,n],且i为整数;γ与β是训练中得到的参数;ε为趋于0的常数。在推理阶段, 原卷积层权值为w, 偏置项为b,将BN层与卷积层融合, 得到卷积层新的权值为wnew=wγ,新的偏置值为bnew=bγ+β,形成新的的网络模型。为了减少内存占用加快推理速度,卷积层与BN层合并后可共用Blob数据。

1.3 连通域滤波与关联

在SegNet网络处理得到的二值图像中,由于车道模糊、噪声等因素的存在,一些车道像素可能会偏离车道线形成独立的、像素点较小的连通域,选取二扫描法标记该类连通域。

1.3.1 第一次扫描

(1)由左往右,再由上至下依次遍历各个像素点。

(2)如果该像素点的值不为0,则观察该像素点的邻域内是否存在标记过的点。若临近像素都未进行标记,则对该像素点赋予一个新的标记值,否则,将临近像素点标记的最小值赋予该像素,并将所有具有相邻关系的点保存进一个集合里。

1.3.2 第二次扫描

(1)从左至右,再从上往下依次遍历各个像素点。

(2)如果该像素不是背景像素,在该像素的所属的集合中,找出标记值最小的标记赋予该像素得到各个像素点的标记后,默认连通域点个数小于20的连通域为误检连通域,将该位置上的点像素值置为0。

在得到不同连通域的标记后,由于车道线磨损或车道线为虚线会导致多个连通域同属于一条车道线,所以需要对连通域进行关联。具体步骤如下:

①将上述每个连通域标记情况保存为{(x1,y1),(x2,y2),…,(xN,yN),label}的格式,式中(xi,yi)表示第i个点的横坐标与纵坐标,N表示连通域中像素点的个数。对第一个未拟合直线的连通域中的点进行拟合,得到{(x1,y1),(x2,y2),…,(xN,yN),label,k,b},其中k表示拟合直线的极角,b表示拟合直线的极径。

②计算未拟合直线的各个连通域中的点到已拟合直线的连通域的平均距离,计算公式为

(2)

式(2)中:若该平均距离小于指定阈值0.5,则认为两个连通域都表示相同的车道线,将未拟合直线的连通域中的点并入到已拟合直线的连通域中,删除该连通域并重新拟合更新极角k和极径b。

③重复上述步骤,直至对所有连通域中的点都进行了关联。

1.4 车道线拟合

车道线拟合是由聚类车道线点得到车道线的过程。针对结构化道路拍照获得的车道图像大致为直线,采用最小二乘法对集合中的各个点进行拟合,并直接调用Python中的应用程序接口。对于每一个标注集合,误差可定义为

(3)

为了使得误差ρ最小,应该使k和b的偏导为 0,公式为

(4)

对式(4)化简得到

(5)

(6)

代入该标注集合中的所有点即可对上述方程进行求解得到k和b。

2 实验过程

实验运用深度学习相关理论方法与传统算法优化方法完成了算法构建,实验阶段,采用opencv库函数与tensorflow框架,所用GPU(graphics processing unit)为Intel i7-8750,通过CUDA8.0与CUDNN V5.0采用Python语言实现了算法内容。

2.1 模型训练

2.1.1 训练数据集

针对车道线检测选用图森未来发布的TuSimple数据集和香港中文大学发布的CULane数据集进行相关研究和实验,大部分车道线明显且清晰,车道线弯曲程度小。

TuSimple数据集采用的是结构化道路图像,包含72 520个训练集和55 640个测试集。该数据集将视频数据通过分帧转换成多张图片形成,并仅对末位图片进行标注。数据集标注采用中心打点式以json文件存储,一张道路图片的标注为一个元组。样本标注示例如图5(a)所示。

CULane数据集用于行车道检测学术研究的大规模挑战性数据集,一共包含133 235张图像。其中数据集分为88 880个训练集,9 675个验证集和34 680个测试集。道路中的车道线用粗实线进行了标注,样本标注示例如图5(b)所示。

2.1.2 模型训练

模型训练过程中将数据集主要分为两个部分:训练集和验证集。训练参数设置迭代次数为10,批处量大小为14,基础学习率初始为0.01,其中动量和权重衰减分别配置0.9和0.000 55。训练误差和验证误差使用均方误差,训练结束时训练误差收敛为0.004 4,验证误差收敛为0.004 5。表1为改进后的SegNet网络模型在车道线数据集下的训练误差和验证误差。

图5 道路标注样图Fig.5 Road marking sample image

表1 模型训练误差与验证误差

2.2 算法评判标准

准确率和召回率是评价目标检测识别算法时最常使用的两项评估指标。准确率用来衡量输出的预测结果中为正确检测为真实值的比例,而召回率用来衡量输出的预测结果之中所包含的应该被正确检测数量的比例。

使用的车道线检测算法是基于深度学习分割算法与传统方法进行优化的融合算法,因此可以使用图像分割的评价指标对检测结果进行像素级的分类评价。F值(F-measure)又称为F1分数(F-score),是准确率(precision,P)和召回率(recall,R)的加权调和平均,用于判断分类模型的优劣,表达式为

(7)

将参数β设为1时,即F值函数设为常见的F1,它综合了准确率和召回率的结果,F1越高则说明分割模型越优秀。

2.3 实验结果与分析

针对所提出的针对SegNet算法的改进算法,基于TuSimple数据集与CULane数据集进行了大量实验。

由于改进的SegNet网络是对其网络架构进行精简,只采用SegNet中的二值化车道特征提取部分,如图6所示。在检测到车道区域后,采用连通域约束方法剔除噪声的影响,同时,依据连通域中的点到其他连通域所拟合的直线的距离来判定是否可将两个连通域并为一类,最后,采用最小二乘法拟合同一类别的点来以确定车道线参数。

图6 二值化车道提取Fig.6 Binary lane extraction

实验分为8个组别,分别对非对称网络结构模型、卷积层与BN层融合以及摒弃传统车道线聚类方法采用连通域处理三处改进方向进行对比实验,结果如表3所示。实验1、实验2、实验3、实验5表明,通过采用改进后的非对称网络结构模型以及将卷积层与BN层融合,减少了单帧图像的处理时间,提高了检测的实时性;实验1、实验4表明,通过采用连通域滤波与关联的方法,避免了使用传统聚类操作中可能由于聚类错误导致的检测错误或失效,从而使得准确率与召回率降低;实验1、实验6、实验7、实验8表明,将三处改进方向融合,可以在保证召回率的前提下,提高检测的准确率。

综上所述,与未改进的算法的对比,在准确率与召回率两项评价算法检测性能的指标当中,改进后的SegNet网络表现在准确率的性能上有很大的提高,在保证了一定的有效检测数的同时,召回率的性能也有相应提升。因此,在F1分数这项模型综合评价指标上,改进后的SegNet网络有了一定的提升,并且检测时间也有所降低,具体实验性能变化如图7所示。

使用改进后的SegNet网络模型对不同测试集进行检测,如图8所示为该算法在TuSimple数据集和CULane数据集下的检测结果。

表2 SegNet算法改进不同模块对模型性能影响对比

图7 不同模块对模型性能影响变化Fig.7 Changes in the impact of different modules on model performance

图8 实验效果图Fig.8 Experimental effect diagram

改进算法与传统的几种车道线检测算法在 CULane 数据集上对比效果如表3所示。其中通过CNN(convolutional neural networks)滤波结合Hough变换、RANSAC(random sample consensus)算法的方法需要针对具体数据集的场景特点人工手动调滤波算子,导致鲁棒性较差,检测效果不明显。Lane Net算法中采用传统聚类方法会出现聚类错误,使得检测精度下降。所改进的模块避免了以上问题造成的检测时间及精度不佳的效果。

从表3可知,使用改进后的SegNet算法相比于以上三种方法在模型综合评价指标(F1分数)上分别提升了0.113、0.044、0.019,且单帧图像处理时间以及检测精度这两方面也都有了提升,其中检测精度分别提升了23.46%、16.7%、3.37%,实现了检测实时性与准确性。

为检测改模型的泛化能力,将改进后的网络模型在不同数据集下进行检测对比,其检测精度(车道线有效检测数/车道线总数)如表4所示。

表3 不同算法在CULane数据集上的检测结果

表4 不同数据集下改进算法的车道线检测结果

改进的SegNet算法模型泛化能力强,在TuSimple数据集和CULane数据集上都有很改的检测精度,分别达到了92.30%与96.89%的检测精度,平均检测精度为94.60%,每帧检测耗时提升 53 ms,鲁棒性强,对数据集特性影响较小。可运用到实际应用中。

3 结论

首先介绍了SegNet算法模型的基本架构,然后对其进行精简与改进。其一是将SegNet算法的卷积层与BN层融合,减少算法运行时间;其二是将SegNet中对称的网络结构改为非对称的“多编码-少解码”架构,同时加入1×1的卷积核实现图像通道数的降维,提高网络的实时性;其三是利用改进后的SegNet算法进行车道线像素点位置的检测,得到检测图像,紧接着采用连通域约束对车道位置的像素点进行提取,随后使用基于距离准则的连通域关联法将同属于一条车道的像素点归为一类,最后通过最小二乘法将其拟合,有效地提高了结构化道路的运行速度,结构化道路中平均检测精度为94.60%,每帧检测耗时提升53 ms,达到了实时检测的目的。

猜你喜欢

像素点车道卷积
基于OpenCV的直道车道线识别技术研究
北斗+手机实现车道级导航应用
图像二值化处理硬件加速引擎的设计
基于3D-Winograd的快速卷积算法设计及FPGA实现
避免跟车闯红灯的地面车道线
基于局部相似性的特征匹配筛选算法
卷积神经网络的分析与设计
从滤波器理解卷积
基于像素点筛选的舰船湍流尾迹检测算法
基于傅里叶域卷积表示的目标跟踪算法