【论文笔记】Fully Sparse 3D Panoptic Occupancy Prediction

原文链接:https://arxiv.org/abs/2312.17118

1. 引言

现有的3D占用预测方法建立密集的3D特征,没有考虑场景的稀疏性,因此难以满足实时要求。此外,这些方法仅关注语义占用,无法区分实例。

本文认为场景的稀疏性包含两个方面:几何稀疏性(绝大多数的体素为空)和实例稀疏性(实例数量远小于非空体素数量)。

本文提出SparseOcc,一个基于多视图图像的、完全稀疏的全景占用网络。首先使用稀疏体素解码器重建场景的稀疏几何,仅对非空区域建模从而极大减小计算资源。再使用掩膜Transformer,通过稀疏实例查询在稀疏空间预测各物体的掩膜和标签。进一步提出掩膜指导的稀疏采样以避免掩膜Transformer中密集的交叉注意力。这样,可以将语义占用与实例占用统一为全景占用。

3. SparseOcc

SparseOcc包含3部分:图像编码器(主干+FPN)、稀疏体素解码器(预测稀疏3D几何占用和嵌入)、掩膜Transformer解码器(在稀疏空间预测语义和实例)。
在这里插入图片描述

3.1 稀疏体素解码器

由于场景中的绝大多数(超过90%)体素均为空,可以建立稀疏的3D场景表达。

总体结构:采用由粗到细的结构,每一层以体素token的稀疏集合为输入。在每层的最后会估计每个体素的占用分数,并根据占用分数得到稀疏性。有两种稀疏化方法:基于阈值的方法和top- k k k方法。其中后者可保证等长样本,能提高训练效率。 k k k可通过统计不同分辨率下非空体素的最大数量得到。稀疏化的体素token会作为下一层的输入。
在这里插入图片描述
设计细节:每层使用类似Transformer的结构来处理体素级查询,类似SparseBEV。设 l l l层的输入包含 K l − 1 K_{l-1} Kl1个体素查询,每个查询包括3D位置和 C C C维内容向量。首先通过自注意力聚合全局与局部特征,然后使用线性层从内容向量生成3D偏移量,并根据体素的位置和大小得到全局坐标系下的采样点。最后使用相机参数将采样点投影到各视图上,通过双线性插值采样多尺度特征,并使用自适应混合增强。

时间建模:本文将采样点变换到过去的时间戳上,并采样图像特征,来自各帧的采样特征会堆叠并进行自适应混合。

监督:每一层均有监督。使用二元交叉熵(BCE)损失监督几何占用头,其中仅监督预测占用的稀疏集合。

由于样本的不平衡性,本文为不同类别的体素分配不同的权重。对类别 c c c,其权重为
w c = ∑ i = 1 C M i M c w_c=\frac{\sum_{i=1}^C M_i}{M_c} wc=Mci=1CMi

其中 M i M_i Mi为第 i i i类体素的数量。

3.2 掩膜Transformer

基于Mask2Former,使用 N N N个稀疏实例查询(可分解为二值掩膜查询 Q m ∈ [ 0 , 1 ] N × K Q_m\in[0,1]^{N\times K} Qm[0,1]N×K和内容查询 Q c ∈ R N × C Q_c\in\mathbb{R}^{N\times C} QcRN×C)。掩膜Transformer分为3步:多头自注意力(MHSA)、掩膜指导的稀疏采样、自适应混合。MHSA进行查询间的交互,而后两者进行查询与图像特征之间的交互。

掩膜指导的稀疏采样:使用Mask2Former中的掩膜交叉注意力需要所有位置的键,会带来计算负担。本文进行了修改:给定Transformer解码器第 ( l − 1 ) (l-1) (l1)层的掩膜预测,通过随机选择掩膜内的体素,生成3D采样点集合,并投影到图像上采样特征(即仅需要掩膜内体素投影位置的键)。稀疏采样机制也能使得时间建模更加容易,只需要变换采样点即可(和3,2节中一致)。

掩膜交叉注意力:若预测掩膜 Q m ( n , k ) Q_m(n,k) Qm(n,k)小于阈值,则在常规交叉注意力计算softmax前,将对应位置替换为负无穷,也就是忽略 Q c ( n ) Q_c(n) Qc(n) V ( k ) V(k) V(k)的关系。

预测:使用带Sigmoid激活函数的线性分类器,基于内容嵌入 Q c Q_c Qc进行分类。使用MLP将查询嵌入 Q c Q_c Qc转化为相同大小的掩膜嵌入 M M M,与稀疏体素嵌入 V ∈ R K × C V\in\mathbb{R}^{K\times C} VRK×C进行点乘,得到掩膜预测。这样,预测空间就是稀疏体素解码器定义的稀疏化3D空间。掩膜预测会作为下一层的掩膜查询 Q m Q_m Qm

