目录
1.1 LSS算法(Lift, Splat, Shoot,2020)
1.2 BEVDet算法(High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View,2022)
1.3 BEVDet4D算法(Exploit Temporal Cues in Multi-camera 3D Object Detection,2022)
2.1 FCOS3D(Fully Convolutional One-Stage Monocular 3D Object Detection,2020)
2.2 DETR3D(Object Detection from Multi-View Images via 3D Box Queries,2021)
2.3 DETR4D(Direct Multi-View 3D Object Detection with Sparse Attention,2022)
2.4 PETR(Position Embedding Transformation for Multi-View 3D Object Detection,2022)
2.5 PETRV2(Position Embedding Transformation for Multi-View 3D Object Detection,2022)
2.6 Stream PETR (Stream PETR: Efficient Multi-Frame 3D Object Detection,2023)
2.7 FAR3D(Fast and Robust 3D Object Detection from Multi-View Camera Images,2023)
2.8 SparseBEV(High-Performance Sparse 3D Object Detection from Multi-Camera Videos,2023)
4.2.2 多模态融合(视觉 + LiDAR / 雷达 / HD-Map)
Bird’s Eye View (BEV) 3D 目标感知算法是当前自动驾驶、智能交通和机器人领域的重要研究方向。BEV 表示能够将 2D 视觉信息转换为鸟瞰视角,使得 3D 目标检测、跟踪和场景理解更符合自动驾驶的需求。作者研究领域为自动驾驶方向,这里主要介绍基于深度学习(主要是transformer)的多视角3D目标检测算法。3D目标检测算法主要包括3类:
基于深度估计的BEV方法:
通过估计每个像素的深度信息(通常是概率分布)将其变换到BEV视图,这是一种比较直观的视图变换方式,LSS和BEVDet都属于这种方式。
基于2D图像检测方法:
另外一种方式是直接在 2D 视图中进行操作,跳过显式 BEV 特征生成,直接输出 BEV 下的 3D 感知结果。这种方法避免了 BEV 变换过程中的信息损失和计算冗余,提高了计算效率,但同时也面临深度估计和几何对齐的挑战,主要算法包括FCOS3D、DETR3D、PETR、Stream PETR以及FAR3D等。
基于3D栅格检测方法:
还有一类方法通过定义3D栅格来建立BEV视图和图像的联系,比如BEVFormer和BEVFusion。这类方法通过3D到2D的映射,将3D栅格上的深度信息隐含的附加到图像像素之上。
下面是nuscences数据集基于纯视觉的3D目标检测排名。
一、基于深度估计的BEV方法
1.1 LSS算法(Lift, Splat, Shoot,2020)
LSS算法是BEV下检测的开山之作,论文通过Lift(升维,主要是2D图像到3D伪点云)、Splat(投影,将3D信息转换到BEV网格)和Shoot(推理,在BEV空间进行推理)完成BEV下的目标检测。具体的算法流程是:多帧图像经过CNN生成图像特征F [B, C, H, W],C是图像的特征维度,将纵向深度划分为K个离散的深度 bin,对于每个像素(u,v)预测该像素属于每个深度 bin 的概率P=Softmax(W⋅F),维度变化为[B, K, H, W],K表示离散的深度。将三维空间划分为体素网格[X, Y, Z],数量为[H', W', D],根据相机投影模型,将2D像素坐标(u,v)和预测的离散深度dk计算为3D体素坐标(X,Y,Z),然后将投影到每个体素网格内的图像特征进行加权,获取3D空间的特征表示,具体公式为。获得的3D空间特征维度为[B, C, H', W', D],向XY平面投影(Splat),也就是聚合Z方向的特征,采用最大池化或者加权平均,最终获得BEV特征,其维度为[B, C, H', W'],然后以BEV特征进行检测。
1.2 BEVDet算法(High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View,2022)
BEVDet以LSS中的视图转换为基础,但是在BEV视图下采用了额外的网络来进一步提取特征,并在此BEV特征的基础上进行3D目标检测。该方法在nuScenes基准测试上取得了非常好的效果,也进一步验证了利用深度估计进行视图转换以及在BEV视图下设计感知算法的有效性。
BEVDet主要包括四个部分。首先是提取图像特征的编码器,可以采用经典的ResNet或者基于注意力的Swin-Trainsformer结构。然后,多幅图像的特征通过LSS中提出的方法转换到BEV视图,在该视图下进行再一次的特征提取。最后,采用CenterPoint中的Head结构来完成3D目标检测任务。
1.3 BEVDet4D算法(Exploit Temporal Cues in Multi-camera 3D Object Detection,2022)
BEVDet4D在BEVDet的基础上扩充了时序融合的功能,其他子模块的实现细节保持与BEVDet一致。为了利用时间信息,BEVDet4D通过保留上一帧中视图转换器生成的BEV特征来扩展BEVDet,上一帧中保留的特征将与当前帧中的特征合并,合并的方式是Concat操作。在合并前,上一帧的特征需要先对齐到当前帧,实验表明,精确的对齐操作有助于提高速度预测的精度。由于视图转换器生成的特征比较稀疏,这对于后续模块来说过于粗糙以至于无法利用时间信息。因此,在时序融合前使用了一个额外的BEV编码器来调整候选特征。这个BEV编码器由两个残差单元组成,其通道数与输入特征的通道数相同。
二、基于2D图像检测方法
2.1 FCOS3D(Fully Convolutional One-Stage Monocular 3D Object Detection,2020)
FCOS3D采用与FCOS完全相同的网络结构,直接在 2D 视图下预测 3D 目标的边界框(3D BBox)以及速度、朝向和尺寸等信息。虽然算法可以端到端输出3D信息,结构简单明了,但是这种直接基于2D图像进行3D深度估计精度不高,尤其是远距离误差较大,难以处理遮挡等复杂场景。
2.2 DETR3D(Object Detection from Multi-View Images via 3D Box Queries,2021)
DETR3D基本上属于基于transformer的3D检测的开山之作,奠定了后续算法的基本框架。与DETR算法类似,首先由骨干网络对每个图像进行特征提取,然后由query随机生成N(300)个查询点,维度为D,表示3D信息,例如x,y,z,w,h,v等。N*D是嵌入向量,在训练过程中逐渐优化,在推理阶段query是固定的,代表在数据集中这些位置出现障碍物的概率很大,需要重点关注这些区域的特征(与2D检测中锚点类似,但是数量会大大减少)。然后通过物理世界(x,y,z)转换到相机坐标(u,v),通过(u,v)查询到目标点对应不同相机不同尺度的特征信息,基于特征信息进行attention,最终输出目标的3D信息。
2.3 DETR4D(Direct Multi-View 3D Object Detection with Sparse Attention,2022)
DETR4D采用与DETR3D类似的架构,但在query生成、query投影方式以及时序融合三个方面进行了提升。