APP下载

基于实例分割的车道线检测方法∗

2023-10-20胡广地胡坚耀

计算机与数字工程 2023年7期
关键词:池化分支车道

刘 雷 胡广地 胡坚耀

(西南交通大学机械工程学院 成都 610031)

1 引言

图像分割[1~4]是计算机视觉三大任务之一,也是自动驾驶汽车场景理解的关键技术之一。由于实际道路中的路面状况非常复杂,使得车道线检测问题一直是众多学者研究的热门方向之一。目前基于视觉的车道线检测大致分为传统图像处理和深度学习两种方法。

Narote,Xing等[5~6]对使用传统图像处理方法的车道线检测进行了综述,重点介绍了预处理、车道建模、特征提取、车道检测、车道跟踪等技术。在传统视觉方法的检测中,对车道线这种细长状的线条结构进行精密的特征提取难度极大。车道线本身结构相对于背景只是占据整幅图像极少的一部分像素,而检测又要求具有很高的健壮性,即它能够在所有复杂的情况下检测到车道,同时又要使检测足够快速,满足实时性要求,显然传统方法并不能满足日益复杂的交通环境下的车道检测。

在深度学习方法中,Lee 等[7]使用编解码结构提出了一个多任务训练网络,并且在数据集上增加了一个车道线消失点标注,以此引导和优化车道线检测结果,但增加了训练特征和推理时间,方法实时性不高。Neven 等[8]提出的LaneNet 是实例分割方法检测车道线的经典之作,该网络没有考虑感受野问题,在深层网络提取不到车道线特征。Qin,Yoo 等[9~10]将车道线检测视为一个分类任务,在预定义行上对车道标识点预测。这种卷积+全连接层的分类网络会产生大量参数,特别是全连接层,使用模型检测时耗费过多的内存资源。Pan 等[11]提出了一种空间卷积网络SCNN,使像素之间的消息在行和列上传递,能够学习到特征的空间关系,但网络增加了推理时间,没有考虑实时性的问题。Ko 等[12]基于关键点估计和实例分割方法,在车道线上生成精确的点,同样没有考虑检测速度,也没有后处理步骤优化错误和遗漏的分割点。

本文提出了一种基于改进的BiSeNet V2 网络[13]车道线检测算法。先对网络进行剪枝和卷积优化,减少模型参数。随后在模型中增加了SE 通道注意力机制[14],使用加权交叉熵损失函数平衡车道线样本分布不均问题,在语义分支设计了一个预测车道线实例存在的置信分类分支,在细节分支增加了金字塔池化结构。后处理方法为直接提取分割图感兴趣行上最大概率坐标为车道线关键点,使用最小二乘算法拟合成三次曲线,作为最终输出结果。除了在开源数据集Tusimple验证外,本文还自制了MiniLane 数据集测试不同场景下车道线检测效果。

2 改进的双边车道线检测算法

细节、语义信息对分割都非常重要,一般语义信息在较深网络层提取,细节信息只在网络浅层才能很好保留。BiSeNet V2是一种双边网络结构,一边网络层数较少提取细节特征,另一边较深网络提取语义特征,再将两边融合,使语义、细节特征更好地利用。

2.1 实例分割网络结构

从图1 可知本文改进的实例分割网络总体采用编码-解码结构,在骨干特征提取网络有上下两个分支:上面是细节分支提取微观特征,关注图像细节。下面是语义分支提取高级语义信息。PPM(Pyramid Pooling Module)[15]是金字塔池化结构;Context Embedding 是一个上下文信息嵌入块,使用全局平均池化和残差连接,能够有效聚合全局上下文信息;Seg head 是上采样层,输出与网络输入图等分辨率大小的分割图,然后与标签分别计算损失;Aggregation Layer是网络特征融合层,其中φ、X表示Sigmoid 操作和矩阵乘法,Down 和Up 分别是4倍下采样与上采样,上下分支经过这些操作后在1/8 处残差连接;绿色框内是辅助训练分支;Lane classification 是车道线分类分支,可以判断属于哪一条车道线和车道线存在与否。

图1 本文车道线检测网络结构图

卷积神经网络注意力机制是提升网络性能的有效手段之一,早期的研究例如Inception架构[16],通过在模块中加入多尺度处理提高性能,但增加了网络结构层次和模型参数量,并不适合实时性检测任务。通过对卷积空间注意力和通道注意力如SE、CBAM 等[17]几种注意力机制研究,本文将几乎不增加推理时间的SE 通道注意力融入图1 语义分支的倒残差块中,SE块见图2,融入SE的倒残差块见图3。

图2 SE通道注意力模块

