基于DSA-UFLD 模型的车道线检测算法

2023-04-19 06:38程国建冯亭亭
智能计算机与应用 2023年3期
关键词:车道损失特征

程国建, 冯亭亭

(西安石油大学 计算机学院, 西安 710065)

0 引 言

随着国内社会经济的快速发展,汽车的保有量逐年增加,而汽车为人们出行提供便利的同时也增加了发生交通事故的可能性,因此如何避免交通事故的发生、保证安全驾驶,已成为业界研究的重点[1]。 与此同时,人工智能(Artificial Intelligence,AI)、深度学习(Deep Learning,DL)的研究正日趋深入,智能交通与自动驾驶技术相继被提出并广泛用于交通行业。 自动驾驶技术通过感知系统获取道路信息,依靠决策系统分析信息、规划行驶路径,最后利用控制系统保证车辆的安全行驶[2]。 该技术的应用不仅改善了交通状况、提高了交通效率,并在一定程度上推动了工业研究的发展。

车道线检测[3]作为辅助自动驾驶的关键技术,能够精确识别道路,从而帮助自动驾驶汽车做出决策,保证车辆行驶在正确的区域内。 其基本步骤包括图像采集、图像预处理、特征提取和车道线拟合,这里的图像采集是检测任务的基础,而特征提取是检测任务的核心[4]。 依据特征提取方法的不同,可以将目前已经采用的车道线检测算法分为2 类:传统车道线检测、基于深度学习的车道线检测[5]。 对此可给出阐释分述如下。

(1) 传统车道线检测算法。 传统车道线检测有基于特征和基于模型等2 种方法。 其中,基于特征的检测方法利用车道线的颜色、纹理、边缘等物理特征,根据车道线与道路周围环境的差异,对车道线进行分割与处理[6]。 Danilo 等学者[7]提出一种道路特征融合方法进行车道线检测,通过融合颜色、边缘和速度等特征,能够有效消除车道线检测中的道路障碍。 Lee 等学者[8]融合了车道线的颜色信息和梯度信息,并结合扫描技术,改善了夜间环境的车道检测效果。 而基于模型的车道线检测是利用道路的先验知识,针对道路结构的几何特征,结合数学知识建立车道线模型,通过Hough 变换、RANSAC 算法和最小二乘法[9]求解模型参数,拟合车道线[10]。 宋锐等学者[11]使用几何矩阵采样模型检测车道线,有效缓解了图像噪声的干扰。 Xu 等学者[12]采用划分道路区域和RANSAC 算法实现了车道线的识别。

传统的车道线检测方法原理简单,易于实现,在简单场景下的检测效果较好,但传统方法的适应性较差,局限于特定环境下,在遮挡、压线、磨损、阴雨等复杂环境中,算法的运算成本较高、鲁棒性较差,达不到预期效果[13]。

(2)基于深度学习的车道线检测。 基于深度学习的车道线检测算法利用深度神经网络模型自动获取车道线特征,通过在训练中不断修正模型参数,提高了复杂环境下的车道检测效果[14]。 宋扬等学者[15]提出一种基于深度图像增强的车道线检测方法,使用生成对抗网络进行图像增强,采用LaneNet提取图像特征,改善了夜间车道线检测的效果。 Liu等学者[16]设计出基于单目视觉的车道线检测模型,通过使用全卷积神经网络、残差结构和金字塔池化,提高了在阴影遮挡情况下车道线的检测精度。 Qin等学者[17]提出了一种基于结构感知的快速车道线检测方法(Ultra Fast Structure-aware Deep Lane Detection,UFLD),该算法基于图像的全局特征,将图像网格化,在每个预定义行上选择车道位置,并进行分类,提高了检测速度,同时也解决了无视觉线索问题。

UFLD 算法虽然提高了检测速度,但准确率不高,在弯道场景下的效果欠佳。 借鉴UFLD 的算法思想,提出了一种带注意力机制的稠密神经网络(DenseNet with Spatial Attention Mechanism based on UFLD,DSA-UFLD)用于车道线检测。 相比UFLD算法,DSA-UFLD 网络在检测精度和效果上有明显改善。

