GaussianDreamer: Fast Generation from Text to 3D Gaussians——点云论文阅读(11)

server/2024/11/27 18:27:23/
此内容是论文总结,重点看思路!!

文章概述

本文提出了一种快速从文本生成3D资产的新方法,通过结合3D高斯点表示、3D扩散模型和2D扩散模型的优势,实现了高效生成。该方法利用3D扩散模型生成初始几何,通过噪声点扩展和颜色扰动丰富细节,并使用2D扩散模型优化生成质量。相比现有方法,它不仅生成速度快(单GPU训练仅需15分钟),且生成资产具有更高的几何一致性和细节质量,同时支持实时渲染,为文本生成3D技术提供了更高效的解决方案。

方法特点与创新

  1. 结合2D和3D扩散模型:通过3D扩散模型提供几何一致性,2D扩散模型提升细节质量。

  2. 高效表示:采用3D高斯点表示,具有简单结构和快速渲染能力。

  3. 高效优化:通过SDS损失实现快速收敛,仅需少量训练时间即可生成高质量的3D资产。

  4. 增强步骤:引入噪声点扩展和颜色扰动,显著提升初始点云的细节。

主要方法

GaussianDreamer通过结合3D扩散模型和2D扩散模型的优势,利用3D高斯点表示实现从文本到3D的高效生成。具体方法包括两个阶段:初始化优化

3ddiffusionmodelpriors">1. 初始化(Initialization with 3D Diffusion Model Priors)

初始化阶段的目标是生成初始的3D高斯点云,作为后续优化的基础。其过程如下:

3d">1.1 使用3D扩散模型生成粗略几何
  • 根据输入文本提示,使用3D扩散模型(如Shap-E或Point-E)生成粗糙的3D资产。

  • Shap-E:基于隐式表示(如SDF)生成纹理化的三角网格。

  • Point-E:直接生成稀疏点云。

  • 将生成的3D资产(如三角网格)转换为点云,包括每个点的位置和颜色。

1.2 噪声点扩展(Noisy Point Growing)
  • 目的:增强点云密度以捕捉更多细节。

  • 过程

  1. 计算原始点云的包围盒。

  2. 在包围盒中随机生成额外的点云。

  3. 使用KDTree算法筛选与原始点云位置相近的点。

  4. 合并新生成的点与原始点云。

1.3 颜色扰动(Color Perturbation)
  • 目的:增强点云的视觉表现力。

  • 过程:对新增点的颜色进行扰动,使其颜色接近原始点,并随机加入轻微变化。

3d3dgaussianinitialization">1.4 初始化3D高斯点(3D Gaussian Initialization)
  • 根据增强后的点云初始化3D高斯点:

  • 位置(μ):直接取点云位置。

  • 颜色(c):取点云颜色。

  • 透明度(α):统一初始化为0.1。

  • 协方差(Σ):计算最近两点之间的距离以设置协方差。


2. 优化(Optimization with the 2D Diffusion Model)

优化阶段旨在通过2D扩散模型进一步优化3D高斯点的几何细节和外观质量。其过程如下:

2.1 渲染图像
  • 利用3D高斯点的渲染方法(3D Gaussian Splatting)将点云渲染为2D图像。

  • 渲染方法通过光线投射累积高斯点的颜色和透明度,生成每个像素的颜色。

2.2 使用SDS损失优化
  • SDS(Score Distillation Sampling)损失

  • 利用预训练的2D扩散模型,计算渲染图像与扩散模型生成的目标图像之间的噪声差异。

  • 根据差异计算梯度,优化高斯点的参数(位置、颜色、协方差和透明度)。

  • 更新过程

  • 每次迭代使用2D扩散模型生成目标图像,并通过SDS损失更新3D高斯点。


3. 渲染与实时性能

  • 优化后的3D高斯点无需转换为网格结构,直接通过高斯点渲染实现实时可视化。

  • 生成过程在单块GPU上仅需15分钟,显著提升了效率。

GaussianDreamer 框架的整体流程

3d52.png" width="1183" />

1. 初始化阶段(Initialization with 3D Diffusion Model Priors)

1.1 文本到3D点云生成
  • 输入:文本提示(如 "A fox")。

  • 模型

  • 使用 3D 扩散模型(例如 Text-to-3D 或 Text-to-Motion 模型)。

  • 根据文本生成初始点云,点云包含点的位置和颜色信息。

1.2 噪声点扩展与颜色扰动
  • 目标:提高点云的几何细节和视觉表现。

  • 方法

  • 噪声点扩展:在点云包围盒中生成额外的点,增加密度。

  • 颜色扰动:对新点的颜色进行随机扰动,增强视觉细节。

