MAV3D:从文本描述中生成三维动态场景

Paper: Singer U, Sheynin S, Polyak A, et al. Text-to-4d dynamic scene generation[J]. arXiv preprint arXiv:2301.11280, 2023.
Introduction: https://make-a-video3d.github.io/
Code: Unreleased

MAV3D 是 Meta AI 研究者们在今年年初提出的一种从文本描述生成三维动态场景的方法。根据文本生成的动态场景视频可以从任意位置和角度查看,并且可以合成到 3D 环境中。1

其实 MAV3D 是 AIGC 一路进化发展而来的产物,从最初 Text-to-Image (T2I) 中的 Make-A-Scene 到 Text-to-Video (T2V) 中的 Make-A-Video,作者再在 MAV 上应用 Text-to-3d 的三维化策略,得到了令人瞩目的 Make-A-Video3D 模型。

在这里插入图片描述

本文只对文章做浅显阅读,更多参考资料如下:

一. 预备知识

MAV3D 论文直接阅读会比较困难,本节参考 [论文代码阅读]TensoRF: Tensorial Radiance Fields[论文阅读]HexPlane: A Fast Representation for Dynamic Scenes[论文代码阅读]MAKE-A-VIDEO:TEXT-TO-VIDEO GENERATION WITHOUT TEXT-VIDEO DATA,对需要用到的预备知识进行梳理。

1. TensoRF

TensoRF 2 是 ECCV 2022 最具影响力论文,改进了神经辐射场 (NeRF) 的 MLP 表示,将其视为 4D 张量 (tensor) 场(4D 代表 NeRF 的四维输出:RGB + σ \sigma σ)。然后 将张量分解 (factorize) 为多个紧凑的低秩张量,这样可以降低数据维度,从而减少显存的需求量,并且提高了建模效率和质量。

秩 (rank):张量的秩是指其非零元素所在的维度的数量。下文出现的秩一张量 (rank-one tensor) 指的就是只有一个非零元素的张量。通过将原始的 4D 张量分解为低秩张量,可以更紧凑地表示数据并且通常能够捕捉到数据中的主要特征。

在这里插入图片描述

TensoRF 提供了两种张量分解方法:一种是传统的 CP 分解 3,将一个张量分解为多个秩一张量外积的和;另一种是文中提出的 VM 分解 (vector-matrix decomposition),将一个张量分解为向量和矩阵外积的和。
在这里插入图片描述

以 VM 分解的张量辐射场 (Tensorial Radiance Field) 为例,原来的 NeRF 场景可以用一组向量叉乘矩阵的和表示,场景中的 RGB 和 σ \sigma σ 都可以使用这组向量和矩阵计算得到。对于每个空间位置 x \bold{x} x,从向量 / 矩阵中进行线性采样 (Linear Sampling) / 双线性采样 (Bilinear Sampling),然后进行三线性插值 (Trilinear Interpolation) 来计算张量的分量 A ( x ) \mathcal{A}(\bold{x}) A(x)。体积密度的分量值 A σ ( x ) \mathcal{A}_{\sigma}(\bold{x}) Aσ(x) 直接相加就可以得到 σ \sigma σ;颜色的分量值 A c ( x ) \mathcal{A}_{c}(\bold{x}) Ac(x) 连接成向量 ⊕ [ A c m ( x ) ] m ⊕[\mathcal{A}_{c}^m(x)]_m [Acm(x)]m 后与外观矩阵 B \mathbf{B} B 相乘,然后传入解码函数 S S S 计算 RGB 颜色 c \bold{c} c
在这里插入图片描述

总体来说,TensoRF 将 NeRF 的隐式表示的输出表示为张量场,因此在计算 σ \sigma σ c \bold{c} c 时与 NeRF 有所不同,其他优化和训练的部分都是相同的。

2. HexPlane

