Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文笔记
原文链接:https://arxiv.org/abs/2008.05711
本文的关键是将图像特征转化为BEV特征。
虽然本文仅进行了BEV物体分割、地图分割和运动规划任务的实验,但理论上应该也适用于其余可基于BEV表达的任务,如目标检测。
将单目检测扩展到多视图图像检测的方法可以是分别检测各视图物体后使用相机内外参旋转平移到自车坐标系。特点:
(1)平移不变性:物体像素坐标移位导致输出结果相同移位。卷积网络大致具有这一属性。
(2)排列不变性:最终结果与各视图的排列顺序无关。
(3)自我坐标系的平移/旋转不变性:若图像内容不变,则无论相机相对于自车姿态是什么,图像内的物体均会被检测到。即自车坐标系平移/旋转,输出结果相应平移/旋转。
但缺点是无法利用跨图像信息。
本文提出Lift-Splat网络,保留了上述3个特点,且是端到端可微的方法。首先通过生成棱台形状的上下文特征点云,将图像“提升(lift)”到3D,然后将这些棱台“splat(可理解为投影)”到参考平面,以便于进行运动规划的下游任务。此外,还提出“shoot(也可理解为投影)”提案轨迹到参考平面的方法来进行可解释的端到端运动规划。实验表明本文方法能够学习到从可能的输入分布中融合信息的有效机制。
本文方法的第一阶段独立地处理每个相机图像。该阶段的目的是将2D图像提升到所有视图共享的3D空间。
由于深度信息是转换过程中必要的,而图像存在深度模糊性,故本文方法为每个像素在所有可能的深度处都生成表达。将深度空间离散化为段,则可生成的点云(对应一个棱台状空间)。
具体而言,网络对每个像素预测一个上下文向量(即常规的卷积特征)和深度分布。则点云处的上下文特征为,如下图所示。
若网络估计为独热向量,则该方法与伪激光雷达方法相同;若网络估计深度均匀分布,则该方法与OFT(见此文的4.3.1节第一个方法)相同。因此本文方法可以灵活地在两者范围内选择。
使用PointPillars方法处理点云,即将每个点分配到其最近的柱体,然后使用求和池化得到的BEV特征图,再使用2D CNN处理即可。
Lift-Splat框架如下图所示。
此外,在处理每个柱体时,本文未使用填充操作,而是使用了一个累加和小技巧(见4.2节)来加速求和池化,且该操作有解析的梯度,从而加速训练。
测试阶段若使用推断的代价图进行规划,可以通过将不同轨迹投影到BEV平面,评估代价后选择代价最小的轨迹。
本文将“规划”视为预测给定传感器观测下自车个模板轨迹的分布,即,定义为
其中是给定观测时预测的代价图在处的值,因此可以通过优化专家轨迹的对数概率来进行端到端训练。该定义可以使得模型学习到可解释的空间代价函数。
对于给定真实轨迹,寻找中最近邻模板轨迹,然后使用交叉熵损失训练。
实际应用中,模板轨迹集是通过数据集中专家轨迹的均值聚类得到的。
该技巧是基于本文方法用图像产生的点云形状是固定的,因此每个点可以预先分配一个区间(即BEV网格)索引,用于指示其属于哪一个区间。按照索引排序后,按下列方法操作:
可以通过计算该算法的解析梯度,而非使用自动梯度计算以加快训练。该方法被称为“棱台池化”。
由于BEV CNN能学习融合不同相机信息的方法,可以使其对简单噪声模型(如外参误差或摄像机损坏)具有鲁棒性。
例如训练时随机丢弃部分摄像机图像,在测试时面对这一问题的性能会更优。实验表明,若在训练时随机丢弃一张图像,则不丢弃图像测试时,相应的性能会达到最优。这可能是由于丢弃图像使得模型能学习到不同相机之间的相关性,类似于dropout的效果。
此外如果在训练时使用含噪声的外参,在测试时外参噪声较大的情况下会有更好的性能,且性能对测试时外参噪声不敏感;但在测试时外参噪声较少时,使用不含噪声的外参训练的模型性能最优。
此外,本文还比较了各个视图的“重要性”,该重要性与丢弃某视图带来的性能下降程度相关。实验表明视野范围更广的相机丢失时带来的性能下降最大。
若训练时仅使用固定的一部分相机,则测试时使用额外相机能带来性能提升。
此外,如果在nuScenes上训练,在Lyft上测试(二者的相机完全不同),与其余模型相比,本文的模型能够达到最优性能。
通过训练Lift-Splat模型的输出为代价函数,可以评估运动规划的性能。但相比基于激光雷达的PointPillars而言还是有较大的性能差距。