论文笔记:tri-plane 【持续更新】

概述

论文名称: Efficient Geometry-aware 3D Generative Adversarial Networks
Project page: https://github.com/NVlabs/eg3d

任务: 从一堆单视角的2D图像中生成有效的三维表达。
途径:

  1. 混合的显式与隐式三维表达;
  2. dual-discremination的训练策略,以保持神经渲染之间的一致性。
  3. 为生成器引入 pose-based的条件,能够解耦与pose相关的特性(比如面部表达)

其他优势:
从神经渲染过程中解耦特征生成,这使得能够直接应用SOTA的2D CNN特征生成器。可以实现在各种3D场景内的泛化,同时也可以在3D多视角一致的神经体渲染过程中受益。
【为什么2D CNN特征生成器可以实现泛化,和从多视角一致的渲染过程中收益?】

Tri-Plane 表达

在这里插入图片描述
期望一种表达能力强、效率高的3D数据表达。
本节先一个 single-scene over-fitting (SSO)的实验中进行说明,而后再讨论其如何被引入到GAN框架中。
在 "tri-plane"的表达中,首先将显式的特征,归到三个轴正交的特征平面上,每一个特征平面的size都是 N ∗ N ∗ C N * N * C NNC,显然, N N N是空间分辨率, C C C是特征通道数。
进而,可以通过将任何一个三维点 x ∈ R 3 x \in \mathbb{R}^3 xR3投影到三个特征平面上,获取其对应的特征向量 ( F x y , F x z , F y z ) (F_{xy}, F_{xz}, F_{yz} ) (Fxy,Fxz,Fyz)(可通过双线性插值的方式),而后,再将获取的三个特征向量进行累加,即得到所谓的 “aggreated 3D Features” F \mathbf{F} F
再引入一个小型的MLP,将这个 F \mathbf{F} F输出为颜色与密度。
这种 tri-plane的表达,最大的优势在于效率(decoder变得比较小;将大部分的表达能力都转移给了显式的特征)。

验证 tri-plane 表达

为了验证这种表达的能力,使用一种通用的新视角合成的实验设置。即,直接去优化 planes的特征以及decoder的权重,以fit 360°的视角(Tanks & Temples 数据集)。

实验设定:

  • 特征平面: N = 512 N = 512 N=512 C = 48 C = 48 C=48
  • decoder: 四层MLP,128个隐藏单元,一个傅里叶特征编码。

对比对象:
一个dense feature volume(具有相同的capacity),具体使用了一个SOTA的全隐式表达网络。

实验效果:
在这里插入图片描述
在这里插入图片描述

3D GAN 框架

训练一个3D GAN,但是不需要显式的3D结构或者多视图监督。
对每一张训练图片都关联上相机内外参(通过现成的pose-detectors)。
整体网络结构为: 在这里插入图片描述

与SSO中的设定不同,planes中的feature并不是由多张输入图直接进行优化的,而是会根据GAN的设定进行了一定程度的修改 —— 基于StyleGAN2的backbone,生成了tri-plane的特征(channels = 32),且并不是生成一个RGB图,而是生成一个32通道的特征图(给定相机pose)。而后,接入一个“super-resolution”模块,以进行上采样与refine。输出的结果将被一个稍做改动的StyleGN2 discriminator进行判别。

整个网络通过一种端到端的方式进行训练(随机初始化),使用 non-saturating GAN 损失函数,以及 R1 regularization (借鉴了StyleGAN2的训练机制)。

为了加速训练,使用了两阶段的训练策略,第一阶段使用一个较低的分辨率:一个reduced ( 6 4 2 64^2 642)的神经渲染分辨率,第二阶段进行短暂微调,并以 full( 12 8 2 128^2 1282) 神经渲染分辨率进行训练。

CNN生成器backbone以及渲染

特征backbone使用的是StyleGAN2 CNN生成器。

首先,随机的潜在编码和相机参数会经过一个映射网络,生成一个中间的潜在编码。然后,这个中间的潜在编码会调制一个独立的合成网络的卷积核。

