一骑绝尘 | LATR:单目3D车道线检测新方案(ICCV'23 Oral)!

论文介绍了一种新的单目3D车道线检测算法LATR,基于视觉特征和相机参数,通过车道感知查询和动态3D地面位置嵌入,无需中间3D代理,提高车道检测的准确性。LATR在ICCV2023上展示了优于现有方法的性能,特别是在复杂道路条件下。
摘要由CSDN通过智能技术生成

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

今天为大家分享一篇在ICCV2023上最新中稿的单目3D车道线检测算法—LATR!

>>点击进入→自动驾驶之心【车道线检测】技术交流群  

论文作者 | Yueru Luo

编辑 | 自动驾驶之心

c20626051652c9f7a21a69f21a044921.png

1. 引言

f2f7ccab45632e3c4040deb7331115fc.png

3D车道检测对于自动驾驶中的各种应用非常重要,例如轨迹规划和车道保持。尽管基于激光雷达的方法在其他3D感知任务中取得了显著的进展,但最近3D车道检测的进展更倾向于使用单目摄像头,因为与激光雷达相比,它具有一些优势。除了低部署成本外,摄像头相比其他传感器具有更长的感知范围,并且可以生成具有丰富纹理的高分辨率图像,这对于检测细长的车道至关重要。

由于缺乏深度信息,从单目图像中检测3D车道具有挑战性。一种直接的解决方案是基于2D分割结果和像素级深度估计来重建3D车道布局,就像SALAD方法中提出的那样。然而,这种方法在训练时需要高质量的深度数据,并且严重依赖于估计深度的精确性。另一种方法是CurveFormer,它使用多项式来建模前视图中的3D车道。虽然它避免了不确定的视角变换,但是其设计中采用的多项式形式限制了捕捉各种车道形状的灵活性。相比之下,目前主流的方法更倾向于使用基于前视图图像特征和相机参数构建的3D代理表示。这些代理表示是基于逆透视映射(IPM)将图像特征投影到鸟瞰图中构建的,不依赖深度信息。由于车道本质上存在于道路上,大多数这些方法通过IPM将图像特征投影到鸟瞰图中,构建3D代理。然而,IPM严格基于平坦地面的假设,在许多真实驾驶场景(如上坡/下坡和颠簸)中导致3D代理与原始图像之间的不对齐。这种不对齐与图像中的畸变混在一起,不可避免地影响到对道路结构的准确估计,危及驾驶安全。尽管尝试通过引入可变形注意力来缓解这个问题,但不对齐问题仍然没有得到解决。

基于上述观察,本文旨在通过“直接从前视图中定位3D车道,无需任何中间的3D代理,并通过具有车道感知的查询改进3D车道检测”。受2D目标检测器DETR的启发,我们将车道检测作为一个端到端的集合预测问题,并形成了LAne detection TRansformer(LATR)模型。LATR使用“车道感知的查询”和“动态3D地面位置嵌入”来从前视图图像中检测3D车道。我们设计了一种车道表示方案,用于描述车道查询,更好地捕捉3D车道的特性。此外,我们利用车道感知特征为查询提供丰富的语义和空间先验信息。由于纯粹的前视图特征缺乏对3D空间的感知,我们通过将假设的3D地面的3D位置信息注入到前视图特征中来引入3D位置信息。这个假设的地面被初始化为一个水平的网格,并在监督下经过迭代优化以适应地面真实情况。最后,车道感知的查询通过一个Transformer解码器与3D感知特征进行交互,并通过MLP生成3D车道预测。

2. 方法

7981000d8c81774f03d767d9bb84bea9.png

这篇论文提出了一种用于3D车道检测的方法。该方法基于视觉和LiDAR数据,通过深度学习和三维几何信息的融合来实现车道检测。具体方法包括数据获取、视觉特征提取、LiDAR特征提取、多模态融合以及车道检测和预测。

2.1 Lane-aware Query Generator

Lane-aware Query Generator(基于车道的查询生成器)是一种在车道检测算法中提出的组件,旨在提高算法的性能。与先前的方法不同,该Lane-aware Query Generator引入了一种动态方案来生成查询嵌入,这些嵌入能够感知输入图像中的车道结构。

Lane-aware Query Generator生成具有两种不同粒度的查询嵌入:车道级别和点级别。车道级别嵌入捕捉每条车道的整体结构,而点级别嵌入则收集沿车道特定点的局部特征。这两种级别的嵌入然后组合在一起,形成最终的查询嵌入。为了生成车道级别嵌入,首先对图像特征图中的车道实例的特征进行编码,使用车道感知特征聚合器。该聚合器利用实例激活图(IAMs)来收集不同车道的特征。IAMs是根据图像特征和表示像素空间定位的两通道特征图动态生成的。通过将IAMs与转置后的图像特征图相乘,得到车道级别嵌入。点级别嵌入表示车道内点之间的关系。点级别嵌入不是直接从图像特征中派生出来,而是表示为一组可学习的权重。每个权重对应于预定义的参考点y^i的嵌入。通过广播求和,将车道级别和点级别嵌入结合起来,得到车道感知的查询嵌入。这使得模型能够区分不同的车道并基于车道级别嵌入对点进行分组。通过共享点级别嵌入,模型可以捕捉不同车道之间的相对关系和共享特征,而无需引入硬几何先验或复杂的监督。

也就是说,Lane-aware Query Generator通过引入车道特定信息,增强了查询嵌入,使车道检测算法能够利用从图像特征中得到的有价值的二维车道先验信息。

01baf1a6d3852e3f9ad0f7e2bd341428.png

2.2 Dynamic 3D Ground Positional Embedding

Dynamic 3D Ground Positional Embedding动态三维地面位置嵌入是一种用于车道检测和预测任务的方法,它通过在模型中引入三维地面的先验知识来提高性能。下面是Dynamic 3D Ground Positional Embedding方法的公式介绍:

  1. 位置嵌入生成:首先,使用相机参数将三维车道的地面平面投影到二维图像上。通过投影,我们得到投影点的二维坐标和三维位置信息。然后,使用一个多层感知机(MLP)将投影点的三维位置信息转化为三维地面位置嵌入。最终,我们得到一个与输入图像尺寸相同的三维地面位置嵌入张量。

  2. 动态平面更新:在解码器的每个层中,使用图像特征和投影画布预测矩形变换参数。这些参数用于更新初始平面上的投影点,使其逼近真实地面的形状。通过迭代应用矩形变换参数,我们可以在每个解码器层中逐步更新平面以更好地匹配真实地面。

  3. 三维车道位置预测:在解码器中,使用三维地面位置嵌入和特征图生成每个像素的车道属性预测。通过将特征图和地面位置嵌入进行融合,并使用一个多层感知机(MLP),我们可以生成车道属性预测。然后,通过softmax操作将车道属性预测转化为车道预测概率分布。最后,使用车道预测概率分布和平面点的投影坐标来计算车道的三维位置。

通过以上步骤,Dynamic 3D Ground Positional Embedding方法能够有效地学习和推理3D车道位置,而无需额外的任务或复杂的先验假设。

那么Dynamic 3D Ground Positional Embedding方法对于复杂地面形状的适应性如何?Dynamic 3D Ground Positional Embedding方法在处理复杂地面形状时具有较好的适应性。由于该方法使用了三维地面位置嵌入和动态平面更新,它能够捕捉到地面的形状变化和细节信息。通过位置嵌入生成阶段,模型能够学习到地面的三维位置信息,并将其编码为嵌入向量。这使得模型能够理解地面的几何特征,包括高度、倾斜度和曲率等。因此,对于复杂的地面形状,模型可以通过地面位置嵌入来表示并学习这些形状的特征。动态平面更新阶段允许模型在解码器的每个层中通过矩形变换参数来逐步更新地面平面的形状。这使得模型能够根据图像特征和投影画布的预测,动态地调整地面平面的形状以更好地适应复杂的地面形状变化。通过迭代更新,模型可以逐渐逼近真实地面的形状。因此,Dynamic 3D Ground Positional Embedding方法能够对复杂地面形状进行建模和预测。它能够捕捉地面的几何特征,并通过动态更新来适应各种形状变化。这使得该方法在处理复杂的车道检测和预测任务时具有较高的准确性和鲁棒性。

2.3 Prediction Head and Losses

预测头(Prediction Head)是一种组件,用于根据查询生成最终预测结果。该方法中包含两个预测头:一个用于3D位置估计,另一个用于车道类别分类。

对于3D位置估计,使用多层感知器(MLP)作为模型,输入为查询 ,输出为三个值:、 和 。其中, 和 是 大小的张量,表示与最后一个解码器层中相应参考点的偏移量。 是 大小的张量,表示每个预测车道点的可见性,指示该点在图像中是否有效。结合预定义的纵向坐标 ,可以得到 组3D点,表示为 。

对于车道类别分类,首先沿着查询的点维度进行最大池化,然后使用一个MLP对每个实例进行分类。MLP的输出记为 ,是一个 大小的张量,其中 是可能的类别数量。 张量表示每个车道的类别预测结果。在最终预测中,被分类为"背景"的车道将被舍弃。

损失(Losses)包括三个部分:实例分割辅助损失 、3D地面感知平面更新损失 和 3D车道预测损失 。

3D位置估计损失由四个项组成:、、 和 。使用L1损失衡量 和 ,使用二元交叉熵(BCE)损失衡量 。

车道类别分类损失是分类损失 的加权和。使用Focal损失作为分类损失函数,其中的参数为 和 。

总体损失 是这三个损失的加权和:、 和 。具体的权重分别记为 、 和 。其他权重,如 、、 和 ,根据需要设定以平衡不同损失项的贡献。

总结一下,预测头使用MLP对查询进行处理以生成最终预测结果。损失由实例分割辅助损失、3D地面感知平面更新损失和3D车道预测损失组成。不同的损失函数(如L1损失、BCE损失和Focal损失)用于不同的组件和损失,以满足特定任务的要求。

3. 实验

65d3e21e293b825cb6efe09eb1eb7eb4.png

我们提出了两个模型,分别是LATR-Lite和LATR。其中,LATR-Lite是一个轻量级版本,只包含两个解码器层。而LATR是完整版本的模型。在F1得分方面,LATR-Lite达到了61.5,略优于已有的3D车道检测方法,如3DLaneNet、GenLaneNet和Persformer等。而LATR在F1得分方面更进一步,达到了61.9,成为目前公开数据集上的最佳结果。我们还将这些方法与其他几个常见的3D车道检测方法进行了比较。在X和Z方向的误差值上,LATR表现出色,优于其他方法。Persformer和CurveFormer在F1得分方面与LATR相当,但在X和Z方向的误差值上稍逊。而3DLaneNet和GenLaneNet在各项指标上表现相对较差。除了在整个OpenLane数据集上的比较,我们还对不同场景下的性能进行了评估。在各种场景中,包括上下坡、曲线、极端天气、夜间、交叉口和合并与分离等,LATR-Lite都取得了最佳结果。而LATR在大多数场景下与LATR-Lite相当,只在极端天气下稍逊一些。根据提供的实验数据,我们的模型在不同指标和场景下都表现出色,并且在一些方面优于其他先前的3D车道检测方法。

4. 讨论

1337623cc9b7a8eef0158de777b0c0c2.png

论文提出的方法在3D车道检测领域具有一些显著的优点。该方法在公共数据集上表现出色,并超过了多模态方法。这表明该方法在一般情况下能够有效地检测和预测车道。这种性能的提升对于实际应用而言非常有价值,可以为自动驾驶系统提供准确和可靠的车道信息。该方法采用了基于视觉的方法,能够从图像中提取车道线的特征。这种基于视觉的方法具有广泛的适用性,因为视觉传感器在现代车辆中广泛使用,并且易于获取和处理。此外,该方法还可以通过使用卷积神经网络等深度学习技术来学习和提取更高级别的特征,从而提高车道检测的准确性。

然而,这种基于视觉的方法也存在一些缺点。其中一个主要的缺点是对关键视觉线索的敏感性。当出现光线干扰、模糊、黑暗中的不可见车道或严重阴影等情况时,该方法的性能可能会下降。这是因为该方法主要依赖于视觉信息,而这些异常情况可能会导致关键的视觉线索丢失或不可靠。因此,在这些挑战性的情况下,该方法可能无法提供准确的车道检测结果。为了解决这些挑战,论文提出了利用LiDAR中的丰富的三维几何信息的可能性。通过结合视觉和LiDAR数据,可以实现多模态方法,从而提供更强大的解决方案来应对3D车道检测中的困难情况。利用LiDAR传感器提供的深度信息,可以弥补基于视觉系统的一些局限性。通过将不同传感器模态的优势相结合,研究人员可以开发出新颖的算法,提高车道检测系统的准确性和鲁棒性。

该论文提出的方法在3D车道检测方面具有一定的优点,包括在公共数据集上的表现出色和基于视觉的方法的广泛适用性。然而,该方法对关键视觉线索的敏感性和在特定情况下的性能下降是其主要缺点。通过探索多模态方法,结合LiDAR传感器的三维几何信息,可以克服这些挑战,提供更准确和鲁棒的3D车道检测解决方案。

5. 结论

本文提出的方法在3D车道检测领域取得了显著的进展。通过基于视觉的方法,该方法在公共数据集上展现出色的性能,并超过了多模态方法。然而,该方法也面临一些挑战,如对关键视觉线索的敏感性和在特定情况下的性能下降。

为了克服这些挑战并提供更准确和鲁棒的3D车道检测解决方案,将多模态方法引入该领域是一个值得探索的方向。结合LiDAR传感器的丰富三维几何信息,可以弥补基于视觉方法的局限性。通过整合不同传感器模态的优势,研究人员可以开发出新颖的算法,提高车道检测系统的准确性和鲁棒性。

未来的研究可以进一步探索多模态方法,并结合更多传感器数据,如雷达和惯性测量单元(IMU)数据。此外,还可以考虑引入更高级别的深度学习技术,以提取更丰富的特征并进一步改善性能。

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署协同感知语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

dc7df5612bfce5288c41ab26639e6ef7.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

13f792ece7d5afd1614a746c829c6855.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

06c7048e8fecdf067c517fb51034d935.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

aec6e937b030bdcc288f329446b9332c.jpeg

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的C++函数,可以将经纬度坐标转换为UTM坐标: ```c++ #include <cmath> const double PI = 3.14159265358979323846; const double a = 6378137.0; // WGS 84 地球长半轴 const double k0 = 0.9996; const double e = 0.0818191910428; // WGS 84 地球偏心率 const double e2 = e * e; const double ep2 = (e2) / (1 - e2); int LatLonToUTM(double lat, double lon, int &zone, double &x, double &y) { // 计算带号 zone = (int)floor((lon + 180.0) / 6.0) + 1; double lon0 = zone * 6.0 - 183.0; // 将经纬度转换为弧度 double latr = lat * PI / 180.0; double lonr = lon * PI / 180.0; double lon0r = lon0 * PI / 180.0; // 计算参数 double N = a / sqrt(1 - e2 * sin(latr) * sin(latr)); double T = tan(latr) * tan(latr); double C = ep2 * cos(latr) * cos(latr); double A = cos(latr) * (lonr - lon0r); // 计算UTM坐标 double M = a * ((1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256) * latr - (3 * e2 / 8 + 3 * e2 * e2 / 32 + 45 * e2 * e2 * e2 / 1024) * sin(2 * latr) + (15 * e2 * e2 / 256 + 45 * e2 * e2 * e2 / 1024) * sin(4 * latr) - (35 * e2 * e2 * e2 / 3072) * sin(6 * latr)); x = k0 * N * (A + (1 - T + C) * pow(A, 3) / 6 + (5 - 18 * T + T * T + 72 * C - 58 * ep2) * pow(A, 5) / 120); y = k0 * (M + N * tan(latr) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * pow(A, 4) / 24 + (61 - 58 * T + T * T + 600 * C - 330 * ep2) * pow(A, 6) / 720)); if (lat < 0) { y += 10000000.0; // 南半球加 10000000 米 } return 0; } ``` 这个函数接收经度和纬度,然后计算出对应的UTM带号、x和y坐标,并将它们存储在传入的引用变量中。请注意,这个函数只能处理WGS 84椭球体的坐标。如果您正在处理其他的椭球体或大地基准,请相应地修改公式中的常数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值