图3 语义分支倒残差块增加SE通道注意力机制

SE 首先是对输入特征进行全局平均池化,经过两层全连接和Sigmoid 层,最后与输入相乘得到输出,是一种通用的模块,能够嵌入到现有的网格结构中,强化卷积层关注有重要特征信息的特征图,抑制与提取特征无关的通道维度,优化分割效果,几乎不增加任何推理时间,参数也极少。

FCN 全卷积神经网络[18]已经证明了直接进行32、16 倍的上采样的分割效果并不理想,所以本文在原结构基础上舍弃辅助分支的1/16,1/32 分割头。同时将上采样操作改为双线性差值,这种方式不需要进行学习,运行速度快,操作简单,能得到更平滑的分割特征图,在训练和预测可以使模型加速。

网络的细节分支是普通的卷积降维操作,没有很好考虑感受野问题,而车道线虽然像素占比很少,但在图像上范围覆盖很广。而且在特征融合层只是与1/32特征图进行信息融合,为了增加细节分支多尺度特征,保留更多车道线信息,使用了金字塔池化结构来增强特征信息学习能力,如图4 所示。

图4 金字塔池化块PPM(Pyramid Pooling Module)

本文选取了1×1、2×2、3×3、6×6 四种大小不同的池化核将图1 中C3 特征图进行池化,并对池化后的每种特征图通过1×1 调整通道数,压缩为原来的1/4,再经过上采样恢复成原来的特征图大小,最后与原始特征图级联融合,再通过1×1 卷积调整为输入特征图的通道维数。这种金字塔池化结构将局部上下文信息和全局上下文信息结合,增强了图像中的空间特征信息,最终提升了边界分割效果。为了减少细节分支参数,还使用深度可分离卷积和1×1卷积替换标准卷积。

2.2 损失函数

分割网络输出的是二值图像,指出像素属于哪条车道线还是背景。在生成训练标签的预处理阶段,将没有车道标识或者虚线的车道标识仍旧用实线绘制,让网络学习没有视觉线索的车道标识位置。由于车道线与背景之间像素分布很不平衡,本文使用加权交叉熵函数对改进网络进行训练。

ai表示网络预测的输出,yi表示真实的标签,wi是权重参数,n是总的样本数。

为了区分出不同的车道线实例,判断有几条车道线存在,我们使用二分类损失对不同的车道线分类。

yn车道线的分类标签,xn是网络输出的值,n是总的车道样本数。

所以总的损失为

k1,k2分别是两种损失的权重。

2.3 车道线拟合

车道线在转弯处是呈曲线状,为了得到更加准确的车道线标识和消除个别关键点的漏检和错误预测,需要进行后处理修正。本文对预测出的车道线关键点使用最小二乘算法拟合成3 次曲线作为最终输出结果。已知单条车道线预测坐标为(xi,yi,i=1,2,…,n),用p(x)=a+bx+cx2+dx3作为拟合曲线,求得曲线系数之后就可以对车道线进行拟合,先求得均方差为

拟合过程就是求均方差最小值,分别对系数求偏导得

移项用矩阵表示,并化简得到系数矩阵:

求得曲线系数之后就可以对车道线进行拟合,其后处理结果如图5 拟合结果所示,很好地表达了有弯曲路径的车道线。

图5 车道线拟合结果示意图

3 评估标准与实验结果分析

3.1 实验数据与评价指标

Tusimple数据集标注了2、3、4车道的高速公路场景,有3626张训练集和2782张测试图像,图片的分辨率为1280×720。Tusimple 准确率是计算每幅图像平均预测正确的点数,Cper预测正确的车道点数,Sper是真实标签的总的点数,当真实值与预测值的差值小于某一阈值时,即为正确的点数。此外提供了车道线数量的误检率,漏检率,Fpre是错误预测的车道数,Npre是预测的车道数,Mpre是没有预测到的车道数,Ngt是所有的标签车道数。

为了验证提出的算法,我们收集了一个车道线检测数据集,包括高速公路、机场路、城市道路、白天强光、黄昏等几个场景,并且使用了连续样条曲线标注,从采集的2h 的视频中,挑选出这些关键场景,提取了14400帧图片,摄像头的分辨率为1920×1080,fps 为30 帧,由于相邻几帧的图像重复率较高,我们提取每秒的30 帧,只标注最后一帧图像,总共标注了1937 帧图片。自制数据集的评价指标采取,随机划分训练集和验证集,其比例为9∶1,评估指标使用语义分割指标PA(Pixel Accuracy)像素准确率,即分类正确的像素占总像素的比例,MIOU(Mean Intersection over Union)平均交并比即计算的所有类别的交并比求平均。交并比(Intersection over Union)为预测的分割图和真实标签的交集与并集之比。

