PersFormer: 3D Lane Detection via Perspective Transformer and the OpenLane Benchmark 论文笔记

原文链接:https://arxiv.org/abs/2203.11089

本文是针对单目相机的3D车道检测任务提出的,理论上其Perspective Transformer也可用于BEV 3D目标检测。

1.引言

        车道检测在自动驾驶中很重要。目前在前视图进行车道的2D检测能达到很好的效果。但对于下游任务如运动规划来说,需要在鸟瞰图(BEV)下的车道表达;且在BEV下与其他模态以及与其他任务的相容性会更好。传统方法直接使用相机内外参将前视图检测结果或是特征投影到BEV,其中后者使用空间变换网络(STN)建立图像像素和BEV网格之间的一一对应。但相机的针孔模型导致存在尺度差异,这些方法的结果并不令人满意。

        此外,车道线的高度也很重要。目前的方法通常假设车道线位于水平面上,但当实际路面出现上下坡等情况时,投影到BEV下的车道线会发散或收敛(如下图(a))。由于无3D车道线数据集,有人建立了相关的合成数据集,但仿真数据和真实数据之间的域自适应问题还没有被很好的研究。

        本文提出Perspective Transformer(PersFormer),使用空间特征变换模块优化特征并生成更好的BEV表达。该空间特征变换模块包含前视图特征与局部区域交互、以及前视图与BEV之间交互的(可变形)注意力。与通过逆透视映射(IPM)进行的一对一变换相比,该方法能获得更有代表性和鲁棒性的特征,因为其关注局部上下文信息并聚合了相关信息。此外,该模型联合训练2D和3D的车道检测任务以从联合学习中获益。

        另外,本文发布了大型真实3D车道数据集OpenLane。

2.相关工作

2.3 2D车道检测

        方法主要包括3类:基于分割的、基于网格的以及基于锚的。

        基于分割的方法将车道检测视为高计算复杂度的图像分割,且二分类任务需要后处理(聚类)来判别车道实例;多分类任务则限制了能检测的车道数。

        基于网格的方法的检测分辨率比分割方法低。该方法逐行地判断每个网格为车道的概率,然后使用按列的后处理(聚类)来生成车道实例。

        基于锚的方法采用了目标检测的思想,优化预定义锚的偏移量,但定义锚很困难。

3.方法

3.1 问题描述

        目标是检测一系列3D车道L_{3D}=\{l_i\}_{i=1}^{N_{3D}}和2D车道L_{2D}=\{l_i\}_{i=1}^{N_{2D}},其中每条3D车道由有序的3D坐标表达:

l_d=\{(x_j,y_j,z_j)\}_{j=1}^{N_d}

        2D车道类似,使用有序的图像坐标(u,v)表达。每条车道有类别属性c_{\textup{3D/2D}},且车道上每个点有属性\textbf{vis}_{\textup{fv/bev}},表明该点的可见性。

3.2 方法概述

        如下图所示,总体结构包含三部分:主干(ResNet;提取多尺度前视图特征),Perspective Transformer(输入前视图特征,根据相机内外参生成BEV特征图;通过关注局部上下文并聚合周围特征,来生成更鲁棒的表达)以及车道检测后处理(预测2D/3D坐标以及车道类型)。

3.3 Perspective Transformer

        基本思路是使用IPM的坐标变换阵作为参考,通过关注前视图相关区域(局部上下文)生成BEV特征表达。

        给定前视图F_{\textup{fv}}的像素(u,v),相应BEV空间\mathbb{R}^{H_{\textup{bev}}\times W_{\textup{bev}}\times C}中的点为(x,y),则

\begin{pmatrix} x\\ y\\ 0 \end{pmatrix}=\alpha_{f2b}\cdot R_{\theta}\cdot K^{-1}\cdot\begin{pmatrix} u\\ v\\ 1 \end{pmatrix}+\begin{pmatrix} 0\\ 0\\ -h \end{pmatrix}

其中\alpha_{f2b}是尺度因数,R_\theta是外参的俯仰角旋转矩阵,K为内参矩阵,h为相机高度。该变换为Perspective Transformer提供了较强的先验,帮助生成更有代表性的BEV特征。

        Perspective Transformer主要包含自注意力模块和交叉注意力模块。与流行的方法中隐式地更新查询不同,本方法的查询有明确含义:BEV下检测物体或车道的物理位置。

        在自注意力模块中,通过三元组(K,Q,V)的交互产生输出Q_{\textup{bev}}

Q_{\textup{bev}}=\texttt{softmax}\left ( \frac{QK^T}{\sqrt{d_k}} \right )V

