自动驾驶3D占用预测(Occupancy Prediction)算法调研

技术
  1. 前言

在自动驾驶感知任务中,传统的 3D场景理解方法大多数都集中在 3D目标检测上,难以描述任意形状和无限类别的真实世界物体。 3D占用网络( Occupancy Network)是特斯拉在 2022年提出的一种新型感知网络,这种感知网络借鉴了机器人领域中的占用网格建图的思想,将感知环境以一种简单的形式进行在线 3D重建。简单来说,就是将机器人周围的空间划分为一系列网格单元,然后定义哪个单元被占用,哪个单元是空闲的,通过预测 3D空间中的占用概率来获得一种简单的 3D空间表示,这样就可以更全面地实现 3D场景感知。

picture.image

近期对最近几年自动驾驶领域中的 3D占用网络算法(主要是基于纯视觉)和数据集做了一些调研,本文将做一个简单的汇总。

  1. 论文和算法

综述论文

《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

picture.image

TPVFormer

论文:https://arxiv.org/pdf/2302.07817.pdf

代码:https://github.com/wzzheng/TPVFormer

数据集: SemanticKITTIPanoptic nuScenes

该算法以环视图像为输入,训练过程中以激光雷达的语义标签为真值去学习实现 3D占用预测。作者提出了一种三视角( tri-perspective view,TPV)表示法,能够有效地描述 3D场景的细粒度结构。为了将图像特征转换到 3D TPV空间,提出了一种基于注意力机制的 TPVFormer模型。

picture.image

picture.image

picture.image

SurroundOcc

论文:https://arxiv.org/pdf/2303.09551.pdf

代码:https://github.com/weiyithu/SurroundOcc

数据集: nuScenesSemanticKITTI

该算法从输入的多个相机的 RGB图像中去实现 3D语义占用预测,训练时的语义真值是从激光点云的语义信息中产生。

picture.image

算法流程如下:

picture.image

根据稀疏的点云语义信息生成稠密的 3D占用语义真值过程:

picture.image

picture.image

RTX 3090 GPU上与其他几个算法的推理时间对比:

picture.image

OccFormer

论文:https://arxiv.org/pdf/2304.05316.pdf

代码:https://github.com/zhangyp15/OccFormer

数据集: SemanticKITTIPanoptic nuScenes

该算法提出使用一个双路 transformer结构用于处理由相机数据生成的 3D体素特征,它可以有效地捕获具有局部和全局路径的细粒度细节和场景级布局。

picture.image

双路 transformer结构:

picture.image

VoxFormer

论文:https://arxiv.org/pdf/2302.12251.pdf

代码:https://github.com/NVlabs/VoxFormer

数据集: SemanticKITTI

picture.image

算法框架如上图所示,模型支持输入单帧或多帧图像数据。采用 MobileStereoNet(可换成其他深度估计网络)做深度估计,占用预测网络采用轻量级的 2D CNN网络 LMSCNet。该算法的特点是比较轻量级,对小目标的检测效果较好,模型参数较少,训练时需要的 GPU显存少于 16GB。缺点是远距离性能需要提升,因为远距离深度估计不准确。

OccupancyDETR

论文:https://arxiv.org/pdf/2309.08504.pdf

代码:https://github.com/jypjypjypjyp/OccupancyDETR

数据集: SemanticKITTI

picture.image

算法框架如上图所示,由一个类似 DETR的目标检测网络( Deformable DETR)和 3D占用解码器模块组成,用目标检测模块来引导对 3D语义占用网格的预测。把目标检测网络输出的 bounding box作为位置先验,并利用物体的隐藏特征作为上下文,然后用一个空间 transformer解码器用来提取每个目标的 3D占用网格。

算法的详细流程如下:

  1. 对于一张输入图像,首先采用 ResNet50骨干网络提取特征,然后将这些多尺度特征传入一个可变形编码器进行进一步编码。
  2. 通过可变形 DETR解码器解码固定数量的查询,然后传递给分类、 2D框和 3D框这三个检测头网络。分类头和 2D框头网络的结果是目标检测中的常规结果,根据分类头的输出选择高置信度的结果作为检测到的物体。
  3. 这些高置信度物体的 3D框(相机坐标系,根据相机外参转到占用网格坐标系)作为每个物体的位置先验,用于在 3D占用解码器中提供位置嵌入,并把可变形 DETR解码器获得的特征作为上下文, 3D占用解码器基于可变形 DETR编码器编码的多尺度特征去预测每个物体的 3D占用网格。

