【Gaussian Grouping: Segment and Edit Anything in 3D Scenes】阅读笔记

1. 个人理解

和Gaussianformer都是ECCV的文章,都提出了给每一个gaussian加入一个元素来表明这个高斯属于某个类被,或者某个实体,也是本文的核心贡献。
本文可实现删除,换位置,修复等多个任务。

2. 论文原文

Abstract.

最近的 Gaussian Splatting 实现了 3D 场景的高质量和实时新颖视图合成。然而,它仅仅集中于外观和几何建模,而缺乏细粒度的对象级场景理解。为了解决这个问题,我们提出了高斯分组,它扩展了高斯分布以联合重建和分割开放世界 3D 场景中的任何内容。我们用紧凑的身份编码增强每个高斯,允许高斯根据其对象实例或 3D 场景中的东西成员身份进行分组。我们没有采用昂贵的 3D 标签,而是利用分段任意模型 (SAM) 的 2D 掩模预测以及引入的 3D 空间一致性正则化来监督可微渲染期间的身份编码。与隐式 NeRF 表示相比,我们表明离散和分组 3D 高斯可以以高视觉质量、精细粒度和效率重建、分割和编辑 3D 中的任何内容。基于高斯分组,我们进一步提出了局部高斯编辑方案,它表明在多功能场景编辑应用程序中的功效,包括 3D 对象移除、修复、着色、风格转换和场景重组。

1 Introduction

开放世界 3D 场景理解是一项重要挑战,对机器人、AR/VR 和自动驾驶具有深远影响。给定一组摆好姿势的 RGB 图像,我们的目标是学习有效的 3D 表示,联合重建和分割 3D 场景中的任何内容。该表示应轻松支持各种下游场景编辑应用程序。例如,在图 1 中,可以轻松删除或修复场景的 3D 对象,并且可以通过交换对象位置来重新组合场景。

虽然 SAM 及其变体 [14,17,64] 在 2D 场景理解方面取得了显着进展,但它们向 3D 的扩展受到了限制。这主要是由于创建 3D 场景数据集的可用性和劳动密集型过程。现有方法 [8, 42] 依赖于手动标记的数据集,这些数据集成本高昂且范围有限,或者需要精确扫描的点云 [37, 47] 作为输入。这阻碍了能够快速泛化各种现实世界场景的 3D 场景理解方法的发展。

通过多视图捕获,现有的基于 NeRF 的方法 [16,19,28,44] 提升 2D 掩模或通过神经场渲染提取 CLIP [39] / DINO [3] 特征。然而,由于 NeRF 的隐式和连续表示,这些方法需要昂贵的随机采样,并且优化计算量大。此外,很难直接调整基于 NeRF 的方法来进行下游本地编辑任务 [19],因为学习的神经网络(例如 MLP)无法轻松分解 3D 场景中的每个部分或模块。几种方法 [4, 43] 将 NeRF 或稳定扩散 [41] 与 SAM 掩模结合起来,但它们只关注单个对象。

作为 NeRF 的替代方案,最近出现的 3D Gaussian Splatting [15] 显示了令人印象深刻的重建质量以及高训练和渲染效率。它用一系列彩色和明确的 3D 高斯曲线表示 3D 场景,这些高斯曲线被渲染到相机视图中以进行新颖的视图合成。然而,高斯分布

### 高斯相关概念及其编程实现 #### 什么是高斯分布? 高斯分布(Gaussian Distribution),也被称为正态分布,是一种连续概率分布,在统计学和数据科学领域具有重要地位。它由均值 \( \mu \) 和标准差 \( \sigma \) 定义,其概率密度函数可以表示为: \[ f(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \] 其中,\( \mu \) 是分布的中心位置,而 \( \sigma \) 则决定了分布的宽度[^4]。 #### 编程中的高斯随机数生成 在许多编程语言中,可以通过内置库轻松生成服从高斯分布的随机数。以下是 Python 中的一个例子,展示如何利用 `numpy` 库生成一组高斯分布的数据样本。 ```python import numpy as np import matplotlib.pyplot as plt # 设置参数 mu=0, sigma=1 mu, sigma = 0, 1 # 使用 NumPy 的 random.normal 函数生成 1000 个样本 samples = np.random.normal(mu, sigma, 1000) # 绘制直方图 plt.hist(samples, bins=30, density=True, alpha=0.6, color='g') # 添加理论曲线 xmin, xmax = plt.xlim() x = np.linspace(xmin, xmax, 100) p = (1 / (np.sqrt(2 * np.pi) * sigma)) * np.exp(-((x - mu)**2) / (2 * sigma**2)) plt.plot(x, p, 'k', linewidth=2) plt.title('Histogram of Gaussian Samples') plt.show() ``` 此代码片段展示了如何通过指定均值和标准差来生成并可视化高斯分布的样本集合[^5]。 #### 高斯过程回归简介 除了简单的随机变量模拟外,高斯过程(Gaussian Process)也是一种强大的机器学习技术,用于解决回归问题。相比传统的监督学习模型,如深度学习提到的学习数据表征而非特定任务算法的方法[^2],高斯过程提供了一种更加灵活的概率建模方式。给定训练集 \( D=\{(x_i,y_i)\}_{i=1}^{n} \),目标是从输入空间到输出空间映射关系进行推断。具体来说,假设观测值 y 被视为潜在函数 f 加上噪声的结果,则整个推理框架基于联合多维正态分布构建而成[^6]。 #### 实现简单的一维高斯过程回归 下面给出一段简化版的一维高斯过程回归Python代码示例: ```python from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C import numpy as np # 创建核函数对象 kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (1e-2, 1e2)) # 初始化GP实例 gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9) # 训练数据 X_train = np.array([[-1], [0], [1]]) y_train = np.sin(X_train).ravel() # 拟合模型 gp.fit(X_train, y_train) # 测试数据网格化 X_test = np.linspace(-2, 2, 100).reshape(-1, 1) # 进行预测 mean_prediction, std_prediction = gp.predict(X_test, return_std=True) # 可视化结果... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值