【论文翻译】Visual Object Networks: Image Generation with Disentangled 3D Representation

论文原文:http://papers.nips.cc/paper/7297-visual-object-networks-image-generation-with-disentangled-3d-representations

完整的图、表及引用见原文,用于学习记录,与有需要的人分享。

摘要

最近在深度生成模型方面的进展导致了图像生成方面的巨大突破。然而,虽然现有的模型可以合成逼真的图像,但它们缺乏对我们潜在的3D世界的理解。我们提出了一种新的生成模型——视觉对象网络(VON),它综合了物体的自然图像和一个解纠缠的三维表示。受经典图形渲染管道的启发,我们将我们的图像形成过程分解为三个条件独立的因素形状、视角和纹理,并提出了一个端到端的对抗学习框架,联合建模三维形状和二维图像。我们的模型首先学习合成与真实形状难以区分的三维形状。然后渲染对象的2.5D草图(即,剪影和深度地图)从其形状下采样的观点。最后,它学会了为这些2.5D的草图添加逼真的纹理来生成自然图像。冯不仅生成图像,更现实的最先进的2 d图像合成方法,但也使许多3 d等操作生成的图像的角度变化,编辑形状和纹理,纹理和形状空间线性插值,将出现在不同的对象和观点。

1 介绍

现代深层生成模型学习合成真实的图像。图1a显示了由最近的模型生成的几辆汽车[Gulrajani et al., 2017]。然而,大多数方法只关注于生成二维图像,而忽略了世界的三维本质。因此,他们无法回答一些对人类来说毫不费力的问题,例如:从另一个角度看一辆汽车会是什么样子?如果我们把它的纹理应用到卡车上呢?我们可以混合不同的3D设计吗?因此,二维视角不可避免地限制了model s在机器人、虚拟现实和游戏等领域的实际应用。

在本文中,我们提出了一个端到端生成模型,通过一个解纠缠的对象表示来联合合成三维形状和二维图像。具体来说,我们将我们的图像生成模型分解为三个条件独立的因素:形状、视角和纹理,借鉴经典图形渲染引擎的思想[Kajiya, 1986]。我们的模型首先学习合成与真实形状难以区分的三维形状。然后用一个可微投影模块从一个采样的视点计算它的2.5D草图[Barrow and Tenenbaum, 1978, Marr, 1982]。最后,它学会了为2.5D的草图添加多样化、逼真的纹理,并生成与真实照片难以区分的2D图像。我们称我们的模型为可视对象网络(VON)。

条件独立性中的连接减少了我们对密集注释数据的需求:与经典的morphable face模型不同[Blanz and Vetter, 1999],我们的训练不需要在两者之间匹配数据二维图像和三维形状,三维数据中没有密集的对应注释。这一优势使我们能够利用二维图像数据集和三维形状集合[Chang et al., 2015],并合成不同形状和纹理的对象。

通过大量的实验,我们证明冯生成的图像样本比最近的二维深度生成模型更真实。我们还演示了许多通过我们的解纠缠表示实现的3D应用,包括旋转一个对象、调整对象形状和纹理、在纹理和形状空间中独立地插入两个对象,以及将真实图像的外观转移到新的对象和视点。

2 相关工作

GANs用于二维图像合成。发明以来,生成对抗网(甘斯)(好-的et al ., 2014),许多研究人员采用了敌对的学习对各种图像合成的任务,从图像生成[雷德福et al ., 2016年,Arjovsky et al ., 2017年。卡拉et al ., 2018), image-to-image翻译[伊索拉et al ., 2017年,朱et al ., 2017), text-to-image合成(Zhang et al ., 2017年,里德et al ., 2016),和交互式图像编辑(朱et al ., 2016年,王et al ., 2018),到经典的视觉和图形任务,如inpainting [Pathak et al., 2016]和super-resolution [Ledig et al., 2017]。尽管在二维图像合成方面取得了巨大的进展,但上述方法大多是在二维空间上进行的,忽略了我们物理世界的三维本质。因此,三维结构的缺乏不可避免地限制了这些生成模型的一些实际应用。相比之下,我们提出了一种基于解纠缠三维表示的图像合成方法。它允许用户很容易地改变视角,以及独立地编辑对象的形状或纹理。Dosovitskiy等人[2015]使用监督CNNs生成给定对象样式、视角和颜色的合成图像。我们的不同之处在于,我们的目标是在不使用标签数据的情况下生成具有3D几何和自然纹理的对象。

