【三维分割】Gaga:通过3D感知的 Memory Bank 分组任意高斯

在这里插入图片描述


文章目录

  • 摘要
  • 一、引言
  • 二、主要方法
    • 2.1 3D-aware Memory Bank
    • 2.2 三维分割的渲染与下游应用
  • 三、实验
    • 消融实验
    • 应用: Scene Manipulation


地址:https://www.gaga.gallery
标题:Gaga: Group Any Gaussians via 3D-aware Memory Bank
来源:加利福尼亚大学;Nvidia;Google

摘要

  Gaga,一个通过利用zero shot分割模型预测的不一致的2D mask来重建和分割开放世界的3D场景的框架。与之前严重依赖于视频物体跟踪的3D场景分割方法相比,Gaga利用了空间信息,并有效地关联了不同相机pose中的物体mask
。通过消除训练图像中连续视图变化的假设,Gaga展示了对相机姿态变化的鲁棒性,特别有利于稀疏采样的图像,确保了精确的mask标签的一致性。此外,Gaga适应了来自不同来源的二维分割mask,并在不同的开放世界zero shot分割模型中表现出了稳健的性能
,增强了其通用性。

  

  


一、引言

  有效的开放世界三维分割对场景的理解和操作至关重要。尽管2D分割技术有了显著的进步,例如SAM和EntitySeg ,将这些方法扩展到3D领域,但遇到了确保多视图图像之间一致的mask标签分配的挑战。具体来说,不同视图的mask可能有不同的mask id,因为多视图图像是由二维分割模型单独处理的。简单地将这些不一致的二维掩模提升到3D中会导致模糊性,导致三维场景分割效果较差。因此,我们认为,在将每个掩模提升到3D之前,为每个掩模分配一个多视图一致的通用掩模ID是至关重要的。我们将此任务称为掩码关联。

  先前的研究工作[9,26]建立在三维重建的高斯溅射[3DGS],试图通过将多视图图像数据集视为视频序列,采用现成的视频对象跟踪方法[6]来解决这一任务。然而,这种设计依赖于多视图图像之间的视图变化最小的假设,这种情况在现实世界的3D场景中可能并不一致地存在。因此,这些方法会与类似的物体或被遮挡的物体作斗争,这些物体会不时地消失和重新出现,如图2所示。

在这里插入图片描述

  因此,我们分析了三维mask关联和视频对象跟踪任务之间的基本差异:对固有的三维信息的利用。具体来说,不同视图的同一对象的mask应对应于同一组三维高斯。因此,如果两组分散的三维高斯分布之间有很大的重叠,我们可以从具有相同通用mask ID的不同视图分配两个mask

  基于这种直觉,我们提出了Gaga,一个框架,将任何3D高斯进行分组,并在不同视图中呈现一致的3D分割。给定一组假设的RGB图像,我们首先使用高斯溅射法重建一个三维场景,并使用开放世界分割方法提取二维掩模。随后,我们迭代地构建一个三维感知存储库,它收集和存储按类别分组的高斯数据。具体来说,对于每个输入视图,我们使用相机参数将每个二维掩模投影到三维空间中,并在内存库中搜索与失投影掩模重叠最大的类别。根据重叠的程度,我们要么将掩码分配给一个现有的类别,要么创建一个新的类别。最后,按照上述掩模关联过程,我们利用一致的二维掩模学习每个高斯分布的特征进行渲染分割。

  我们的方法Gaga能够1)合成新的RGB视图图像,分割具有固有的三维一致性;2)基于二维分割掩模对三维高斯分布进行分组,为场景操作提供精确的三维实例分割;3)适应任何二维分割方法,不需要额外的掩模预处理。我们的贡献总结如下:

  • 我们提出了一个框架,使用由开放世界分割模型生成的不一致的二维掩模来重建和分割三维场景。
  • 为了解决二维掩模跨视图的不一致性,我们设计了一个3守护软件存储库,收集相同语义组的高斯数据。然后使用这个内存库跨不同的视图对齐2D掩模。
  • 研究结果表明,该方法可以有效地利用任何二维分割掩模,使其易于适用于合成新的视图图像和分割mask。
  • 我们在不同的数据集和具有挑战性的场景上进行了全面的实验,包括稀疏输入视图,以定性和定量地证明所提方法的有效性

二、主要方法

  高斯的图像像素渲染公式:

在这里插入图片描述

  身份编码。每个高斯分配一个16维特征,通过分类器 L L L 解码为一个逐像素的分割mask ID m x , y m_{x,y} mx,y的每个像素(x,y):

在这里插入图片描述
产生的mask IDs 由 2D 分割masks监督。

