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

news2024/9/21 12:46:57

原文链接: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.coloradmin.cn/o/1398616.html

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

相关文章

查询指定日期是否为法定工作日的服务接口

在现代社会中,人们的工作与生活节奏日益加快,为了更好地规划工作与休息时间,在开发应用软件时,通过查询指定日期是否为法定工作日的服务接口是一个非常有用的功能。本文将介绍一个API接口,可以根据国家的放假安排来判断…

Schema Builder - Salesforce的图形化工具

Schema Builder这个工具最近几年接触Salesforce的宝们用到的很少,这里给大家简单介绍下: 1. Schema Builder是一个动态的环境,在这个环境里管理员能查看或更改组织内对象及对象之间的关联关系;如果一开始接触CRM可以通过这个图形…

JVM:垃圾收集器(7种)

垃圾收集器关系图: 如果两个收集器之间存在连线,就说明它们可以搭配使用。它们说在的区域则表示这个收集器属于新生代收集器还是老年代收集器。其中Serial(串行)、Parallel(并行) 1、Serial收集器 Serial收…

F - Digital Roots HUOJ

题目 The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the pro…

Spring Boot 学习之——@SpringBootApplication注解(自动注解原理)

SpringBootApplication注解 springboot是基于spring的新型的轻量级框架,最厉害的地方当属**自动配置。**那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置 SpringBootApplication//标注在某个类上,表示这个类是SpringBoot…

大数据开发之Kafka(broker、消费者、eagle监控、kraft模式)

第 4 章:Kafka Broker 4.1 Kafka Broker工作流程 4.1.1 Zookeeper存储的Kafka的信息 1、查看zookeeper中的kafka节点所存储的信息 启动Zookeeper客户端 [atguiguhadoop104 zookeeper-3.5.7]$ bin/zkCli.sh 通过ls命令列出kafka节点内容 [zk: localhost:2181(CO…

Docker(六)数据管理

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! Docker 数据管理 这一章介绍如何在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式: 数据卷&…

【Java】JDBC练习

JDBC练习 环境准备 -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主键id int primary key auto_increment,-- 品牌名称brand_name varchar(20),-- 企业名称company_name varchar(20),-- 排序字段ordered …

Flink处理函数(3)—— 窗口处理函数

窗口处理函数包括:ProcessWindowFunction 和 ProcessAllWindowFunction 基础用法 stream.keyBy( t -> t.f0 ).window( TumblingEventTimeWindows.of(Time.seconds(10)) ).process(new MyProcessWindowFunction()) 这里的MyProcessWindowFunction就是ProcessWi…

STM32 GD32 瑞萨 psoc 等单片机 无线wifi蓝牙最佳解决方案

新联鑫威一系列低功耗高性价比sdio wifi/蓝牙combo的模块CYWL6208 , CYWL6312, CYW6209等可以搭配stm32 各种型号例如以下,支持sta/ap/apsta,双模蓝牙的应用,支持rt-thread, freertos, Azure RTOS, Linux, Android系统. 稳定强,功耗低&#x…

从规则到神经网络:机器翻译技术的演化之路

文章目录 从规则到神经网络:机器翻译技术的演化之路一、概述1. 机器翻译的历史与发展2. 神经机器翻译的兴起3. 技术对现代社会的影响 二、机器翻译的核心技术1. 规则基础的机器翻译(Rule-Based Machine Translation, RBMT)2. 统计机器翻译&am…

[ELK] ELK企业级日志分析系统

一、ELK 概述 1.1 ELK 简介与组件 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ●ElasticSearch:是基于Lucene(一个…

文献分享四:(基础)Pyroelectric drift of integrated-optical LiNbO3 modulators

文献来源——S. M. Kostritskii, Yu. N. Korkishko, V. A. Fedorov & A. V. Yatsenko (2021) Pyroelectric drift of integrated-optical LiNbO3 modulators, Ferroelectrics, 574:1, 170-178, DOI: 10.1080/00150193.2021.1888062 本文分析了我们之所以需要偏置电路的原因…

Lua 快速入门 · 教程笔记

Lua语言快速入门 教程笔记 前言1. Lua 语言介绍2. Lua 语言基础之基本语法声明变量声明方法使用 if - else使用 for使用 while 3. Lua 语言基础之表4. Lua 语言基础之数组插入元素移除元素获取表的长度全局表 5. Lua 语言面向对象之复制表的方式面向对象实现继承和重写父类方法…

鸿蒙开发-UI-布局-线性布局

鸿蒙开发-序言 鸿蒙开发-工具 鸿蒙开发-初体验 鸿蒙开发-运行机制 鸿蒙开发-运行机制-Stage模型 鸿蒙开发-UI 鸿蒙开发-UI-组件 鸿蒙开发-UI-组件-状态管理 鸿蒙开发-UI-应用-状态管理 鸿蒙开发-UI-渲染控制 鸿蒙开发-UI-布局 文章目录 前言 一、基本概念 二、布局子元素 1.子元…

【数据结构与算法】1.时间复杂度和空间复杂度

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…

Java设计模式-UML与设计原则(1)

大家好,我是馆长!在正式讲解Java设计模式之前,馆长先整理了一些概要信息,方便大家了解和学习。了解这些技术和理论信息,可以为设计模式的讲解更加的透彻与易学。 简介 统一建模语言(Unified Modeling Langu…

【react】创建react项目+项目结构

使用create-react-app快速搭建开发环境 create-react-app是一个快速创建React开发环境的工具,底层由Webpack构建,封装了配置细节 npx create-react-app react_hm执行命令后开始创建 创建好执行cd react_hm npm start 当看到webpack compiled successfu…

(超详细)7-YOLOV5改进-添加 CoTAttention注意力机制

1、在yolov5/models下面新建一个CoTAttention.py文件,在里面放入下面的代码 代码如下: import numpy as np import torch from torch import flatten, nn from torch.nn import init from torch.nn.modules.activation import ReLU from torch.nn.mod…

Redis最新版本搭建主从环境,Redis主从复制环境搭建

一般网站搭建都会使用Redis做缓存,当单台Redis承受不住压力时,会考虑搭建Redis主从。在没有业务的情况下,一般不会一下子上来就去搭建Redis无中心集群 Redis主从复制环境搭建,前面跟部署单台Redis一致,只不过后面是从R…