1 基于DSA-UFLD 的车道线检测原理及方法

DSA-UFLD 算法在训练前使用自适应图像亮度增强提高图像的清晰度;利用预训练模型DenseNet-121 进行特征提取,通过DenseNet-121 的密集连接结构最大化前后层间的信息交流,采用预训练模型的权重在训练中通过微调取得了较好的效果,降低了训练成本;将提取的特征图经过空间注意力机制重新分配权重,实现了信息增强;通过改进结构损失函数,改善了弯道检测效果。

1.1 图像增强

图像增强能够提高图像的质量、改善图像的视觉效果、增强图像清晰度和丰富图像信息。 在本文中,除了使用随机翻转和平移进行图像增强外,还采用了一种图像亮度自适应增强算法,用于缓解图像光线不足对车道线检测的干扰。 图1 为亮度增强的流程,对输入图像先判断亮度值,若亮度值大于给定阈值,说明图像亮度足够,直接输出图像;若小于给定阈值,则利用所给分位点计算分位值区间,并去掉图像分位值区间以外较大或较小的像素值,接着将改变后图像的像素值调整到一定区间范围内,再将其输出。

图1 图像亮度自适应增强算法流程

图2(b)为使用亮度增强后的效果图。 显而易见,校正后的图像中,车道线与周围环境的对比度增强,改善了图像低灰度区域集中的现象,提升了整个图像的视觉效果。

图2 图像亮度自适应增强算法的效果Fig. 2 Effect of images brightness adaptive enhancement algorithm

1.2 DSA-UFLD 网络结构

DSA-UFLD 算法采用迁移学习模型DenseNet-121 提取图像特征,相比ResNet18[18],预训练的DenseNet-121 网络,加强了特征重用、减少了参数量和训练成本。 网络结构如图3 所示,输入图像为3 通道RGB 图,大小为288×800,利用DenseNet-121网络进行特征提取得到1 024×9×25 大小的特征图,再将特征图输入到空间注意力机制模块,通过空间维度的变换提取图像的关键信息。

图3 DSA-UFLD 网络结构Fig. 3 Network structure of DSA-UFLD

DSA-UFLD 网络包括2 个分支:辅助分割分支和分类分支。 在辅助分割分支中,使用上采样模块对特征图进行2 次上采样,再经过卷积核为3×3、扩张率为2 的空洞卷积,得到实例分割结果,辅助分割分支的输出主要用于训练过程的实例分割和交叉熵损失计算,在测试环节,此分支可去掉。 在分类分支中,对特征图进行池化、扁平化处理,再经过2 个全连接层,输出对车道线的预测结果:

其中,c=4,表示最大车道线数;h=56,表示行锚数;X为提取的特征图;fij为分类器。 将每张图像划分为包括56 个行锚、每个行锚包含101 个网格的网格图,最后一个网格表示道路背景,将车道线的检测看作一种基于行的分类问题。 则Pi,j,:表示第j行的每个网格属于第i条车道线的概率,该值主要用于分类分支损失函数的计算和预测车道线的位置。

1.2.1 特征提取网络

特征提取使用迁移学习模型DenseNet-121,DenseNet 网络由Huang 等学者[19]在2017 年提出,包括DenseNet-121、DenseNet-161、DenseNet-169及DenseNet-201 等4 种结构。 该网络是一种基于密集连接(dense connection) 的卷积神经网络(Convolutional Neural Networks, CNN)[20],如图4 所示,每层的输入包含前面所有层的输出,不需要消耗多余时间就可访问前面层的低级特征,有效地实现了特征重用[21]。 DenseNet 每层网络输入与输出的关系式为:

图4 DenseNet 的密集连接机制Fig. 4 DenseNet's dense connection mechanism

其中,[x0,x1,…,xL-1] 表示将前L -1 层的特征图进行拼接,作为第L层的输入;HL(·) 表示非线性变换函数,由BN+ReLU+3×3 Conv 组成;xL表示第L层的输出。

