GIRAFFE学习笔记

14 篇文章 3 订阅

GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields

主页https://m-niemeyer.github.io/project-pages/giraffe/index.html
论文https://www.cvlibs.net/publications/Niemeyer2021CVPR.pdf
代码https://github.com/autonomousvision/giraffe

效果展示

[video(video-00t0fqiz-1665484396605)(type-csdn)(url-https://live.csdn.net/v/embed/244709)(image-https://video-community.csdnimg.cn/vod-84deb4/d5fa3f7b1b3843459a6d6dba58ce0327/snapshots/8f19333ebb914cf08a44d69a9a3921fb-00001.jpg?auth_key=4819081151-0-0-1183c43753b550793bbbba5a77e74b8b)(title-)]

摘要

Deep generative models allow for photorealistic image synthesis at high resolutions. But for many applications, this is not enough: content creation also needs to be controllable. While several recent works investigate how to disentangle underlying factors of variation in the data, most of them operate in 2D and hence ignore that our world is three-dimensional. Further, only few works consider the compositional nature of scenes. Our key hypothesis is that incorporating a compositional 3D scene representation into the generative model leads to more controllable image synthesis. Representing scenes as compositional generative neural feature fields allows us to disentangle one or multiple objects from the background as well as individual objects’ shapes and appearances while learning from unstructured and unposed image collections without any additional supervision. Combining this scene representation with a neural rendering pipeline yields a fast and realistic image synthesis model. As evidenced by our experiments, our model is able to disentangle individual objects and allows for translating and rotating them in the scene as well as changing the camera pose.
译文:
深度生成模型可以在高分辨率下进行逼真的图像合成。但是对于许多应用程序来说,这还不够: 内容创建还需要可控。尽管最近的几项工作研究了如何消除数据变化的潜在因素,但大多数工作都是2D操作的,因此忽略了我们的世界是三维的。此外,只有很少的作品考虑场景的构图性质。我们的关键假设是,将构图的3D场景表示形式合并到生成模型中会导致更可控的图像合成。将场景表示为合成生成神经特征字段,使我们能够从背景以及单个对象的形状和外观中分离出一个或多个对象,同时无需任何额外的监督即可从非结构化和无姿势的图像集合中学习。将此场景表示与神经渲染管道相结合,可以产生快速逼真的图像合成模型。正如我们的实验所证明的那样,我们的模型能够解开单个对象,并允许在场景中平移和旋转它们以及改变相机姿势。。

文章工作

我们的主要想法是将合成 3D 场景表示合并到生成器模型中:
在这里插入图片描述更具体地说,在每个前向传递中,我们对场景中的对象以及背景中的各个潜在代码进行采样。这些为我们提供了规范空间中的各个特征字段。特征场是将 3D 点和观察方向映射到密度值和特征向量的函数。然后我们为每个对象采样一个姿势,以便我们可以将它们合成到一个场景中。接下来,我们对相机姿势进行采样,并对场景的特征图像进行体积渲染。然后,一个 2D 神经渲染器对特征图像进行上采样并输出最终的 RGB 渲染;

Hint:我们从原始、未定型的图像集合中训练我们的模型,但我们能够将 3D 偏差合并到我们的生成器模型中。此外,我们有助于将场景分解为单个对象,而无需监督!

算法框架

图1: 概述。我们将场景表示为合成生成神经特征场。对于随机采样的相机,我们会根据各个特征字段对场景的特征图像进行体积渲染。2D神经渲染网络将特征图像转换为RGB图像。虽然仅对原始图像集合进行培训,但在测试一下时,我们能够控制图像形成过程wrt。相机姿势,物体姿势以及物体的形状和外观。此外,我们的模型扩展到训练数据之外,例如,我们可以合成具有比训练图像中更多对象的场景。请注意,为了清楚起见,我们以颜色而不是特征来可视化体积。
fig 1:将场景表示为合成生成神经特征场。对于随机采样的相机,我们会根据各个特征字段对场景的特征图像进行体积渲染。2D神经渲染网络将特征图像转换为RGB图像。虽然仅对原始图像集合进行培训,但在测试一下时,我们能够控制图像形成过程wrt。相机姿势,物体姿势以及物体的形状和外观。此外,我们的模型扩展到训练数据之外,例如,我们可以合成具有比训练图像中更多对象的场景。请注意,为了清楚起见,我们以颜色而不是特征来可视化体积。

Related Work

  • GAN-based Image Synthesis
    • 生成对抗网络 (GANs) [24] 已显示出允许在 102 4 2 1024^2 10242像素和超过 102 4 2 1024^2 10242的分辨率下进行逼真的图像合成;
    • 为了更好地控制合成过程,许多工作研究了如何在没有明确监督的情况下解开变异因素:
      • 他们要么修改训练目标或网络体系结构;
      • 要么研究精心设计和预先训练的生成模型的潜在空间;(上诉,没有明确地模拟场景的构图性质)
      • 研究了如何在对象级别上控制合成过程。在获得逼真的结果的同时,所有上述作品都以2D建模图像形成过程;(上述,忽略了世界的三维结构)
    • 在这项工作中,该论文主张直接在3D中对形成过程进行建模,以实现更好的解缠和更可控的合成;
  • Implicit Functions
    • NeRF;
      • 需要具有相机姿势的多视图图像作为监督,每个场景训练一个网络,并且无法生成新颖的场景;
    • 在这项工作中,该论文从非结构化图像集合中学习了生成模型,该模型允许对生成的场景进行可控的,逼真的图像合成;
  • 3D-Aware Image Synthesis
    • 研究如何将3D表示作为归纳偏差合并到生成模型中。尽管许多方法使用额外的监督,但我们专注于像我们的方法一样对原始图像集合进行培训的作品。
    • Henzler等人.使用可微渲染学习基于体素的表示。结果是3D可控的,但由于其立方记忆增长引起的体素分辨率有限,因此显示出伪像。
    • NguyenPhuoc等人.提出了体素化特征网格表示,这些表示通过整形操作呈现为2D。在取得令人印象深刻的成绩的同时,训练变得不那么稳定,对于更高的分辨率,结果也不那么一致。
    • Liao等将抽象特征与基元和可微渲染结合使用。在处理多对象场景时,它们需要以纯背景图像的形式进行额外的监视,而这些图像对于真实世界场景很难获得。
    • Schwarz等人提出了生成神经辐射场 (GRAF)。在实现高分辨率的可控图像合成的同时,这种表示仅限于单对象场景,并且在更复杂的真实图像中结果会降低。
    • 在这项工作中,该论文将构图的3D场景结构合并到生成模型中,以使其自然处理多对象场景。此外,通过集成神经渲染管道,模型可以扩展到更复杂的真实数据;

Method

我们的目标是一个可控的图像合成管道,可以从原始图像集合中进行培训,而无需额外的监督。

  • Sec.3.1 我们将单个对象建模为神经特征场。
  • Sec.3.2 我们利用特征字段的附加属性来合成来自多个单独对象的场景。
  • Sec.3.3 对于渲染,我们探索了一种有效的体积和神经渲染技术的组合。
  • Sec.3.4 我们讨论如何从原始图像集合训练我们的模型。

Objects as Neural Feature Fields

Neural Radiance Fields(NeRF)

详细见此链接: https://blog.csdn.net/pylittlebrat/article/details/127704137

Generative Neural Feature Fields

虽然 [61] 适用于单个场景的多个摆姿势图像,但Schwarz等人 [77] 提出了一种由未摆姿势图像集合训练的神经辐射场 (GRAF) 生成模型。为了学习nerf的潜在空间,他们以形状和外观代码 z s , z a 〜 N ( 0 , I ) z_s,z_a〜N(0,I) zszaN(0I)为MLP条件:
g θ : R L x × R L d × R M s × R M a → R + × R 3 ( γ ( x ) , γ ( y ) , Z s , Z a ) → ( σ , c ) g_\theta:R^{L_x}\times R^{L_d}\times R^{M_s}\times R^{M_a} \to R^+ \times R^3 \\ (\gamma(x),\gamma(y),Z_s,Z_a) \to (\sigma,c) gθ:RLx×RLd×RMs×RMaR+×R3(γ(x),γ(y),Zs,Za)(σ,c)
其中 M s , M a M_s,M_a MsMa是潜码的维度。在这项工作中,我们探索了体积和神经渲染的更有效组合。我们用更通用的 M f M_f Mf维特征f代替GRAF的三维颜色输出 c c c的公式,并将对象表示为生成神经特征场:
h θ : R L x × R L d × R M s × R M a → R + × R M f ( γ ( x ) , γ ( y ) , Z s , Z a ) → ( σ , f ) h_\theta:R^{L_x}\times R^{L_d}\times R^{M_s}\times R^{M_a} \to R^+ \times R^{M_f} \\ (\gamma(x),\gamma(y),Z_s,Z_a) \to (\sigma,f) hθ:RLx×RLd×RMs×RMaR+×RMf(γ(x),γ(y),Zs,Za)(σ,f)

Object Representation

NeRF和GRAF的一个关键限制是整个场景由单个模型表示。由于我们对解开场景中的不同实体感兴趣,因此我们需要控制单个对象的姿势,形状和外观 (我们也将背景视为对象)。因此,我们使用单独的特征字段结合仿射变换来表示每个对象
T = { s , t , R } T = \{s,t,R\} T={s,t,R}
其中s,t ∈ R3表示比例和平移参数,R ∈ SO(3) 为旋转矩阵。使用此表示,我们将点从对象转换到场景空间,如下所示:
k ( x ) = R ⋅ [ s 1 s 2 s 3 ] ⋅ x + t k(x) = R \cdot \begin{bmatrix} s_1 & &\\ & s_2 & \\ & & s_3 \end{bmatrix} \cdot x +t k(x)=R s1s2s3 x+t
在实践中,我们在场景空间中进行体积渲染,并在其规范对象空间中评估特征字段 (参见图1):
( σ , f ) = h θ ( γ ( k − 1 ( x ) ) , γ ( k − 1 ( d ) ) , Z s , Z a ) (\sigma,f) = h_{\theta}(\gamma(k^{-1}(x)),\gamma(k^{-1}(d)),Z_s,Z_a) (σ,f)=hθ(γ(k1(x)),γ(k1(d)),Zs,Za)

这允许我们在一个场景中排列多个对象。所有对象特征字段共享其权重,并且从依赖于数据集的分布中采样T 。

Scene Compositions

如上所述,我们将场景描述为N个实体的组成,其中第一个 N − 1 N-1 N1是场景中的对象,最后一个表示背景。考虑两种情况: 首先,在整个数据集上固定N,以使图像始终包含N − 1个对象和背景。其次,N在整个数据集中是不同的。在实践中,除了固定比例和平移参数 s N , t N s_N,t_N sNtN以跨越整个场景并以场景空间原点为中心之外,我们对背景使用与对象相同的表示形式。
在这里插入图片描述
fig 3: 我们的生成器 G θ G_\theta Gθ将相机姿势 ξ \xi ξ N N N个形状以及外观代码 z s i , z a i z_s^i,z_a^i zsizai和仿射变换 T i T_i Ti作为输入,并合成由 N − 1 N-1 N1个对象和背景组成的生成场景的图像。鉴别器 D ϕ D_\phi Dϕ将生成的图像 “ I ^ \hat{I} I^” 和 “真实图像I” 作为输入,并且我们的完整模型被训练为对抗性损失。测试一下时,我们可以控制相机的姿势,对象的形状和外观代码以及场景中对象的姿势。橙色表示可学习和蓝色不可学习操作。

Composition Operator

为了定义合成算子 C C C,让我们回想一下,单个实体 h θ i i h_{\theta_i}^i hθii的特征字段预测给定点 x x x和观看方向 d d d的密度 σ i ∈ R + \sigma_i\in R^+ σiR+和特征向量 f i ∈ R M f f_i \in R^{M_f} fiRMf。当组合非实体对象时,对于x处的整体密度,自然选择 [17] 是将各个密度求和,并使用密度加权平均值来组合 ( x , d ) (x,d) (xd)处的所有特征:
C ( x , d ) = ( σ , 1 σ ∑ i = 1 N σ i f i ) , w h e r e    σ = ∑ i = 1 N σ i C(x,d) = (\sigma,\frac{1}{\sigma}\sum_{i=1}^N\sigma_if_i),where \ \ \sigma = \sum_{i=1}^N\sigma_i C(xd)=(σ,σ1i=1Nσifi),where  σ=i=1Nσi
尽管简单直观,但 C C C的这种选择还有一个额外的好处: 我们确保梯度流向密度大于0的所有实体。

Scene Rendering

3D Volume Rendering

虽然以前的作品体积渲染RGB颜色值,但我们将此公式扩展到渲染 M f M_f Mf维特征向量 f f f。对于给定的相机外部学 ξ \xi ξ,设 { x j } j = 1 N s \{x_j\}_{j=1}^{N_s} {xj}j=1Ns为沿相机射线d的采样点对于给定像素,并且 ( σ j , f j ) = C ( x j , d ) (\sigma_j,f_j) = C(x_j,d) (σj,fj)=C(xjd)场的相应密度和特征向量。体绘制算子 π v o l \pi_{vol} πvol将这些评估映射到像素的最终特征向量 f f f:
π v o l : ( R + × R M f ) N s → R M f , { σ j , f j } j = 1 N s → f \pi_{vol}:(R^+ \times R^{M_f})^{N_s} \to R^{M_f},\{\sigma_j,f_j\}_{j=1}^{N_s} \to f πvol:(R+×RMf)NsRMf,{σj,fj}j=1Nsf
使用中的数值积分,得到 f f f
f = ∑ j = 1 N s τ j α j f j     τ j = ∏ k = 1 j − 1 ( 1 − α k )     α j = 1 − e − σ j δ j f = \sum_{j=1}^{N_s}\tau_j\alpha_jf_j \ \ \ \tau_j = \prod_{k=1}^{j-1}(1-\alpha_k) \ \ \ \alpha_j = 1 - e^{-\sigma_j\delta_j} f=j=1Nsτjαjfj   τj=k=1j1(1αk)   αj=1eσjδj
其中 τ j \tau_j τj是透射率, α j \alpha_j αj x j x_j xj α \alpha α值, δ j = ∣ ∣ x j + 1 − x j ∣ ∣ 2 \delta_j = | | x_{j+1} − x_j | |_2 δj=∣∣xj+1xj2相邻采样点之间的距离。通过评估每个像素的 π v o l l \pi_{vol}l πvoll来获得整个特征图像。为了提高效率,我们以低于 6 4 2 64^2 642 25 6 2 256^2 2562像素的输出分辨率的分辨率 1 6 2 16^2 162渲染特征图像。然后,我们使用2D神经渲染将低分辨率特征映射上采样到更高分辨率的RGB图像。正如我们的实验所证明的那样,这具有两个优点: 提高渲染速度和改善图像质量。

2D Neural Rendering

神经渲染算子:
π θ n e u s a l : R H V × W V × M f → R H × W × 3 \pi_{\theta}^{neusal}: R^{H_V \times W_V \times M_f} \to R^{H \times W \times 3} πθneusal:RHV×WV×MfRH×W×3
具有权重 θ \theta θ将特征图像 I V ∈ R H V × W V × M f I_V \in R^{H_V \times W_V \times M_f} IVRHV×WV×Mf映射到最终合成图像 “ I ^ ∈ R H × W × 3 \hat I ∈ R^{H \times W \times 3} I^RH×W×3”。我们将 π θ n e u s a l \pi_{\theta}^{neusal} πθneusal参数化为具有leaky-ReLU [56,89] 激活的2D卷积神经网络 (CNN) (图4),并将最近邻上采样与3 × 3卷积相结合以提高空间分辨率。我们选择较小的内核尺寸而没有中间层,以仅允许在空间上进行较小的细化,以避免在图像合成过程中纠缠全局场景属性,同时允许增加输出分辨率。受 [40] 的启发,我们以每个空间分辨率将特征图像映射到RGB图像,并通过双线性上采样将上一个输出添加到下一个输出。这些跳过连接可确保到特征字段的强梯度流。我们通过对最后一个RGB层应用sigmoid激活来获得最终的图像预测。
在这里插入图片描述
fig 4: 特征图像IV由n个最近邻上采样块和3 × 3卷积处理,并具有泄漏的重新激活。在每种分辨率下,我们将特征图像映射到具有3 × 3卷积的RGB图像,并通过双线性上采样将其添加到先前的输出中。我们应用sigmoid激活来获得最终图像 “ I ^ \hat I I^”。灰色表示输出,橙色可学习和蓝色不可学习操作。

Training

Generator

我们将整个生成过程正式表示为:
G θ ( { Z s i , Z a i , T i } i = 1 N , ξ ) = π θ n e u s a l ( I V ) w h e r e     I V = { π v o l ( { C ( x j k , d k ) } j = 1 N s ) } k = 1 H V × W V G_\theta(\{Z_s^i,Z_a^i,T_i\}_{i=1}^N,\xi) = \pi_{\theta}^{neusal}(I_V) \\ where \ \ \ I_V = \{\pi_{vol}(\{C(x_{jk},d_k)\}_{j=1}^{N_s})\}_{k=1}^{H_V \times W_V} Gθ({Zsi,Zai,Ti}i=1N,ξ)=πθneusal(IV)where   IV={πvol({C(xjk,dk)}j=1Ns)}k=1HV×WV
N N N是场景中的实体数量, N s N_s Ns是沿每个光线的采样点数量, d k d_k dk是第 k k k个像素的光线, x j k x_{jk} xjk是第 k k k个像素/光线的第 j j j个采样点。

Discriminator

我们将鉴别器 D ϕ D_\phi Dϕ参数化为具有泄漏remu激活的CNN [73]。

Training

在训练过程中,我们采样场景中的实体数量 N ∼ p N N \sim p_N NpN,潜在代码 Z s i , Z a i ∼ N ( 0 , I ) Z_s^i,Z_a^i \sim N(0,I) Zsi,ZaiN(0I),以及相机姿势 ξ ∼ p ξ \xi \sim p_\xi ξpξ和对象级变换 T i ∼ p T T_i \sim p_T TipT。在实践中,我们分别将 p ξ p_\xi pξ p T p_T pT定义为依赖于数据集的相机仰角和有效对象变换的均匀分布。1这种选择的动机是,在大多数现实世界场景中,对象是任意旋转的,但不会由于重力而倾斜。相比之下,观察者 (在我们的情况下为相机) 可以自由改变其仰角wrt。现场。
我们用non-saturatingGAN [24] 和R1梯度惩罚训练我们的模型:
V ( θ , ϕ ) = E Z s i , Z a i ∼ N , ξ ∼ p ξ , T i ∼ p T [ f ( D ϕ ( G θ ( { Z s i , Z a i , T i } i , ξ ) ) ) ] + E I ∼ p D [ f ( − D ϕ ( I ) ) − λ ∣ ∣ ▽ D ϕ ( I ) ∣ ∣ 2 ] V(\theta, \phi) = \\ E_{Z_s^i,Z_a^i \sim N, \xi \sim p_\xi, T_i \sim p_T}[f(D_\phi(G_\theta(\{Z_s^i,Z_a^i,T_i\}_i,\xi)))]\\ +E_{I \sim p_D}[f(-D_\phi(I))-\lambda||\bigtriangledown D_\phi(I)||^2] V(θ,ϕ)=EZsi,ZaiN,ξpξ,TipT[f(Dϕ(Gθ({Zsi,Zai,Ti}i,ξ)))]+EIpD[f(Dϕ(I))λ∣∣Dϕ(I)2]
其中 f ( t ) = − l o g ( 1 + e − t ) , λ = 10 , p D f(t) = − log(1 + e^{-t}),\lambda = 10,p_D f(t)=log(1+et)λ=10pD表示数据分布。

实验结果

在这里插入图片描述
定量比较。我们报告基线和我们的方法在 6 4 2 64^2 642像素处的FID得分 (↓)
在这里插入图片描述
定量比较。我们报告了最强的3d感知基线和我们的方法在 25 6 2 256^2 2562像素处的FID得分 (↓)。
在这里插入图片描述
网络参数比较。我们报告网络参数的数量,以百万为标准。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ACxz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值