HexPlane 4 是密歇根大学的研究者们在今年年初提出的一种用于动态 3D 场景的快速表示方法,荣获 CVPR 2023 的 Outstanding Paper Award。HexPlane 思想来源于 TensoRF,将 4D 时空网格(这里的 4D 代表动态场景的四维输入: { X , Y , Z , T } \{X,Y,Z,T\} {X,Y,Z,T}分解为沿每对坐标(即 X Y XY XY X Z XZ XZ X T XT XT Y Z YZ YZ Y T YT YT Z T ZT ZT)延伸的六个特征平面,每个特征平面可以提取特征向量来表示对应坐标对的联合特征。这样就可以将 4D 场景表示为一组高效的显式函数,并保留了变量之间的关联,从而保持高质量的情况下高效地训练和渲染。

在这里插入图片描述

HexPlane 渲染视图时,不再需要使用深度 MLP 计算 σ \sigma σ c \bold{c} c。而是用 { x , y , z , t } \{x,y,z,t\} {x,y,z,t} 叉乘 HexPlane 的六个平面的特征向量,然后拼接得到时空点特征。拼接后的特征向量直接与 V σ R F V_{\sigma}^{RF} VσRF 相乘就可以得到 σ \sigma σ;与 V c R F V_{c}^{RF} VcRF 相乘后再经过微型 MLP 可以得到 c \bold{c} c
在这里插入图片描述

3. MAV

MAV 5 是 Meta AI 去年公布的一款 2D 视频生成器,可以从给定的文字提示中生成短视频。因为视频的本质就是连续图像的叠加,因此 MAV 可以充分利用现有的 T2I 模型,再学习图像间的运动即可,而不必从头训练。并且由于可供训练的文本 - 视频资源太过稀少,因此 MAV 在预训练的 T2I 模型上直接使用未标记的视频数据进行无监督学习,这样既可以充分利用现有的 T2I 资源,又可以学习到图像的真实运动情况。为了提高视频的质量,MAV 还引入了空间超分辨率 (spatial super-resolution) 模块和插帧 (frame interpolation) 模块,提高了生成视频的分辨率和帧率。
在这里插入图片描述

为了扩展 T2I 到时间维度,MAV 修改了两个关键构建块 —— 卷积层和注意力层,在这两个构建块的空间维度基础上加入了时间维度,以便生成视频。然后基于 T2I 中 U-Net 的扩散网络进行时间修改,利用时空解码器 (spatiotemporal decoder) D t D^t Dt 生成 16 个 RGB 帧,然后通过在 16 个生成的帧和时空超分网络 S R l t SR_l^t SRlt 之间插值来增加有效帧速率,最后经过 S R h SR_h SRh 来增加分辨率。6
在这里插入图片描述

MAV 中的超分 (super-resolution) 网络用来提高生成视频的分辨率: S R l t SR_l^t SRlt 是一个时空超分辨率网络,用于将低分辨率的 视频 转换为高分辨率的视频; S R h SR_h SRh 是一个空间超分辨率网络,用于将低分辨率的 图像 转换为高分辨率的图像。超分网络的原理都是输入一个高分辨率的噪声视频 / 图像和一个低分辨率原始视频 / 图像,基于 diffusion 模型对高分辨率噪声视频 / 图像进行降噪以提升其分辨率。由于超分辨率包含幻觉信息,为了不出现闪烁的伪影,幻觉必须在帧之间保持一致。因此,MAV 引入 S R l t SR_l^t SRlt 模块跨空间和时间维度运行以保持帧之间的幻觉一致性。

幻觉信息 (phantom information):幻觉信息指的是生成视频时模型需要从文本中推断出的信息,但这些信息在最终生成的视频中并不一定会呈现出来。这些信息可能是文本中的一些细节或者是一些隐含的信息,但它们并不影响最终生成的视频的质量。MAV 使用先验 P P P 来捕捉这些幻觉信息,并将其与文本编码器一起输入到生成器中。

4. DreamFusion

DreamFusion 7 是 Google 和 UC Berkeley 去年开发的 Text-to-3d 模型,荣获 ICLR 2023 的 Outstanding Paper Award。Text-to-3d 同样也缺少可供训练的文本 - 3D 资源,所以 DreamFusion 也是在 T2I 模型上进行改进得到的 3D 生成器,而不是从头训练。由于 3D 的本质就是从多个视角观测一个场景,因此 DreamFusion 只需要使用适当的方式表示三维场景后就可以充分利用现有的 T2I 模型从多角度进行图像生成。DreamFusion 使用 Mip-NeRF 表示三维场景,然后用 Google 预训练的 Imagen 8 作为 T2I 先验以生成不同视角的图像,再将 Imagen 生成的图像拿来训练 NeRF,就可以得到一个基于文本的 3D 模型。

DreamFusion 并没有说为什么使用 Mip-NeRF 表示三维场景,推测只是因为比较 up-to-date 并且能获得 SOTA 的效果。

在这里插入图片描述

DreamFusion 随机初始化 NeRF 的 MLP 进行训练。训练时随机采样 3D 空间位置 x = ( x , y , z ) \bold{x} = (x, y, z) x=(x,y,z) 和 2D 视角方向 ( θ , ϕ ) (θ, ϕ) (θ,ϕ),将观测视角信息和 prompt 文本结合就可以得到 基于视角的生成文本描述 (view-dependent text);将包含视角信息的文本传入 Imagen 就可以生成特定视角下的图像(但 DreamFusion 中视角描述仅限于 “canonical views”、“overhead view”、“front view”、“side view”、“back view”,用来渲染 NeRF 不够精准);将 Imagen 生成的图像和随机采样的视角传入 NeRF 生成的图像计算损失就可以反向优化 NeRF 的参数。详细过程可以参考 DreamFusion: text-to-3D using 2D diffusion

常规 diffusion 的优化更新和 DreamFusion SDS 对比

但 diffusion 是在像素级别上训练的,只能在相同维度的像素空间上进行采样,并逐像素地生成图像;而 NeRF 作为一种 Differentiable Image Parameterization (DIP),需要在参数空间进行训练和采样。于是 DreamFusion 引入了一种可以用于 diffusion 模型的 NeRF 损失函数 —— 基于分数的蒸馏采样 (Score Distillation Sampling, SDS),监督 NeRF 渲染的图片分布向预训练 diffusion 模型的图片分布靠近。这也是 DreamFusion 最重要的一个贡献,被后续很多 text-to-3D 任务所引用。公式推导见 DREAMFUSION TEXT-TO-3D USING 2D DIFFUSION 论文笔记3D版DALL-E来了!谷歌发布文本3D生成模型DreamFusion,重点是zero-shot

文章中对 SDS Loss 的解释比较复杂,本人的理解就是能够保证三维场景多视角一致性的用于监督 diffusion 的损失函数。详见 论文分享:《DreamFusion: Text-to-3D using 2D Diffusion》

二. 研究思路

  • 近年来,提供 prompt 合成图像的生成模型发展迅速,主要分为两类:在时间上扩展以合成视频的生成模型(如《Text-to-video generation without text-video data》)和在空间上扩展以生成 3D 形状的生成模型(如《Dream-Fusion: Text-to-3d using 2d diffusion》)。但这两类生成模型的研究一直是分离的。
  • 文章将两者结合,提出了一种 text-to-4D (3D+time) 的生成方法:输入自然语言描述,输出动态的 3D 场景表示,命名为 MAV3D (Make-A-Video3D)

MAV3D 和 text-to-video、text-to-3d 一样,由于缺少可用的 4D 数据作为训练支撑,因此只能在预训练的模型上再做改进。MAV3D 使用 HexPlane(最初采用动态 NeRF,后来因效果不够满意改为 HexPlane)表示动态三维场景,再结合预训练的 MAV 进行监督(MAV 对场景周围视角随机采样来实现多同步视角从而达到 2D 监督 3D 的效果)。

由于缺乏训练数据,Meta AI 的研究人员一开始想的是去找一个预训练好的 2D 视频生成器,再从生成的 2D 视频中提炼出一个四维重建。但从 2D 视频中重建可变形物体的形状仍然非常具有挑战性,即非刚性运动结构 (Non-Rigid Structure from Motion, NRSfM)。后来借鉴了 DreamFusion 中用 T2I 多角度生成图像的思路,采样物体的 多同步视角 (multiple simultaneous viewpoints) 进行重建,难题迎刃而解。
虽然多机位设置在真实数据中很少见,但研究者们认为现有的 2D 视频生成器能够生成任意视角下的视频,因此可以将其作为一个「统计学」的多机位设置来重建可变形物体的几何和光度。也就是说,使用 2D 视频生成器从 随机 视角生成视频来优化 MAV3D 的动态场景表示,最终实现从 2D 到 3D 的视频生成。这其实就是 text-to-3d 中的三维化方法。

不过直接使用 text-to-video 来优化动态 NeRF 无法取得令人满意的结果,实现过程中还有以下几个难题需要攻克:

  1. 需要一个有效的动态三维场景的表示方法;
  2. 需要一个监督源,因为没有大规模的文本 - 4D 对可供学习;
  3. 需要在空间和时间维度上扩展输出的分辨率,因为 4D 输出需要大量的内存和算力;

1. 场景表示

MAV3D 的动态三维场景表示基于 HexPlane,将 4D 场景表示为 6 个 多分辨率特征平面 (multiresolution feature plane)
在这里插入图片描述

2. 场景优化

为了在缺少文本 - 4D 对数据学习的情况下监督上面提出的场景表示,想到了 DreamFusion (text-to-3d) 在三维化时使用 SDS 进行监督,但直接使用 SDS 监督动态场景会出现伪影 (artifact) 和次优收敛。因此 MAV3D 采用了一种由静态到动态 (static-to-dynamic) 的多阶段训练策略:先利用 T2I 模型,将静态的三维场景与 prompt 文本匹配;然后再用动态的方式增强三维场景模型,即前文所述的对物体周围的随机视角进行采样实现的多同步视角。

模型中还引入了时间维度 (temporal-aware) 的 SDS (Score Distillation Sampling) 和运动正则项,以更精准地建模现实运动。

3. 分辨率扩展

MAV3D 训练完成后再进行超分微调:使用时间感知的超分模型(即 MAV 中的时空超分网络 S R l t SR_l^t SRlt)来扩展输出视频的分辨率。这能够增加其视觉保真度,并且在推理过程中对更高分辨率的输出进行采样。

4. MAV3D pipeline

在这里插入图片描述
如图所示,4D 场景由 6 个特征平面组成,绿色的 3 个是空间平面,橙色的 3 个是空间时间平面。场景优化时:

  • 第一阶段只需要优化静态场景:利用预训练的 T2I 模型计算 SDS Loss 优化空间平面,将静态的三维场景与 prompt 文本匹配。静态场景用不到空间时间平面,将其置 0 即可;
  • 第二阶段需要优化动态场景:利用预训练的 T2V 模型计算 SDS-T Loss 优化空间时间平面,渲染完整的视频;
  • 第三阶段需要超分微调:使用超分网络逆扩散以提高视频分辨率;

三. 场景表示

MAV3D 一开始使用 NeRFs 表示三维动态场景,只需要在不同角度渲染视频并用 MAV 监督即可。记 4D 场景表示为 f θ ( x , y , z , t ) f_{\theta}(x,y,z,t) fθ(x,y,z,t),其中 θ \theta θ 为场景参数,需要学习优化。随机采样一组相机机位的集合,记为 { C t } t = 1 T \{C_t\}_{t=1}^{T} {Ct}t=1T,使用 f θ f_{\theta} fθ 渲染一组图像 I t = R ( f θ , t , C t ) I_t=\mathcal{R}(f_{\theta},t,C_t) It=R(fθ,t,Ct),将其堆叠合成视频 V V V此处存疑…)。将 prompt 文本 p p p 和合成视频 V V V 传入 T2V 模型,以计算其匹配程度和视频真实性。然后使用 SDS 计算场景参数 θ \theta θ 的梯度,从而进行更新。