根据矩阵的形状判断,这里的点乘应该是指矩阵乘法。

监督:由于稀疏体素解码器的重建不够精确,可能会导致漏检或误检。对于漏检(真实实例不在预测中),本文丢弃这些实例。对于误检,将其分类为额外的“无物体”类别。

损失函数:使用匈牙利匹配方法匹配预测与真值。focal损失用于分类,DICE损失和BCE掩膜损失用于掩膜预测。

4. 全景占用基准

使用3D边界框生成全景真值。通过已有的语义占用基准,组合边界框内所有的该类体素,作为实例分割结果。

使用边界框的原始大小会导致丢失边界体素,而扩大边界框又会导致重叠。本文使用两阶段分组方式,在第二阶段将未分组体素分配给最近的边界框。

评估指标使用全景质量(PQ)指标,即语义质量(SQ)与识别质量(RQ)的乘积:
S Q = ∑ ( p , g ) ∈ T P I o U ( p , g ) ∣ T P ∣ R Q = ∣ T P ∣ ∣ T P ∣ + 1 2 ∣ F P ∣ + 1 2 ∣ F N ∣ SQ=\frac{\sum_{(p,g)\in TP}IoU(p,g)}{|TP|}\\RQ=\frac{|TP|}{|TP|+\frac{1}{2}|FP|+\frac{1}{2}|FN|} SQ=TP(p,g)TPIoU(p,g)RQ=TP+21FP+21FNTP

其中TP的IoU阈值为0.5。

5. 实验

5.1 实施细节

掩膜Transformer各层的权重共享。

5.2 主要结果

与过去的方法相比,SparseOcc可以使用更小的图像主干和输入分辨率达到相同或更高的性能。

5.3 消融

稀疏体素解码器v.s.密集体素解码器:与密集体素输出的方法相比,本文的方法在几何占用预测上有更高的速度和性能。对于语义占用预测,本文的方法也有相当的性能;对于全景质量指标,本文的方法性能略低,这可能是由于掩膜解码器训练不充分。

掩膜指导的稀疏采样v.s.密集交叉注意力:与密集交叉注意力相比,本文的方法速度上快了1倍,且性能有所提升。与均匀采样方法相比,本文的方法通过关注前景区域,有更高的性能。

**稀疏体素解码器预测的有限的体素集合是否足够覆盖场景?**与仅使用BCE损失的方法相比,引入权重平衡正负样本能提高性能;使用所有类别的样本平衡能大幅提高IoU与各类平均召回率。

时间建模:使用更多的过去帧,以及在稀疏体素编码器和掩膜Transformer中均使引入时间融合,均能提高性能。

掩膜解码器中的查询数量:当查询数少于场景中的实例数时,训练会崩溃。当查询数超过最优值后,不会带来性能提升。

6. 局限性

真值不可靠:来自激光雷达点云积累方式的占用标签可能会导致未被扫描的区域被视为空区域。

积累误差:稀疏体素解码器中,早期丢弃的体素不能被恢复;掩膜解码器也只能从稀疏体素解码器输出的区域进行预测。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Sqoop从Oracle数据库导入数据

在大数据领域,将数据从关系型数据库(如Oracle)导入到Hadoop生态系统是一项常见的任务。Sqoop是一个强大的工具,可以帮助轻松完成这项任务。本文将提供详细的指南,以及丰富的示例代码,帮助了解如何使用Sqoop…

java:流程控制

一、流程控制语句分类 顺序结构分支结构(if,switch)循环结构(for,while,do...while) 二、顺序结构 定义:顺序结构是程序中最基本的流程控制,没有特定的语法结构&#…

MySQL三大日志

1. redo log 1.1 特点 InnoDB存储引擎独有物理日志,记录在数据页上做的修改让MySQL拥有了崩溃恢复能力,保证事务的持久性 1.2 刷盘时机 事务提交时log buffer 空间使用大约一半时事务日志缓冲区满InnoDB 定期执行检查点Checkpoint后台刷新线程&#…

【数据结构和算法】奇偶链表

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:分离节点后合并 三、代码 3.1 方法一:分离节点后合并 四、复杂度分…

详细介绍IP 地址、网络号和主机号、ABC三类、ip地址可分配问题、子网掩码、子网划分

1、 IP 地址: 网络之间互连的协议,是由4个字节(32位二进制)组成的逻辑上的地址。 将32位二进制进行分组,分成4组,每组8位(1个字节)。【ip地址通常使用十进制表示】ip地址分成四组之后,在逻辑上,分成网络号和主机号 2…

phpmyadmin 创建服务器

phpmyadmin默认的服务器是localhost 访问setup,创建新的服务器 添加服务器信息 点击应用,服务器创建成功 下载配置文件config.inc.php,放到WWW目录下 可再次访问setup,发现已配置过了 访问登录页面,发现可选…

