SurroundOcc:用于自动驾驶的多摄像头3D占用网格预测

news2024/12/26 9:21:40

文章:SurroundOcc: Multi-Camera 3D Occupancy Prediction for Autonomous Driving

作者:Yi Wei, Linqing Zhao, Wenzhao Zheng, Zheng Zhu , Jie Zhou, Jiwen Lu

编辑:点云PCL

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

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。

摘要

在基于视觉的自动驾驶中,3D场景理解发挥着至关重要的作用。虽然大多数现有方法侧重于3D目标检测,但它们很难描述任意形状和无限类别的真实世界物体。为了更全面地感知3D场景,在本文中,我们提出了一种名为SurroundOcc的方法,用于使用多摄像头图像预测3D占用情况。首先,我们为每个图像提取多尺度特征,并采用空间2D-3D注意力将它们提升到3D体积空间。然后应用3D卷积逐渐上采样体积特征,并对多个级别进行监督。为了获得稠密的占用情况预测,我们设计了一个流程,可以生成稠密的占用地面实况,而无需大量的占用网格标注。具体来说,我们分别融合了动态对象和静态场景的多帧LiDAR扫描。然后采用Poisson重建来填充空洞,并将网格转化为体素,以获得密集的占用标签。在nuScenes和SemanticKITTI数据集上的大量实验证明了我们方法的优越性。代码和数据集已开源:https://github.com/weiyithu/SurroundOcc。

内容概述

01b4b840def8fe50feffe34394893766.png

图1. SurroundOcc的概览,给定多摄像头图像,我们的方法可以预测周围3D场景的体积占用情况。为了训练网络,我们设计了一个流程,可以使用稀疏的LiDAR点生成稠密的占用标签。

图2显示了我们方法的流程。给定一组周围的多摄像头图像,我们首先使用主干网络(例如ResNet-101 [19])提取N个摄像头和M个级别的多尺度特征。对于每个级别使用一个Transformer来融合多摄像头特征,并进行空间交叉注意力。2D-3D空间注意力层的输出是一个3D体积特征,而不是BEV特征。然后,使用3D卷积网络来上采样和组合多尺度的体积特征。最后,多尺度体积特征通过 3D 卷积网络上采样和组合,并通过递减的损失权重来监督每个级别的占据预测。

24c94f20dfd5afbf2cabb14bbefe66ab.png

图2. 所提方法的流程。首先使用主干网络提取多摄像头图像的多尺度特征,然后,我们采用2D-3D空间注意力来融合多摄像头的信息,以多尺度方式构建3D体积特征。最后,使用3D反卷积层来上采样3D体积,并在每个级别对占用预测进行监督。

2D-3D 空间注意力

本文利用交叉视图注意力机制来融合多个相机的特征。通过将 3D 参考点投影到 2D 视图中,并使用可变形注意力机制对这些点进行查询和信息聚合。与传统方法不同,该方法建立了 3D 体积查询,进一步保留了 3D 空间信息。通过对这些查询点进行投影,可以在对应的视图中采样 2D 特征,并使用可变形注意力机制对它们进行加权聚合。最终,使用 3D 卷积来交互相邻的 3D 体素特征,从而提高了三维场景重建的准确性。

64deedafd4efd4bc8d66d5cd1f4439e7.png

图3. 基于3D和基于BEV的跨视角注意力对比,基于3D的注意力可以更好地保留3D信息,对于每个3D体积查询,我们将其投影到相应的2D视图以进行特征采样。

多尺度占据预测

本文采用了 2D-3D U-Net 架构,将多尺度的 2D 特征输入到不同数量的 2D-3D 空间注意力层中,提取多尺度的 3D 体积特征。然后,通过 3D 反卷积层上采样前一级的 3D 体积特征,并将其与当前尺度的特征进行融合,生成当前尺度的 3D 体积特征。网络在每个尺度上都会输出一个占据预测结果。为了得到丰富的多层次 3D 特征,网络在每个尺度上都有监督信号。

稠密占据网格标签

