article:http://arxiv.org/abs/2011.12100( CVPR 2021 (oral))
code:https://github.com/giraffe-fsharp/Giraffe
writer:Michael Niemeyer,Andreas Geiger
1 摘要
深度生成模型可以在高分辨率下进行逼真的图像合成。但对于许多应用来说,这还不够:内容创作还需要做到可控。GRAF加入了形状编码和外观编码,实现对场景中物体的编辑。GiRAFFE的关键假设是,**将组合式三维场景表示纳入生成模型,可以使图像合成更加可控。**将场景表示为生成性神经特征场,使得能够从背景中分离出一个或多个物体,以及单个物体的形状和外观,同时无需任何额外的监督就能从非结构化和非posed的图像集中学习。将这种场景表示与神经渲染管道结合起来,可以产生一个快速而真实的图像合成模型。实验证明,GIRAFFE能够分解单个物体,并允许在场景中平移和旋转它们,以及改变摄像机的姿势。
2 模型框架
2.1 Overview

overview. 首先在高斯分布上采样不同的物体以及背景的形状和外观的信息,在不同模型上生成不同的目标车辆和背景,然后通过目标姿态信息变换目标的姿态(仿射变换),然后根据相机姿态和体渲染,生成隐式的三维场景,再通过2D的CNN网络解码成2D图片。
2.2 与2D-based 方法对比

通过上图可明显看出,基于2D的方法在对球体进行移动时,两个球体的形状都发生了改变,而GIRAFFE可以很好地完成移动物体的操作。同时,GIRAFFE还能完成更复杂的任务,比如循环平移以及往场景中添加物体。
2.3 整体框架

首先,将单个对象建模为神经特征场,然后,利用来自多个不同物体的特征场的附加属性来合成场景,对于渲染部分,GIRAFFE研究了如何将体积渲染和神经渲染有效组合起来。其中橙色表示可学习,蓝色表示不可学习的操作。C是composition operator(组合算子)
输入:
- 相机pose(外参矩阵 ξ ∼ p ξ \xi \sim p_{\xi} ξ∼pξ, p ξ p_{\xi} pξ和 p T p_T pT是依赖于数据集的相机仰角和有效对象变换的均匀分布,做出这种选择的理由是,在大多数现实世界场景中,对象是任意旋转的,但不会因重力而倾斜,相比之下,相机保持位置不变时可以自由改变其仰角);
- 形状和外观代码( z s , z a ∼ N ( 0 , 1 ) z_s,z_a \sim N(0,1) zs,za∼N(0,1)服从标准正太分布)
- 仿射变换 T i T_i Ti( T = { s , t , R } T = \{s, t, R\} T={s,t,R} , s , t s,t s,t表示缩放和平移参数, R R R是旋转矩阵,使用这种表示,将对象中的点转换到场景空间)
算法流程:
1)根据相机的pose生成光线,对光线进行采样,获取方向
d
j
d_j
dj和位置
x
i
,
j
x_{i,j}
xi,j,分别进行高频编码,得到对应的表示;
2) 而后与
N
N
N个形状和外观代码,以及
T
i
T_i
Ti一起(
N
N
N是场景中所有物体的数量,一般设前
N
−
1
N-1
N−1为单个物体,第
N
N
N个为背景),送入不同的生成神经特征场,输出时把原来GRAF输出的三维rgb颜色值换成更通用的特征
f
f
f,得到对应的
(
σ
i
,
j
i
,
f
i
,
j
i
)
(\sigma^i_{i,j},f^i_{i,j})
(σi,ji,fi,ji),再经过组合算子得到某一点的整体密度和特征值(密度是各个密度相加,特征是使用密度的加权平均值,
)。
3) 对于给定的相机pose
ξ
\xi
ξ,令
{
x
j
}
j
=
1
N
s
\{x_j\}^{N_s}_{j=1}
{xj}j=1Ns是给定像素沿相机光线
d
d
d上的采样点,把组合算
C
C
C输出的密度值和场的特征向量
(
σ
i
,
f
i
)
(\sigma_i, f_i)
(σi,fi)映射到像素的最终特征向量
f
j
f_j
fj,
,具体计算公式为:
其中
τ
j
τ_j
τj是透射率,
α
j
α_j
αj 是
x
j
x_j
xj的 alpha 值,而
δ
j
=
∣
∣
x
j
+
1
−
x
j
∣
∣
2
δ_j = ||x_{j+1} − x_j ||^2
δj=∣∣xj+1−xj∣∣2 是相邻采样点之间的距离。整个特征图像是通过评估每个像素的
π
v
o
l
π_{vol}
πvol获得的。
4) 获得
f
j
f_j
fj后,再送入神经渲染算子
π
θ
n
e
u
r
a
l
\pi_{\theta}^{neural}
πθneural(
),根据权重
θ
\theta
θ将特征图像映射到最终合成图像,将
π
θ
n
e
u
r
a
l
\pi_{\theta}^{neural}
πθneural参数化为具有leaky ReLU激活函数的2D卷积神经网络(CNN)。
5) 最后把渲染得到的图像
I
^
\hat{I}
I^和从真实图像采样得到的
I
I
I送入判别器
D
ϕ
D_{\phi}
Dϕ进行训练,优化整个网络。
公式表示:
整个算法生成器部分的流程用公式表示为:
其中,
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个采样点。
判别器
D
ϕ
D_\phi
Dϕ采用的是非饱和GAN损失函数:
3 实验
1、对场景进行分离,从上至下分别是单独的背景、物体对象、对象颜色的alpha值、最终的合成图像
2、旋转、平移对象,改变对象的属性、循环平移对象
3、超出训练数据的泛化,比如增加物体、生成不同景深、水平移动相机位置的图像,同时和其他方法进行对比
GIRAFFE是一种结合3D场景表示和神经渲染的生成模型,允许对图像合成进行更精细的控制。通过将场景表示为生成性神经特征场,模型能从背景中分离物体并进行形状、外观和位置编辑,无需额外监督。实验展示了GIRAFFE在物体平移、旋转、添加和相机视角变化等任务上的优势。
484

被折叠的 条评论
为什么被折叠?