三维形状的一代。利用深度生成模型合成三维形状的兴趣越来越大,尤其是GANs模型。流行的代表包括体素(Wu et al., 2016)、点云(Gadelha et al., 2017b, Achlioptas et al., 2018)和八度音阶树(Tatarchenko et al., 2017)。其他方法从二维图像中学习三维形状先验[Rezende et al., 2016, Gadelha et al., 2017a]。近期的工作还探索了利用深度生成模型进行局部扫描的三维形状补全[Dai et al., 2017, Wang et al., 2017, Wu et al., 2018],包括对未知物体类别的泛化[Zhang et al., 2018]。不像以前的方法,只合成无纹理的三维形状,我们的方法学习生成真实的形状和图像。最近和同时进行的工作已经学会了从二维图像中推断纹理和三维形状,比如参数化网格(Kanazawa et al., 2018)、点云(Tatarchenko et al., 2016)或彩色体素(Tulsiani et al., 2017, Sun et al., 2018b)。当他们专注于三维重建时,我们的目标是学习一个无条件的生成模型的形状和图像的对象纹理,形状和姿态的解纠缠表示。

3 规划

我们的目标是学习一个(隐式)生成模型,该模型可以从形状代码z形状、视点代码z视图和纹理代码z纹理三个方面对图像x R H W 3进行采样。纹理代码描述对象的外观,包括对象的反照率、反射率和环境光照。这三个因素是分离的,有条件地相互独立。我们的模型是特定于类别的,因为对象的视觉外观取决于类。我们进一步假设所有代码都位于它们自己的低维空间中。在训练过程中,我们得到一个三维形状集合{v i} N i,其中v i R W W W是一个二元体素网格,一个二维图像集合{x j} M j,其中x j R H W 3。我们的模型训练不需要3D和2D数据之间的对齐。我们假设每个训练图像都有一个干净的背景,并且只包含感兴趣的对象。这个假设使我们的模型专注于生成对象的真实图像,而不是复杂的背景。

图2说明了我们的模型。首先,我们学习了一个三维形状生成网络,该网络在给定形状代码z shape(3.1节)的情况下生成真实的体素v = G shape (z shape)。然后,我们开发了一个可微投影模块P,该模块通过v 2.5D = P(v,z视图)将3D体素网格v投影到2.5D草图中,给定一个特定的视角z视图(第3.2节)。接下来,我们学习在3.3节中使用我们的纹理合成网络x = G纹理(v 2.5D,z纹理),生成给定2.5D草图和随机采样的纹理代码z纹理的最终图像。第3.4节总结了我们的完整模型,第3.5节包含了实现细节。我们的整个模型是可微的,可以端到端的训练。在测试过程中,我们从潜在码中抽取图像x = G纹理(P(G shape (z shape),z view),z纹理)作为样本。

3.1 学习3D形状先验

我们的第一步是从大型形状集合中学习一个分类特定的三维形状先验[Chang et al., 2015]。这个先验依赖于对象类,但有条件地独立于其他因素,如3个视点和纹理。为了对三维形状进行先验建模并生成逼真的形状,我们采用了Wu等人最近提出的三维生成对抗网络[2016]。

考虑一个体素化的3D对象集合{v i} N i,其中v i R W W W。我们学习了一个G形发生器来映射形状代码z形,从高斯分布随机采样,到一个W W W体素网格。同时,我们训练了一个三维判别器D形来区分形状是真实的还是生成的。鉴别器和发生器都包含完全的体积卷积和反卷积层。我们发现原始的3D-GAN [Wu et al., 2016]有时会出现模式崩溃。为了提高结果的质量和多样性,我们使用WGAN-GP的Wasserstein距离[Arjovsky et al., 2017, Gulrajani et al., 2017]。

