赞
踩
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
今天自动驾驶之心很荣幸邀请到中科院在读博士生黄少飞,为大家分享CVPR 2023最新的3D车道线检测算法Anchor3DLane。如果您有相关工作需要分享,请在文末联系我们!
>>点击进入→自动驾驶之心【车道线检测】技术交流群
后台回复【车道线综述】获取基于检测、分割、分类、曲线拟合等近几十篇学习论文!
导读:大家好,我是黄少飞,目前在中国科学院信息工程研究所攻读博士学位。本文简单介绍我们和图森未来合作的CVPR 2023的录用论文“Anchor3DLane: Learning to Regress 3D Anchors for Monocular 3D Lane Detection”。论文中提出了一种新的3D车道线检测范式,即Anchor3DLane
。该方法摒弃了3D车道线检测方法中常用的BEV检测范式,通过定义3D空间中的Anchor对车道线进行结构化建模,并将其投影至2D图像特征上采样特征,从而达到直接由2D图像特征回归3D车道线坐标的目的。这种投影-采样
的方式具有较好的扩展性,可以扩展至多阶段车道线回归、多帧车道线特征融合等更复杂的检测框架。此外,论文中还提出等宽优化算法,利用车道线的等宽特性对预测结果进行后处理优化,从而进一步改善车道线的横向误差。目前该工作的代码已开源,欢迎大家批评指正。
文章链接:https://arxiv.org/abs/2301.02371
代码链接:https://github.com/tusen-ai/Anchor3DLane
现有的3D车道线检测方法绝大部分都是基于BEV检测范式的,即首先将前视视角(FV)的图像或特征利用逆透视变换(IPM)或其他方式(如Deformable attention)变换到俯视图视角(BEV),之后在BEV特征上预测车道线的坐标和类别。由于在BEV视角下车道线受透视效应影响较小,近处和远处宽度基本一致,在BEV平面上检测出来的BEV车道线,搭配高度预测,就可以将车道线的3D坐标较为直观地恢复出来。然而,这类方法也有一定的局限性,首先,IPM依赖于地平面假设,现实中大部分场景下地面都是有一定坡度的,这导致变换得到的BEV特征也并不准确;除此之外,变换后的BEV特征只保留了地面的信息,而损失掉了路面以上的大部分上下文信息,即使有保留也会出现严重的变形和对路面的遮挡,这对高度的估计也会造成一定的影响。
为了克服BEV方法的局限性,也有一些方法尝试不经过BEV空间,直接从FV特征预测3D车道线,例如SALAD[1],以及CLGo[2]中的Stage 1。以SALAD为例,如下图所示,其将3D车道线检测解耦为2D车道线分割任务和密集深度估计任务,利用估计得到的深度将2D车道线坐标投影到3D空间中。然而,与BEV空间相比,FV空间与车道线的3D表达之间还是有较大的鸿沟,直接通过FV特征估计3D信息不可避免的会有一定的精度损失,因此,这类方法在整体性能上还是略逊色于基于BEV的方法。
本文主要想解决的问题是如何缩小FV空间与3D车道线之间的表达鸿沟,从而摒弃BEV空间,直接基于FV特征对3D车道线进行准确的预测。因此,本文提出一种新的Anchor3DLane检测范式,设计了3D空间中的车道线anchor来对3D车道线进行结构化建模。受2D车道线检测方法LaneATT[3]中的anchor feature pooling操作的启发,本文利用相机的内外参将3D anchor的点准确投影到FV图像特征上进行anchor特征采样,并基于采样的anchor特征预测3D坐标回归值和车道线的分类结果。与FV到BEV的单应性变换相比,这种3D到2D的投影变换更加准确,可以获得良好对齐的anchor特征。利用3D anchor来桥接FV空间和3D车道线的表达,可以有效缩小二者的表达鸿沟,从而取得与BEV方法接近甚至更好的准确性。并且,这种投影-采样的方式具有良好的扩展性,可以扩展到任意已知变换关系的空间之间,例如(1)迭代回归:预测的3D车道线坐标可以进一步投影到图像特征上采样特征,进行车道线坐标的迭代回归;(2)多帧增强:通过帧间的pose信息,可以获取同一个3D anchor在多帧间对齐的特征,从而融合多帧特征进行车道线预测。整体来看,本文的方法具有架构简洁有效的优点,没有采用复杂的网络连接或训练方式,就可以在多个3D车道线数据集上超越之前的BEV方法,取得良好的速度-性能平衡。
如下图所示,本文主要基于地面坐标系进行预测,该坐标系原点位于相机光心垂直向下与地面的交点处,x轴水平向右,y轴水平向前,z轴竖直向上。每条3D车道线沿y轴采样固定的个点,其y坐标表示为,每条车道线由个点表示,其第个点表示为,前3项分别为该点的x、y、z坐标,最后一项为该点是否可见,可见为1,不可见为0。在某些场景下,特别是OpenLane数据集中,很多车道线并不是从头开始的,此时对应缺失部分的vis属性即为0。3D anchor为一条定义于3D空间中的射线,由起始点,pitch 和yaw 唯一确定。与3D车道线类似,每个3D anchor也是由同样y坐标的N个点表示,其第个点表示为。需要强调的是,为了方便与之前的BEV方法进行比较,本文大部分实验都是在地面坐标系下完成的。然而,由于投影-采样机制的存在,Anchor3DLane可以作用于任意坐标系,如相机坐标系、车体坐标系等。
上图为Anchor3DLane的整体网络结构。给定输入前视图片,首先通过图像backbone网络以及一层transformer layer提取其图像特征,其中,为了便于预测车道线的3D坐标值,我们在transformer layer之前加入了2D位置编码。之后,在每个3D anchor上采样个点,将这N个点利用相机内参和地面到相机坐标系的变换矩阵投影到F上:
由于投影后点的坐标通常为非整数,因此还需要结合双线性插值来得到这N个点对应的图像特征。对这个点的特征进行拼接并展开后即可得到该anchor的特征。最后,将anchor特征输入分类head得到该anchor的分类置信度,输入回归head得到该anchor的上个点的x、z坐标偏移量和vis属性,将x、z坐标偏移量与anchor的x、z坐标相加,由此恢复出该anchor对应3D车道线的坐标。进一步的,这些3D车道线可以作为新的3D anchor,再次将其采样点投影到特征上获取anchor特征进行预测,从而对3D车道线进行迭代优化。由于新的anchor对车道线的拟合能力比原始anchor更好,因此其提取的特征也更准确,从而预测结果的坐标误差通常也更小。在实际实现时,采样特征的anchor点数目与最终回归的anchor点数目不需要保持一致,后者对计算量和参数量影响更小,因此可以通过固定采样特征点数目,增加回归点数目来提升模型对3D车道线的拟合能力,而不需要引入过多的计算代价。在OpenLane数据集相关的实验中,我们就采用了这种做法,来提升位置精度。
在训练阶段,本文选择Top-k的方式对预测结果进行正负样本的分配,选择与每条ground truth车道线距离最近的前k个anchor作为正样本,其余为负样本,每次训练随机选择一部分负样本计算损失。本文分别采用Focal Loss和SmoothL1 Loss作为分类损失函数和正样本的回归损失函数:
在测试阶段,首先根据置信度阈值对预测的3D车道线进行筛选,之后对筛选剩下的车道线进行NMS,从而避免输出重复的车道线。
由于投影-采样机制的存在,本文所设计的3D anchor可以较为方便地扩展至多帧输入,从而利用历史帧的信息对当前帧的预测进行增强。给定两帧之间的变换矩阵,当前帧的anchor点可以被投影至历史帧的图像特征上采样anchor特征:
之后运用cross-attention对同一个anchor在不同帧之间的特征进行融合,将历史帧的特征融合到当前帧的特征上,从而获得时序增强后的anchor特征。后续的预测过程与单帧输入保持一致。
除此以外,本文还提出了等宽约束优化算法,这一算法利用同一道路下的车道线在大部分情况下都是互相平行的这一特性,对3D车道线的横向估计结果进行后处理调整,从而改善远端的车道线横向估计误差。具体操作如下:
给定两条车道线的x坐标,同时约束两条车道线在不同y坐标下的宽度一致性以及x坐标的调整量,从而通过对两条车道线的x坐标进行微调,使得不同y坐标下两条车道线的水平距离基本一致,即两条车道线基本平行。上述目标函数中,第一项约束所有车道线之间两两平行,第二项为正则项,避免对x坐标调整过多。这一算法目前仅作为后处理对经过NMS之后的预测结果进行调整,可以与Anchor3DLane网络解耦使用。
本文采用轻量的ResNet18作为Anchor3DLane的主干网络,分别在OpenLane、ApolloSim和ONCE-3DLane三个3D车道线数据集上进行了实验。
在OpenLane上,除了单阶段回归和迭代回归的Anchor3DLane,本文还进行了时序增强实验,在训练时随机从前5帧中采样一帧对当前帧进行增强,测试时输入前5帧中的第一帧。可以看到,与之前的BEV方法相比,Anchor3DLane不仅在F score上有了大幅的提升,在x/z errors指标上也大幅下降,这一指标在3D车道线的真实部署场景下尤为重要,更大的误差意味着车辆更容易偏离自车车道,从而造成安全事故。在指标的测试上,通过降低置信度阈值,Anchor3DLane可以取得58%-59%的F1 score,然而这种情况下的x/z errors也会更大,达到0.4-0.5m左右,在我们看来这是偏离了实际需求的,因此在论文中我们并未展示这样的结果。
通过将Backbone由ResNet18替换成EfficientNet-B3,Anchor3DLane也可以取得更高的F1 score(56.0%),这一结果我们在附录中也有展示,相关的checkpoint和config也在github中有提供。
ApolloSim是一个仿真数据集,数据量较小,其中的场景相比真实数据集更加简单,因此在这个数据集上多个方法的性能趋于饱和。在这一数据集上,我们展示了在3个不同子集上的单阶段回归和迭代回归的Anchor3DLane结果。由于x/z errors是在与ground truth成功匹配上的预测结果上计算的,Anchor3DLane由于采用了更高AP的预测结果计算x/z errors损失,因此在某些指标上略落后于其他方法,这也是正常现象。
在ONCE-3DLane上,由于数据集仅提供了相机内参,因此在这一数据集上我们采用了相机坐标系而非地面坐标系,3D anchor定义于相机坐标系中,通过相机内参将其投影到图像特征上进行特征采样。下表中,SALAD同样未采用BEV空间,与BEV方法(PersFormer)具有较大的性能差距。而我们的方法由于采用了3D anchor进行车道线的结构化建模作为桥梁连接了FV空间和3D车道线的表示空间,因此取得了与PersFormer相当甚至更优的结果。
下表展示了本文的核心消融实验之一,即采用BEV特征进行feature sampling与本文中采用FV特征进行feature sampling的实验对比。通过下表的3个实验,我们证明了直接从FV特征上采样anchor特征比BEV特征有更好的性能,特别是二者的x errors具有较大的差距,这可能是因为BEV特征损失了大部分地面以上的context信息导致的。
下图展示了在OpenLane上运用等宽约束进行调整后的结果,可以看到,经过等宽约束调整后的车道线在平行性上变得更好了。然而,虽然真实情况下车道线相互之间是平行的,由于数据集标注的问题,标注本身即存在不等宽的情况,因此在某些情况下调整后的车道线与调整前相比可能横向误差并不会下降。现在的等宽约束仅作为一项后处理方法对预测结果进行纯几何约束的调整,故此在效率和效果上都有一定的局限性,这也是我们后续改进的一个方向。
在本文中,我们提出了一种简单有效的3D车道线检测范式,Anchor3DLane。该方法通过定义3D anchor对3D车道线进行结构化建模,从而规避BEV空间,直接由FV图像特征回归3D车道线坐标。该方法在多个方面具有良好的扩展性,可以有效适应不同的输入设置,作用于多种坐标系下。未来我们希望可以将等宽约束与Anchor3DLane结合起来,将其引入网络中进行端到端训练,从而利用几何约束信息进一步提升3D坐标估计的可靠性。
[1] Yan F, Nie M, Cai X, et al. ONCE-3DLanes: Building Monocular 3D Lane Detection. CVPR 2022.
[2] Liu R, Chen D, Liu T, et al. Learning to Predict 3D Lane Shape and Camera Pose from a Single Image via Geometry Constraints. AAAI 2022.
[3]Tabelini L, Berriel R, Paixao T M, et al. Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection. CVPR 2021.
[4]Chen L, Sima C, Li Y, et al. PersFormer: 3D Lane Detection via Perspective Transformer and the OpenLane Benchmark. ECCV 2022.
[5]Guo Y, Chen G, Zhao P, et al. Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection. ECCV 2022.
4月18日下午2点『海天瑞声』联合『自动驾驶之心』宣发自动驾驶平台新品发布会。
欢迎扫描下方海报二维码预约收看!
视频课程来了!
自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)
(扫码学习最新视频)
国内首个自动驾驶学习社区
近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;
添加汽车人助理微信邀请入群
备注:学校/公司+方向+昵称
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。