3D占用解码器的数据流程图如下:

picture.image

该算法的特点是对小目标的检测性能好,速度快,计算资源消耗少,训练时只需要一个 RTX 3090 GPU,缺点是对道路、人行横道这些类别的预测效果不好。

FB-OCCCVPR 2023 3D占用预测挑战赛冠军)

论文:https://opendrivelab.com/e2ead/AD23Challenge/Track\_3\_NVOCC.pdf

代码:https://github.com/NVlabs/FB-BEV

数据集: nuScenes

picture.image

算法框架如上图所示,该算法由 FB-BEV算法衍生而来。视图变换模块是纯视觉 3D感知算法的核心,作者设计了两个视图变换模型:一个前向投影模块( List-Splat-Shoot)和一个反向投影模块( BEVFormer)。在 FB-OCC中,使用前向投影来生成初始的 3D体素表示,然后将 3D体素表示压缩成一个扁平的 BEV特征图。 BEV特征图被视为 BEV空间内的查询,并与图像编码器特征进行关联,以获取密集的几何信息。最后,将 3D体素表示和优化的 BEV表示的融合特征输入到后续的任务头中。

除了模型结构,作者还重点对模型预训练技术进行了精心设计。首先在大规模 2D目标检测数据集 Object 365上对骨干网络进行训练,使得网络具备语义感知能力。接下来,在 nuScenes数据集上再对网络进行专注于深度估计的预训练。由于深度预训练缺乏语义级别的监督,为了减轻模型过度偏向深度信息的风险,可能导致丧失语义先验知识(特别是考虑到大规模模型容易出现过拟合的情况),作者同时预测 2D语义分割标签以及深度预测任务。

picture.image

使用 2D图像语义标签和深度图真值,作者联合深度估计任务和语义分割任务对模型进行训练。这种预训练任务与最终的占用预测任务密切相关,可以利用深度值和语义标签直接生成 3D占用结果。预训练模型作为改进的起点,为后续的占用预测任务训练提供了帮助。

该算法是为参加比赛设计的,所以整体显得有点笨重,训练时设置 batch size32,需要 32A100 GPU进行训练。

BEVDet-Occ

论文:暂无,从 BEVDet衍生到 Occupancy Prediction任务

代码:https://github.com/HuangJunJie2017/BEVDet

SimpleOccupancy

论文:https://arxiv.org/pdf/2303.10076.pdf

代码:https://github.com/GANWANSHUI/SimpleOccupancy

数据集: DDADNuscenes

该算法采用自监督的方式实现 3D占用预测。

picture.image

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-nuScenesSemanticKITTI

鉴于之前的方法都需要可靠的 3D语义信息来监督学习,但是 3D语义真值又很难获取,因此 SelfOcc希望仅使用视频序列采用自监督学习的方式来实现 3D语义占用预测,以降低模型训练难度。

picture.image

算法框架如下:

picture.image

OccNeRF

论文:https://arxiv.org/pdf/2312.09243.pdf

代码:https://github.com/LinShan-Bin/OccNeRF

数据集: Occ3D-nuScenes

该算法采用自监督学习的方式去实现基于多相机数据输入的 3D语义占用预测。为了解决无界场景的问题,作者提出参数化占用场,将无限空间缩小到有界体素内;为了利用时间光度损失,作者对参数化坐标进行体素渲染,得到多帧多摄像头深度图。对于语义占用预测,作者采用 Grounded-SAMGrounding DINO来生成 2D语义伪标签。

picture.image

picture.image

RenderOcc

论文:https://arxiv.org/pdf/2309.09502.pdf

代码:https://github.com/pmj110119/RenderOcc

数据集: nuScenesSemanticKITTI

该算法从多视图图像中提取 NeRF风格的 3D体积表示,并使用体积渲染技术来建立 2D重建,从而实现从 2D语义和深度标签的直接 3D监督,减少了对昂贵的 3D占用标注的依赖。实验表明, RenderOcc的性能与使用 3D标签完全监督的模型相当,突显了这种方法在现实世界应用中的重要性。