但上述方法生成的视频质量太低,MAV3D 转而采用 HexPlane 来建模大型动态三维场景。为了增加 HexPlane 的容量,将 HexPlane 中的每个平面使用多分辨率网格 (multi-resolution grid) 进行编码。

四. 场景优化

为了监督表示 4D 场景的 HexPlane 模型 f θ f_{\theta} fθ 匹配 prompt 文本 p p p,本中改进 SDS 以适用于视频的时间维度,称为 SDS-T (temporal Score Distillation Sampling)

1. Static to dynamic

2. Dynamic Camera

3. FPS Sampling

4. Gaussian Annealing

5. Total Variation Loss

五. 分辨率扩展

MAV3D 经过 static-to-dynamic 优化后,再进行超分辨率微调 (super-resolution fine-tuning, SRFT) 就可以得到高分辨率并且没有伪影的视频。

在 SRFT 期间,使用 MAV 中预训练的时空超分网络 S R l t SR_l^t SRlt 提高生成视频的分辨率。在每一轮微调中,采样一个 256×256 的视频 V ↑ V_{\uparrow} V,然后对 V ↑ V_{\uparrow} V 下采样得到一个 64×64 的视频 V ↓ V_{\downarrow} V。计算其 SDS 损失就可以得到高分辨率的梯度信息,从而监督模型扩展其分辨率。

