论文介绍 VolumeDiffusion

论文介绍 VolumeDiffusion: Flexible Text-to-3D Generation with Efficient Volumetric Encoder

关注微信公众号: DeepGo

源码地址: https://github.com/tzco/VolumeDiffusion

论文地址: https://arxiv.org/abs/2312.11459

VolumeDiffusion模型是一个从文本描述生成3D对象的创新方法。它通过一个轻量级的体积编码器和扩散模型来实现高效、灵活的3D生成。该模型通过编码多视图图像的特征体积,显著提高了扩散模型训练数据的可扩展性。关键在于使用新的噪声计划和低频噪声来处理高维特征体积,提高模型训练效率。VolumeDiffusion在从文本提示生成多样且可识别的3D对象方面表现出色,提供了对对象特征的改进控制,并促进了单个对象内多个概念的创造性结合。

方法概述

论文作者的文本到3D生成框架分为两个主要阶段:体积编码和扩散建模。在体积编码阶段,论文作者选择使用特征体积作为3D表示,并利用轻量级网络将多视图图像转换为3D体积。这种方法既高效又能绕过之前方法所需的昂贵优化过程。在扩散建模阶段,作者利用文本驱动的扩散模型来建模先前获得的特征体积分布。面对特征体积的高维性和数据集中对象标题的不准确性,作者开发了几项关键设计来缓解训练过程中的这些挑战。

alt 图1展示了VolumeDiffusion框架的整体结构,它包含了体积编码和扩散建模两个阶段。编码器将多视图图像解投影(Unproject)到特征体积中,并进行进一步的细化处理。扩散模型学习在给定噪声体积和文本条件下预测原标签(GT)真实情况

体积编码器

体积表示

体积编码器的设计旨在将多视图图像有效地转换为能够代表3D对象的特征体积。作者采用了一种新颖的表示方法,结合轻量级解码器和特征体积来描述场景。选取合适的3D表示对于训练3D生成模型至关重要。作者的3D表示能够捕捉输入对象的几何和纹理细节,并对细粒度文本控制具有灵活性。此外,这种3D表示在获取和重构对象方面高度效率,有助于扩展性。

特征体积不直接存储显式值,而是存储隐式特征,通过最近体素的三线性插值获得空间点的特征,从而有效减少内存成本。

前馈编码器

多视图到特征体积的编码: 编码器接受一个对象的多视图照片( ),其中 代表N个视图的图像和深度, 代表相应的摄像机参数,包括摄像机姿态和视场(FOV)。作者首先用一个小型网络 从2D图像中提取特征,然后根据深度和摄像机姿态将特征解投影到粗糙体积 中:

其中, 表示解投影操作。对于摄像机光线上的每个点,作者首先计算其到摄像机的距离,然后获得权重 ,其中 是计算距离与真实深度的差异。每个体素的特征是从不同视图解投影的特征的加权平均。

作者进一步应用3D U-Net模块对聚合的特征体积进行细化,生成更平滑的体积: . 然后执行射线追踪和神经渲染,从目标视角渲染图像。在训练阶段,作者使用L2和LPIPS损失,对特征提取网络、3D U-Net和MLP解码器进行端到端优化。

提出的体积编码器由于两个主要原因而高度效率:首先,一旦训练完成,它能够使用32张或更少的图像生成高质量的3D体积。其次,作者的体积编码器可以在大约30毫秒内使用单个GPU编码一个对象。这种速度使作者能够在几小时内生成500K个模型,有效消除了与特征体积相关的昂贵存储开销。

扩散模型

高维空间中的挑战

不同于传统的文本到图像扩散模型,作者的文本到3D扩散模型旨在学习一个显著更高维的潜在分布。例如,在作者的实验中,作者利用的维度如 ,这与Stable Diffusion使用的 形成了鲜明对比。这种高维性使得扩散模型的训练更具挑战性。

新的噪声计划

作者的文本到3D扩散模型的主要目标是学习一个比文本到图像模型更高维的潜在分布。正如之前章节所讨论,常规的噪声计划在应用于如体积这样的高维空间时,可能导致信息破坏不足。

为了解决这一问题,在训练阶段,如果物体信息保留了很大一部分,网络将很快过拟合于训练集中的带噪体积,而忽略文本条件。因此,作者决定降低所有时间步的 ,从而降低最终信噪比,从 降低到 ,并在中间时间步均匀降低

低频噪声

图像或特征体积是典型的数字信号,可以被视为不同频率的数字信号组合。向体积的每个体素添加独立同分布的高斯噪声,信号本质上被白噪声扰动。独立同分布的噪声通过扩散过程均匀地破坏所有成分的信息。然而,低频成分的幅度通常较大,白噪声无法有效破坏它们。因此,整个体积的平均值作为最低频率成分,在扩散过程中最有可能不被注意到,从而导致信息泄露。因此,作者提出了低频噪声策略,以有效地破坏信息并训练扩散模型。

