- 前言
在自动驾驶感知任务中,传统的 3D
场景理解方法大多数都集中在 3D
目标检测上,难以描述任意形状和无限类别的真实世界物体。 3D
占用网络( Occupancy Network
)是特斯拉在 2022年
提出的一种新型感知网络,这种感知网络借鉴了机器人领域中的占用网格建图的思想,将感知环境以一种简单的形式进行在线 3D
重建。简单来说,就是将机器人周围的空间划分为一系列网格单元,然后定义哪个单元被占用,哪个单元是空闲的,通过预测 3D
空间中的占用概率来获得一种简单的 3D
空间表示,这样就可以更全面地实现 3D
场景感知。
近期对最近几年自动驾驶领域中的 3D
占用网络算法(主要是基于纯视觉)和数据集做了一些调研,本文将做一个简单的汇总。
- 论文和算法
综述论文
《A Survey on Occupancy Perception for Autonomous Driving: The Information Fusion Perspective》
MonoScene
论文:https://arxiv.org/pdf/2112.00726.pdf
代码:https://github.com/cv-rits/MonoScene
数据集: NYUv2
(室内), SemanticKITTI
首个单目 3D
语义占用预测算法,是后续算法的 baseline
。
TPVFormer
论文:https://arxiv.org/pdf/2302.07817.pdf
代码:https://github.com/wzzheng/TPVFormer
数据集: SemanticKITTI
, Panoptic nuScenes
该算法以环视图像为输入,训练过程中以激光雷达的语义标签为真值去学习实现 3D
占用预测。作者提出了一种三视角( tri-perspective view,TPV
)表示法,能够有效地描述 3D
场景的细粒度结构。为了将图像特征转换到 3D TPV
空间,提出了一种基于注意力机制的 TPVFormer
模型。
SurroundOcc
论文:https://arxiv.org/pdf/2303.09551.pdf
代码:https://github.com/weiyithu/SurroundOcc
数据集: nuScenes
, SemanticKITTI
该算法从输入的多个相机的 RGB
图像中去实现 3D
语义占用预测,训练时的语义真值是从激光点云的语义信息中产生。
算法流程如下:
根据稀疏的点云语义信息生成稠密的 3D
占用语义真值过程:
在 RTX 3090 GPU
上与其他几个算法的推理时间对比:
OccFormer
论文:https://arxiv.org/pdf/2304.05316.pdf
代码:https://github.com/zhangyp15/OccFormer
数据集: SemanticKITTI
, Panoptic nuScenes
该算法提出使用一个双路 transformer
结构用于处理由相机数据生成的 3D
体素特征,它可以有效地捕获具有局部和全局路径的细粒度细节和场景级布局。
双路 transformer
结构:
VoxFormer
论文:https://arxiv.org/pdf/2302.12251.pdf
代码:https://github.com/NVlabs/VoxFormer
数据集: SemanticKITTI
算法框架如上图所示,模型支持输入单帧或多帧图像数据。采用 MobileStereoNet
(可换成其他深度估计网络)做深度估计,占用预测网络采用轻量级的 2D CNN
网络 LMSCNet
。该算法的特点是比较轻量级,对小目标的检测效果较好,模型参数较少,训练时需要的 GPU
显存少于 16
GB。缺点是远距离性能需要提升,因为远距离深度估计不准确。
OccupancyDETR
论文:https://arxiv.org/pdf/2309.08504.pdf
代码:https://github.com/jypjypjypjyp/OccupancyDETR
数据集: SemanticKITTI
算法框架如上图所示,由一个类似 DETR
的目标检测网络( Deformable DETR
)和 3D
占用解码器模块组成,用目标检测模块来引导对 3D
语义占用网格的预测。把目标检测网络输出的 bounding box
作为位置先验,并利用物体的隐藏特征作为上下文,然后用一个空间 transformer
解码器用来提取每个目标的 3D
占用网格。
算法的详细流程如下:
- 对于一张输入图像,首先采用
ResNet50
骨干网络提取特征,然后将这些多尺度特征传入一个可变形编码器进行进一步编码。 - 通过可变形
DETR
解码器解码固定数量的查询,然后传递给分类、2D
框和3D
框这三个检测头网络。分类头和2D
框头网络的结果是目标检测中的常规结果,根据分类头的输出选择高置信度的结果作为检测到的物体。 - 这些高置信度物体的
3D
框(相机坐标系,根据相机外参转到占用网格坐标系)作为每个物体的位置先验,用于在3D
占用解码器中提供位置嵌入,并把可变形DETR
解码器获得的特征作为上下文,3D
占用解码器基于可变形DETR
编码器编码的多尺度特征去预测每个物体的3D
占用网格。
3D
占用解码器的数据流程图如下:
该算法的特点是对小目标的检测性能好,速度快,计算资源消耗少,训练时只需要一个 RTX 3090 GPU
,缺点是对道路、人行横道这些类别的预测效果不好。
FB-OCC ( CVPR 2023 3D
占用预测挑战赛冠军)
论文:https://opendrivelab.com/e2ead/AD23Challenge/Track\_3\_NVOCC.pdf
代码:https://github.com/NVlabs/FB-BEV
数据集: nuScenes
算法框架如上图所示,该算法由 FB-BEV
算法衍生而来。视图变换模块是纯视觉 3D
感知算法的核心,作者设计了两个视图变换模型:一个前向投影模块( List-Splat-Shoot
)和一个反向投影模块( BEVFormer
)。在 FB-OCC
中,使用前向投影来生成初始的 3D
体素表示,然后将 3D
体素表示压缩成一个扁平的 BEV
特征图。 BEV
特征图被视为 BEV
空间内的查询,并与图像编码器特征进行关联,以获取密集的几何信息。最后,将 3D
体素表示和优化的 BEV
表示的融合特征输入到后续的任务头中。
除了模型结构,作者还重点对模型预训练技术进行了精心设计。首先在大规模 2D
目标检测数据集 Object 365
上对骨干网络进行训练,使得网络具备语义感知能力。接下来,在 nuScenes
数据集上再对网络进行专注于深度估计的预训练。由于深度预训练缺乏语义级别的监督,为了减轻模型过度偏向深度信息的风险,可能导致丧失语义先验知识(特别是考虑到大规模模型容易出现过拟合的情况),作者同时预测 2D
语义分割标签以及深度预测任务。
使用 2D
图像语义标签和深度图真值,作者联合深度估计任务和语义分割任务对模型进行训练。这种预训练任务与最终的占用预测任务密切相关,可以利用深度值和语义标签直接生成 3D
占用结果。预训练模型作为改进的起点,为后续的占用预测任务训练提供了帮助。
该算法是为参加比赛设计的,所以整体显得有点笨重,训练时设置 batch size
为 32
,需要 32
个 A100 GPU
进行训练。
BEVDet-Occ
论文:暂无,从 BEVDet
衍生到 Occupancy Prediction
任务
代码:https://github.com/HuangJunJie2017/BEVDet
SimpleOccupancy
论文:https://arxiv.org/pdf/2303.10076.pdf
代码:https://github.com/GANWANSHUI/SimpleOccupancy
数据集: DDAD
, Nuscenes
该算法采用自监督的方式实现 3D
占用预测。
SparseOcc
论文:https://arxiv.org/pdf/2312.17118.pdf
代码:https://github.com/MCG-NJU/SparseOcc
数据集: Occ3D-nuScenes
下面两篇文章是对该算法的解读:
https://zhuanlan.zhihu.com/p/709576252
https://zhuanlan.zhihu.com/p/691549750
SelfOcc
论文:https://arxiv.org/pdf/2311.12754.pdf
代码:https://github.com/huang-yh/SelfOcc
项目主页:https://huang-yh.github.io/SelfOcc/
数据集: Occ3D-nuScenes
, SemanticKITTI
鉴于之前的方法都需要可靠的 3D
语义信息来监督学习,但是 3D
语义真值又很难获取,因此 SelfOcc
希望仅使用视频序列采用自监督学习的方式来实现 3D
语义占用预测,以降低模型训练难度。
算法框架如下:
OccNeRF
论文:https://arxiv.org/pdf/2312.09243.pdf
代码:https://github.com/LinShan-Bin/OccNeRF
数据集: Occ3D-nuScenes
该算法采用自监督学习的方式去实现基于多相机数据输入的 3D
语义占用预测。为了解决无界场景的问题,作者提出参数化占用场,将无限空间缩小到有界体素内;为了利用时间光度损失,作者对参数化坐标进行体素渲染,得到多帧多摄像头深度图。对于语义占用预测,作者采用 Grounded-SAM
、 Grounding DINO
来生成 2D
语义伪标签。
RenderOcc
论文:https://arxiv.org/pdf/2309.09502.pdf
代码:https://github.com/pmj110119/RenderOcc
数据集: nuScenes
, SemanticKITTI
该算法从多视图图像中提取 NeRF
风格的 3D
体积表示,并使用体积渲染技术来建立 2D
重建,从而实现从 2D
语义和深度标签的直接 3D
监督,减少了对昂贵的 3D
占用标注的依赖。实验表明, RenderOcc
的性能与使用 3D
标签完全监督的模型相当,突显了这种方法在现实世界应用中的重要性。
算法框架如下图所示:
SGN
论文:https://arxiv.org/pdf/2312.05752.pdf
代码:https://github.com/Jieqianyu/SGN
数据集: SemanticKITTI
, SSCBench-KITTI-360
论文提出了一种新型的端到端基于纯视觉的 3D
占用预测框架,称为 Sparse Guidance Network
( SGN
)。 SGN
的核心思想是利用几何先验和占用信息,从具有语义和占用意识的种子体素向整个场景扩散语义。与传统方法不同, SGN
采用了一种密集-稀疏-密集的设计,并引入了混合引导和有效的体素聚合来加强类内特征的分离和加速语义扩散的收敛。此外, SGN
还利用了各向异性卷积来实现灵活的接收场,同时减少计算资源的需求。
FlashOcc
论文:https://arxiv.org/pdf/2311.12058.pdf
代码:https://github.com/Yzichen/FlashOCC
数据集: Occ3D-nuScenes
FlashOcc
通过下面两种方法对现有基于体素级 3D
特征的占用预测任务进行提升:(1) 用 2D
卷积替换 3D
卷积;
(2) 用通道-高度变换替换从 3D
卷积得到的占用预测。
FlashOcc
专注于以即插即用的方式增强现有模型,它可以分为五个基本模块:
(1) 用于提取图像特征的 2D
图像编码器。(2) 将 2D
图像特征映射到 BEV
表征的视图转换模块。(3) 用于提取 BEV
特征的 BEV
编码器。(4) 预测每个体素分割标签的占用预测头。(5) 集成历史信息以提高性能的时序融合模块(可选)。
FlashOcc
的特点是速度快,计算资源消耗少,方便部署。
POP3D
论文:https://openreview.net/pdf?id=eBXM62SqKY
代码:https://github.com/vobecant/POP3D
FastOcc
论文:https://arxiv.org/pdf/2403.02710.pdf
代码:暂未开源(不开源就挺尴尬的)
数据集: Occ3D-nuScenes
Co-Occ
论文:https://arxiv.org/pdf/2404.04561.pdf
代码:https://github.com/Rorisis/Co-Occ
项目主页:https://rorisis.github.io/Co-Occ\_project-page/
数据集: SemanticKITTI
、 NuScenes
该论文提出一种基于激光-相机数据的多模态 3D
占用预测算法,算法框架如下:
OccGen
论文:https://arxiv.org/pdf/2404.15014.pdf
代码:( coming soon
)
项目主页:https://occgen-ad.github.io/
该论文提出一种 noise-to-occupancy
的生成式 3D
占用预测算法。
Cam4DOcc
论文:https://arxiv.org/pdf/2311.17663
代码:https://github.com/haomo-ai/Cam4DOcc
数据集: NuScenes
、 Lyft
MonoOcc
论文:https://arxiv.org/pdf/2403.08766v1
代码:https://github.com/ucaszyp/MonoOcc
数据集: SemanticKITTI
该论文提出一个单目 3D
占用预测算法框架,通过一个辅助语义损失作为对框架浅层的监督和一个图像条件交叉注意力模块来改进单目占用预测的效果,另外该算法训练的时候采用蒸馏模块,以低成本将时间信息和更丰富的知识从较大的图像主干网络传输到单目语义占用预测框架中。
HyDRa
论文:https://arxiv.org/pdf/2403.07746
代码:https://github.com/phi-wol/hydra
该论文提出一种基于相机和毫米波雷达的多模态 3D
感知框架,实现 3D
目标检测、语义占用预测多任务感知。
PanoOcc
论文:https://arxiv.org/pdf/2306.10013
代码:https://github.com/Robertwyq/PanoOcc
现有的自动驾驶感知任务(如目标检测、道路结构分割、深度估计等)仅关注整体 3D
场景理解任务的一小部分。这种分治的策略简化了算法开发过程,但却失去了问题的端到端统一解决方案。在本文中,作者通过基于纯视觉的 3D
全景分割来解决这一限制,旨在实现仅限摄像头的 3D
场景理解的统一占用表示。为了实现这一目标,作者提出一种名为 PanoOcc
的新方法,它利用体素查询以由粗到细的方案从多帧和多视角图像中聚合时空信息,将特征学习和场景表示集成到统一的占用表示中。 PanoOcc
在 nuScenes
数据集上实现了基于摄像头的语义分割和全景分割的全新最佳结果。此外,该方法还可以轻松扩展到密集占用预测任务中,并在 Occ3D
基准上表现出色。
GaussianFormer
论文:https://arxiv.org/abs/2405.17429
代码:https://github.com/huang-yh/GaussianFormer (暂时只放出demo)
ViewFormer
论文:https://arxiv.org/pdf/2405.04299
代码:https://github.com/ViewFormerOcc/ViewFormer-Occ
作者还开源了一个可视化工具,可以对点云目标检测、Occ预测结果等进行可视化:https://github.com/xiaoqiang-cheng/Oviz
HTCL
论文:https://arxiv.org/pdf/2407.02077
代码:https://github.com/Arlo0o/HTCL
Panoptic-FlashOcc
论文:https://arxiv.org/pdf/2406.10527v1
代码:https://github.com/Yzichen/FlashOCC
Panoptic-FlashOcc
是目前速度和精度最优的全景占用预测网络,它在 FlashOcc
的基础上实现了全景占用( Panoptic occupancy
)。全景占用旨在将实例占用( instance occupancy
)和语义占用( semantic occupancy
)整合到统一的框架中。
作者解读:https://zhuanlan.zhihu.com/p/709393871
COTR
论文:https://arxiv.org/pdf/2312.01919
代码:https://github.com/NotACracker/COTR.git
- 数据集
SemanticKITTI
论文:https://arxiv.org/pdf/1904.01416v3.pdf
下载地址:https://opendatalab.com/OpenDataLab/SemanticKITTI
Occ3D
论文:https://arxiv.org/pdf/2304.14365.pdf
下载地址:https://tsinghua-mars-lab.github.io/Occ3D/
该数据集基于 Waymo
和 nuScenes
数据集构建了用于 3D
占用网格预测的数据集 Occ3D-Waymo
和 Occ3D-nuScenes
。
OpenOccupancy
论文:https://arxiv.org/pdf/2303.03991.pdf
GitHub:https://github.com/JeffWang987/OpenOccupancy
该数据集基于 nuScenes
数据集构建。
OpenOcc
论文:https://arxiv.org/pdf/2306.02851.pdf
GitHub:https://github.com/OpenDriveLab/OccNet
该数据集基于 nuScenes
数据集构建。
SSCBench
论文:https://arxiv.org/pdf/2306.09001.pdf
GitHub:https://github.com/ai4ce/SSCBench
该数据集基于 KITTI-360
、 nuScenes
、 Waymo
等数据集构建。
OpenScene
GitHub:https://github.com/OpenDriveLab/OpenScene
相比现有数据集, OpenScene
具有 Occupancy Flow
标签:
LightwheelOcc
GitHub: https://github.com/OpenDriveLab/LightwheelOcc
这是一个合成数据集。
- 参考资料