LSS---lift,splat,shot

文章围绕PV2BEV单目相机目标检测模型展开,提出新的端到端架构提取场景鸟瞰表示。介绍了相关工作,包括单目相机目标检测的不同方法及鸟瞰图推理预测。阐述模型输入、Lift操作、Splat等方法,还给出代码实现过程,最后在鸟瞰图上用resnet进一步处理。

文章启发点:

PV2BEV基于深度估计的开山之作,在cam2BEV中作者展望说如何将深度信息引入模型,LSS放弃了IPM,但是又没有像cam2BEV的消融实验那样只采用神经网络输入输出都是图片,而是在输入神经网络前设计了输入数据的表示,直接将待估计的深度与图片特征信息结合,将原有数据提升了一个维度,所以叫lift。

Abstract

自主车辆感知的目标是从多个传感器中提取语义表示,并将这些表示融合到单个“鸟瞰”坐标框架中,以供运动规划使用。文章提出了一种新的端到端架构,它可以直接从任意数量的摄像机中提取场景给定图像数据的鸟瞰表示。方法的核心思想是将每个图像特征分别“提升”为一个截锥体,然后将所有截锥体压平为鸟瞰网。为了实现学习运动规划,通过将模板轨迹“映射”到我们的网络输出的鸟瞰成本图中,模型推断能够实现可解释的端到端运动规划。

Related work

单目相机目标检测

传统的是在图像平面中应用成熟的2D对象检测器,然后训练第二个网络将2D框回归为3D框

然后出现了一种架构训练标准2d检测器,以使用一种损失来预测深度,该损失旨在将由于不正确的深度而导致的误差与由于不正确边界框而导致的错误分离开来。最经典的是 一个网络进行单独的深度预测,另一个网络进行鸟瞰图检测。这种也被称作为激光雷达。

还有一种是逆向思维,通过现实世界的体素空间根据相机的内外参数透视变换到图像抓取图像上的特征作为该体素空间的特征,这样大部分体素都会有语义信息,然后训练一个3D目标检测网络进行目标检测。(我觉得这种方法很有意思,在体素中再融合雷达信息会不会有收获,这篇文章叫Mono3D,有时间可以读一下,这和鸟瞰图一样,可以融合各种传感器吧,突然有反应过来,这个好像是oft的思路啊,沿着一条射线的好多体素会抓取相同的图片特征信息,啧。。。)

在鸟瞰图中进行推理预测

MonoLayout,FISHING Net,Pyramid Occupancy Networks 可做了解

Method

模型的输入:

n张图片信息

n个相机的内、外参数矩阵

 相机内外惨要与图片相对应,每个内外参数矩阵都定义了从参考坐标(x,y,z)到局部像素坐标(h,w,d)的映射。

Lift操作

目的:将每个图像从局部二维坐标系(基于单部相机视角的坐标)“提升”到所有摄像机共享(基于汽车的坐标)的三维帧。

方法:为每个像素生成所有可能深度的表示。

 

 lift的全部操作就是上图(1)根据相机的内外参数矩阵,将图像中每个像素与空间中一条射线对应。将射线离散化D段,每一段都对应一个分布概率,然后为了像素点拥有周围语义信息又为每个像素分配了长度为C的特征向量,所以每个像素就对应一个特征矩阵C*D。此时就完成了升维操作。

 Splat

就是为了提高计算效率,就是将竖直方向上栅格内的点求和作为该栅格的特征值,就是pillars原理。

shoot

主要是轨迹预测什么的,没太关注

代码实现过程

在代码实现的过程中利用了两个函数:

一个函数get_geometry()将图像划分网格对应到空间中,形成voxels,然后又利用相机内外参数将像素坐标转换到自车坐标中去,每个点都是(x,y,z),得到输出Y,shape为B*N*D*H*W*3(4*6*41*8*22*3)。

与此同时并行操作的是利用get_cam_feats()函数将图片进行初步的特征提取得到B*N*(D+C)*H*W,(4*6*(41+64)*8*22),在后在特征维划分为两部分,然后在利用广播机制给实现升维得到X,shape为B*N*D*H*W*C,(4*6*41*8*22*64)。

然后将上面两个输出输入到函数voxel_pooling,通过剔除界外和voxels内多余的点,得到池化后的X1,Y1,然后将利用二者的对映关系将X1特征值放到voxels内,输出为4*64*1*200*200(此处为1是因为在划分voxels时只在竖直方向上留了一个值),消除Z轴4*64*200*200,此时就得到了鸟瞰图的效果。

后面只需要在鸟瞰图上利用resnet进一步提取特征和分类就好了。

执行如图所示。

 代码如下,作为新手小白,里面还有我不懂得的标注,大佬可以帮我回答一下非常感谢。

"""
Copyright (C) 2020 NVIDIA Corporation.  All rights reserved.
Licensed under the NVIDIA Source Code License. See LICENSE at https://github.com/nv-tlabs/lift-splat-shoot.
Authors: Jonah Philion and Sanja Fidler
"""

import torch
from torch import nn
from efficientnet_pytorch import EfficientNet
from t
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值