怎样做服装网站,如何在阿里云自主建网站,甘肃 网站备案,php应用市场源码论文链接#xff1a;https://arxiv.org/abs/2310.15008 代码链接#xff1a;https://github.com/xxlong0/Wonder3D
解决了什么问题#xff1f;
随着扩散模型的提出#xff0c;3D 生成领域取得了长足进步。从单张图片重建出 3D 几何是计算机图形学和 3D 视觉的基础任务https://arxiv.org/abs/2310.15008 代码链接https://github.com/xxlong0/Wonder3D
解决了什么问题
随着扩散模型的提出3D 生成领域取得了长足进步。从单张图片重建出 3D 几何是计算机图形学和 3D 视觉的基础任务在 VR、游戏、3D 内容生成、机器人领域有广泛的应用。由于该任务是不适定的需要推理出可见和不可见区域的 3D 几何结构。该种能力的构建需要大量的 3D 世界的知识。
部分工作如 DreamField, DreamFusion, Magic3D需要通过 score distillation sampling 来蒸馏出 2D 图像扩散模型或视觉语言模型的知识从文本或图像创建出 3D 模型。尽管效果不错这些方法都面临着两个问题效率和一致性。每个形状的优化通常需要几万次的迭代这涉及到全图渲染和扩散模型的推理。因此优化一个形状甚至会耗费数小时。此外2D 先验模型在每次迭代时只考虑一个视角使得每个视角都接近于输入图像这会造成生成的 3D 形状不一致。
另一部分的工作则尝试通过网络推理来生成 3D 的几何结构如点云、meshes、神经场避免耗时的优化。此类方法大多在 3D assets 上训练 3D 生成扩散模型。但是由于现有的 3D 数据集规模有限这些方法都缺乏足够的泛化性只能生成特定类别的形状。
另一些方法如 SyncDreamer 和 MVDream 直接生成多视角 2D 图像。这些工作增强了图像生成的多视角一致性能从生成的多视角 2D 图像中恢复出 3D 形状。本文方法也采用了多视角生成的机制因为 2D 表征效率高、灵活性强。但是只依赖于彩色图像生成形状的保真度就差一些它们要么很难恢复几何细节要么计算量惊人。
基于 score distillation sampling 的方法能够从 2D 的扩散先验信息中恢复出 3D 结构但通常都非常耗时生成的几何形状不一致。另一些工作则通过快速的网络推理来产生 3D 信息但质量都比较差缺乏几何细节信息。
提出了什么方法 为了解决保真度、一致性、泛化性和效率的问题本文提出了一个单视角 3D 重建方法用一个跨域扩散模型来生成多视角、一致性的法线图和对应的彩色图像。核心思想是扩展 stable diffusion对两个不同域法线和色彩的协同分布来建模。作者证明可以通过一个 domain switcher 和跨域注意力机制来实现。Domain switcher 允许扩散模型生成法线图或彩色图而跨域注意力机制则在这两个域之间传递信息提升效率和质量。最后为了从生成视角中提取表面结构作者提出了一个更加鲁棒的几何法线融合算法能够重建出干净、高质量如上图所示的几何结构。
作者在 Google Scanned Object 数据集和各种不同风格的 2D 图像上做了实验。实验表明 Wonder3D 能够高效地恢复出高质量的几何结构。
1. Diffusion Models
扩散模型通过一个特殊的退化过程逐步地恢复图像它采用了一个前向马尔可夫链和反向马尔可夫链。给定一个来自于数据分布 p ( z ) p(z) p(z)的样本 z 0 z_0 z0去噪扩散模型的前向计算会输出一个序列的加了噪声的数据 { z t ∣ t ∈ ( 0 , T ) } \{z_t | t\in(0,T)\} {zt∣t∈(0,T)}其中 z t α t z 0 σ t ϵ z_t \alpha_t z_0 \sigma_t \epsilon ztαtz0σtϵ ϵ \epsilon ϵ 是从分布 N ( 0 , 1 ) \mathcal{N}(0,1) N(0,1)中随机选择的噪声 α t , σ t \alpha_t, \sigma_t αt,σt 是 noise schedule 的固定序列。逐步地对目标图像进行前向计算直到图像变成完全的高斯噪声。然后使用逆马尔可夫链逐步地去除图像上的噪声通过预测添加的随机噪声 ϵ \epsilon ϵ从 z t z_{t} zt 恢复出 z t − 1 z_{t-1} zt−1。
2. The Distribution of 3D assets
以前的工作使用了 3D 表征如点云和神经辐射场作者认为3D assets 的分布记做 p a ( z ) p_{a}(\mathbf{z}) pa(z)可以建模成对应的 2D 多视角法线图和彩色图像之间的协同分布。特别地给定一组相机 { π 1 , π 2 , . . . , π K } \{\pi_1, \pi_2, ..., \pi_K\} {π1,π2,...,πK} 以及一个条件输入图像 y y y p a ( z ) p n c ( n 1 : K , x 1 : K ∣ y ) p_a(\mathbf{z})p_{nc}(n^{1:K}, x^{1:K}|y) pa(z)pnc(n1:K,x1:K∣y)
其中 p n c p_{nc} pnc 是图像 y y y 的法线图 n 1 : K n^{1:K} n1:K 和彩色图 x 1 : K x^{1:K} x1:K 的分布。在后续讨论中作者省去了记号 y y y。因此我们的目标是学习一个模型 f f f合成不同相机姿态的多个法线图和彩色图记做 ( n 1 : K , x 1 : K ) f ( y , π 1 : K ) (n^{1:K}, x^{1:K}) f(y, \pi_{1:K}) (n1:K,x1:K)f(y,π1:K)
通过 2D 表征我们的方法用 2D 扩散模型基于几十亿张图像训练得到构建它具有很强的 zero-shot 泛化能力。另一方面法线图描述了物体表面的起伏波动编码了丰富的细节几何信息。我们可以从 2D 法线图提取高质量的 3D 几何信息。最后我们可以将扩散机制的这个跨域协同分布表示成一个马尔可夫链 p ( n T 1 : K , x T 1 : K ) ∏ t p θ ( n t − 1 1 : K , x t − 1 1 : K ∣ n t 1 : K , x t 1 : K ) p(n_T^{1:K}, x_T^{1:K}) \prod_t{p_{\theta}(n_{t-1}^{1:K}, x_{t-1}^{1:K} | n_{t}^{1:K}, x_{t}^{1:K})} p(nT1:K,xT1:K)t∏pθ(nt−11:K,xt−11:K∣nt1:K,xt1:K)
其中 p ( n T 1 : K , x T 1 : K ) p(n_T^{1:K}, x_T^{1:K}) p(nT1:K,xT1:K) 是高斯噪声。核心问题是描述出分布 p θ p_\theta pθ这样我们就能从这个马尔可夫链中采样生成出法线图和彩色图像。
3. 方法
本文提出了一个多视角跨域的扩散机制在两个不同的域上运行生成多视角一致的法线图和彩色图。整体架构如下图所示。首先采用一个多视角扩散模型生成多视角法线图和彩色图使用多视角注意力要求不同的视角具有一致性。其次domain switcher 允许扩散模型在多个域中运行无需重新训练现有的 Stable Diffusion。因此我们可以利用基础模型的泛化能力它们一般是在大规模数据上训练得到。作者提出了一个跨域注意力在法线域和彩色图像域之间传递信息确保几何和视觉信息的一致性。最终该几何法线融合方法能从 2D 法线图和彩色图像中恢复高质量的几何信息和外观信息。 3.1 Consistent Multi-view Generation
2D 扩散模型单独地生成每个图像生成的图像在多个视角的视觉和几何上并非一致的。为了增强不同视角的一致性像 SyncDreamer 和 MVDream 一样作者利用了注意力机制来促进不同视角的信息传递隐式地编码多视角图像之间的关系如下图所示。 将原来的自注意力层扩展至全局范围允许注意力层连接到其它视角的图像。不同视角的 keys 和 values 彼此连接促进信息的传递。通过在注意力层共享不同视角的信息扩散模型能够感知到多视角的关系能够生成一致的多视角彩色图像和法线图。
3.2 Cross-Domain Diffusion
本文模型基于一个预训练的 2D stable diffusion 模型构建。但是当前的 2D 扩散模型都是针对单个域设计的那么挑战就是如何有效地将 stable diffusion 扩展至多个域。
Naive Solutions
为了实现此目的作者探索了多个可能的设计。直接方案就是在 UNet 模块的输出增加四个通道表示其它的域。因此扩散模型能同时输出法线图和彩色图像。但是我们注意到该设计收敛速度慢泛化性差。这是因为通道扩张可能影响 stable diffusion 的预训练权重造成灾难性的模型遗忘。
回到第一个等式可以将协同分布拆分为两个条件分布 q a ( z ) q n ( n 1 : K ) ⋅ q c ( x 1 : K ∣ n 1 : K ) q_a(\mathbf{z}) q_n(n^{1:K})\cdot q_c(x^{1:K} | n^{1:K}) qa(z)qn(n1:K)⋅qc(x1:K∣n1:K)
我们可以一开始训练一个扩散模型来生成法线图然后基于生成的法线图训练另一个扩散模型来生成彩色图像。但是这个双阶段框架会增加计算成本也会造成表现退化的问题。
Domain switcher
为了克服这些问题作者通过 domain switcher 设计了一个跨域的扩散机制记做 s s s。Switcher s s s 是一个一维的向量标记不同的域将该 switcher 输进扩散模型作为额外的输入使用。因此第二个等式就可以扩展成 n 1 : K , x 1 : K f ( y , π 1 : K , s n ) , f ( y , π 1 : K , s c ) n^{1:K}, x^{1:K} f(y, \pi_{1:K}, s_n), f(y, \pi_{1:K}, s_c) n1:K,x1:Kf(y,π1:K,sn),f(y,π1:K,sc)
Switcher s s s 首先用 positional encoding 做编码再和 time embedding 拼接到一起。然后注入 stable diffusion 的 UNet。实验表明这个微小的变动不会改变预训练先验而收敛速度会更快、鲁棒性和泛化性会更强。
Cross-domain Attention
有了 switcher 后扩散模型能生成两个不同的域。但是要注意到对于单个视角而言彩色图像和法线图并不是几何一致的。为了解决这个问题需要确保法线图和彩色图的一致性于是作者加入了一个跨域注意力机制来促进信息在两个域之间传递。该机制的目的是确保生成的图像能在几何和外观上对齐。
该跨域注意力层与原版的自注意力层结构相同位于 UNet 每个 transformer 模块的 cross-attention 层之前如上图所示。在跨域注意力层将法线域和彩色图像域的 keys 和 values 结合起来经过注意力操作计算。该设计确保了生成的彩色图像和法线图紧密是关联的增强二者的几何一致性。
3.3 Textured Mesh Extraction
为了从 2D 法线图和彩色图中直接提取 3D 几何结构作者优化了一个 neural implicit signed distance field(SDF)融合生成的 2D 数据。不像其它的表征如 meshesSDF 更加简洁判别度更强。 SDF 是一个函数它为空间中的每个点返回一个值表示该点到最近表面的距离。如果点在表面内部返回负值如果点在表面外部返回正值。SDF函数通常定义为 f ( x ) 距离 − ϵ f(x)\text{距离}-\epsilon f(x)距离−ϵ。其中 ϵ \epsilon ϵ 是一个小的正数用于确保函数在表面上的值为零。利用神经网络来学习 SDF 函数的参数。这意味着神经网络通过训练学习如何从输入数据如图像或点云中推断出距离场。 但是无法使用现有的基于 SDF 的重建方法如 NeuS。这些方法都是为真实拍摄的图像设计的需要密集的输入视角。然而本文方法生成的视角相对稀疏生成的法线图和彩色图像可能会有一些错误预测的像素。在几何优化时这些错误可能会累加造成几何结构的畸变或不完整。于是作者提出了一个几何优化机制。
Optimization Objectives
有了法线图 G 0 : N G_{0:N} G0:N和彩色图 H 0 : N H_{0:N} H0:N后首先利用分割模型从法线图和彩色图中分割出物体的 masks M 0 : N M_{0:N} M0:N。随机选取一个 batch 的像素点和它们在世界空间 P { g k , h k , m k , v k } P\{g_k, h_k, m_k, \mathbf{v}_k\} P{gk,hk,mk,vk}对应的射线其中 g k g_k gk是第 k k k个采样像素的法线值 h k h_k hk是第 k k k个像素的颜色值 m k ∈ { 0 , 1 } m_k\in \{0,1\} mk∈{0,1}是第 k k k个像素的 mask 值 v k \mathbf{v}_k vk是第 k k k个射线的方向。
整体的优化函数如下 L L n o r m a l L r g b L m a s k R e i k L s p a r s e L s m o o t h \mathcal{L}\mathcal{L}_{normal}\mathcal{L}_{rgb}\mathcal{L}_{mask}\mathcal{R}_{eik}\mathcal{L}_{sparse}\mathcal{L}_{smooth} LLnormalLrgbLmaskReikLsparseLsmooth
其中 L n o r m a l \mathcal{L}_{normal} Lnormal表示法线损失 L r g b \mathcal{L}_{rgb} Lrgb是 MSE 损失计算渲染颜色 h ^ k \hat{h}_k h^k和生成颜色 h k h_k hk的损失。 L m a s k \mathcal{L}_{mask} Lmask是一个二元交叉熵损失计算渲染 mask m ^ k \hat{m}_k m^k 和生成 mask m k m_k mk 的损失。 R e i k \mathcal{R}_{eik} Reik 表示 eikonal 正则项促使 SDF 的梯度的级数为单位长度。 L s p a r s e \mathcal{L}_{sparse} Lsparse 是稀疏正则项。 L s m o o t h \mathcal{L}_{smooth} Lsmooth 是一个 3D 平滑正则项迫使 SDF 梯度在 3D 空间平滑。 Eikonal 正则项是一种在数学和物理中用于描述波动现象的数学模型中常见的项。它与波动方程中的相位速度有关尤其是在描述光波或其他类型的波的传播时。Eikonal 方程是一个非线性偏微分方程通常用于描述波动现象中的相位波前。它的形式可以简化为 ∣ ∇ ϕ ∣ 2 n 2 |\nabla \phi|^2n^2 ∣∇ϕ∣2n2其中 ϕ \phi ϕ是相位函数 ∇ \nabla ∇是梯度算子 n n n是介质的折射率。在波动方程中正则项是指那些描述波动传播的项。Eikonal 正则项特别关注波前的形状和传播速度。 Geometry-aware Normal Loss
由于 SDF 表征的本质不同我们可以通过计算 SDF 的二阶导数获得优化后的 SDF 的法线值 g ^ \hat{g} g^。最大化 SDF g ^ \hat{g} g^ 的法线和生成法线 g g g 的相似度提供 3D 几何监督信号。为了克服不同视角下法线的细微错误作者提出了一个几何法线损失 L n o r m a l 1 ∑ w k ∑ w k ⋅ e k , e k ( 1 − cos ( g k ^ , g k ) ) \mathcal{L}_{normal}\frac{1}{\sum{w_k}}\sum{w_k \cdot e_k}, \quad e_k(1-\cos{(\hat{g_k}, g_k)}) Lnormal∑wk1∑wk⋅ek,ek(1−cos(gk^,gk))
其中 e k e_k ek 是第 k k k个射线的 SDF 的法线 g ^ k \hat{g}_k g^k 和生成法线 g k g_k gk 之间的损失 cos ( ⋅ , ⋅ ) \cos(\cdot, \cdot) cos(⋅,⋅) 表示余弦函数 w k w_k wk 是几何权重 w k { 0 , cos ( v k , g k ) ϵ , exp ( ∣ cos ( v k , g k ) ∣ ) , cos ( v k , g k ) ≤ ϵ w_k\left\{ \begin{aligned} 0 , \cos(\mathbf{v}_k, \mathbf{g}_k)\epsilon, \\ \exp{(|\cos(\mathbf{v}_k, \mathbf{g}_k)|)} , \cos(\mathbf{v}_k, \mathbf{g}_k)\leq \epsilon \end{aligned} \right. wk{0exp(∣cos(vk,gk)∣),,cos(vk,gk)ϵ,cos(vk,gk)≤ϵ 其中 exp \exp exp表示指数函数 ∣ ⋅ ∣ |\cdot| ∣⋅∣ 表示绝对值函数 ϵ \epsilon ϵ 是接近于 0 0 0的负数阈值我们计算生成法线 g k g_k gk 和第 k k k个射线的观测方向 v k \mathbf{v}_k vk的角度余弦值。 在计算机视觉中射线的观察方向可以用于估计场景的深度和结构。例如通过分析从不同视点发出的射线的交点可以重建三维场景。 该方法的设计逻辑就是法线的朝向角设定为面向外的而观测方向是面向里的。这就确保了法线向量和观测射线的角度不低于 9 0 ∘ 90^\circ 90∘。如果偏离了这个评价标准说明生成的法线不够准确。
而且值得注意的是从多个不同观测点都能看到优化后形状的 3D 点。因此它会受到对应这些视角的多条法线影响。但是如果多条法线无法展现完美的一致性几何监督信号就会变得模楞两可产生不准确的几何结构。为了解决这个问题作者引入了一个加权机制而非同等地看待这些法线。如果一条法线与观测射线有更大的夹角则权重就更大。这增强了几何监督过程的准确率。 法线是一个向量它在几何体的表面上的某一点与该表面垂直。在二维空间中法线是一个垂直于曲线的直线在三维空间中法线是一个垂直于表面的平面。法线通常用向量表示。如果一个曲面由函数 z f ( x , y ) zf(x,y) zf(x,y) 定义则该曲面上点 ( x , y , f ( x , y ) ) (x,y, f(x,y)) (x,y,f(x,y)) 的法线可以通过曲面的梯度向量 ∇ f \nabla{f} ∇f 来确定。 Outlier-dropping Losses
除了法线损失mask 损失和颜色损失也用于优化几何结构和外观特征。但是在彩色图像和 masks 中不可避免地会出现一些错误的点在优化的过程中会逐步累加产生异常的表面和空洞。于是作者提出了一个简单而有效的策略叫做 outlier-dropping loss。以颜色损失计算为例除了简单地将每一步的所有采样射线的颜色求和作者首先以倒序的顺序将这些损失排序舍弃损失最大的那部分。这是因为错误预测和其它视角之间缺乏足够的一致性。加入了该策略后优化后的几何结构就剔除了错误的几何结构和畸变区域。