其中K,Q,V\in\mathbb{R}^{H_{\textup{bev}}\times W_{\textup{bev}}\times C}都是BEV下预定义的相同查询。输出Q_{\textup{bev}}会先经过若干额外层得到{Q}'_{\textup{bev}},输入到交叉注意力模块中。{Q}'_{\textup{bev}}是关于BEV哪个区域应该被关注的显式特征表达。

        在交叉注意力模块中,使用transformer的直觉是它能自动关注那些对目标位置(查询)更有贡献的特征。由Deformable DETR启发,本文用可学习的方式关注局部区域内的部分键值对(如下图所示),以节省计算并提高效率。

        首先,对于Q_{\textup{bev}}中的每个查询点(x,y)(称为目标点),将其按照本节开头的公式投影回图像平面,得到像素(u,v)。然后基于该像素学习一些偏移量,找到其附近最相关的其他像素。这些像素和(u,v)像素被称为参考点。参考点对目标点的贡献程度即为交叉注意力模块的键,参考点的特征即为交叉注意力模块的值。

        该模块的输出为F_{\textup{bev}}=\texttt{DeformAttn}({Q}'_{\textup{bev}},F_{\textup{fv}},p_{\textup{fv2bev}}),用于后续的车道预测。其中p_{\textup{fv2bev}}是前视图到BEV、由IPM决定的坐标映射。

3.4 同时2D和3D车道检测

        本文主要关注3D车道检测,但由于2D车道检测仍然受到关注,且模型能够从联合训练中受益,因此也结合了2D车道检测。

        本文使用基于锚的车道检测,但由于2D(前视图)和3D(BEV)车道的分布不同,设计锚很困难。本文在BEV下设计一组不同倾角的锚,然后投影到前视图,如下图所示。

红线为锚,黄线和绿线为真值,虚线为需要预测的偏移量,且在两个视图中联合优化特征

3.4.1 3D BEV锚设计

        锚沿x轴近似纵向布置,带有倾角\varphix轴上第i个锚的坐标矩阵记为X_{\textup{bev}}^i,则网络预测真值与其的水平偏差x^i,以及真值的高度z^i

(x^i,z^i,\textbf{vis}_{\textup{bev}}^i)=\{(x^{(i,k)},z^{(i,k)},\textup{vis}^{(i,k)}_{\textup{bev}})\}_{k=1}^{N_d}

其中\textbf{vis}_{\textup{bev}}用于确定检测车道的长度或终点。注意y是固定的一组值,而无需进行预测。

        这样在3D空间中,车道检测的结果为(x^i+X_{\textup{bev}}^i,y,z^i)

3.4.2 2D锚设计

        将3D锚按照3.3节开头的公式转换到图像平面得到倾角为\theta的2D锚U^i_{\textup{fv}}。注意预测时无需预测高度。

3.5 预测损失

3.5.1 中间监督

        由于增加中间监督能够提升网络性能,故本文使用U-Net作为head以分割的方式预测BEV下的车道。设真实二值分割图为S_{\textup{gt}},由3D真实车道投影到BEV下得到;预测结果为S_{\textup{pred}},与S_{\textup{gt}}有相同的尺寸。

3.5.2 损失函数

        总损失是所有锚的损失之和,包含2D、3D车道检测损失和分割损失:

L=\sum_i\alpha L_{\textup{2D}}(c^i_{\textup{2D}},u^i,\textbf{vis}_{\textup{fv}}^i)+\beta L_{\textup{3D}}(c^i_{\textup{3D}},x^i,z^i,\textbf{vis}_{\textup{bev}}^i)+\gamma L_{\textup{seg}}(S_{\textup{pred}})

其中(\alpha,\beta,\gamma)是可学习权重。车道分类损失使用交叉熵;车道形状回归损失为\textup{l}_1损失;车道可见性预测损失以及辅助的分割损失均是二值交叉熵损失。

5.实验

5.2 OpenLane的结果

        PersFormer在3D和2D车道检测的性能上均超过其他方法。缺点是3D车道检测在距离较近时的xz误差较大,这可能是统一的锚设计使得拟合车道的主要部分比拟合开始位置更容易。

        可视化结果表明PersFormer擅长检测密集或不明显的车道。

5.4 消融研究

        实验表明,本文使用的锚设计方法以及2D/3D多任务学习均能为2D或3D车道检测带来性能提升。

        此外,使用Perspective Transformer辅助的二元分割任务进一步提高了3D车道检测的性能。并且令人吃惊的是,这两个模块还能极大地促进2D检测的性能(即使没有直接对图像特征产生影响,见图2)。

附录A.算法

A.2 锚的细节

        BEV下的锚:初始位置沿x轴均匀分布,且包含不同倾角。

        2D锚:将BEV锚根据俯仰角和相机平均高度投影到前视图上。

        分配策略:每个锚匹配其最小编辑距离的真实车道(在预定义的y坐标集合下计算)。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值