执行李普希茨约束在瓦瑟斯坦甘斯(Arjovsky et al ., 2017),我们添加一个梯度,罚款损失λGP E˜v ((∇˜v D形状(˜v)−1) 2] Eqn。1,˜v是一个随机采样点之间沿直线生成真正的形状和形状,和λGP控制D形状的能力。由于使用GANs对二进制数据建模往往具有挑战性,因此我们还使用距离函数(DF)表示进行了实验[Curless and Levoy, 1996],该函数在三维体素空间上是连续的。定量评价见第4.1节。

3.2 生成2.5D草图

给定一个合成体素化的形状v = G (z),我们如何将它连接到一个二维图像?受近期3D重建工作的启发[Wu et al., 2017],我们使用2.5D草图[Barrow and Tenenbaum, 1978, Marr, 1982]来弥合3D和2D之间的差距。这种中间表达方式有三个主要优点。首先,从3D体素网格生成2.5D的草图很简单,因为投影在输入形状和视图上都是可微的。其次,2.5D草图的二维图像合成可以转换为图像到图像的转换问题[Isola et al., 2017],现有方法在没有配对数据的情况下也取得了成功[Zhu et al., 2017a]。第三,与彩色体素等替代方法相比,我们的方法能够生成分辨率更高的图像。

在这里,我们描述了将体素投影到2.5D草图中的可微模块。该模块的输入为相机参数和三维体素。每个体素的值存储它存在的概率。为了在透视相机下渲染来自体素的2.5D草图,我们首先生成一个光线集合,每个光线来自相机的s中心,并通过图像平面上的一个像素s中心。为了渲染2.5D的草图,我们需要计算给定的光线是否会击中体素,如果是,则需要计算该光线的相应深度值。为此,我们首先对每条射线上等距深度的点进行采样。接下来,对于每个点,我们使用输入体素的可微三线性插值计算击中输入体素的概率[Jaderberg et al., 2015]。与Tulsiani等[2017]类似,我们计算出每条射线的能见度和深度的期望。具体地说,给定一个含有N个样本r1 r2…, rn沿着其路径,我们计算出可见光(剪影)作为入射体素的期望:pnj = 1qj1k =1 (1rk) rj。同样,期望深度可以计算为pnj = 1dj qj 1k =1 (1rk) rj,其中dj为样本rj的深度。这个过程是完全可微的,因为梯度可以通过期望计算和三线性插值反传播。

观点的评估。我们的二维视点编码z视点编码相机的仰角和方位角。我们从训练图像中提取相机姿态的经验分布p数据(z视图)作为z视图的样本。为了估计p数据(z视图),我们首先在均匀采样的相机姿态下渲染几个候选3D模型的轮廓。对于每个输入图像,我们将其剪影与呈现的2D视图进行比较,并选择相交大于并集值最大的位姿。更多细节可以在附录中找到。

3.3 学习2D纹理先验

接下来,我们学习合成真实的二维图像给定的投影2.5D草图编码的观点和对象形状。特别地,我们学习了一个纹理网络G纹理,它以随机采样的纹理代码z纹理和投影2.5D草图v 2.5D作为输入,生成一个二维图像x = G纹理(v 2.5D,z纹理)。这个纹理网络既需要对物体纹理进行建模,也需要对环境光照进行建模,还需要对可微渲染方程进行建模[Kajiya, 1986]。幸运的是,这个映射问题可以转换为一个非成对的图像到图像的翻译问题[Zhu et al., 2017a, Yi et al., 2017, Liu et al., 2017]。我们采用最近提出的周期一致对抗网络(CycleGAN) [Zhu等人,2017a]作为我们的基线。稍后,我们将放松CycleGAN中的一对一映射限制,以处理从2.5D草图到2D图像的一对多映射。

在这里我们引入两个编码器E纹理和E 2.5D来估计纹理代码z纹理和2.5D草图v 2.5D。我们通过对抗性损失[Goodfellow et al., 2014]和循环一致性损失[Zhu et al., 2017a, Yi et al., 2017]联合训练G织构、E织构和E 2.5D。我们在最终生成的图像上使用以下的对抗性损失:

3.4 我们整个模型

3.5 实施细节

