目录
Abtract
相关工作
核心算法:
整体流程概述
具体流程解析
1. 输入(Input)
2. 稀疏结构 VAE(Sparse Structure VAE)
3.分层体素潜在扩散(Hierarchical Voxel Latent Diffusion)
4. 生成层次结构(Generated Hierarchy)与网格和纹理(Mesh & Texture)
5. 实现细节
实验部分
创新点
PS:
分层体素潜在扩散模型
稀疏体素层次结构(Sparse Voxel Hierarchy)是一种用于表示 3D 场景或对象的数据结构,优势:
稀疏结构变分自编码器(稀疏结构 VAE)
协同工作
Abtract
Nvidia2023提出的一种新的生成模型,可生成具有任意属性的高分辨率稀疏3D体素网格,以前馈方式生成数百万体素,最细有效分辨率高达1024^3,而无需耗时的 test-time 优化,使用一种分层体素潜扩散模型,使用建立在高效VDB数据结构上的自定义框架,以从粗到细的方式生成逐步更高的分辨率网格。XCube在100 m×100 m规模的大型户外场景中的有效性,体素大小小至10 cm。
提出了名为 XCube的大规模 3D 生成模型,用于生成带有任意属性的高分辨率稀疏 3D 体素层次结构
相关工作
生成概率模型:
- 常见的生成模型包括变分自编码器(VAE)、生成对抗网络(GAN)、归一化流、自回归模型(AR)以及近来的扩散模型(DM)等。
- 一种流行的生成建模方法是潜在扩散,它在例如图像和视频领域已被发现很有用,其扩散过程发生在一个更简单生成模型(如 VAE)的潜在空间中。潜在扩散模型能够通过不同的解码器轻松对多个属性进行解码。在我们的工作中,我们在稀疏体素的层次结构上采用了潜在扩散模型。
3D 生成模型:
- 近期 3D 生成建模文献的大量涌现主要集中在物体级别的形状合成上。
- 一方面,部分工作选择通过逆渲染将 2D 图像先验知识提炼到 3D 中;另一方面,其他一些工作则专注于从大规模 3D 数据集中直接学习 3D 先验知识。近来,更好地利用图像先验知识和大规模 3D 数据集的混合 2D - 3D 方法也开始出现。
- 这些工作的基础是良好的 3D 先验知识,它能够在无需昂贵的测试时优化的情况下确保多视图的一致性,这也是我们这项工作所关注的。
- 针对大规模场景生成的工作,要么选择一种将不同场景组件(如道路、建筑物等)的生成解耦的程序化方法,要么采用一种更通用的一次性生成整个场景的方法。前者通常能提供更多细节,但仅限于生成可能场景的一个固定子集,且需要专门的数据来训练;后者理论上更灵活,但目前受其 3D 表示能力的限制(因此产生的细节较少),这也是我们在这项工作中要解决的一个问题。
用于生成任务的 3D 表示:
- 点云灵活且具有适应性,但无法表示实体表面,并且在建筑设计方面带来挑战。
- 三角网格更具表现力,但局限于固定的拓扑结构,因此难以优化。
- 神经场将场景几何形状隐式编码在网络权重中,缺乏对有效分布建模的明确归纳偏差。
- 三平面能够以较小的内存占用表示高分辨率的物体,但除了大的轴对齐平面外,基本上缺乏几何偏差,在对具有复杂几何形状的较大场景进行建模时会带来挑战。
- 相比之下,体素网格灵活,对块状和精细结构都有表现力,并且支持快速查询和处理。稀疏体素层次结构不会存储空区域的体素信息,因此效率更高。文献中一种常见的做法是使用八叉树变体或哈希表来实现这些,但之前的工作要么只关注几何形状,要么局限于 256³ 的有效分辨率,要么不考虑层次生成,要么未在真实世界数据集上进行评估。与之相反,我们的方法能够从层次潜在空间生成高分辨率的形状,并且在大规模的真实世界场景数据集上进行了评估。
核心算法:
整体流程概述
该图展示了 XCube 模型的方法流程,主要包括两个关 键步骤:首先使用稀疏结构变分自编码器(VAE)将层次结构中的稀疏体素网格编码为紧凑的潜在表示,然后通过分层体素潜在扩散模型以级联方式学习生成各级潜在表示,并最终生成包含多种属性的高分辨率体素网格用于不同应用。
具体流程解析
1. 输入(Input)
- 模型的输入是稀疏体素网格(Sparse Voxel Grids),这些体素网格包含了 3D 场景或对象的信息,并且可能带有如法线、语义等相关属性。
2. 稀疏结构 VAE(Sparse Structure VAE)
稀疏结构 VAE 旨在学习层次结构中每个体素网格及其相关属性的紧凑潜在表示。直接对包含连续和离散随机变量混合的联合分布进行建模较为困难,因此将它们编码为统一的连续潜在表示。
- 选择对层次结构的每一层独立训练单独的 VAE。为了便于表示,在后续讨论中省略下标。基于对稀疏体素网格的操作构建神经网络,以建模后验分布和似然分布,其中和分别是编码器和解码器的权重。
- 编码(Encoding):利用稀疏卷积神经网络处理输入体素网格G和其属性A,通过交替应用稀疏卷积和最大池化操作,将体素网格下采样到X的分辨率。
- 解码(Decoding):VAE 的解码器()则从潜在表示X开始,逐步恢复出体素网格及其属性。解码器借鉴了 2305.19590中的结构预测骨干网络,通过迭代地细分现有体素为八分形(octants)并剪枝掉多余的体素,根据细分掩码(subdivision mask)的预测来逐步增加分辨率,最终生成与输入分辨率相同的体素网格G和属性A。如图所示,较粗层级的网格通过迭代地将现有体素细分为八分形并剪枝多余体素来上采样到更精细的网格,每个层级可能包含多个使分辨率翻倍的上采样层。这种解码器设计能够预测输入中不存在的新颖稀疏体素,从而实现从潜在表示到原始分辨率体素网格的重建。
3.分层体素潜在扩散(Hierarchical Voxel Latent Diffusion)
PS:
分层体素潜在扩散模型(Hierarchical Voxel Latent Diffusion Model)优势:
- 能够生成高分辨率的 3D 内容:例如 XCube 模型可生成有效分辨率为 1024^3 的高分辨率场景。
- 捕捉数据从粗到细的性质:通过分层结构,模型可以更好地处理从整体结构到局部细节的信息,克服了传统 3D 生成方法在分辨率上的限制,适用于大规模户外场景等复杂场景的生成。
- 利用稀疏结构:基于稀疏体素层次表示,降低了模型的参数需求,简化了建模过程,同时保持了一定的表达能力。
- 具备灵活性:可以注入多种条件信息,如来自上一层级的属性、文本提示、类别标签等,实现多样化的控制生成,生成符合特定条件的 3D 形状和场景。例如,可根据文本描述生成 3D 内容,或从单一 2.5D 视图中填充被遮挡的区域来重建完整的 3D 网格。
- 具有可扩展性:能够扩展到 in-the-wild 输入图像,不需要多视角扩散模型或 SDS 优化。例如 MagicDrive3D 首先训练视频生成模型,然后从生成的数据中进行重建,使得生成过程易于控制,可实现高质量的场景重建。
- 生成的 3D 模型质量较高:如在各种实验中实现了较好的数值指标和视觉质量,生成的模型具有逼真感和多样化的特点。
- 便于进行概率建模:其分层结构自然地诱导了一种概率建模方式,能够更好地捕捉数据的分布特征
4. 生成层次结构(Generated Hierarchy)与网格和纹理(Mesh & Texture)
5. 实现细节
- 针对稀疏体素层次结构生成的优化措施
- 早期扩张:在体素尺寸较大的网络层中,对稀疏体素网格进行一次扩张,使稀疏拓扑的光晕区域也能表示非零特征,有助于后续层更好地捕捉局部上下文并生成平滑结构。
- 细化网络:因子化建模存在误差累积问题,高分辨率网格难以修复先前层产生的瑕疵。通过在 VAE 解码器输出后附加一个细化网络来细化 Gₗ和 Aₗ来缓解此问题,细化网络架构类似于 [21],其训练数据通过在解码前向 VAE 的后验添加噪声来增强。
- 稀疏 3D 学习框架
- 利用 VDB 结构存储稀疏 3D 体素网格,因其紧凑表示(340 万个体素仅需 11MB)和快速查找例程,能够高效实现卷积和池化等常见神经操作。该框架完全在 GPU 上运行(包括网格构建),处理 1024³ 的 3D 场景仅需几毫秒,比当前最先进的稀疏 3D 学习框架 TorchSparse 快约 3 倍,内存使用量约为其 0.5 倍,所有架构均基于此定制框架
实验部分
使用ShapeNet数据集,为构建用于训练的groundtruth体素层次结构,将每个网格体素化为 512^3分辨率,并使用的train/val/test分割。
ShapeNet 上的对象级 3D 生成
定量比较表明 XCube 优于基线方法,点云方法生成形状粗糙,三角平面方法在复杂几何形状(如汽车类别)表现不佳,3DShape2VecSet 存在信息过度压缩问题,NWD 和 LAS - Diffusion 受低分辨率限制,XCube 能生成高分辨率且细节丰富的形状,定性比较结果与定量一致,还展示了用户引导编辑能力。
Objaverse 上的对象级 3D 生成
XCube 能生成更多样、几何保真度更高且细节更精细的 3D 对象,生成一个对象(几何和纹理)约需 1 分钟。
大规模场景级 3D 生成
用户研究中 66.3% 倾向于模型生成结果,表明质量高, 展示了 Waymo 数据集上的无条件生成、解码语义和法线,还展示了单扫描条件生成,模型能在单 LiDAR 扫描输入时生成完整场景(几何和语义)。
消融研究
渐进式修剪:在 ShapeNet Chairs 上用单一步骤替换渐进式修剪,重建精度(网格 IoU)从 92.88% 降至 89.68%,GPU 内存使用增加 3 倍,表明渐进式修剪对保留形状细节和注入 3D 归纳偏差重要。
层次结构配置:比较不同层次结构配置在 ShapeNet Chairs 上的性能,发现层次模型优于单级模型,模型性能对初始层次分辨率鲁棒,16³ 足以捕获对象整体形状,两级和三级模型性能相当,无条件生成用两级模型快速采样,用户编辑设置用三级模型便于编辑。
创新点
- 提出 XCube,一种基于稀疏体素层次结构的新型生成模型,用于生成具有任意属性的高分辨率 3D 对象和场景。
- 采用分层体素潜在扩散模型,以粗到细的方式生成潜在的稀疏体素层次结构,每个层次基于更粗层次条件进行建模,提高了生成质量和效率。
- 利用稀疏结构变分自编码器(VAE)对体素网格及其属性进行紧凑的潜在表示学习,便于后续扩散模型处理,并通过分层概率模型提高了灵活性。
- 结合 VDB 数据结构构建了定制的 3D 深度学习框架,实现了高效的稀疏数据处理,支持更高的空间分辨率和更快的采样速度。
主要贡献
- 提出一种新的 3D 生成模型架构,在对象级和场景级生成任务上取得了较好效果,推动了 3D 生成领域的发展。
- 详细阐述了模型的各个组成部分,包括稀疏结构 VAE、分层体素潜在扩散模型等,为后续研究提供了理论和实践基础。
- 通过在多个数据集上的实验,验证了模型在无条件生成、条件生成、场景完成等任务上的有效性和优越性。
- 开源了代码,为社区提供了可复现的研究成果,有助于进一步的研究和应用开发。
PS:
分层体素潜在扩散模型
分层体素潜在扩散模型是 XCube 模型中用于生成 3D 场景或对象的关键技术,它结合了分层结构和潜在扩散模型的思想,能够生成具有高分辨率和丰富细节的 3D 内容。
- 分层结构
- 从粗到细生成:模型将 3D 场景或对象表示为一个分层的体素网格结构,包含多个层级(用表示层级数量),每个层级的体素网格分辨率逐渐提高,从最粗的层级开始,逐步生成更精细的层级。例如,在生成一个复杂的 3D 建筑场景时,先从一个较低分辨率的大致轮廓(粗层级)开始,然后逐步添加细节,生成更高分辨率的墙体、门窗等结构(更精细的层级)。
- 层级间依赖关系:每一层级的生成依赖于上一层级的结果,即层级的体素网格和属性的生成是基于上一层级(层级)生成的体素网格、属性以及其他条件信息。这种依赖关系使得模型能够在不同尺度上逐步细化对场景或对象的表示,捕捉到从整体结构到局部细节的信息。
- 潜在扩散模型
- 潜在表示学习:首先使用稀疏结构变分自编码器(VAE)将体素网格及其属性编码为紧凑的潜在表示。这个潜在表示是在一个低维空间中对 3D 信息的一种抽象表达,相比于原始的体素网格,它更易于处理和学习。例如,一个复杂的 3D 物体的体素网格可能包含大量的体素信息,但通过 VAE 编码后的潜在表示可以用较少的参数来描述其关键特征。
稀疏体素层次结构(Sparse Voxel Hierarchy)是一种用于表示 3D 场景或对象的数据结构,优势:
- 数据存储优化
- 稀疏性优势:在 3D 空间中,只存储非空区域的体素信息,而不存储大量空区域的体素,大大减少了内存占用。
- 层次结构提升效率:通过构建层次结构,将不同分辨率的体素网格组织在一起。较粗层级的体素网格可以表示场景或对象的大致轮廓和整体结构,而更精细层级的体素网格则用于描述细节。例如,在快速浏览一个大型 3D 场景时,可以先加载较粗层级的体素网格,快速呈现场景的大致形状,然后根据用户的交互或需求,逐步加载更精细层级的体素网格,显示更多细节,而无需一次性加载所有高分辨率的体素数据。
- 生成模型中的应用优势
- 多分辨率生成能力:在 3D 生成模型(如 XCube 模型)中,稀疏体素层次结构允许模型从粗到细地生成 3D 内容。模型首先生成较粗层级的体素网格,确定场景或对象的基本形状和布局,然后逐步细化生成更精细层级的体素网格,添加更多细节。例如,在生成一个复杂的建筑模型时,模型可以先确定建筑的大致轮廓(如建筑的整体形状、高度、主要结构等),然后在后续层级中逐步生成窗户、门、装饰等细节部分。
- 支持概率建模和条件生成:稀疏体素层次结构便于进行概率建模,因为每个层级的生成可以基于上一层级的条件信息,这种分层的概率建模方式能够更好地捕捉数据的分布特征。同时,模型可以方便地注入各种条件信息(如文本提示、类别标签、单扫描数据等)到不同层级的生成过程中,实现多样化的条件生成。例如,根据用户提供的文本描述(如 “一座带有花园和游泳池的欧式别墅”),模型可以在不同层级上根据这些条件信息生成相应的 3D 别墅场景。
稀疏结构变分自编码器(稀疏结构 VAE)
用于对稀疏体素网格及其属性进行编码和解码,将其转换为紧凑的潜在表示,具有以下关键特性和作用:
- 编码紧凑潜在表示
- 统一连续表示:旨在将层次结构内每个体素网格及其相关属性编码为统一的连续潜在表示。相比于直接处理包含连续和离散随机变量混合的联合分布,这种编码方式更有利于后续的操作,尤其是与下游的扩散模型配合使用,无论是在训练阶段还是采样阶段都更加便捷。
- 降低计算量与保留表达力:以较粗的空间分辨率对体素网格进行编码,得到的潜在表示作为一种紧凑但仍具有意义的代理。这样做在减少计算资源消耗的同时,还能保留足够的表达能力来描述原始的 3D 场景或对象。例如,对于一个高分辨率的 3D 模型,直接处理其体素网格数据可能需要大量的计算资源,但通过稀疏结构 VAE 编码后,在较低维的潜在空间中进行操作,可以大大降低计算复杂度,同时又不会丢失太多重要信息,使得模型在后续的处理中能够更高效地学习和生成。
- 网络设计与操作
- 独立层级训练:选择对层次结构的每一层独立训练单独的 VAE。在构建神经网络时,基于对稀疏体素网格的操作来建模后验分布和似然分布,其中和分别是编码器和解码器的权重。这种独立训练的方式使得每个层级可以根据自身的特点和需求进行优化,提高了模型的灵活性和适应性。
- 编码器操作:利用稀疏卷积神经网络处理输入的体素网格和属性。通过交替应用稀疏卷积和最大池化操作,将体素网格下采样到较低分辨率,从而得到紧凑的潜在表示。例如,在对一个包含大量细节的 3D 物体体素网格进行编码时,稀疏卷积可以有效地提取局部特征,而最大池化操作则逐渐降低分辨率,减少数据量,最终得到一个能够概括物体主要特征的潜在表示。
- 解码器操作:解码器借鉴了预测骨干网络,从潜在表示开始,逐步恢复出体素网格及其属性。它通过迭代地细分现有体素为八分形并剪枝掉多余的体素,根据细分掩码的预测来逐步增加分辨率,最终生成与输入分辨率相同的体素网格和属性。例如,当从潜在表示解码一个 3D 场景时,解码器会根据学到的模式和特征,逐步将潜在向量转换为体素网格,先从粗略的结构开始,然后不断细分和优化,直到达到原始的分辨率,同时生成相应的属性信息,如法线方向、语义标签等。
- 对模型整体的贡献
- 连接体素与潜在空间:稀疏结构 VAE 在体素空间和潜在空间之间架起了一座桥梁,使得模型能够在这两个空间之间自由转换。通过编码过程,将复杂的体素网格信息压缩到潜在空间,便于模型学习数据的内在结构和分布;而解码过程则能够将潜在表示还原为体素网格,用于生成最终的 3D 场景或对象。这种转换能力是 XCube 模型能够有效生成高质量 3D 内容的关键之一。
- 支持分层生成框架:作为分层生成框架中的重要组成部分,稀疏结构 VAE 为后续的分层体素潜在扩散模型提供了基础。它生成的潜在表示可以被分层体素潜在扩散模型进一步处理,以生成具有不同分辨率和细节层次的体素网格。例如,在生成一个大型户外场景时,稀疏结构 VAE 先将初始的稀疏体素网格编码为潜在表示,然后分层体素潜在扩散模
协同工作
XCube 模型通过稀疏体素层次结构、分层体素潜在扩散模型和稀疏结构 VAE 的协同工作,实现了高分辨率 3D 对象和场景的生成,具体过程如下
- 稀疏体素层次结构
- 作为模型的数据基础,以稀疏方式存储 3D 场景或对象的体素信息,减少内存占用,提高处理效率。
- 不同分辨率的体素网格构成层次结构,从粗到细描述场景或对象,先呈现大致轮廓,再逐步细化细节。
- 稀疏结构 VAE
- 对稀疏体素层次结构中的每个体素网格及其属性进行编码,得到紧凑的潜在表示。
- 编码器利用稀疏卷积神经网络下采样,解码器基于结构预测骨干网络上采样并预测新体素,恢复原始分辨率信息。
- 分层体素潜在扩散模型
- 基于稀疏结构 VAE 的潜在表示,以级联方式从粗到细生成潜在表示。
- 通过扩散过程,先向潜在表示加噪,再去噪学习数据分布,每个层级依赖上一层级结果,融入条件信息生成符合要求的 3D 内容。
- 协同工作流程
- 输入稀疏体素网格,经稀疏结构 VAE 编码为潜在表示。
- 分层体素潜在扩散模型利用潜在表示,从最粗层级开始生成各级潜在表示和体素网格及属性。
- 最终生成包含多种属性的高分辨率体素网格,可转换为网格用于 3D 建模、渲染等,或添加纹理增强视觉效果。