2.1 3D-aware Memory Bank

  给定带pose图像,目标是重建一个具有语义标签的三维场景进行分割渲染。为此,首先利用高斯溅射法进行场景重建。然后使用一种开放世界的二维分割方法,如SAM [14]或EntitySeg [21]来预测每个输入图像的类未知分割。然而,由于分割模型独立地处理每个输入图像,所得到的掩模自然不是多视图一致的。为了解决这个问题,[9,26]假设附近的输入视图是相似的,并应用一个视频对象跟踪器来关联不同视图的不一致的2D掩模。然而,这个假设可能并不适用于所有的3D场景,特别是当输入视图是稀疏的时。

  Gaga的灵感来自于跨多个视图的面具关联任务和视频中的跟踪对象之间的根本差异:3D信息的整合。为了在不同的视图中可靠地生成一致的mask,我们提出了一种利用三维信息的方法,而不依赖于对输入图像的任何假设:在不同视图中属于同一实例的mask将对应于三维空间中的同一高斯群。因此,这些高斯分布应该被分组在一起,并分配一个相同的 group ID。

  我们首先将每个二维分割mask与其相应的三维高斯分布关联起来。具体地说,给定每个输入图像的pose,将所有三维高斯splat到相机帧上。随后,对于图像中的每个mask,识别出哪些三维高斯被投影在该mask中。这些高斯模型应该被识别为3D mask的表示,并作为关联不同视角的mask的指导。

  值得注意的是,mask通常描述了在当前相机pose下的前景物体的形状。然而,如图4 (a)所示,很大一部分高斯对二维分割mask的像素没有贡献,因为它们代表了位于后面的对象。为了解决这个问题,我们选择最接近相机帧的三维高斯的前x%作为mask对应的高斯。x是一个超参数,根据场景的性质进行调整。如图4 (b)行1所示,基于整个mask选择对应的高斯不能准确地表示大的mask的形状,且不能将不同像机pose的mask关联起来。为了解决这个问题,我们提出了一种策略,将图像划分为32个×32个patch,将每个patch内最接近像机帧的三维高斯的前x%的集合识别为mask m m m的对应高斯,记为G (m)。如图4 (b)行2所示,这种简单的策略有效地提高了不同视图间关联掩模的一致性。.

  3D-aware Memory Bank用于收集并分组三维高斯,用来关联不同视图中的mask:给定一组图像,先将第一张图像中每个mask的相应高斯分储到一个group中,并使用一个group ID来初始化3d感知记忆库。对于后续图像的二维mask,首先找到对应的高斯,然后将其分配给内存库中的已有group;如果它们与内存库中的现有group没有相似之处,则建立一个新的group

  通过高斯重叠,来分配Group ID。这里,我们通过共享高斯的百分比来定义两组3DGS的相似性。具体来说,给定二维mask m m md 对应的3DGS(记为 G ( m ) G(m) G(m) 和Memory Bank中的group i i i(记为G_i)的3DGS,计算共享高斯(利用索引) G ( m ) ∩ G i G(m)∩G_i G(m)Gi的重叠的比例:

在这里插入图片描述
如果group i i i在Memory Bank的所有组中与mask m m m 的重叠最高,且大于阈值,则:

在这里插入图片描述

2.2 三维分割的渲染与下游应用

  在分配group ID之后,由同一组3DGS投影的mask应该在不同的视图中具有相同的ID。与Gaussian grouping]类似,使用这些mask作为伪标签,并通过训练身份编码将它们提升到3D。由于已经预训练过3DGS,所以只修复其他属性(例如,位置、不透明度等)

  

  

三、实验

  数据集。使用了一个场景理解数据集LERF-Mask [26],以及两个室内场景数据集:Replica[23]和ScanNet [8]。LERF-Mask是基于LERF数据集[12],并由[26]的作者用任务和地面真相进行了注释。它包含了3个场景:figurines, ramen,和 teatime。对于每个场景,选择6-10个对象作为文本查询,并使用Grounding DINO [17]从渲染的分割中选择mask ID。Replica[23]和ScanNet使用了8个场景,每个场景包含180张训练图像和相同数量的图像用于测试。在ScanNet中使用了7个场景,每个场景包含超过300张训练图像和大约100张测试图像。请注意,所有注释的分割mask在训练期间都是不可用的。

  评估指标。使用mIoU和边界IoU(mBIoU)对LERF-Mask数据集进行评估。Replica和ScanNet使用真实全光学分割,不考虑类别信息。为了处理预测的和真实mask标签之间的差异,我们计算了基于IoU的最佳线性分配。此外,以IoU = 0.5为标准,我们报告了精度和召回率。

表1与表2:
在这里插入图片描述

