论文链接:https://arxiv.org/abs/2303.11328
代码链接:https://github.com/cvlab-columbia/zero123
解决了什么问题?
人类通常能够仅凭一个相机视角来想象物体的三维形状和外观。这种能力对于日常任务非常重要,例如物体操纵和在复杂环境中导航。此外,这种能力对于视觉创造力也很关键,如绘画艺术。这种能力可以部分通过依赖于几何先验(如对称性)来解释。人类似乎能够轻松地推广到更具挑战性的物体上,这些物体打破了物理和几何约束。事实上,我们甚至能够预测那些在物理世界中不存在(或根本无法存在)的物体的3D形状,如下图的第三列所示。为了达到这种泛化程度,人类依赖于通过一生的视觉探索积累的先验知识。
然而,大多数现有的3D图像重建方法都是在封闭世界(closed-world)设置中操作的,这是因为它们依赖于昂贵的3D注释,例如CAD模型或特定类别的先验知识。最近,一些方法通过在大规模、多样化的数据集(如CO3D)上进行预训练,在开放世界3D重建方面取得了重大进展。然而,这些方法通常仍然需要几何相关的信息来进行训练,例如立体视图或相机姿态。因此,它们所使用的数据规模和多样性与最近能够使大型扩散模型成功的互联网规模的文本-图像集合相比仍然不够显著。已经证明,互联网规模的预训练赋予了这些模型丰富的语义先验。但是,这些模型在多大程度上捕获了几何信息,在很大程度上仍是未知的。
封闭世界设置通常指的是方法只能在有限的数据集或特定类别上工作,而开放世界设置则指的是方法能够处理更广泛、更多样化的数据。
本文中,作者展示了如何学习控制机制,操作大规模扩散模型的相机视点,从而进行零样本的新视图合成和 3D 形状重建。从单个RGB图像重建3D形状,这是一个在信息不足的情况下进行的任务。但是,因为生成模型可用的训练数据规模非常大(超过50亿张图像),人们开始用扩散模型来表示自然图像的分布,支持从多个视角捕捉大量不同物体的表示。尽管它们是在 2D 单目图像上训练的,缺乏相机的对应关系,但可以微调模型以学习生成过程中相对相机旋转和平移。这样就可以使模型学会在生成过程中控制相机视角,从而对任意图像进行编码,并将其解码为我们选择的不同相机视点。
零样本学习指的是在没有直接训练数据的情况下执行任务。新视角合成是指从新的视角生成图像。
3D generative models
结合大规模图像-文本数据集的使用,生成图像架构已经取得了显著进展,能够合成高保真的多样化场景和对象。扩散模型在学习可扩展的图像生成器方面表现出色,它们使用去噪目标来训练。但是,将扩散模型扩展到3D领域将需要大量的昂贵的带注释的3D数据。相反,最近的方法依赖于将预训练的大型2D扩散模型转移到3D领域,而不需要使用任何真实的3D数据。NeRF作为一种强大的表示形式,因其能够高保真地编码场景而受到关注。通常,NeRF用于单场景重建,它提供了许多覆盖整个场景的带位姿的图像。该任务然后预测未知视角的新视图。DreamFields 证明 NeRF 非常有用,可以作为3D生成系统的主要组成部分使用。各种后续的工作通过使用2D扩散模型的蒸馏损失替代CLIP,用于从文本输入生成高保真的3D对象和场景。
作者的工作探索了一种非传统的视角合成方法,这种方法不同于传统的3D重建或视角合成技术。该方法将视角合成建模为一个图像到图像的翻译任务,其中图像的生成受到视角条件的约束。学到的模型还可以与3D蒸馏(3D distillation)结合使用,从单个图像中重建3D形状。与之前的工作不同,本文方法展示了零样本泛化能力,即在没有见过的图像上也能进行有效的视角合成。先前的工作采用了类似的流程,但没有展示出零样本泛化能力。同时期的方法提出了使用语言引导的先验和 textual inversion 来执行图像到3D的生成。本文方法使用合成数据集学习视点控制,模型能够学习如何在没有直接3D信息的情况下,根据视角变化来调整图像的生成。
Single-view object reconstruction
从单一视角重建 3D 物体是非常有挑战性的,需要很强的先验信息。一种研究思路是通过依赖于3D信息(如网格、体素或点云)集合来构建先验,这些信息用于表示 3D 的形状,并使用图像编码器进行条件化。这些模型受到所使用的3D数据集多样性的限制,并且由于这种全局性质的条件化,表现出较差的泛化能力。这些方法还需要一个额外的姿态估计步骤,以确保估计的形状与输入图像之间的对齐。另一方面,局部条件模型旨在直接使用局部图像特征进行场景重建,并展示出很强的跨域的泛化能力,但是局部条件模型通常受限于近距离视角的重建。
本文中,作者展示了如何直接从预训练的扩散模型中提取丰富的几何信息,减轻了对额外深度信息的需求。
提出了什么方法?
本文核心的贡献就是展示了大规模扩散模型可以学到世界的丰富 3D 先验知识,尽管它们是在 2D 图像上训练的。论文也展示了新视角合成领域的最新成果,即从单个RGB图像生成新视角图像的能力。论文还展示了零样本3D重建领域的最新成果,即从单个RGB图像重建物体的3D形状。
Zero-1-to-3是一个新颖的框架,它可以根据单个RGB图像改变相机视点,即使只有一个图像作为输入。 在这种约束不足的情况下进行新视角合成是一个挑战,但Zero-1-to-3框架通过利用大规模扩散模型学习到的自然图像的几何先验来实现这一点。该框架使用条件扩散模型,它利用合成数据集来学习相对相机视点的控制,从而能够生成同一对象在特定相机变换下的新图像。尽管Zero-1-to-3模型是在合成数据集上训练的,但它保持了强大的零样本泛化能力,能够很好地适应分布外数据集的图像,包括印象派绘画。Zero-1-to-3框架的视点条件扩散方法也可以用于从单个图像进行3D重建的任务。定性和定量的实验表明,Zero-1-to-3方法通过利用互联网的大规模数据的预训练,显著优于现有的单视图3D重建和新视角合成模型。Zero-1-to-3通过使用大规模扩散模型,能够从大量数据中学习到丰富的先验知识,这使得它在处理单图像任务时表现出色。
给定某物体的一张 RGB 图像 x ∈ R H × W × 3 x\in \mathbb{R}^{H\times W\times 3} x∈RH×W×3,目的是合成出该物体在不同相机视点下的图像。设 R ∈ R 3 × 3 R\in \mathbb{R}^{3\times 3} R∈R3×3 和 T ∈ R 3 T\in\mathbb{R}^3 T∈R3 是期望视点下的相对相机旋转和平移矩阵。我们要学习一个模型 f f f,在该相机变化下合成出一张新图像:
x ^ R , T = f ( x , R , T ) \begin{equation} \begin{split} \hat{x}_{R,T} = f(x,R,T) \end{split} \end{equation} x^R,T=f(x,R,T)
其中 x ^ R , T \hat{x}_{R,T} x^R,T 是合成的图像。我们想要 x ^ R , T \hat{x}_{R,T} x^R,T 感官上足够接近真实但全新的视角 x R , T x_{R,T} xR,T。
从单目RGB图像进行新视角合成是一个“严重约束不足”的问题,意味着仅凭单个图像很难确定场景的所有3D信息。作者提出利用大型扩散模型,例如Stable Diffusion,来执行新视角合成任务。扩散模型在文本描述生成多样化图像方面展现出了非凡的零样本(zero-shot)能力。零样本意味着模型能够在没有直接训练数据的情况下执行任务。预训练的扩散模型是当前最先进的自然图像分布表示方法,这使得它们能够生成高质量、多样化的图像。
但是要想得到 f f f,我们有两个挑战必须去克服。首先,尽管大规模生成模型是在不同视点的物体上训练得到,但表征并没有显式地编码不同视点之间的对应关系。其次,生成模型继承了互联网数据的视角偏见,如下图所示。Stable Diffusion 倾向于生成标准位姿的面朝前的椅子。这两个问题严重制约了模型从扩散模型提取 3D 知识的能力。
Learning to Control Camera Viewpoint
由于扩散模型是在互联网大规模数据训练得到的,这些图像的分布基本覆盖了大多数物体的大多数视点,但是这些视点不受预训练模型控制。一旦我们能教会模型控制相机的外参,我们就解锁了模型进行新视角合成的能力。
如上图所示,给定一个由图像对以及它们的相对相机外参组成的数据集 { ( x , x R , T , R , T ) } \{(x, x_{R,T}, R, T)\} {(x,xR,T,R,T)}( R R R是旋转矩阵, T T T是平移),本方法微调了一个预训练扩散模型,从而学习控制相机参数,同时不破坏模型的其它表示能力。使用了一个隐扩散架构,包括一个编码器 E \mathcal{E} E、一个去噪器 U-Net ϵ θ \epsilon_\theta ϵθ、一个解码器 D \mathcal{D} D。编码器 E \mathcal{E} E用于将输入图像和相机外参编码为潜在空间中的表示。去噪器 ϵ θ \epsilon_\theta ϵθ是一个常见的神经网络结构,用于在扩散过程中逐步去除噪声,恢复图像。解码器 D \mathcal{D} D用于将潜在空间的表示转换回图像空间。在扩散时间步 t t t(通常在1到1000之间), c ( x , R , T ) c(x, R, T) c(x,R,T) 表示输入视图和相对相机外参的 embedding。然后,我们可以用下面的目标函数来微调模型:
min
θ
E
z
∼
E
(
x
)
,
t
,
ϵ
∼
N
(
0
,
1
)
∥
ϵ
−
ϵ
θ
(
z
t
,
t
,
c
(
x
,
R
,
T
)
)
∥
2
2
\begin{equation} \begin{split} \min_{\theta}{\mathbb{E}_{z\sim \mathcal{E}(x),t,\epsilon \sim \mathcal{N}(0,1)}\left\| \epsilon - \epsilon_\theta (z_t, t, c(x,R,T)) \right\|_2^2} \end{split} \end{equation}
θminEz∼E(x),t,ϵ∼N(0,1)∥ϵ−ϵθ(zt,t,c(x,R,T))∥22
模型
ϵ
θ
\epsilon_\theta
ϵθ 训练完后,推理模型
f
f
f 就能由高斯噪声图像,以
c
(
x
,
R
,
T
)
c(x,R,T)
c(x,R,T) 为条件,通过逐步去噪的方式以生成图像了。
论文的核心成果是展示了如何通过微调预训练的扩散模型,使其能够学习控制相机视点的通用方法。这种微调方法允许模型在微调数据集之外的对象上进行外推(extrapolate),即模型能够处理在微调过程中未见过的对象。微调使模型能够学习控制相机视点的机制,这意味着模型可以根据需要生成不同视点的图像,同时保留了模型生成逼真图像的能力。这种能力表明模型具有组合性,即能够将学习到的视点控制与图像生成能力结合起来。微调后的模型在零样本情况下也具有合成新视图的能力,即对于在微调集中从未出现过的对象类别,模型也能够合成它们的新视图。即使对于那些在微调数据集中没有3D资产且从未出现过的对象类别,最终的模型也能够合成它们的新视图。
View-Conditioned Diffusion
3D重建需要同时处理低级感知信息(如深度、阴影、纹理等)和高级理解(如类型、功能、结构等)。为了应对这一挑战,作者采用了混合条件机制,将不同层次的信息结合起来。
- 在第一个流程中,使用CLIP模型对输入图像进行嵌入,并将该嵌入与相机姿态 ( R , T ) (R, T) (R,T)结合,形成“posed CLIP”嵌入 c ( x , R , T ) c(x, R, T) c(x,R,T)。通过 cross attention 机制将这种 embedding 应用于去噪U-Net,提供输入图像的高级语义信息。
- 第二个流程中,将输入图像与正在去噪的图像在通道上进行拼接,帮助模型保持合成物体的身份和细节。
为了应用 classifier-free guidance,在推理过程中,随机地将输入图像和 posed CLIP embedding 设置为 null 向量,并调整条件信息的缩放。
3D Reconstruction
在许多应用场景中,用户不仅仅需要对象的新视图合成,更期望得到一个全面的3D重建,这包括对象的外观和几何结构。为了实现这一目标,作者采用了一个最近开源的框架,即Score Jacobian Chaining(SJC),用于优化3D表示,并结合来自文本到图像扩散模型的先验知识。但是,扩散模型具有概率性质,这意味着在优化过程中,梯度更新具有高度的随机性。SJC框架中使用了一个关键技术,这项技术受到DreamFusion的启发,即设置分类器自由引导(classifier-free guidance)的值远高于通常的设置。这样做可以减少每个样本的多样性,但能提高重建的保真度。
如下图,与 SJC 相似,作者随机采样一些视点来做体积渲染,即模拟光线穿过3D体积并计算每个像素的颜色,以生成初始的3D视图图像。然后,用高斯噪声 ϵ ∼ N ( 0 , 1 ) \epsilon\sim \mathcal{N}(0,1) ϵ∼N(0,1) 对体积渲染的图像做扰动。然后使用 U-Net ϵ θ \epsilon_\theta ϵθ 来去除图像中的噪声,该 U-Net 的输出依赖于输入图像 x x x、posed CLIP embedding c ( x , R , T ) c(x,R,T) c(x,R,T) 和时间步 t t t。这些条件信息帮助网络更好地理解图像内容和上下文。去噪过程的目标是将噪声图像恢复为接近原始无噪声输入 x π x_\pi xπ 的状态。这里的 x π x_\pi xπ 表示经过相机姿态变换后的输入图像。
∇
L
S
J
C
=
∇
I
π
log
p
2
ϵ
(
x
π
)
\begin{equation} \begin{split} \nabla{\mathcal{L}_{SJC}} = \nabla_{I_\pi}{\log{p_{\sqrt{2}\epsilon}(x_\pi)}} \end{split} \end{equation}
∇LSJC=∇Iπlogp2ϵ(xπ)
其中
∇
L
S
J
C
\nabla{\mathcal{L}_{SJC}}
∇LSJC是 PAAS 得分。此外, 作者用 MSE 损失对输入视角做优化。为了进一步正则 NeRF 表示,作者对每个采样视点使用一个深度平滑损失,以及一个相邻视角的一致性损失对相邻的视图的外观变化做正则。
Dataset
作者使用 Objaverse 数据集来微调,它是一个由超过10万名艺术家制作的大规模开放的数据集,包括 80 万个 3D 模型。虽然它没有显式的类别标签,但涵盖了非常多样化、高质量的 3D 模型,具有丰富的几何信息和细粒度的纹理信息。对于数据集中的每个物体,随机采样 12 个相机外参矩阵 M \mathcal{M} M,这些矩阵指向物体的中心。使用光线追踪引擎渲染了12个视图。在训练时,对于每个物体,可以采样两个视图以形成图像对 ( x , x R , T ) (x,x_{R,T}) (x,xR,T)。可以很容易地从两个外参矩阵中派生出定义两个视角之间映射的相对视点变换 ( R , T ) (R,T) (R,T),这里 R R R是旋转矩阵, T T T是平移向量。
光线追踪是一种渲染技术,能够生成逼真的光照和阴影效果。