3DGS应用探索

Presence 是什么?

2022 年 11 月,托马斯莫尔研究中心启动了“Presence”研究项目。通过这项研究,托马斯莫尔与 Vlaio 和 Presence 咨询小组(由来自佛兰德媒体行业的 20 多家企业组成)合作,旨在探索如何创建物体、个人和故事的数字表示并将其带入虚拟环境。

为了实现这一目标,我们将研究各种(XR)技术,例如动作捕捉、面部捕捉、文本到一切、2D 和 3D 化身、虚拟制作、摄影测量、3D 索具和 LiDAR 扫描。

虚幻引擎中通过键盘控制的逼真头像

介绍

Presence 团队长期以来一直致力于扫描环境,利用各种技术创建现有环境的数字孪生。这些精确的数字孪生可用于各种领域,例如录制、前期制作、虚拟规划、虚拟游览和虚拟培训。

创建数字孪生涉及一系列技术,最近加速使用人工智能/神经网络来生成此类模型。在我们第一年的研究中,我们探索了 NeRF 技术。

巴塞罗那 Ciutadella 的 NeRF

最近的发展导致了高斯分层的重新发现。最初出现在网络上的模型不仅质量高,而且在计算能力方面也更高效。这些发展为我们亲自测试这项新技术提供了足够的理由。

什么是高斯溅射?

高斯分布是一种创新方法,用于表示和渲染环境或对象(场景)。通过这项技术,我们可以利用一系列 2D 图像来创建场景的 3D 表示,捕捉场景的深度、颜色和不透明度。模型中的每个点都表示为 3D 高斯,类似于具有柔和边缘的空间椭圆体。

3D 高斯

通过使用基于图块的光栅化技术,可以以最小的计算能力快速渲染。在这种技术中,图像被分成多个图块,每个图块单独渲染。与一次渲染整个图像相比,这显著降低了渲染能力。

传统渲染与基于图块的渲染 © Techpowerup

高斯溅射建立在摄影测量和神经辐射场 (NeRF) 的原理之上。摄影测量基于对 2D 照片的分析创建 3D 重建,但存在一些局限性。例如,摄影测量对光线敏感,通常难以捕捉细节,尤其是在颜色均匀的物体中(例如,穿着均匀黑色服装的人)。另一方面,NeRF 利用神经网络和深度学习来创建灵活而准确的 3D 模型,但需要强大的计算能力才能进行实时渲染。

场景的高斯分布是 3D 点的表示。平均而言,一个分布包含 0.5 到 5 百万个这样的 3D 点。每个 3D 点都有独特的参数,可以尽可能准确地表示场景。通过将机器学习技术应用于这些参数,可以有效地对复杂场景进行建模。如前所述,高斯分布利用基于图块的光栅化,无需机器学习。这可以用最少的计算能力快速渲染这些模型。由于其球谐特性,最终结果是可直接编辑的,并且可以响应虚拟光源,而这在 NeRF 中是无法实现的。

点云

尽管高斯溅射具有诸多优势,但也存在一些问题。尽管它发展迅速且前景光明,但在实践中并不总是那么实用。在动画过程和模型调整方面仍然存在限制,例如应用不同的材质。尽管如此,我们对高斯溅射的可能性非常乐观,并将其视为一项值得进一步探索的技术。

高斯溅射如何工作?

创建高斯

### 关于3DGS项目的细节与参与机会 #### 什么是3DGS3D Gaussian Splatting (3DGS) 是一种基于高斯分布表示三维场景的技术,其核心在于利用高斯函数来描述点云的颜色、位置以及方向特性[^3]。这种方法能够高效地实现高质量的场景重建和渲染。 #### 项目中的技术挑战 设计高效的并行化策略对于预训练的3DGS至关重要,这直接影响到渲染性能和效率[^1]。因此,在实际开发过程中,优化算法以适应现代硬件架构(如GPU加速)是一个重要的研究领域。 #### 应用案例分析 - **实时SLAM**:在动态环境下,借助3DGS可以实现实时更新场景模型的功能,从而提高定位精度。例如,在自动驾驶汽车的应用中,该技术可以帮助解决因移动物体引起的环境变化问题。 - **与其他技术比较** - 当前存在多种用于三维场景生成的方法,比如NeRF(神经辐射场)。然而两者各有优劣——当目标是获取精准几何数据并且要求快速处理时应优先考虑采用3DGS;而如果追求极致视觉效果尤其是面对复杂光源条件下的表现,则推荐使用NeRF作为解决方案[^4]。 #### 参与方式建议 对于希望参与到此类前沿科研工作的个人或者团队来说,可以从以下几个方面入手: 1. 探索如何改进现有的splatting机制使之更加适用于大规模分布式计算平台; 2. 结合具体应用场景探索新的可能性,像增强虚拟现实体验或是改善机器人感知能力等领域都是不错的选择; 3. 加强跨学科合作,引入计算机图形学之外的知识背景共同推动技术创新与发展。 ```python # 示例代码展示简单的Gaussian Distribution模拟过程 import numpy as np from scipy.stats import multivariate_normal def generate_gaussian_splat(mean=[0, 0], cov=[[1 ,0],[0, 1]], size=500): x, y = np.random.multivariate_normal(mean, cov, size).T return x,y if __name__ == "__main__": xs, ys = generate_gaussian_splat() print(xs[:10]) print(ys[:10]) ``` 上述脚本展示了如何创建一组遵循二维正态分布的数据点集合,这是构建更复杂的3D GS系统的基础之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值