形成网络。在形状生成方面,我们采用了Wu等[2016]的3D-GAN架构。其中,鉴别器D形包含6个体积卷积层,生成器G形包含6个条纹卷积层。按照WGAN-GP论文[Gulrajani et al., 2017]的建议,我们将批量归一化层[Ioffe和Szegedy, 2015]去掉G形。

结构网络。对于纹理生成,我们使用ResNet编码器-解码器[Zhu et al., 2017a, Huang et al., 2018],将纹理代码z纹理连接到编码器的中间层。对于鉴别器,我们使用双尺度PatchGAN分类器[Isola et al., 2017, Zhu et al., 2017a]对重叠的patch进行真假分类。我们使用LS-GAN [Mao et al., 2017]中的最小二乘目标来进行稳定的培训。我们使用ResNet编码器[He et al., 2015]来制作E纹理和E 2.5D

可微投影模块。我们假设相机与物体中心的固定距离为2米,焦距为50毫米(相当于35毫米胶片)。渲染后的效果图分辨率为128×128,我们沿着每条相机光线平均采样128个点。我们也假设没有平面内旋转,也就是说,在像平面上没有倾斜。我们实现了一个自定义的CUDA内核,用于沿投影光线采样并计算停止概率。

培训的细节。我们训练我们的模型128 128 128形状(体素或距离函数)和128 128 3图像。在训练过程中,我们首先在三维形状集合上训练形状生成器G形状,然后在给定地面真实三维形状数据和图像数据的情况下训练纹理生成器G纹理。最后,我们对两个模块进行了微调。我们从标准高斯分布N(0,I)中采样形状码z和纹理码z纹理,码长|z形状| = 200,|z纹理| = 8。整个训练通常需要两到三天。hyperparameters,我们组KL = 0.05λ,λGP = 10,λ本体形象= 10,λ本体,2.5 d = 25,λ幕布材质= 1,形状和λ= 0.05。我们使用Adam求解器[Kingma and Ba, 2015],形状生成学习率为0.0002,纹理生成学习率为0.0001。

我们观察到纹理生成器G纹理在渲染2.5D草图v 2.5D(即,深度和蒙版)。为了解决这个问题,我们显式地用v 2.5D的轮廓来屏蔽生成的2D图像:, G纹理(v 2.5D,z纹理)=掩模·G纹理(深度)+(1掩模)·1,其中1为背景白色,生成G纹理合成给定深度图的图像。同样,我们重新构造了E 2.5D (x) = (E 2.5D (x)·mask gt,mask gt),其中编码器E 2.5D只预测深度,使用输入对象掩码。此外,我们添加了一个小的掩模一致性损失||e 2.5D (x)掩模gt || 1,以鼓励预测的深度映射与目标掩模一致。由于我们的训练图像具有干净的背景,我们可以用一个简单的阈值来估计目标掩模。

4 实验

我们首先比较了我们的视觉对象网络(VON)与最近两个数据集上的2D GAN变体。我们使用定量的度量和定性的人类感知研究来评估结果。然后,我们对我们的形状生成网络的目标功能进行消融研究。最后,我们演示了由我们的解纠缠三维表示启用的几个应用程序。完整的结果和数据集可以在我们的网站上找到。请在GitHub上找到我们的实现。

4.1 评估

数据集。我们使用ShapeNet [Chang et al., 2015]来学习生成三维形状。ShapeNet是一个包含55个对象类别的大型形状存储库。这里我们使用的是椅类和车类,分别有6777和3513个CAD模型。对于2D数据集,我们使用最近发布的Pix3D数据集获取了1515张椅子及其轮廓的RGB图像[Sun et al., 2018a],并从谷歌图像搜索中抓取了448张干净的背景图像。我们还抓取了2605张汽车图片。

我们将我们的方法与文献中常用的三种常见的GAN变体进行比较:标准交叉熵损失的DCGAN [Goodfellow et al., 2014, Radford et al., 2016]、LSGAN [Mao et al., 2017]和WGAN-GP [Gulrajani et al., 2017]。我们对所有三个GAN模型使用相同的类dcgan生成器和鉴别器架构。对于WGAN-GP,我们用InstanceNorm [Ulyanov et al., 2016]替换了判别器中的BatchNorm,并在每个生成器迭代中训练判别器5次。

