论文链接:LSS
LSS
本文的核心内容是将所有的图像都 lift 形成有关于特征深度的锥形图,之后再将所有的锥形图splat形成一个栅格化的BEV网格信息,最后将期望的轨迹投影到损失图中,并选取一个损失最低的轨迹。
引言
计算机视觉算法通常将一副图像作为输入,输出坐标框架不可知的任务如分类,或者和原图处于一个坐标框架下的任务如目标检测。
但是这种范式对自动驾驶场景而言并不适用,因为自动驾驶场景通常将多个传感器的照片作为输入(每个照片的坐标轴都不一样),生成一个新的坐标系-自车坐标系,供下游任务进行预测求解。
单视角范式扩展到多视角场景
对于来自于多个相机的3D目标检测,为每一个输入的图片设计一个图像检测头,之后通过相机的内外参数将检测头投影到自车系统上,物体也是在自车坐标系下被检测的。
优点:
- 平移同变性:如果图片中的像素坐标进行转变了一定的数值,那么他的输出也会进行转
- 置换不变性,具体的输出不依赖与n个相机之间的排序
- 旋转不变性:无论相机与车辆自身的相对位置如何,都会在给定的图像中检测到相同对象。(相机对自车坐标系进行变换,图像也会做相同的变换)
缺点:
- 不能将自车系统中的单个图像检测器分辨出来,重新传回到传感器的输入,因此模型无法以数据驱动的方式学习跨摄像头信息,同时反向传播算法也不能用于改进感知系统。
单目目标检测
单目目标检测头是由如何建模从图像坐标系转移到三维坐标系所定义的。
- 标准的方法:使在图像平面上生成一个2D的检测框,之后训练一个网络从2D边界框向3D边界框来进行回归,同时采用一个损失来预测深度,目的是为了将由深度产生的误差与由错误的边界框产生的误差分开。
- 伪雷达处理:另外一种方式是分别训练一个网络用于单目深度估计和另外一个网络用于BEV检测。
- 第三类:利用三维物体的先验特征,这些特征是依赖于所有可能相机的投影信息。但此时每个像素对体素贡献出相同的特征,与该像素所处的深度无关(这在目标检测上是可行的,因为我们只需要判断哪些像素是那个物体,但是在自动驾驶场景不适用,因为我们还需要判断物体的远景关系)
方法
对于n张图片 X k ∈ R 3 × H × W X_k \in R^{3\times H\times W} Xk∈R3×H×W,每个图片都具有外参矩阵 E k ∈ R 3 × 4 E_k \in R^{3\times 4} Ek∈R3×4和内参矩阵 I k ∈ R 3 × 3 I_k \in R^{3\times 3} Ik∈R3×3,我们希望能够在BEV坐标系下找到一个栅格化的表示 y ∈ R C × X × Y y \in R^{C\times X\times Y} y∈RC×X×Y。
Lift
该方法的目的是将每张图片从局部的二维坐标系转移到可以被所有相机共享的三维框架中。
单目相机的一个困惑是我们需要深度信息将图片转换到参考坐标系中,但是每个像素的深度信息本身是模糊的。因此我们提出为每一个像素信息,在所有可能的深度信息产生一个表示。
对于每张图片,
X
k
∈
R
3
×
H
×
W
X_k \in R^{3\times H\times W}
Xk∈R3×H×W,都具有外参矩阵
E
k
∈
R
3
×
4
E_k \in R^{3\times 4}
Ek∈R3×4和内参矩阵
I
k
∈
R
3
×
3
I_k \in R^{3\times 3}
Ik∈R3×3,p是图像坐标系下的一个像素点
(
h
,
w
)
(h,w)
(h,w),我们为每个像素分配|D|个点
(
h
,
w
,
d
)
∈
R
3
∣
d
∈
D
{(h,w,d)\in R^3|d\in D}
(h,w,d)∈R3∣d∈D,其中D是一系列离散深度点的集合
d
0
+
δ
,
.
.
.
.
.
.
,
d
0
+
∣
D
∣
Δ
{d_0+\delta,......,d_0+|D|\Delta}
d0+δ,......,d0+∣D∣Δ。我们为每一个图像产生一个大小为
D
⋅
H
⋅
W
D\cdot H\cdot W
D⋅H⋅W的点云信息。点云中的每一个坐标点的内容向量都被参数化去匹配注意力信息和离散的深度推理信息,针对于每个像素p,网络预测一个内容信息
c
∈
R
C
c\in R^C
c∈RC(类似于特征图的形式)以及一个关于深度的分布
α
∈
Δ
∣
D
∣
−
1
\alpha\in\Delta^{|D|-1}
α∈Δ∣D∣−1,位于深度d且处于p像素的特征信息利用该深度分布来进行缩放
c
d
=
α
d
c
c_d = \alpha_d c
cd=αdc,如下图所示
我们希望生成一个函数
g
c
:
(
x
,
y
,
z
)
∈
R
3
−
>
c
∈
R
C
g_c:(x,y,z)\in R^3->c\in R^C
gc:(x,y,z)∈R3−>c∈RC,每一张图片可以在任意位置被查询并且返回一个上下文向量。我们采用了离散空间,为了充分利用离散卷积,对于相机来说,相机的可见空间类似与上图的锥形结构。
splat
我们利用pointpillar的方式将lift生成的点云进行转换,pillar是具有无限高度的体素特征,我们将每一个点云投影到最近的pillar中并且采用聚合池化的方式去生成一个大小为KaTeX parse error: Undefined control sequence: \W at position 17: …\times h\times \̲W̲的特征图,这个特征图后续可以利用标准的卷积神经网络进行BEV的推理。
shoot
Lift-Splat模型关键的一点是在仅使用只有相机的输入情况下,为运动规划产生了端到端的损失地图。在测试的阶段,规划通过将不同的轨迹投影到推断出的损失地图上,并且计算所有轨迹的损失寻找到一个具有最低损失的轨迹。