DSA-UFLD 算法使用预训练的DenseNet-121密集连接网络进行特征提取,通过复用DenseNet-121 训练好的权重参数,根据训练结果不断进行微调,加快了网络的学习速度,并降低了训练过程的时间成本。

1.2.2 注意力机制

注意力机制是研究人员根据人类注意力的合理有效分配机制,提出的一种高效实现信息资源分配的方式,最早被用于机器翻译领域,经过不断发展已被广泛应用于图像处理领域[22-23]。 在目标检测任务中,注意力机制能够根据任务需求对特征图分配不同的权重,达到聚焦关键信息而弱化其他信息的目的,使整个网络提取到更有价值的信息。

图5 为本文采用的空间注意力机制模块,将输入的特征图xinput沿通道轴分别进行最大池化(max pooling)和平均池化(average pooling),得到通道数为1 的xave和xmax,并将二者拼接形成有效特征。 接着,通过3×3 的过滤器f3×3得到空间注意映射,然后对空间注意映射进行Sigmoid激活获取注意力权重图,最后利用权重图对xinput重新赋予权重。 具体实现过程可由式(3)进行描述:

图5 空间注意力机制Fig. 5 Spatial attention mechanism

1.2.3 上采样模块

DSA-UFLD 网络在辅助分割阶段采用图6 中的上采样模块实现解码,其核心是使用3×3 的卷积进行特征再提取,获取更丰富的图像信息;并在通道维度上采用批量标准化将输出数据归一化为相同的分布;同时经过ReLU激活函数增强非线性,更好地拟合训练数据;再采用转置卷积代替双线性插值进行二倍上采样,相比UFLD 算法中使用的双线性插值法,转置卷积通过在训练过程中学习模型参数,使上采样达到最优。

图6 上采样模块Fig. 6 Upsampling module

1.3 损失函数设计

基于UFLD 的算法思想,DSA-UFLD 算法采用4 种损失函数,分别是:辅助分割分支使用交叉熵损失Lseg、分类分支使用分类损失Lcls、相似度损失Lsim以及形状损失Lshp。 文中拟做研究表述如下。

(1)交叉熵损失。 具体公式为:

其中,m为批量大小;y为真实标签值;a为预测的类分布;Lseg表示一个批量样本的损失值。

(2)分类损失。 具体公式为:

其中,Pi,j,:由式(1)计算所得,为第j行的每个网格属于第i条车道线的概率;Ti,j,:表示真实标签;LCE表示交叉熵损失函数。

(3)相似度损失。 用于描述相邻行间的平滑性,具体公式为:

(4)结构损失。 用于约束车道线的形状,在UFLD 算法中,使用二阶差分与0 的差值将车道线约束为直线,但在弯道场景下表现不佳。 因此在本文中将车道线定义为二次曲线,利用相邻行间的二阶差分约束车道线形状,即二阶差分与二阶差分的差值,则结构损失可表示为:

其中,Li,j表示第i条车道在第j个行锚上的位置,该位置由公式(8) 确定:

其中,w=100,表示网格数,probi,j,k是对公式(1)的预测值做softmax处理,得出的第i条车道出现在第j个行锚、第k个网格上的概率。

经过反复实验得出,通过对结构损失分配较小的权重,可以达到在不影响直线车道检测效果的同时,提高弯道场景下车道线检测的准确率。 因此总损失可表示为:

2 实验

2.1 实验环境与数据集

DSA-UFLD 算法采用Python 作为开发语言,网络搭建基于PyTorch 框架,实验所使用的服务器配置为Tesla P100 16 G,模型的训练与测试均采用GPU 加速器进行。

实验数据集采用图森公司(TuSimple)于2018年公开的TuSimple 车道线数据集[24]。 该数据集采集于美国的加利福尼亚州,包括中等天气条件、不同时间段和不同交通状况下的城市交通公路场景,每个场景包括20 帧图像,前19 帧主要用于车道线视频检测,因此在实验中使用第20 帧图像。 TuSimple车道线检测数据集有训练集3 626 张、测试集2 782张,每张图像的分辨率为1280×720,车道线总数不超过5 条,图7 为数据样本与标签。 为测试DSAUFLD 算法在弯道处的效果,在训练结束后,通过对测试集进行人工挑选,得到300 张弯道数据集,该数据集同样包括不同时间段和交通状况下的道路场景。