3d">1.3 3D高斯点初始化
  • 将增强后的点云转换为 3D 高斯点:

  • 位置:使用点云位置。

  • 颜色:使用扰动后的颜色。

  • 透明度和协方差:根据点云分布进行初始化。


2. 优化阶段(Optimization with the 2D Diffusion Model)

2.1 渲染2D图像
  • 使用 3D 高斯点通过 3D Gaussian Splatting 渲染2D图像。
3d">2.2 优化3D高斯点
  • 利用 2D扩散模型 提高生成的细节和一致性。

  • 具体方法:

  • SDS损失(Score Distillation Sampling)

    • 比较渲染图像与扩散模型生成图像的噪声差异。

    • 根据差异计算梯度,优化 3D 高斯点的参数(如位置、颜色、透明度等)。


3dgaussiansplatting">3. 结果渲染(Final 3D Gaussian Splatting)

  • 输出:经过优化的 3D 高斯点直接渲染为高质量3D结果(如狐狸的逼真3D模型)。

  • 时间成本

  • 7秒:生成初始点云。

  • 15分钟:完成所有优化,生成最终的高质量3D模型。

噪声点扩展(Noisy Point Growing)和颜色扰动(Color Perturbation) 的过程

图中关键内容

  1. 左侧(Before Grow&Pertb.)
  • 初始生成的点云(Generated Point Clouds pm​)用橙色圆点表示。

  • 点云分布稀疏,难以捕捉精细的几何和表面特征。

  • 黑色虚线框表示点云的包围盒(BBox),其大小由点云的边界决定。

  1. 右侧(After Grow&Pertb.)
  • 添加了新的点云(Growing Point Clouds pr​),用红色圆点表示。

  • 新增点云均匀分布在包围盒内部,增强了点云密度。

  • 这些新增点的颜色经过扰动,变得更加多样化,提升了视觉效果。


Grow&Pertb. 过程

  1. 噪声点扩展(Noisy Point Growing)
  • 目标:在点云稀疏区域生成更多点,提高几何细节。

  • 方法

    • 在包围盒(BBox)内随机采样点。

    • 通过 KDTree 筛选与原始点云距离较近的点,仅保留这些点以保持几何一致性。

  1. 颜色扰动(Color Perturbation)
  • 目标:增强新增点的视觉表现,使其颜色接近原始点云但带有随机变化。

  • 方法

    • 对新增点赋予接近于邻近原始点颜色的值,并加入随机扰动(如随机加减一定范围的值)。

3dfantasia3dprolificdreamer3dqualitativecomparisons">GaussianDreamer 与其他方法(DreamFusion、Magic3D、Fantasia3D 和 ProlificDreamer)在文本到3D生成任务上的定性对比(Qualitative Comparisons)3da66746228af04490fad53b81.png" width="1165" />

1. 方法和时间比较

每种方法的名称和训练时间列在顶部:

  • DreamFusion:6小时(在 TPUv4 上测量)。

  • Magic3D:5.3小时(在 A100 上测量)。

  • Fantasia3D:6小时(在 RTX 3090 上测量)。

  • ProlificDreamer:数小时(具体时间未标注,但显著更慢)。

  • GaussianDreamer(Ours):15分钟(在 RTX 3090 上测量)。

结论:GaussianDreamer 的训练时间明显少于其他方法,仅需15分钟完成训练。


2. 文本提示及生成结果对比

每行展示了一组示例的文本提示和对应生成结果:

示例 1:一盘堆满巧克力饼干的盘子
  • DreamFusion、Magic3D 和 Fantasia3D

  • 生成结果未完整表现“盘子”的部分,巧克力饼干直接浮于空中或不在盘子上。

  • 细节丰富度一般。

  • ProlificDreamer

  • 饼干与盘子表现较好,但颜色和细节较其他方法更加突出。

  • 训练时间极长。

  • GaussianDreamer

  • 生成的饼干和盘子细节丰富,盘子纹理清晰且造型真实。

  • 效果优于 DreamFusion 和 Magic3D,接近 ProlificDreamer,但训练时间显著减少。

示例 2:带茅草屋顶的可爱乡村小屋
  • DreamFusion

  • 小屋结构简单,颜色平淡,茅草屋顶缺乏细节。

  • Magic3D 和 Fantasia3D

  • 小屋屋顶的茅草纹理略显模糊,未充分体现细节。

  • ProlificDreamer

  • 小屋整体更逼真,细节表现良好,但时间成本较高。

  • GaussianDreamer

  • 生成的小屋结构完整,屋顶茅草纹理清晰,整体视觉表现最为丰富,同时训练时间远低于 ProlificDreamer。

