【论文阅读】GIRAFFE: Representing Scenes asCompositional Generative Neural Feature Fields

GIRAFFE是一种基于3维GAN的创新方法,通过合成神经特征场实现对多物体场景的可控合成,包括物体位置、姿态和外观。它在CVPR2021中被评为最佳论文,相较于NeRF和GRAF,GIRAFFE在解耦和场景扩展方面有所突破,但还存在一些局限性,如属性解耦和数据集偏见问题。
摘要由CSDN通过智能技术生成

GIRAFFE

【3维GAN】GIRAFEE CVPR2021最佳论文 可组合多物体的三维GAN 论文阅读_哔哩哔哩_bilibili

从NeRF -> GRAF -> GIRAFFE,2021 CVPR Best Paper诞生记 - 知乎 (zhihu.com)

NeRF与GAN 碰撞出的火花——从 CVPR 2021 最佳论文:GIRAFFE 读起(一) - 知乎 (zhihu.com)

【论文笔记 - NeRFs - CVPR2021】GIRAFFE:Representing Scene as Compositional Generative Neural Feature Field_No pains, no GANs!的博客-CSDN博客

【2021】GIRAFFE Representing Scenes as Compositional Generative Neural Feature Fields论文阅读笔记 - 知乎 (zhihu.com)

Background

解耦(disentanglement)指的是能够在不改变其他属性的同时,控制一个属性,比如物体的形状,大小或者姿态。

Motivation

GRAF虽然实现可控的图像合成在高分辨率,但是只能局限于单物体场景。GIRAFFE提出将场景表示为合成的neural feature fields,能够从背景中分离出一个或多个物体以及单个物体的形状和外观。

现在的工作大多都是在2D上进行解耦,忽视了3D(场景是可叠加的)。这篇文章的假设就是这种3D场景的可组合性可叠加性可以让生成任务更可控

组合生成式神经特征场(Compositional Generative Neural Feature Fields)可以做到解耦多物体和这些物体的形状和外观,并可以在未知物体个数和姿态的图片集上做训练。实验表明,GIRAFFE 可以做到平移,旋转物体或者改变相机视角,还可以在场景中自由地增加多个物体,将生成的场景从 single-object 扩展到 multi-object,即使训练数据中没有这样的素材。

Overview

将场景表示为合成生成的神经特征场。对于一个随机采样的摄像机,我们基于单个的特征场来体积渲染场景的特征图像。最后用一个二维神经渲染网络将特征图像转换为RGB图像。

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

Method

Objects as Neural Feature Fields

首先,GIRAFFE 所使用的神经辐射场较 NeRF 和 GRAF 有所不同:NeRF 和 GRAF 的 MLP 输出是一个点的颜色c,而 GIRAFFE 的 MLP 输出则是一个相对抽象的“feature”,这个 feature 后续再经过处理得到真实的像素值。具体如下:( \gamma(⋅) 代表 positional encoding)

这就是论文中所使用的 Generative Neural Feature Fields,较 GRAF 的改进就是将输出的 color c,变成了 feature f。

其次,为了克服 NeRF 和 GRAF 中,无法将 background 和 object 分离开,从而去控制和增减物体,的不足,GIRAFFE 对场景中的每一个object (包括 background)引入了一个仿射变换 T ={s,t,R} ,表示物体放置在场景中的位置和方向。这使得我们可以让物体与背景分离开,从而操纵物体在场景中的位置,也可以自由地增减物体。

其中s和t控制尺度和平移,R控制旋转。

定义变换函数k(x):

我们需要将生成的场景坐标系变回目标所在的坐标系,因此需要逆变换 k^{-1} ,然后将逆变换后的位置和相机视角(就是在目标空间中的位置和观察角度)和噪声输入模型,输出体积密度和特征场:

Scene Compositions

假设场景中有 N-1 个 objects,和 1 个 background,这 N 个实体通过他们各自的仿射变换组合到一起(background 的放射变换始终固定,作为参照)。而这 N 个实体,各自经过他们的神经辐射场 ℎ^i_\theta ,生成各自的 \sigma_i∈R^+ 与f_i∈R^{M_f} 。这自然产生了一个问题,如何将它们组合到一起?文章给出了一个简单的算子 C ,即将 density 求平均,feature 加权平均:

总体的密度通过不同物体的密度求和,总体的颜色通过不同物体的密度进行颜色加权求和。

Scene Rendering

GIRAFFE 的渲染分为两步:3D Volume Rendering \pi_{vol} 与 2D Neural Rendering \pi^{neural}_{vol} 。下面逐个介绍:

Volume Rendering

通过计算每个像素处的\pi_{vol},得到整个特征图像。为了提高效率,我们渲染分辨率为16^2的特征图像,这低于64^2或256^2像素的输出分辨率。然后,我们使用二维神经渲染技术将低分辨率的特征映射上采样到更高分辨率的RGB图像上。我们的实验证明,这有两个优点:提高渲染速度和提高图像质量。

2D Neural Rendering

\pi^{neural}_{vol} 结构如下:(没看懂,反正就是把特征图转变为颜色图,再增加图像分辨率

Training

GIRAFFE的整体框架如图所示。generator将相机位姿 ξ和N个形状/外观编码 z^i_s , z^i_a 和仿射变换 T_i 作为输入,然后将产生的N-1个物体和一个背景合成一个图片。discriminator将输入图片和预测图片进行判断。测试时,我们可以控制照相机的姿态,物体的形状和外观代码,以及物体在场景中的姿态。其中橙色矩形为可学习的部分,蓝色矩形为不可学习部分。

通过相机的角度\xi ,可以得到需要采样的光线和采样点的信息。对于每个实体,采样点的信息,和各自的shape/appearance codes z^i_s /z^i_a 一同输入到神经辐射场 h^i_\theta ,生成各自的 \sigma_i∈R^+ 与f_i∈R^{M_f}。通过算子C和3D Volume Rendering \pi_{vol}得到特征图 I_V∈R^{H_V*W_V*M_F}。进一步通过2D Neural Rendering \pi^{neural}_{vol}得到更高分辨率的最终的颜色图 I_V∈R^{H*W*M*3}。

公式如下:

Experiments

可以通过控制不同参数来合成不同的场景。

可以生成训练数据外的物体(改变场景深度、平移、增加物体)

比较HoloGAN、GRAF和GIRAFFE三种方法旋转360度的效果

Conclusion

GIRAFFE 引入了合成的神经特征场,实现了在生成时控制相机的姿势,物体在场景中摆放的位置与角度,以及物体的形状与外观。而且,GIRAFFE 还可以在场景中自由地增加多个物体,将生成的场景从 single-object 扩展到 multi-object。从网络结构、训练方式、以及实现效果而言,GIRAFFE 可以说是强化版的 GRAF。

NeRF通过神经辐射场来隐式表达3D场景。GRAF通过GAN的形式产生保真度更高的3D场景,并且引入了形状/外观编码来控制单个物体场景的生成。GIRAFFE引入了合成的神经特征场,通过改变相机位姿、目标位姿和目标的形状/外观控制多个物体场景的合成。

得益于NeRF隐式表达的简洁性和可拓展性,GIRAFFE通过各种可变的输入参数来控制3D场景的生成,以完全可微和可学习的方式将多个物体合成3D场景,是NeRF系列中的集大成者。

Others

模型的局限性。首先,模型的属性解耦能力仍然不够强,比如景前物体会被“附着”到背景上等等;再者,存在“Dataset Bias”的现象。如下图,由于数据集中的人脸视线都是朝着相机,也因此生成图像的人脸视线也都是朝着相机,这与要求的视角一致性所矛盾。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值