本文提出了一套流程来生成密集占据标签,该流程利用现有的 3D 检测和语义分割标签代替人工标注。具体来说,本文提出了将动态物体和静态场景的多帧 LiDAR 点云分别拼接起来的方法,并使用 Poisson 重建算法来填补空洞并将获得的网格体素化以获得密集的占据情况。为此,我们设计了一个流程,利用现有的3D检测和3D语义分割标签生成密集的占用地面真值,而无需额外的人工注释,如图4所示。

908a75d37cd2b597dc7a232a35e7e073.png

图4. 稠密的占用真值生成。首先,我们遍历所有帧,将动态物体和静态场景的多帧LiDAR点分别拼接,然后将它们合并成一个完整的场景。随后,我们使用Poisson Reconstruction来使点密度增加,并对生成的网格进行体素化,以获得密集的3D占用情况。最后,我们使用最近邻(NN)算法为密集体素分配语义标签。

多帧点云拼接与Poisson 重建

本文提出了一种可以将静态场景和可移动物体分别拼接,然后在体素化之前将它们合并成完整的场景。为了将多帧片段合并,通过已知的校准矩阵和自我姿态将它们的坐标转换为世界坐标系。最后,根据当前帧的物体位置和自我姿态,通过合并静态场景和物体的 3D 点云获得当前帧的 3D 点云。通过这种方式,当前帧的占据标签利用了序列中所有帧的 LiDAR 点云信息。Poisson 重建是根据局部邻域中的空间分布计算法向量,然后使用 Poisson 曲面重建算法将点云重建成三角形网格,进而填补点云中的空洞,得到均匀分布的顶点,最终将网格转换成密集的体素。通过这种方法可以增加点云密度,并填补点云中的空隙。

使用 NN 算法进行语义标注

利用 NN 算法将语义标签分配给每个体素,以便将密集的点云转换为密集的体素。首先对具有语义信息的点云进行体素化得到稀疏的占据标签,然后使用 NN 算法搜索每个体素最近的稀疏体素,并将其语义标签分配给该体素。

5c30789824806ca6d1fd1590250963b1.png

图5. 不同占用标签的比较,与单帧LiDAR点和从多帧点转换而来的稀疏占用相比,稠密的体素能够提供更真实的占用网格标签。

实验

如表1所示,该方法实现了最先进的性能,还在图6和图7中展示了一些定性结果。

cf7cc6ab98c7d5100f9ede2801bed724.png

00d15ed82e12800a072fa9730d33aa29.png

图6。具有挑战性场景的示例。尽管RGB图像在雨天和夜晚的质量下降,但我们的方法仍然可以预测详细的占用情况。

604c471786d960189dcd45204537ff43.png

图7。在nuScenes验证集上的可视化。我们生成的密集占用标签比稀疏的LiDAR点密集得多。在密集的地面实况下训练,网络可以预测更好和更密集的占用。

表3显示了结果,尽管我们的方法并不是为单目感知而设计的,并且跨视图注意力在单目设置下会失效,但该方法仍在这一基准上取得了最先进的性能。

8d3b186c4ed34a8278f067174486477f.png

在表8中比较了不同方法的推理时间和推理内存。

444353292b0a82f08aebb37fcfa20b95.png

总结

本文提出了SurroundOcc来进行多相机3D占用网格预测,利用2D-3D空间关注力以多尺度的方式将2D特征集成到3D体积中,然后通过3D反卷积层进一步上采样和融合。此外设计了一个流程来生成稠密的占用网格真值。我们分别拼接动态物体和静态场景的多帧LiDAR点,并利用Poisson重建来填充空洞,在nuScenes和SemanticKITTI数据集上的比较展示了我们方法的卓越性能。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

自动驾驶中基于光流的运动物体检测

基于语义分割的相机外参标定

综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

高速场景下自动驾驶车辆定位方法综述

Patchwork++:基于点云的快速、稳健的地面分割方法

PaGO-LOAM:基于地面优化的激光雷达里程计

