GIRAFFE—NeRF、GRAF工作的延申

GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields

论文报告: https://www.bilibili.com/video/BV1TX4y1P7ou/

github: https://github.com/autonomousvision/giraffe

GIRAFFE:composition方向的代表作

2021CVPR的最佳论文奖得主GIRAFFE是NeRF、GRAF工作的延申。

在NeRF之后,有人提出了GRAF(Generative Radiance Fields),关键点在于引入了GAN来实现Neural Radiance Fields;并使用conditional GAN实现对渲染内容的可控性。

在GRAF之后,GIRAFFE实现了composition(创作)。在NeRF、GRAF中,一个Neural Radiance Fields表示一个场景,one model per scene。而在GIRAFFE中,一个Neural Radiance Fields只表示一个物体,one object per scene(背景也算一个物体)。这样做的妙处在于可以随意组合不同场景的物体,可以改变同一场景中不同物体间的相对位置,渲染生成更多训练数据中没有的全新图像。

GIRAFFE实现composition

如图所示,GIRAFFE可以平移、旋转场景中的物体,还可以在场景中增添原本没有的新物体。另外,GIRAFFE还可以改变物体的形状和外观,因为网络中加入了形状编码、外观编码变量(shape codes zsi , appearance codes zai )。

GIRAFFE是一个基于学习的、完全可微的渲染引擎,用于将场景合成为多个“特征域”的总和。

简单回顾一下nerf,它们是一种描述和渲染3D场景的方法,在3D体积中任何给定的点上它的密度和辐射。它与光场的概念密切相关,光场是表达光如何流经给定空间的函数。对于空间中给定的(x,y,z)视点,图像将方向(θ, φ)的射线投射到一个场景中。对于这条线上的每个点,我们收集其密度和视相关的发射辐射,并以类似于传统光线追踪的方式将这些光线合成为单个像素值。这些NeRF场景是从各种姿势拍摄的图像收集学习,你会使用在结构从运动应用程序。

传统的GAN架构使用编码器和解码器设置,就像下图这样。在训练过程中,编码器接收一个图像,将其编码成一个压缩的表征,解码器利用这个表征来创建一个改变样式的新图像。在我们的训练数据集中的所有图像中重复多次,以便编码器和解码器学习如何在训练期间最大化我们想要实现的任务的结果。一旦训练完成,你可以发送一个图像到编码器,它会做同样的过程,生成一个新的和看不见的图像,根据你的需要。无论做什么工作,它都会起到非常相似的作用,不管是把一张脸的图像翻译成卡通画家那样的另一种风格,还是用草图创造出一幅美丽的风景。仅使用解码器,我们也称之为生成器,因为它是负责创建新图像的模型,我们可以在这个编码信息空间中行走,并对发送给生成器的信息进行采样,以生成无限量的新图像。这种编码的信息空间通常被称为潜在空间,而我们用来生成新图像的信息就是潜在代码。我们基本上是在这个最优空间内随机选择一些潜在的代码,然后它会根据我们想要完成的任务生成一个新的随机图像,当然,也会遵循这个生成器的训练过程。这是难以置信的酷,但正如我刚才所说,图像是完全随机的,我们没有或很少的想法,它看起来像什么,这已经是一个非常少有用的创造者。

这就是他们用这篇论文解决的问题。实际上,通过获取物体形状和外观的潜在代码并将其发送给解码器或生成器,他们能够控制物体的姿势,这意味着他们可以移动物体,改变物体的外观,添加其他物体,改变背景,甚至改变相机的姿势。所有这些变换都可以在每个对象或背景上独立完成,而不会影响图像中的任何其他内容!

如你看到的那样子,它比其他基于GAN的方法要好得多,这些方法通常无法将对象彼此分离,并且都会受到特定对象修改的影响。

与他们的方法不同的是,他们在三维场景表示中解决这个问题,就像我们如何看待现实世界一样,而不是像其他GANs那样停留在二维图像世界中。但除此之外,过程非常相似。它们对信息进行编码,识别对象,在潜在空间内对其进行编辑,然后解码生成新的图像。在这里,在这个潜在的空间里还有更多的步骤要做。我们可以将其视为经典GAN图像合成网络与神经渲染器的结合,神经渲染器用于从发送到网络的图像生成3D场景,正如我们看到的。

实现这一目标主要有三个步骤。对输入图像进行编码后,意味着我们已经处于潜在空间中,第一步是将图像转换为三维场景。但不仅仅是一个简单的3D场景,一个由3D元素组成的3D场景,即物体和背景。这种将图像视为由生成的体渲染组成的场景的方式允许它们更改生成图像中的摄影机角度并独立地控制对象。这是通过使用模型NERV来实现的,但是它们没有使用一个模型从输入图像生成整个锁定场景,而是使用两个单独的模型独立地生成对象和背景。这里称为采样特征字段。该网络的参数也在训练过程中学习。它与NERF非常相似。

有了这个场景和分离的元素,我们可以单独编辑它们而不影响图像的其余部分。这是第二步。他们可以对物体做任何他们想做的事情,比如改变它的位置和方向。换句话说,它们改变了物体或背景的姿势。在这一点上,他们甚至可以添加新的对象放置在他们想要的任何地方。然后,通过将所有特征字段添加到一起,将它们简单地组合到包含所有对象和背景的最终三维场景中。

最后,我们必须回到自然图像的二维世界。所以最后一步是把这个3D场景渲染成一个规则的图像。由于我们仍然处于三维世界中,我们可以改变相机的视点来决定我们将如何看待场景。然后,我们根据该相机光线和其他参数(如alpha值和透射率)对每个像素进行评估。这就是他们所说的特征图像,但是这个特征图像是由每个像素的特征向量组成的图像。由于我们仍处于潜在空间,这些特征需要转化为RGB颜色和高分辨率图像。这是通过使用典型的解码器来完成的,就像其他GAN架构一样,将其放大到原始尺寸,同时学习RGB通道的特征转换。瞧à, 你有你的新形象,有更多的控制,什么是生成!

当然,正如你所看到的,它在实际数据中使用时仍然不是完美的。尽管如此,它仍然令人印象深刻,是朝着正确方向迈出的重要一步,特别是考虑到这些都是完全由GANs生成的合成图像,而且它只是第一篇能够以这种精度控制生成图像的论文。

参考资料:

  • Michael Niemeyer and Andreas Geiger, (2021), “GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields”, Published in CVPR 2021.
  • Project link with paper and more: https://m-niemeyer.github.io/project-pages/giraffe/index.html
  • Code: https://github.com/autonomousvision/giraffe
  • NERF video: https://youtu.be/ZkaTyBvS2w4

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注