Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D
ECCV2020,通过估计图像深度将投影到BEV canvas。
multi-camera天生存在多参考系转换问题(每个相机对应单独的相机坐标系),粗暴的方法是使用单视图检测器训练所有视图的样本,推理时根据相机内外参后处理。这样的问题是模型无法区分不同特征的坐标系来源。
Lift:Latent Depth Distribution
X 代表单视图图像,X.shape = [3,H,W]
E 代表相机外参,E.shape = [3,4]
I 代表相机内参,I.shape = [3,3]
- 构造伪点云空间 [C,H,W,D],将3D feature map映射到4D feature map
- C是image backbone + neck得到的特征dim
- 对于特征图上每个(c,h,w),预测一个D维的向量,表示每个点的深度α(深度是离散空间 categorical distribution,需要softmax)
- 对于单个相机,得到了max深度值后,就可以通过内外参计算3D坐标(车辆坐标系)
Splat:Pillar Pooling
投影到BEV视角(取200mx200m的canvas),最终得到的 BEV_feature.shape = [200,200,C]
- 对于不同相机的不同像素点投影在 BEV 的同一个位置的情况,采用 sum-pooling
- 视锥池化(frustum pooling),无需依赖 autograd,采用cumsum加快训练。具体实现可见大佬的代码笔记: https://zhuanlan.zhihu.com/p/527388204
- 后续有一系列工作改进 pillar pooling
Shoot:Motion Planning
Lift-Splat 得到的BEV feature可以直接用来做 motion planning,类似得到一个BEV视角下每个grid的置信度
实验设置在5.6节
实验 5.4:Zero-shot camera rig transfer
用4相机视角训练,6相机视角测试,会有在分割任务上涨点
文档信息
- 本文作者:Mengqi Cao
- 本文链接:https://rogercmq.github.io//2022/10/15/Lift-Splat-Shoot/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)