多模态路沿检测与滤波方法

多个激光雷达同时校准、定位和建图的框架

动态的城市环境中杆状物的提取建图与长期定位

非重复型扫描激光雷达的运动畸变矫正

快速紧耦合的稀疏直接雷达-惯性-视觉里程计

基于相机和低分辨率激光雷达的三维车辆检测

用于三维点云语义分割的标注工具和城市数据集

ROS2入门之基本介绍

固态激光雷达和相机系统的自动标定

激光雷达+GPS+IMU+轮速计的传感器融合定位方案

基于稀疏语义视觉特征的道路场景的建图与定位

自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)

用于三维点云语义分割的标注工具和城市数据集

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

TOF相机原理介绍

TOF飞行时间深度相机介绍

结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案

开源又优化的F-LOAM方案:基于优化的SC-F-LOAM

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

基于鱼眼相机的SLAM方法介绍

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

50e31501ac00fd1c2b24a5828f296203.png

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为分享的伙伴们点赞吧!

54e9160c0f9f0604951f2d77af1bbf4e.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI视野·今日NLP 自然语言处理论文速览 第三十七期】Wed, 20 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 20 Sep 2023 Totally 64 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers SlimPajama-DC: Understanding Data Combinations for LLM Training Authors Zhiqiang Shen, Tianhua Tao, Li…

js惰性函数

看下面这份ts代码 实现的效果也很简单,就是将一份文本,复制到剪切板上,未了兼容更多的浏览器(没错说的就是你>ie !),做了一个兼容性判断, 当浏览器支持navigator.clipboard这个api时,就直接调用这个api将文本复制到剪切板中, 如果不支持这个api的话,就执行else里面的代码,这…

【Kafaka实现高吞吐量、低延迟的底层原理】

文章目录 Kafaka实现高吞吐量、低延迟的底层原理顺序写入Page Cache零拷贝分区分段索引批量读写批量压缩 Kafaka实现高吞吐量、低延迟的底层原理 Kafka虽然是基于磁盘做的数据存储,但却具有高并发、高吞吐量、低延时的特点,其吞吐量动辄几万、几十上百万…

springBoot对接多个mq并且实现延迟队列---未完待续

mq调用流程 创建消息转换器 package com.wd.config;import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import o…

深度解析React 18应用性能提升

众所周知,React 18 引入的一个重要特性就是并发功能,从根本上改变了 React 应用程序的渲染方式。本文将带大家一同探讨这些最新功能的具体作用,特别是如何提高应用程序性能。 一、主线程与长任务 当我们在浏览器中运行 JavaScript 时,JS 引擎会在单线程环境下执行代码内容…

Kubernetes基础(二)-Headless Service

1 简介 Headless Service是一种特殊的服务类型,它不会分配虚拟 IP,而是直接暴露所有 Pod 的 IP 和 DNS 记录。这客户端可以直接访问 Pod IP 地址,并使用这些 IP 地址进行负载均衡。 Headless Services是一种特殊的service,其spec…

封装了一个中间放大效果的iOS轮播视图

效果图 计算逻辑 设定在中间展示的size,即正常size,然后设置水平和竖直方向上的margin, 在view的origin和scrollView的contentoffset相等的时候,即 视图处在正中间的时候,最大,然后通过计算其他视图的origin和scrollV…

计算机基础 堆和栈

首先我们需要知道的是栈和堆是两种数据结构 1.栈和堆的定义 栈:是一种先进后出的数据结构,是一种线性结构 堆是一种树形结构,是一颗完全二叉树, 其存储的元素可以通过指针或引用访问 最大堆【大根堆】 :堆中的每一个…

js-cookie使用 js深度克隆(判断引用类型是数组还是对象的方法)

cookie和深度拷贝的使用 1、js-cookie使用2、js深度克隆 1、js-cookie使用 前端的本地存储分为 localstorage、sesstionstorage、cookie 但是咱们有时候需要做7天免登录的需求时,选择 cookie 作为前端的本地存储是在合适不过的了 直接操作 cookie 可以, …

