车道线检测:Towards End-to-End Lane Detection an Instance Segmentation Approach论文解析
论文链接:https://arxiv.org/pdf/1802.05591.pdf
论文出处:CVPR2018
论文代码:https://github.com/MaybeShewill-CV/lanenet-lane-detection
1. 摘要
- 本文将车道检测问题看作一个实例分割问题(其中每个车道都形成自己的实例)可以进行端到端的训练。
- 装配车道前对分段的车道实例进行参数化,我们应用了一个以图像为条件的学习透视变换(不适用于固定的“鸟瞰”变换),这样,我们确保了一种对道路变化具有鲁棒性的车道匹配。
- 运行速度为50帧/秒,可以处理不同数量的车道并应对车道变化。
- 在tuSimple 数据集上取得了不错的效果。
2. 研究现状
2.1 传统车道线检测
- 传统的车道检测方法依靠高度专业化的手工特征标记和启发式识别来识别车道线。
- 这种手工标记的方法主要是基于颜色的特征,结构张量,条形过滤器,脊线特征等,它们可能与霍夫变换,或卡尔曼滤波器相结合。
- 识别车道线后,采用后处理技术来滤除误检以形成最终车道。
- 缺点:很容易由于道路场景变化而导致鲁棒性问题。
2.2 基于深度学习的车道线检测
- 用深度神经网络取代手工标记,通过构建一定量学习密集的特征检测器进行预测,即像素级的车道分段。
- 缺点:生成的是二元分段车道,仍然需要分解到不同的车道实例中。为了解决这个问题,一些研究应用了后处理技术,这些技术依赖几何特性为指导的启发式算法。启发式方法在计算上比较昂贵,并且由于道路场景变化容易出现鲁棒性问题。
2.3 实例分割方法实现端到端车道检测
- 本文设计了一个多任务网络分支,包括一个车道分割分支和一个车道嵌入分支,可以进行端到端的训练。
- 车道分割分支具有两个输出类别,即背景或车道。
- 车道嵌入分支进一步将分段的车道像素分解成不同的车道实例(instance)。
- 使用聚类损失函数训练的车道嵌入分支将车道ID分配给来自车道分割分支的每个像素,同时忽略背景像素。
- 通过估算车道实例,即哪些像素属于哪条车道,我们希望将它们中的每一个转换为参数描述。为此,曲线拟合算法被广泛应用。
- 为了在保持计算效率同时提高组合的质量,通常使用变换矩阵(固定的)将图像转换为“鸟瞰”图像(BEV)并在那里执行曲线拟合。
- 但是,如果地平面变化较大(例如通过倾斜上坡),则该固定变换不再有效。
- 为了弥补这种情况,我们在对曲线进行拟合之前对图像应用透视变换。训练一个神经网络来输出变换系数。神经网络将图像作为输入,并针对车道配合问题量身定制一个损失函数进行优化。
- 整个识别流程如下图所示:
- 论文贡献归纳:
(1)分支的多任务体系结构,将车道检测问题作为实例分割任务来处理,处理车道变化和允许推断任意数量的车道。特别地,车道分割分支输出密集的每像素车道段,而车道嵌入分支进一步将分段的车道像素分解成不同的车道实例。
(2)给定输入图像的网络估计透视变换的参数,透视变换允许车道拟合对路面变化具有鲁棒性,例如,上坡/下坡。
3. 方法
- 设计的车道实例分割网络命名为:LaneNet
- LaneNet将二进制车道分割与单镜头实例分割的聚类损失函数相结合。
- 在LaneNet的输出中,每个车道像素被分配它们对应车道的ID。
- 因为LaneNet输出每个车道的像素集合,我们必须通过这些像素来获得车道参数化的曲线。
3.1 LaneNet
- 网络结构图如下:
- LaneNet使用一个共享的encoder,对输入图像进行处理,得到2个branch:嵌入branch和语义分割的branch。
- 嵌入branch可以将不同的车道线区分为不同的instance;因为只需要考虑车道线,因此语义分割的结果是二值化图像;然后对2个branch做聚类,最终得到结果。
3.2 使用H-Net进行曲线拟合
- LaneNet可以得到每个车道的像素集合,需要将这些像素进行拟合,得到车道的曲线。
- 通常情况下,车道像素被投影成“鸟瞰图”(BEV)表示,使用一个固定的转换矩阵。
- 然而,由于变换参数对所有图像都是固定的,所以当遇到非地面时,例如在斜坡上,这会引起一些问题。
- 为了缓解这个问题,我们训练一个网络,称为H-Network,它可以估算输入图像上的“理想”透视变换的参数。
- 整个流程:将输入的RGB图像作为输入,使用LaneNet得到输出的实例分割结果,然后将车道线像素使用H-Net输出得到的透视变换矩阵进行变换,对变换后的车道线像素在变化后的空间(即鸟瞰BEV空间)中进行拟合,再将拟合结果经过逆投影,最终得到原始视野中的车道线拟合结果。
- H-Net将RGB作为输入,输出为基于该图像的透视变换系数矩阵,优化目标为车道线拟合效果。
- 其中,透视变换(Perspective transformation)为H,有6个自由度
H-Network就是来学习H中的6个参数。 - 车道线转到在BEV空间的像素点采用二阶或三阶多项式进行最优拟合。
4. 结果
4.1 数据集
tuSimple lane dataset:
- 包含3626个训练图像,2782个测试图像。
- 环境条件有好的和一般的。
- 图像记录了2-lane/3-lane/4-lane,或者更多的高速公路。
- 在不同时间记录。
- 每张图片提供19个对应的先前的图片,这些图片没有标签。
- 标签为json格式。
- 标签包含车道线中 x,y的离散点。
4.2 设置
- LaneNet:嵌入维数(embedding dimension)是4;
;图像尺寸为512x256;batch size是8;学习率为5e-4。
- H-Net:使用三阶多项式拟合车道曲线;输入图像尺寸128x64;batch size为10;学习率为5e-5。
- Speed:当输入图像尺寸为512x256,检测频率为50fps。
4.3 结果
- 测试准确率(误差)
- 测试速度
- 结果展示