在这里插入图片描述

  实验细节。我们使用SAM [14]和Entity[21]来分割2D掩码,通过对置信度较高的mask排序,分低于0.5的mask被丢弃。先训练30K原始高斯溅射,然后冻结其他参数,训练10K的身份编码;选择最接近相机帧的前20%三维高斯函数作为mask对应的3D高斯。新的group ID的重叠阈值设置为0.1。为了公平比较,我们训练高斯分组[26]进行40K迭代,所有用于训练三维高斯的参数的身份编码与[3DGS]和[Gaussian grouping]相同。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

消融实验

  Gaga对训练图像数量变化的鲁棒性(分别对replica数据集按比例0.3、0.2、0.1和0.05的副本稀疏采样),效果如表3:
在这里插入图片描述
在这里插入图片描述

与GaussianGrouping相比,Gaga对训练图像数量减少的敏感性较低,这可以从IoU下降值较小得到证明。可视化结果如图7所示。只有5%的训练数据,Gaga仍然可以提供准确的分割掩模,而高斯分组由于不准确的跟踪,无法为很大一部分物体提供掩模。

在这里插入图片描述

应用: Scene Manipulation

  Gaga实现了高质量、多视图一致的3D分割,有利于Scene Manipulation任务,因为我们可以准确地分割3D对象的高斯分布并编辑它们的属性。利用预先训练的具有身份编码的三维高斯模型,我们使用经过身份编码训练的分类器来预测每个三维高斯模型的掩模标签。随后,我们选择与目标对象共享相同mask标签的三维高斯,并编辑它们的属性,如对象着色、删除和位置移动

在这里插入图片描述

其他消融实验:

在这里插入图片描述


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

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

相关文章

UE5 开启“Python Remote Execution“

demo 代码 remote_execution.py 远程调用UE5 python代码-CSDN博客 在启用 Unreal Engine 5(UE5)的“Python 远程执行”功能后,UE5 会启动一个 UDP 组播套接字服务,以监听来自外部应用程序的 Python 命令。 具体行为如下&#xf…

TangoFlux 本地部署实用教程:开启无限音频创意脑洞

一、介绍 TangoFlux是通过流匹配和 Clap-Ranked 首选项优化,实现超快速、忠实的文本到音频生成的模型。 本模型由 Stability AI 提供支持🚀 TangoFlux 可以在单个 A40 GPU 上在 ~3 秒内生成长达 34.1kHz 的立体声音频。 二、部署 安装方式非常简单 1…

Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决

前言 在将 Spring Boot 项目升级至 3.3.4 版本后&#xff0c;遇到 Logback 配置的兼容性问题。本文将详细描述该问题的错误信息、原因分析&#xff0c;并提供调整日志回滚策略的解决方案。 错误描述 这是SpringBoot 3.3.3版本之前的回滚策略的配置 <!-- 日志记录器的滚动…

Vue 3中导航守卫(Navigation Guard)结合Axios实现token认证机制

在Vue 3中&#xff0c;导航守卫&#xff08;Navigation Guard&#xff09;用于拦截路由的变化&#xff0c;可以在用户访问页面前进行检查。结合Axios进行token认证机制时&#xff0c;我们可以通过导航守卫在路由跳转时&#xff0c;检查用户的认证状态&#xff0c;确保用户有有效…

Webrtc (1) - Windows 编译

最近项目上遇到webrtc wgc 的几个test case无法通过&#xff0c;与webrtc人员沟通后决定要自行修复一下(因为他们不想管…) 参考文档 https://webrtc.org/support/contributinghttps://chromium.googlesource.com/chromium/src//main/docs/#checking-out-and-building 以上两…

Python数据类型间的转换及eval函数

1.数据类型间的转换 x 10 y 3 z x / y # 除法运算&#xff0c;将运算的结果赋值给z print(z,type(z)) # 隐式转换&#xff0c;通过运算隐式地传了结果的类型# float类型转换为int类型&#xff0c;只保留整数部分&#xff0c;不会进行四舍五入 print(int(3.1542)) print(i…

influxdb+grafana+jmeter

influxdb influxd先启动 启动完成后执行 influxdb的端口号 grafana的启动 通过grafana-server.exe启动grafana 启动后打开 http://localhost:8087/

GeekHour

Linux Linux的是类Unix系统&#xff0c;作者是Linus&#xff0c;也是git的作者。符合GPL&#xff08;General Public License&#xff09;就可以Linux的使用、修改、再发布。 Linux四部分&#xff1a; 内核&#xff1a;驱动、内存管理、进程管理、文件系统、网络协议栈…。作…

【SpringCloud】黑马微服务学习笔记