ModbusTCP 转 Profinet 主站网关在博图配置案例

兴达易控ModbusTCP转Profinet网关,在 Profinet 侧做为 Profinet 主站控制器,接 Profinet 设备,如伺服驱动器;兴达易控ModbusTCP 和 Profinet网关在 ModbusTCP 侧做为 ModbusTCP 从站,接 PLC、上位机、wincc 屏等。 拓扑…

Spring事务1+入门案例(简约银行转账)

0、事务基础概念 1.事务角色: 2.事务相关配置 一、配置文件的书写 1.JDBC配置文件 public class JdbcConfig {Value("${jdbc.driver}")private String driver;Value("${jdbc.url}")private String url;Value("${jdbc.username}")p…

win11安装h3c lab无法启动putty终端的解决方法

文章目录 问题记录作者自己的解决方法第一步:安装MobaXterm第二步:修改h3c lab的终端工具 问题记录 win11可以同时安装vm、virtualBox、typer-v安装,因为在最新的系统中已经兼容但是可能出现win11安装h3c lab无法启动putty终端的问题&#x…

数据结构_顺序表_尾插、尾删、头插、头删(附带详解)

文章目录 前言一. 线性表二. 顺序表 - - - 数组2.1 什么是顺序表2.2 顺序表一般可以分为2.2.1 静态顺序表(使用定长数组存储元素)2.2.2 动态顺序表:使用动态开辟的数组存储2.2.3 顺序表的接口实现 三. SeqList.c 中各个接口的实现。3.1 初始化…

Java实现Modbus Tcp协议读写模拟工具数据

标题 前言一、读写模拟工具中数据(1) 定义Controller层(2) 定义Service层实现 二、调试(1) 读数据(2) 向寄存器写单个数据(3) 向寄存器写多个数据 前言 参考文章:https://www.cnblogs.com/ioufev/p/10831289.html 该文中谈及常见的几种读取设备数据实现&#xff0…

无硬盘的版本 1099,14寸笔记本,而且无硬盘的,特别有有意思,可以自己购买个硬盘,安装linux系统或者windows。

1,千元笔记本,金属外壳 有人进行评测了: https://www.bilibili.com/video/BV1Td4y1K7Cp 1499元的全新笔记本,有什么猫腻? 看了下价格,现在还优惠400,变成了1099。 https://item.jd.com/100851…

Django — 请求和响应

目录 一、请求1、概念2、请求参数方式分类3、案例3.1、URL 路径参数3.2、查询字符串参数3.3、form 表单传参3.4、Json 格式参数3.5、上传文件 二、响应1、HttpResponse2、JsonResponse 三、GET 和 POST 区别1、相同点2、不同点 一、请求 1、概念 请求(Request&…

DDR4 眼图测试方法

DDR的全拼是Double Data Rate SDRAM双倍数据速率同步动态随机存取内存。主要就是用在电脑的内存。他的特点就是走线数量多,速度快,操作复杂,给测试和分析带来了很大的挑战。目前DDR技术已经发展到了DDR5,性能更高,功耗…

【算法练习Day4】 两两交换链表节点删除链表倒数第 N 个结点环形链表 II

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 两两交换链表中的节点一…

毫米波雷达 TI IWR1443 在 ROS 中进行 octomap 建图

个人实验记录 /mmwave_ti_ros/ros_driver/src/ti_mmwave_rospkg/launch/1443_multi_3d_0.launch <launch><!-- Input arguments --><arg name"device" value"1443" doc"TI mmWave sensor device type [1443, 1642]"/><arg…

一例“msvc编译器O2优化导致的崩溃”的分析

1. 初步分析 某进程崩溃必现。 打开崩溃dmp&#xff0c;结合c源代码&#xff0c;崩溃大致发生在某dll代码里的这句&#xff1a;SAFE_DELETE(pContentData); En_HP_HandleResult CTcpOperation::OnClintReceive(HP_Client pSender, HP_CONNID dwConnID, const BYTE * pdata, i…