指标。为了评估图像生成模型,我们计算生成的图像与真实图像之间的Frechet起始距离,这是一个与人类感知高度相关的度量标准[Heusel et al., 2017, Lucic et al., 2018]。将每一组图像输入ImageNet训练的Inception网络[Szegedy et al., 2015] [Deng et al., 2009],利用最后一个全连通层之前的层特征计算Frechet Inception距离。

其次,我们从冯和最先进的模型中提取了200对生成的图像样本(DCGAN、LSGAN和WGAN-GP),并在Amazon MTurk上向五名受试者展示每一对。受试者被要求在这两组中选择一个更真实的结果。

结果我们的冯始终优于二维生成模型。特别地,表1显示了我们的结果具有最小的Frechet起始距离;在表2中,74% - 85%的响应更倾向于我们的结果。这种性能的提高表明,学习的3D先验有助于合成更真实的图像。这些方法之间的定性比较见图3。

形状生成分析。对于形状生成,我们将我们的方法与Wu等人[2016]以前的3D- GAN工作在体素网格和距离函数表示上进行了比较。3D-GAN使用相同的架构,但训练时存在交叉熵损失。我们使用生成的形状与实际形状之间的Frechet起始距离(FID)来评估形状生成模型。为了提取每组生成/真实形状的统计数据,我们对ShapeNet中所有55类形状训练基于resnet的三维形状分类器[He et al., 2015];分类器分别在体素和距离函数表示上进行训练。Weextractthefeaturesfromthelayerbeforethelastfully-connected层。表3表明,我们的方法在FID方面取得了较好的效果。图4a显示了Wasserstein距离增加了结果的质量。由于我们对体素和距离函数使用不同的分类器,所以Frechet初始距离在不同的表示之间是不可比较的。

4.2 应用

我们将我们的视觉对象网络应用到几个3D操作应用中,这是之前的2D生成模型无法实现的[Goodfellow et al., 2014, Kingma and Welling, 2014]。

改变观点。由于我们的VON首先生成一个3D形状,我们可以在保持相同的形状和纹理代码的同时,将形状投射到给定不同视角z视图的图像平面上。图1c和图5a显示了一些示例。

形状和纹理编辑。通过我们学习的解缠三维表示,我们可以轻松地只更改形状代码或纹理代码,这允许我们分别编辑形状和纹理。看到图1c和图5a给出了一些示例。

进行插值。给出了我们的解纠缠三维表示,我们可以选择以不同的方式在两个对象之间进行交互。例如,我们可以插入对象形状空间αz 1形状+(1α)z 2形状相同的纹理,或者纹理空间αz 1结构+(1α)z 2纹理相同的形状,或两者兼而有之,α[0,1]。图5c显示了潜在空间中的线性插值。

基于实例结构转移。我们可以用纹理编码器z纹理= E纹理(x)从实际图像x中推断纹理代码z纹理,并将代码应用于新的形状。图6显示了使用真实图像和生成的形状在汽车和椅子上的纹理传输结果。

5 讨论

在本文中,我们提出了一种用于图像和形状合成的完全可微三维感知生成模型——视觉对象网络(VON)。我们的核心思想是将图像生成过程分解为三个因素:形状、视角和纹理。这种解纠缠的三维表示允许我们在一个对抗性学习框架下从3D和2D可视化数据集合中学习模型。与现有的二维生成模型相比,我们的模型合成了更多的真实感图像;它还支持各种3D操作,这是不可能与之前的2D方法。

未来,我们有兴趣将粗到细的建模(Karras et al., 2017)结合起来,以产生更高分辨率的形状和图像。另一个值得探索的有趣方向是将纹理进一步分解到光照和外观中(例如反照率),这可以提高不同视角和光照条件下外观的一致性。最后,由于我们没有针对整个场景的大规模三维几何数据,所以我们目前的方法只适用于单个对象。合成自然景观也是有意义的下一步。

你可能感兴趣的:(【论文翻译】Visual Object Networks: Image Generation with Disentangled 3D Representation)