目录 1. 关于微服务 ?1.1 微服务与单体架构的区别 ?1.2 SpringCloud 技术 2. 学习前准备 ?2.1 环境搭建 ?2.2 熟悉项目 3. 正式拆分 ?3.1 拆分商品功能模块 ?3.2 拆分购物车功能模块 4. 服务调用 ?4.1 介绍 ?4.2 RustTemplate?的使用 4.3 服务治理-注册中…

安装matlab2024a错误license checkout failed Error-8

问题&#xff1a; 忘记截图了&#xff0c;借用博主的图片。 记得安装过程中&#xff0c;目标网址才是你的安装地址&#xff0c;而不是前面的安装包地址。 解决方法&#xff1a; 1.将破解文件中"Crack\R2020a\bin\win64\matlab_startup_plugins\lmgrimpl"目录下的l…

Spring缓存注解@Cacheable详细介绍和实际使用案例

Cacheable是Spring框架中用于缓存方法返回结果的注解&#xff0c;它可以显著提高应用程序的性能&#xff0c;特别是对于一些计算密集型或频繁调用且结果不经常变化的方法。以下是关于Cacheable的详细介绍&#xff1a; 基本使用 添加依赖&#xff1a;使用Cacheable注解前&…

第10章:Python TDD优化货币类方法与引入工厂方法

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…

解决 Django 5.1 中的 TemplateSyntaxError 错误

解决 Django 5.1 中的 TemplateSyntaxError 错误 在 Django 开发过程中&#xff0c;我们经常会遇到 TemplateSyntaxError 错误&#xff0c;尤其是在模板文件中使用不被支持或错误的模板标签时。最近&#xff0c;我们遇到的一个常见错误是&#xff1a; Invalid block tag on l…

多模态数据有哪些常见类型?从视觉到语言的广泛应用

1. 图像文字&#xff1a;让机器“看懂”世界 这是什么&#xff1f; 机器看一张图片&#xff0c;然后用文字描述出来&#xff0c;比如“这是一只正在奔跑的狗”。 它有什么用&#xff1f; 购物&#xff1a;拍张鞋子的照片&#xff0c;AI能告诉你哪家网店有同款。 辅助盲人&…

【Oracle数据库】创建表的同义词示例

目录 背景创建用户创建基础表及数据创建同义词回收权限删除用户 背景 测试Oracle数据库创建同义词功能。 创建用户 -- 切换到 SYS 用户 CONNECT SYS/your_password AS SYSDBA;-- 创建 HR 用户 CREATE USER HR IDENTIFIED BY hr_password; GRANT DBA TO HR;-- 创建 SCOTT 用户…

【数据库知识】PostgreSQL介绍

PostgreSQL介绍 概述一、起源与发展二、特性与功能三、PL/pgSQL语言四、应用场景五、配置与优化 核心概念一、基础数据结构二、数据操作三、高级特性四、应用场景 多版本控制MVCC说明一、MVCC的基本概念二、MVCC的实现原理三、MVCC的工作流程四、MVCC的优势五、MVCC的局限性 可…

gitlab使用多数据库

1. 说明 默认情况下&#xff0c;GitLab 使用一个单一的应用数据库&#xff0c;称为主数据库。为了扩展 GitLab&#xff0c;您可以将 GitLab 配置为使用多个应用数据库。 设置多个数据库后&#xff0c;GitLab 将使用第二个应用数据库用于 CI/CD 功能&#xff0c;称为 CI 数据库…

常用排序算法之插入排序

目录 前言 一、基本原理 1.算法步骤 2.动画演示 3.插入排序的实现代码 二、插入排序的时间复杂度 1. 时间复杂度 1.最优时间复杂度 2.最差时间复杂度 3.平均时间复杂度 2. 空间复杂度 三、插入排序的优缺点 1.优点 2.缺点 四、插入排序的改进与变种 五、插入排…

【机器学习实战入门】使用OpenCV进行性别和年龄检测

Gender and Age Detection Python 项目 首先,向您介绍用于此高级 Python 项目的性别和年龄检测中的术语: 什么是计算机视觉? 计算机视觉是一门让计算机能够像人类一样观察和识别数字图像和视频的学科。它面临的挑战大多源于对生物视觉有限的了解。计算机视觉涉及获取、处…

python爬虫的学习流程(1-前提准备)

这里主要记录一下我的python爬虫初级的学习的流程 1.python爬虫入门实战课 什么是爬虫&#xff1f;众说纷纭&#xff0c;我们引用维基百科上对网络爬虫的介绍&#xff1a; 网络爬虫&#xff08;英语&#xff1a;Web crawler&#xff09;&#xff0c;也叫网络蜘蛛&#xff08;…