其中, 是为每个位置独立采样的高频噪声, 是在同一通道中所有值共享的单一值, 是一个超参数。通过这种方法,作者引入了可调整的额外信息破坏,有效地去除了物体信息,如图2(b)所示。

alt 图2展示了噪音体积的渲染效果。通过比较,我们可以看到: (a) 常规噪声计划下的扩散:即使在较大的时间步长下,使用常规独立同分布(i.i.d.)噪声的体积仍然具有较高的可识别性。这表明标准噪声计划不能有效地破坏信息,导致即使在扩散过程后期,体积的结构依然清晰可辨。 (b) 低频噪声下的扩散:引入低频噪声后,扩散过程能更有效地移除信息。图示展现了低频噪声如何帮助模糊体积的细节,与常规噪声计划相比,低频噪声显著提高了扩散模型的信息破坏能力。

精细化(Refinement)

虽然扩散模型能够生成特征体积,但其固有限制在于输出的低分辨率,这限制了纹理细节。为了克服这一点,作者利用了现有的文本到图像模型来生成更详细的纹理,从而增强扩散模型获得的初始结果。

具体来说,作者引入了第三阶段,涉及对结果的精细调整。鉴于扩散模型提供了良好的初始输出,作者在这一阶段整合了SDS(文献[37]中提出的方法),以优化结果,确保更好的图像质量和减少错误。考虑到作者的初始结果已经令人满意,这一阶段只需少量迭代,使得作者的整个过程仍然高效。作者的方法充分利用了现有的文本到图像模型来生成原始训练集中未覆盖的纹理,增强了纹理细节,并促进了生成图像的多样性。同时,作者的方法还解决了在文献[37]中遇到的多面问题。

数据过滤(Data Filtering)

作者发现数据过滤对于训练至关重要。Objaverse主要由未经过滤的用户上传的3D模型组成,这些模型从网上爬取,包括许多几何形状、平面扫描和无纹理对象,以及基于图像的缺陷重建。此外,注释通常缺失或与旋转和位置的变化无关,3D模型的质量相比图像数据集相对较差。 作者使用一组筛选出的最高质量对象来训练扩散模型。作者发现,扩散模型能够从文本条件中学习语义关系。相反,当作者使用整个Objaverse数据集进行训练时,模型无法收敛。

实验结果

alt 实验结果强调了作者的方法在处理复杂场景和多对象组合,以及更好地与文本提示对齐方面的能力,而其他方法只能捕捉到部分概念。作者的方法和Shap·E都是原生方法,即直接在3D表示上进行监督并使用3D数据集进行训练。值得注意的是,这些原生方法生成的形状比基于图像到3D重建或蒸馏的方法更清晰、更对称。

总结

本文介绍了一种从文本提示高效且灵活生成3D对象的新方法。通过采用轻量级网络从多视图图像获取特征体积,证明了这种方法能够有效扩大扩散模型训练所需的训练数据规模。

文章还强调了高维特征体积所带来的挑战,并提出了新的噪声计划和低频噪声,以改善扩散模型的训练。在实验中,本模型在通过文本提示控制对象特性方面的卓越性能得到了展示。未来的工作将集中于精炼算法和网络架构,以进一步加速过程。我们还将测试模型在包含更复杂对象和多样化文本提示的更广泛数据集上的性能。

更多细节请参阅论文原文

关注微信公众号: DeepGo

本文由 mdnice 多平台发布

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

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

相关文章

我们需要延迟满足吗?

延迟满足,可能是当代成功学和鸡汤里面,最常见的一个概念了。 很多人都会告诉你:要学会延迟满足,培养延迟满足能力,这样你才能成为一个脱离低级趣味的人,取得更高的成就。 他们同时还会把延迟满足跟「即时满…

读千脑智能笔记12_阻止人类灭绝

1. 阻止人类灭绝 1.1. 宇宙中唯一知道这些的物体,唯一知道宇宙存在的物体,是我们的大脑 1.2. 如果没有关于某个事物的知识,我们能说这个事物就一定存在吗? 1.2.1. 我们的大脑扮演着这样一个独特的角色,这很令人着迷…

Python算法题集_LRU 缓存

Python算法题集_LRU 缓存 题146:LRU 缓存1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【队列字典】2) 改进版一【有序字典】3) 改进版二【双向链表字典】 4. 最优算法 本文为Python算法题集之一的代码示例 题146:LRU …

小白速成法:剖析一个Android项目以快速上手