3.2 网络训练

分割损失函数的加权权重设置为[0.4,1,1,1,1],最多标记了4 条车道线,车道线像素与背景占比极为不平衡,所以设置背景权重为0.4,车道线为1,k1,k2两类损失权重分别为1,0.1。我们将图像分辨率缩小到288×512 作为网络输入,网络初始学习率为0.01,学习率调整策略为每隔10 个epoch 进行0.7 倍比例减小,总共训练了100 个epoch。使用了图像随机翻转、亮度变化、标准化等数据增强手段。在i9-9920X CPU、RTX 2080Ti GPU 配置上训练我们的模型。

3.3 实验结果分析

本文使用原BiSeNet v2 语义分割网络和改进之后的实例分割网络分别在Tusimple 数据集和自制数据集MiniLane进行了实验,对比验证改进之后的效果。图6 展示了训练100 个Epoch 过程的PA像素分类准确率。

图6 网络模型像素分类准确率

从图6 可知,准确率一开始都达到很高的值,是因为背景像素占比太大的原因。本文网络模型在训练100 个Epoch 之后,在Tusimple 和自制数据集的准确率分别稳定在了96.02%和98.17%,由于数据集样本数、环境条件不同,所以导致两种数据集最后的准确率不一样。而BiSeNetv2对车道线的分割准确率分别为95.1%和95.7%。证明改进模型对车道线的分割结果更好,能有效提高检测精度。我们对Tusimple数据集计算了官方评估指标,并与当前流行方法进行了对比评估,如表1所示。

表1 Tusimple 实验结果

从表1 中可知,本分改进模型在Tusimple 数据集的评估指标中准确率达到了97.15%,有效提高了车道线检测精度,同时保证了较高的检测速度。并且与同样语义分割方法[8,11]相比,车道线误检率FP 明显性降低,这在车道线检测任务中显示为误报率。误报率过高即错误的将不是车道线的地方检测为车道线,容易让自动驾驶汽车做出错误的判断,危害安全驾驶。

最后本文在两种数据集划分的验证集上计算了PA像素分类准确率和平均交并比MIOU,并做了检测速度对比,结果如表2 所示,自制数据集的准确率均高于Tusimple,检测速度由于分辨率较大有所下降。

表2 本文车道线检测准确率比较

图7为本文检测结果图,第1列为网络分割图,第2 列为关键点提取,第3 列为拟合结果。包括Tusimple 数据集和自制数据集MiniLane 在国内高速公路、机场路、隧道、黄昏、强光等条件下结果,实例分割方法区分了不同车道线,因此以中间线表示主干车道线,左侧线表示左侧车道线,右侧线表示右侧车道线。

从检测结果来看,本文提出的方法具有很好的分割效果,不仅仅局限在单一的驾驶场景,特别是在自制的数据集各种复杂场景,依旧有着优秀的表现,在分割模糊的帧率,简单的后处理关键点提取,也能修正检测的效果,得到更好的车道线检测结果。实验结果表明本文提出的网络特征提取能力很强,能够适应各种复杂的路面环境,有效地解决了车道线检测问题。

4 结语

本文利用双边分割网络融合了车道线细节信息和高级语义信息,将车道线检测视为一个实例分割任务,不仅仅能分割车道线与背景像素,还能区分出是哪条车道线和判断该条车道线存在与否。通过在语义分支加入注意力机制优化网络特征提取效果,在网络细节分支使用金字塔池化模块,将局部上下文信息和全局上下文信息结合,这种多尺度的结构增强了图像空间特征信息。使用加权交叉熵作为分割损失函数,优化了背景与车道线像素比例相差较大的问题,简单的后处理拟合方法修正了错误的分割像素和漏检的像素,并设计了车道线分类分支,区分不同的车道线实例,检测不受车道线数量的限制。在一些复杂的环境中能够保持很高的鲁棒性检测,相较于其他分割方法在检测精度和速度都有提高,证明了本文方法的有效性,能够在自动驾驶汽车上实际应用。

猜你喜欢

池化分支车道
基于Sobel算子的池化算法设计
卷积神经网络中的自适应加权池化
北斗+手机实现车道级导航应用
设施蔬菜病害识别中的CNN池化选择
避免跟车闯红灯的地面车道线
浅谈MTC车道改造
巧分支与枝
基于卷积神经网络和池化算法的表情识别研究
一类拟齐次多项式中心的极限环分支
低速ETC/MTC混合式收费车道的设计与实现