图7 原始数据样本与标签Fig. 7 Raw data samples and labels

2.2 评估标准

本文采用目标检测领域常用的准确率Acc(Accuracy)、漏检率FN(False Negative)和误检率FP(False Positive)作为车道线检测的评价指标。对此内容可做剖析阐述如下。

(1)准确率。 用于衡量模型正确预测的能力。推得公式如下:

其中,Cclip表示模型正确预测的车道线点数,Sslip表示相应的groud-truth 中的车道线点数。

(2)漏检率。 该值为模型在预测中将车道线点识别为非车道线点的比例。 推得公式如下:

其中,Mpred表示模型在预测中漏检的车道线点数,Ngt表示标签中所有的车道线点数。

(3)误检率。 该值为模型将非车道线点预测为车道线点的比例。 推得公式如下:

其中,Fpred表示预测时误检的车道线点数,Npred表示预测结果中车道线点总数。

2.3 实验结果

使用TuSimple 训练集在DSA-UFLD 模型上进行训练,原始图像像素为1280×720,为提升检测速度,将图像像素压缩至288×800。 训练过程中,迭代周期设为200,batchsize为8,初始学习率为0.000 1,为避免陷入局部最优,在训练中根据训练步数采用余弦退火方法调整学习率。 优化器采用收敛速度较快的Adam,权重衰减因子为0.000 1。保存训练中的最优模型,并将模型用于TuSimple 测试集和弯道测试集以测试性能,并与UFLD 算法进行对比。

(1)主观检测性能分析。 图8 为2 种算法在直线车道和弯道场景下的部分测试效果,前两列为DSA-UFLD 的检测结果,后两列为UFLD 的检测结果。 由图8 可知,2 种算法均可检测出较为完整的车道线,但通过仔细对比可以发现,DSA-UFLD 算法无论在直线车道、还是弯道,都能检测出较平滑的车道线,不仅具有良好的延伸性,而且在弯道处预测车道线与真实车道线的贴合程度也高于UFLD 算法。

图8 测试结果Fig. 8 Test results

(2)量化检测性能分析。 依据上文提到的评价指标,分别计算准确率、漏检率和误检率,其结果见表1 和表2。 这里,表1 是UFLD 和DSA-UFLD 在TuSimple 测试集上的表现,表2 为二者在弯道测试集上的结果。 由表1、表2 中数据可知,DSA-UFLD算法无论是在TuSimple 测试集、还是在弯道测试集上,准确率都高于UFLD 算法,且漏检率和误检率均有所下降。

表1 TuSimple 测试集评估结果对比Tab. 1 Comparison of TuSimple test set evaluation results

表2 弯道测试集评估结果对比Tab. 2 Comparison of evaluation results of curve test set

3 结束语

本文通过改进UFLD 算法,提出一种DSAUFLD 模型实现车道线检测。 该方法通过使用图像亮度自适应增强,提高了训练图像的清晰度和车道线的辨识度;将UFLD 模型的编码器ResNet18 替换为预训练网络DenseNet-121,利用密集连接最大化了前后层间的信息交流,实现了特征重用;并使用空间注意力机制提取车道线的关键信息,抑制了无用信息;对结构损失函数进行改进,将车道线约束为二次曲线,通过为结构损失分配较小的权重,提高了直线车道的识别准确率,并改善了弯道场景的检测效果。 从主观检测和量化检测两方面分析实验结果可知,DSA-UFLD 算法在准确率和检测效果上都明显优于UFLD 算法,因此,本文提出的算法具有一定的可行性和应用前景。

猜你喜欢
车道损失特征
北斗+手机实现车道级导航应用
胖胖损失了多少元
避免跟车闯红灯的地面车道线
浅谈MTC车道改造
如何表达“特征”
不忠诚的四个特征
玉米抽穗前倒伏怎么办?怎么减少损失?
抓住特征巧观察
一般自由碰撞的最大动能损失
低速ETC/MTC混合式收费车道的设计与实现