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

本文首发于公众号【DeepDriving】,欢迎关注。

0. 前言

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

近期对最近几年自动驾驶领域中的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

TPVFormer

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

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

数据集:SemanticKITTIPanoptic nuScenes

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

SurroundOcc

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

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

数据集:nuScenesSemanticKITTI

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

算法流程如下:

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

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

OccFormer

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

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

数据集:SemanticKITTIPanoptic nuScenes

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

双路transformer结构:

VoxFormer

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

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

数据集:SemanticKITTI

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

OccupancyDETR

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

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

数据集: SemanticKITTI

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

算法的详细流程如下:

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

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

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

FB-OCCCVPR 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 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占用预测。

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语义占用预测,以降低模型训练难度。

算法框架如下:

OccNeRF

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

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

数据集:Occ3D-nuScenes

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

RenderOcc

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

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

数据集:nuScenesSemanticKITTI

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

算法框架如下图所示:

SGN

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

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

数据集:SemanticKITTISSCBench-KITTI-360

论文提出了一种新型的端到端基于纯视觉的3D占用预测框架,称为Sparse Guidance NetworkSGN)。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/

数据集:SemanticKITTINuScenes

该论文提出一种基于激光-相机数据的多模态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

数据集:NuScenesLyft

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的新方法,它利用体素查询以由粗到细的方案从多帧和多视角图像中聚合时空信息,将特征学习和场景表示集成到统一的占用表示中。PanoOccnuScenes数据集上实现了基于摄像头的语义分割和全景分割的全新最佳结果。此外,该方法还可以轻松扩展到密集占用预测任务中,并在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

2. 数据集

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标签:

LightwheelOcc

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

这是一个合成数据集。

3. 参考资料

  • https://www.thinkautonomous.ai/blog/occupancy-networks/
  • https://github.com/chaytonmin/Awesome-Occupancy-Prediction-Autonomous-Driving
  • https://github.com/keithAND2020/awesome-Occupancy-research
  • https://github.com/zya3d/Awesome-3D-Occupancy-Prediction
  • https://bbs.xiaopeng.com/article/1777353
  • https://zhuanlan.zhihu.com/p/675424447
  • https://www.zhihu.com/question/629557685
  • https://zhuanlan.zhihu.com/p/678276259
扩散模型在自动驾驶中有一些应用。特斯拉使用扩散模型来预测光流,光流是像素从一帧到另一帧的移动量。在自动驾驶系统中,光流的预测对于对象检测、预测和规划等任务都非常有帮助。通过预测光流,特斯拉可以获取关于其他车辆和自动驾驶汽车自身实时移动的信息,从而更好地进行决策和控制。\[2\] 此外,在文本到图像合成中,扩散模型也可以用于生成图像。使用预训练的CLIP模型,将文本和图像等多种模态输入到扩散模型的python API `diffusers`中,可以生成与文本描述相对应的图像。这种方法可以产生更多样化的图像,并保留数据语义结构的能力。然而,扩散模型的训练计算要求很高,需要大量的内存和时间。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [什么是扩散模型(Diffusion Models),为什么它们是图像生成的一大进步?](https://blog.csdn.net/qq_42722197/article/details/127081620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [特斯拉应用在自动驾驶汽车上的神经网络模型—Occupancy Networks](https://blog.csdn.net/weixin_44782294/article/details/127139686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeepDriving

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值