picture.image

算法框架如下图所示:

picture.image

SGN

论文:https://arxiv.org/pdf/2312.05752.pdf

代码:https://github.com/Jieqianyu/SGN

数据集: SemanticKITTISSCBench-KITTI-360

论文提出了一种新型的端到端基于纯视觉的 3D占用预测框架,称为 Sparse Guidance NetworkSGN)。 SGN的核心思想是利用几何先验和占用信息,从具有语义和占用意识的种子体素向整个场景扩散语义。与传统方法不同, SGN采用了一种密集-稀疏-密集的设计,并引入了混合引导和有效的体素聚合来加强类内特征的分离和加速语义扩散的收敛。此外, SGN还利用了各向异性卷积来实现灵活的接收场,同时减少计算资源的需求。

picture.image

FlashOcc

论文:https://arxiv.org/pdf/2311.12058.pdf

代码:https://github.com/Yzichen/FlashOCC

数据集: Occ3D-nuScenes

FlashOcc通过下面两种方法对现有基于体素级 3D特征的占用预测任务进行提升:(1) 用 2D卷积替换 3D卷积; (2) 用通道-高度变换替换从 3D卷积得到的占用预测。

picture.image

FlashOcc专注于以即插即用的方式增强现有模型,它可以分为五个基本模块: (1) 用于提取图像特征的 2D图像编码器。(2) 将 2D图像特征映射到 BEV表征的视图转换模块。(3) 用于提取 BEV特征的 BEV编码器。(4) 预测每个体素分割标签的占用预测头。(5) 集成历史信息以提高性能的时序融合模块(可选)。

picture.image

FlashOcc的特点是速度快,计算资源消耗少,方便部署。

picture.image

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/

数据集: SemanticKITTINuScenes

该论文提出一种基于激光-相机数据的多模态 3D占用预测算法,算法框架如下:

picture.image

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

数据集: NuScenesLyft

MonoOcc

论文:https://arxiv.org/pdf/2403.08766v1

代码:https://github.com/ucaszyp/MonoOcc

数据集: SemanticKITTI

该论文提出一个单目 3D占用预测算法框架,通过一个辅助语义损失作为对框架浅层的监督和一个图像条件交叉注意力模块来改进单目占用预测的效果,另外该算法训练的时候采用蒸馏模块,以低成本将时间信息和更丰富的知识从较大的图像主干网络传输到单目语义占用预测框架中。

picture.image

HyDRa

论文:https://arxiv.org/pdf/2403.07746

代码:https://github.com/phi-wol/hydra

该论文提出一种基于相机和毫米波雷达的多模态 3D感知框架,实现 3D目标检测、语义占用预测多任务感知。

picture.image

PanoOcc

论文:https://arxiv.org/pdf/2306.10013

代码:https://github.com/Robertwyq/PanoOcc

现有的自动驾驶感知任务(如目标检测、道路结构分割、深度估计等)仅关注整体 3D场景理解任务的一小部分。这种分治的策略简化了算法开发过程,但却失去了问题的端到端统一解决方案。在本文中,作者通过基于纯视觉的 3D全景分割来解决这一限制,旨在实现仅限摄像头的 3D场景理解的统一占用表示。为了实现这一目标,作者提出一种名为 PanoOcc的新方法,它利用体素查询以由粗到细的方案从多帧和多视角图像中聚合时空信息,将特征学习和场景表示集成到统一的占用表示中。 PanoOccnuScenes数据集上实现了基于摄像头的语义分割和全景分割的全新最佳结果。此外,该方法还可以轻松扩展到密集占用预测任务中,并在 Occ3D基准上表现出色。

picture.image

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

  1. 数据集

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/

该数据集基于 WaymonuScenes数据集构建了用于 3D占用网格预测的数据集 Occ3D-WaymoOcc3D-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-360nuScenesWaymo等数据集构建。

OpenScene

GitHub:https://github.com/OpenDriveLab/OpenScene

相比现有数据集, OpenScene具有 Occupancy Flow标签:

picture.image

LightwheelOcc

GitHub: https://github.com/OpenDriveLab/LightwheelOcc

这是一个合成数据集。

  1. 参考资料

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论