3. 总结

  • 效率:GaussianDreamer 训练时间仅为15分钟,比其他方法显著更快。

  • 效果

  • 与 DreamFusion、Magic3D 和 Fantasia3D 相比,GaussianDreamer 的生成细节更丰富,物体更符合文本提示。

  • 与 ProlificDreamer 相比,GaussianDreamer 在生成质量上接近或略有优势,但训练速度快了数倍。

  • 适用性:GaussianDreamer 的高效率和高质量表现使其更适合时间有限的实际应用场景。

GaussianDreamer 生成的多个样本

这张图通过展示多个生成样本,证明了 GaussianDreamer 的以下能力:

  1. 生成质量高:结果具有丰富的细节和准确的几何结构。

  2. 风格灵活:能够根据文本提示生成写实或风格化的3D模型。

  3. 几何一致性强:不同视角下的模型保持一致性。

GaussianDreamer 与其他方法(DreamFusion、DreamAvatar、DreamWaltz 和 AvatarVerse)在生成特定角色模型(如蜘蛛侠和星战风暴兵)上的定性对比

这张图通过展示蜘蛛侠和风暴兵的生成结果,证明了 GaussianDreamer 的以下优势:

  1. 高效率:在大幅减少训练时间的情况下,生成质量不输甚至优于耗时更长的方法。

  2. 高质量生成:在几何一致性、细节表现和多视角准确性上表现出色。

  3. 应用潜力:其快速生成的能力和高质量模型非常适合角色建模等实际应用场景。

3d" style="background-color:transparent;">GaussianDreamer 在不同动作姿势下生成3D角色的效果

3de3bf6d852fc3.png" width="430" />

总结

  • 关键能力

  • GaussianDreamer 能够结合 SMPL 提供的动作初始化,生成具有指定动作的高质量角色。

  • 模型不仅能够生成符合文本提示的动作,还能细化角色的外观和服装细节。

  • 潜在应用

  • 角色建模、游戏动画和动态虚拟角色的快速生成。


http://www.ppmy.cn/server/145403.html

相关文章

力扣-位运算-4【算法学习day.44】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

蓝桥杯每日真题 - 第21天

题目:(空间) 题目描述(12届 C&C B组A题) 解题思路: 转换单位: 内存总大小为 256MB,换算为字节: 25610241024268,435,456字节 计算每个整数占用空间: 每个 32 位整数占用…

MySQL 用 limit 为什么会影响性能?几种优化方案对比!

Limit 是一种常用的分页查询语句,它可以指定返回记录行的偏移量和最大数目。例如,下面的语句表示从 test 表中查询 val 等于4的记录,并返回第300001到第300005条记录: select * from test where val4 limit 300000,5;这样的语句看…

RabbitMQ代码实战2

RabbitMQ代码实战2 RPC远程过程调用模式队列(RPC) 模型 package cn.yanghuisen.rpc.server;import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabb…

基于Angular+BootStrap+SpringBoot简单的购物网站

目录 一、项目结构图 二、目录结构解析 后端 (Spring Boot) 前端 (Angular) 三、技术栈 四、具体功能实现 五、数据库设计 六、后端实现 1. 设置Spring Boot项目 2. 数据库实体类 3. 创建Repository 4. 创建Service层 5. 创建Controller层 七、前端实现&#xff0…

【es6进阶】如何使用Proxy实现自己的观察者模式

观察者模式(Observer mode)指的是函数自动观察数据对象,一旦对象有变化,函数就会自动执行。这里,我们是使用es6的proxy及reflect来实现这个效果。 实现效果 业务分析 源数据 const object2 {name: "张三"…

如何使用OCR技术批量识别图片中的文字并重命名文件,OCR 技术批量识别图片中的文字可能出现的错误

字符识别错误 形近字混淆:例如 “已” 和 “己”、“未” 和 “末” 等,由于外形极为相似,OCR 软件在识别时可能出现误判,将原本正确的字识别成与之形近的另一个字。比如在识别一篇手写的文章中,手写体的 “已” 可能就…

软件测试面试之常规问题

1.描述一下测试过程 类似题目:测试的生命周期 思路:这是一个“范围”很大的题目,而且回答时间一般在3分钟之内,不可能非常详细的描述整个过程,因此答题的思路要从整体结构入手,不要过细。为了保证答案的准确性,可以引…