六. 实验结果

MAV3D 没有开源代码,实验结果详见 https://make-a-video3d.github.io/

在这里插入图片描述

在这里插入图片描述

七. 总结

MAV3D 最不可思议的地方在于,尽管目前可用的文本 - 4D 对非常有限,Meta AI 的研究者们依靠现有的 T2V 模型作为场景先验,通过优化以创建 3D 场景表示。在优化过程中,模型从连续的时空坐标创建场景的一系列视图,然后使用扩展模型对图像的真实感和与 prompt 文本的对齐程度进行评分,以获得更加真实的场景表示。

MAV3D 可以为视频游戏、AR、VR 生成 3D 动画资源,相信不久的将来,会有更多基于 MAV3D 的应用出现。


  1. 效果超棒!Facebook AI 提出一种从文本描述生成三维动态场景的方法! ↩︎

  2. Chen A, Xu Z, Geiger A, et al. Tensorf: Tensorial radiance fields[C]//European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2022: 333-350. ↩︎

  3. Carroll, J.D., Chang, J.J.: Analysis of individual differences in multidimensional scaling via an n-way generalization of “eckart-young” decomposition. Psychometrika 35(3), 283–319 (1970) ↩︎

  4. Cao A, Johnson J. Hexplane: A fast representation for dynamic scenes[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 130-141. ↩︎

  5. Singer U, Polyak A, Hayes T, et al. Make-a-video: Text-to-video generation without text-video data[J]. arXiv preprint arXiv:2209.14792, 2022. ↩︎

  6. 文本生成视频Make-A-Video,根据一句话就能一键生成视频 Meta新AI模型 ↩︎

  7. Poole B, Jain A, Barron J T, et al. Dreamfusion: Text-to-3d using 2d diffusion[J]. arXiv preprint arXiv:2209.14988, 2022. ↩︎

  8. Saharia C, Chan W, Saxena S, et al. Photorealistic text-to-image diffusion models with deep language understanding[J]. Advances in Neural Information Processing Systems, 2022, 35: 36479-36494. ↩︎

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值