修改了StyleGAN2的CNN backbone,使得其生成 256 ∗ 256 ∗ 96 256 * 256 * 96 25625696的特征图,而不是三通道的RGB图片。这些特征图进一步地reshape成三个 32通道的planes。StyleGAN的表达给网络提供了一个well-behaved的latent space,这个latent space能够较好地达成 style-mixing以及latent-space interpolation.

decoder只使用一个隐藏层,隐藏层有64个units,以及softplus 激活函数。这个MLP没有使用位置编码,坐标输入,或者视角输入。输出为一个标量体密度 σ \sigma σ以及一个32通道的特征,名为 C o l o r Color Color。这两个输出进一步地被喂入 Volume Rendering模块(借鉴了参考文献[45]),以生成2D的feature map。

在本文的大部分实验中,渲染的特征图 I F I_{F} IF为32通道,分辨率为 12 8 2 128^2 1282,每条ray上采样 96 96 96个sample(“…with 96 total depth samples per ray.”)。

超分

尽管tri-plane的表达已经很高效,但是处理高分辨率图片仍然比较困难。
因此,引入了一个超分模块。

超分模块由两个StyleGAN2调制的卷积层块组成。

为了减少纹理粘连的问题,作者禁用了每个像素的噪声输入,并重复使用了模型的映射网络来调制这些层。

Dual discrimination

在标准的2D GAN训练过程中,渲染结果最终由一个2D卷积分辨器进行分辨。
我们主要基于StyleGAN2做了两个修改。
首先,为了避免生成图像的多视角不一致,将一张渲染的特征图 I F I_{F} IF的前三个通道设计成低分辨率的RGB图 I R G B I_{RGB} IRGB

直觉上来看,dual discremination而后会去尽可能地确保 I R G B I_{RGB} IRGB与超分图像 I R G B + I_{RGB}^{+} IRGB+高度相似。实现方式是: 将 I R G B I_{RGB} IRGB上采样到和 I R G B + I_{RGB}^{+} IRGB+同分辨率,并将两张图像concat,得到一个六通道的图像。这个六通道的图像将会被送到判别器去。

Dual discrimination同时也鼓励了超分后的图像与神经渲染得到的图像尽可能地一致:
在这里插入图片描述
GAN使用条件策略来让鉴别器了解生成图像的相机姿态。具体来说,我们将**渲染相机的内部和外部矩阵(统称为P)**作为条件标签传递给鉴别器,这是从StyleGAN2-ADA中采用的条件策略。我们发现,这种条件引入了额外的信息,可以指导生成器学习正确的3D先验知识。

Modeling pose-correlated attributes

真实世界数据集(如FFHQ)中存在偏差问题,这些偏差会将相机姿态与其他属性(如面部表情)相关联,如果不做特别的处理则会导致视角不一致的结果。例如,相机角度与人脸的表情是相关联的(请参见补充材料)。

虽然完完全全地对模拟数据集中固有的属性进行建模,对于重新生成最佳图像质量非常重要,但这些不需要的属性(比如面部表情)在多视角一致的合成任务推理时,还是需要被解耦。

相关工作已经成功地实现了视角一致性[4, 58, 59]或建模相机姿态与外观一致性[47, 49],但难以同时实现两者。

为此,网络提供了backbone映射网络,不仅仅将latent code 向量 v v v作为输入,同时也将相机参数作为输入,这主要参考了条件生成策略[26]。

在训练过程中,pose conditioning允许生成器对数据中pose-independent的隐含偏差进行建模。

为了避免场景在推理的时候随着相机pose移动而移动,文章在移动相机轨迹进行渲染的时候,将生成器固定在某一个pose位置。

什么意思?

但是,如果总是这样处理的话,会导致GAN总是产生一些朝向相机的图片。为了尽可能避免这个情况,文章随机地交换 P P P中的条件pose和另外一个随机pose。

条件pose是怎么确定的,随机pose又是怎么确定的,50%是一个超参数吗?

实验

【todo】

数据

  1. the task of unconditioned 3D-aware generation

参考文献

  • two-pass importance sampling 体渲染模块[45]:
  • 条件生成策略[26]
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FLOWVERSE

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

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

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

打赏作者

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

抵扣说明:

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

余额充值