这是一个基于Tasmota的设备、用MQTT协议来通信控制的安卓应用程序。支持ON/OFF命令插座和基本的RGB LED控制。 源码点击此处 只需要关注SmartController-main\app\src的代码 项目解压之后如图 只需要关注“app”文件夹里的东西即可,“gradle”是配置文件&#xf…

MATLAB Coder从入门到放弃

一、MATLAB Coder入门 1 MATLAB Coder是什么 从 MATLAB 代码生成 C 和 C 代码 MATLAB Coder™ 可从 MATLAB 代码生成适用于各种硬件平台(从桌面计算机系统到嵌入式硬件)的 C 和 C 代码。它支持大多数 MATLAB 语言和广泛的工具箱。您可以将生成的代码作…

Android14音频进阶:MediaPlayerService如何启动AudioTrack 下篇(五十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

比较6*6范围内8个点425个结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有6个节点,训练集AB各由6张二值化的图片组成,让A中有8个点,让B全是0,收敛误差7e-4,收敛199次,统计迭代次数平均值并排序。 假设这个6*6的结构的行和列都…

C++进阶(十六)特殊类设计

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、请设计一个类,不能被拷贝二、请设计一个类,只能在堆上创建对象三、…

力扣1122. 数组的相对排序(哈希表)

Problem: 1122. 数组的相对排序 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.利用arr2创建一个无序映射(map集合),以其中的元素作为键,值默认设置为0; 2.扫描arr1数组统计arr2元素在其中的个数(将个…

单调队列优化DP问题

目录 1.滑动窗口 2.最大子序和 3.旅行问题 4.烽火传递 5.绿色通道 6.修剪草坪 7.理想的正方形 1.滑动窗口 154.给定一个大小为 n≤106 的数组。 有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向…

游泳时可以听歌的耳机有哪些?戴游泳耳机有哪些好处?

游泳和跑步在某种程度上相似,特别是在短距离冲刺时,大脑似乎变得空白,而在中长距离的有氧运动中,身体感到疲劳,但大脑却异常清晰,时间却显得格外漫长。如何打发时间,让游泳锻炼变得不无聊&#…

力扣面试题 16.21. 交换和(哈希表)

Problem: 面试题 16.21. 交换和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.分别求取array1与array2数组每一个元素的和(sum1与sum2)并同时将array2的元素存入一个set集合中; 2.如果sum1和sum2的和为奇数,则不…

使用 Windows 11/10 上的最佳 PDF 转 Word 转换器释放 PDF 的潜力

毫无疑问,PDF 是最好的文档格式之一,但就像其他格式一样,有时它们确实会带来一些限制。例如,在某些情况下,您可能想要将 PDF 转换为 Word。在这种情况下,您始终可以借助 PDF 到 Word 转换器的帮助。 为了说…

Java实现软件学院思政案例库系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理员2.2 普通教师 三、系统展示四、核心代码4.1 查询思政案例4.2 审核思政案例4.3 查询思政课程4.4 思政案例点赞4.5 新增思政案例评语 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的软件学…

谁再用Arrays.asList就开除谁

谁再用Arrays.asList就开除谁 hi,我是achang,今天说一个使用Arrays.asList后对应出现的一系列坑,因为他有那么多坑,所以会有开玩笑的说:谁再用Arrays.asList就开除谁 那Arrays.asList的作用很简单,就是把…

86.分布式锁理论分析

文章目录 前言一、为什么需要分布式锁?二、基于 Redis 分布式锁怎么实现?三、Redis 分布锁存在的问题3.1 死锁问题3.2 锁过期时间问题3.3 锁被别人释放问题 四、Redis 分布锁小结五、Redis 主从同步对分布式锁的影响六、Redlock 方案七、Redlock 的争论7…

autojs通过正则表达式获取带有数字的text内容

var ctextMatches(/\d/).findOne()console.log("当前金币"c.text()) // 获取当前金币UiSelector.textMatches(reg) reg {string} | {Regex} 要满足的正则表达式。 为当前选择器附加控件"text需要满足正则表达式reg"的条件。 有关正则表达式,可…

揭秘外观模式:简化复杂系统的关键设计策略

前言 外观模式(Facade Pattern)是一种结构型设计模式,它隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类…

【C语言】实现单链表

目录 (一)头文件 (二)功能实现 (1)打印单链表 (2)头插与头删 (3)尾插与尾删 (4) 删除指定位置节点 和 删除指定位置之后的节点 …

蓝桥杯嵌入式第9届真题(完成) STM32G431

蓝桥杯嵌入式第9届真题(完成) STM32G431 题目 分析和代码 main.h /* USER CODE BEGIN Header */ /********************************************************************************* file : main.h* brief : Header for main.c file.* …