关闭Windows自动更新的6种方法

关闭Windows自动更新的6种方法! 方法一:通过Windows设置关闭Windows自动更新 步骤1. 按WinI打开Windows设置页面。步骤2. 单击“更新和安全”>“Windows更新”,然后在右侧详情页中选择“暂停更新7天”选项即可在此后7天内关闭Windows更新…

Go语言基础快速上手

1、Go语言关键字 2、Go数据类型 3、特殊的操作 3.1、iota关键字 Go中没有明确意思上的enum(枚举)定义,不过可以借用iota标识符实现一组自增常亮值来实现枚举类型。 const (a iota // 0b // 1c 100 // 100d // 100 (与上一…

自然语言处理(Natural Language Processing,NLP)解密

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

【前后端分离与不分离的区别】

Web 应用的开发主要有两种模式: 前后端不分离 前后端分离 理解它们的区别有助于我们进行对应产品的测试工作。 前后端不分离 在早期,Web 应用开发主要采用前后端不分离的方式,它是以后端直接渲染模板完成响应为主的一种开发模式。以前后端不…

CentOS上安装Mellanox OFED

打开Mellanox官网下载驱动 Linux InfiniBand Drivers 点击下载链接跳转至 Tgz解压缩执行 ./mlnxofedinstall发现缺少模块 # ./mlnxofedinstall Logs dir: /tmp/MLNX_OFED_LINUX.11337.logs General log file: /tmp/MLNX_OFED_LINUX.11337.logs/general.log Verifying KMP rpm…

YOLOv5改进 | 主干篇 | 华为GhostnetV1一种移动端的专用特征提取网络

一、本文介绍 本文给大家带来的改进机制是华为移动端模型Ghostnetv1,华为GhostnetV1一种移动端的专用特征提取网络,旨在在计算资源有限的嵌入式设备上实现高性能的图像分类。GhostNet的关键思想在于通过引入Ghost模块,以较低的计算成本增加了特征图的数量,从而提高了模型的…

【微信小程序独立开发 4】基本信息编辑

这一节完成基本信息的编辑和保存 首先完成用户头像的获取 头像选择 需要将 button 组件 open-type 的值设置为 chooseAvatar,当用户选择需要使用的头像之后,可以通过 bindchooseavatar 事件回调获取到头像信息的临时路径。 从基础库2.24.4版本起&…

torchtext安装及常见问题

Pytorch 、 torchtext和Python之间有严格的对应关系: 在命令窗中安装torchtext pip install torchtext 注意这种安装方式,在pytorch版本与python版本不兼容时动会自动更新并安装pytorchcpu版本,安装的新版本pytorch可能会不兼容。慎用。 …

【Github搭建网站】零基础零成本搭建个人Web网站~

Github网站:https://github.com/ 这是我个人搭建的网站:https://xf2001.github.io/xf/ 大家可以搭建完后发评论区看看!!! 搭建教程:https://www.bilibili.com/video/BV1xc41147Vb/?spm_id_from333.999.0.0…

亚马逊云科技 WAF 部署小指南(六)追踪 Amazon WAF Request ID,排查误杀原因

众所周知,中国是全球制造业的巨大力量,许多中国企业通过 2B 电商平台网站进行商品销售和采购。在这些电商平台上,Web 应用防火墙(WAF)成为不可或缺的安全工具。然而,WAF 也可能导致误杀问题。一旦误杀发生&…

postgresql安装

一、官方找到对应的版本,下载 官方下载地址(rpm方式安装):PostgreSQL: Linux downloads (Red Hat family) PostgreSQL: The worlds most advanced open source database 滑到最下面

C# 图解教程 第5版 —— 第22章 命名空间和程序集

文章目录 22.1 引用其他程序集22.2 命名空间22.2.1 命名空间名称22.2.2 命名空间的补充22.2.3 命名空间跨文件伸展22.2.4 嵌套命名空间 22.3 using 指令22.3.1 using 命名空间指令22.3.2 using 别名指令22.3.3 using static 指令 22.4 程序集的结构22.5 程序集标识符22.6 强命名…

JS执行顺序

众所周知,JavaScript 是单线程语言,只能同时执行做一件事(js只有一个线程,称之为main thread-主线程) 1.Javascript 运行机制 main thread 主线程和 call-stack 调用栈(执行栈),所有的任务都会被放到调用栈等待主线程执行。 2.Javascript 任…

【Vue】vue项目中Uncaught runtime errors:怎样关闭

vue项目中Uncaught runtime errors:怎样关闭 一、背景描述二、报错原因三、解决方案3.1 只显示错误信息不全屏覆盖3.2 取消全屏覆盖 四、参考资料 一、背景描述 项目本来运行的好好,换了个新的浏览器,新的Chrome浏览器版本号是116.0.5845.97&#xff08…