利用 3D-GAN 和 RCN 进行三维图形补全

这是进行研究的论文学习笔记,该文主要讲述了一种低内存占用的,利用3D-GAN 变种来实现图像补完的模型。顺手翻译了论文中的主要内容,省略了实验部分,以供日后查阅。

论文的地址是:
http://openaccess.thecvf.com/content_ICCV_2017/papers/Wang_Shape_Inpainting_Using_ICCV_2017_paper.pdf

预备知识

3D GAN

3D Generative Adversarial Network (3D-GAN) presented at NIPS 2016.

Repository:https://github.com/zck119/3dgan-release

论文地址:http://papers.nips.cc/paper/6096-learning-a-probabilistic-latent-space-of-object-shapes-via-3d-generative-adversarial-modeling.pdf

序列模型

RNN综述:https://arxiv.org/pdf/1506.00019.pdf

RNN正则化:https://arxiv.org/pdf/1409.2329.pdf

其他

图像的上采样(upsampling)与下采样(subsampled):
http://blog.csdn.net/majinlei121/article/details/46742339

全连接和区域连接:http://blog.csdn.net/qq_20259459/article/details/70598929

图像填补论文:
https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Pathak_Context_Encoders_Feature_CVPR_2016_paper.pdf

概要

在以往的 3D-GAN 只能实现低像素的三维建模,比如 32*32*32 ,因为卷积网络非常的占用内存资源,所以现在文章提出了一种3D-ED-GAN模型(3D-GAN 的变种)可以输出二维切片图像用以重塑三维模型,再利用基于 LSTM 的 Long-term Recurrent Convolutional Network (LRCN) 模型,就可以产生具有良好细节的结果。LRCN 是一种从数据集学习如何完善图像细节的上采样网络。3D-ED-GAN 的构造可以用下面这张图来表示:

3D-ED-GAN

3D-ED-GAN 把产生器 作为一个完全卷积的 Encoder-Decoder 网络,其中 Encoder 是输入数据到隐向量 的映射,从而扩展了 GAN 的框架。利用 Decoder 可以实现 到立方体的映射。所以整个 3D-ED-GAN 由 一个 Encoder,一个Decoder,和一个判别器组成(如上图)。

Encoder 用一个规模为 残缺的 3D 数据 作为输入,这里假定 = 32。它包含了三个核的尺寸(Kernel Size)为5,过滤器步长(Stribe)为2 的 3D 卷积层,通过 batch normalization (BN) 和 ReLU 层来进行连接。最后一个卷积层的形状被重塑成向量 表示隐藏层的特征。这里不包含全区域连接(即 fc,表明存在 weight share)。GAN 的噪声输入在这里用向量 进行替换。因此,3D-ED-GAN 用 3D encoder 来制约

Decoder 拥有和 GAN 中的 相同的结构,就是能够把隐向量 转化为尺寸为 的三维像素。它有三个kernerl size为5,strides为3 的 volumetirc full-convolution layers (也被理解为 deconvolution )。在最后一层增加了个 激活函数层。Encoder-Decoder 网络是完全卷积的,不包含 linear or pooling layers (池化层)。

判别器和一个具有一个 fc 层和最后有一个 sigmoid 层的 encoder 具有相同的构造。

损失函数

在 3D-ED-GAN 中的生成器被描述成一个 Encoder-Deocer 网络。它可以被看做是一个条件限制的 GAN,即在隐藏层的分布被给定的背景数据所限制。因此,代价函数可以通过原 GAN 的代价函数转化推导得到:

其中 就是 Encoder-Decoder 网络, 就是完整量 的残缺模型。

和图像填补论文中的一样,增加一个对象 reconstruct 的 Cross-Entropy 损失,,由如下公式定义:

其中 代表第 个完整三维像素输入 , 是第 个由生成器生成的向量。在这种情况下,Encoder-Decoder 网络的输出 就是当前三维像素点被填充的可能性。

完整 3D-ED-GAN 的损失函数如下:

其中的 是权重参数。

通过损失函数可以高效地推断出损失区域的结构从而从数据的分布产生假定的重构。图像的补完需要考虑和给定数据环境的相关性和根据数据的分布产生可能的数据信息。3D-ED-GAN具有描绘隐藏空间和数据分布相关性的能力,因此能够产生合适的近似真实的假设。

Long-term Recurrent Convolutional Network (LRCN) 模型

为了解决三维卷积网络占用内存过高的问题,利用结合了一个 LSTM,一个三维CNN,一个二维深度完全卷积网络模型的 LRCN 模型,可以实现图像从 的映射,从而大幅度减低内存的占用,这里的 = 32, = 128。流程如下图所示:

把模型的三维输入利用 PCA 降维之后把主元素切分为二位图像。LRCN 利用 3D CNN 产生 = 5) 个连续的切片输出给 LSTM ,其中每个切片都是一个固定长度的向量代表 LSTM 的输入。LSTM 把输入送股一个二维完全卷积网络当中从而产生高像素的二维图像。这些高像素二维图像的级连就是高像素的三维完全图像的结果。

序列输入的公式

为了最大化从三维对象体中获得的北京数据信息,我们需要最大化空切片的数目。所以给定一个维度为 三维对象体,我们首先使用主元素分析来对齐三维对象,并且用 来表示,它的主元素利用向量 来表示。因此 作为 伴随的大小为 的二维图像序列,表示作。因为 LRCN 的输出是长度为 的序列,所以输入蓄力的长度也是 。如上面的流程图所示,对每一个步骤,一块切片和 4 块与他相邻的切片(一共五块),在一个小的容器体中形成并提供给网络,我们称为步骤 。对那些指标为负的切片以及指标超过 的切片,用 0 0来进行填充。故 3D CNN 的输入为:

网络结构

如同上面的流程图所示,三维 CNN encoder 把一个规模为 的容器作为输入,其中 代表了输入的切片数目,这里的 = 5。在第 步,3D CNN 转换 片二维图片 成为一个 200 维的向量 。3D CNN encoder在最后拥有一个和3D-ED-GAN中的3D encoder相同的结fc层。在3D CNN之后,循环模型 LSTM 接管数据输出。我们使用和 RNN 正则化文章中相同的 LSTM 神经元:给定输入,那么LSTM在步骤 中的更新为:

其中是 logistic sigmoid 函数, 分别为

都是参数。
LSTM的输出向量 进一步经过 2D 完全卷积神经网络,产生一个规模为 的图像。它有两个 Kernel size 为 5,stride 为 2 的完全卷积层,其中 BN 和 ReLU 在中间进行处理,紧接着一层 tanh 在最后。

损失函数

我们对 都进行了损失的实验,同时发现 的损失降低通常获得获得高质量的结果。在这种情况下,我们把 的损失作为 LRCN 的损失对模型进行训练,把它表示为

完整的联合训练网络模型(联合 3D-ED-GAN 和 LRCN)的代价函数如下:

其中 是权重参数。

尽管 LRCN 包含了 3D CNN encoder,由于它细小的输入块仍然使它显著的比常规的 regular volumetric CNN 模型要小。利用 RNN 处理序列数据和大范围依赖数据的能力,该模型得以有效地利用的内存产生高像素的完整结果。

训练混合网络

从残缺数据中训练这个 3D-ED-GAN 和 LRCN 联合的模型士一键非常有挑战性的工作,因此,我们提出了一个三个阶段的训练过程。

在第一阶段,3D-ED-GAN 独立地由残缺的三维输入进行训练,产生完整的低像素的输出,因为判别器的学习要比生成器的学习快,我们首先让 Encoder-Decoder 网络不适用判别器来进行独立的训练,此时只包含 reconstruction 损失。学习速率固定为 ,而且训练的 epochs 为 20。然后我们用 100 的 epochs 来联合训练判别器和 Encoder-Decoder。我们设定 Encoder-Decoder 的学习速率为 ,同时 的为 。之后把 各自设定为 0.001 和 0.999。对每一个 batch,我们仅仅在上一个 batch 的准确度不高于 80% 的时候对它进行更新。ADAM 最优化使用参数 = 5和大小为4的 batch size 。

在第二阶段,LRCN 可以独立的由完善的低像素 3D 输入和高像素的 100 epochs 产生的输出进行训练。我们在这里使用 的学习速率和 4 的 batch size 。在这个阶段,LRCN 作为上取样网络可以由训练的数据分布预测出良好的纹理细节。

在最后的阶段,我们用联合损失函数,一并调整在第一阶段和第二阶段训练前的 hybrid network 。判别器的学习速率是 ,剩余网络的学习速率为 都设置为 0.5。我们观察了大部分发生在 LRCN 中的参数更新,LRCN 在这个阶段的输入是不完整的,输出仍然能够产生高像素的模型,表明了 LRCN 是一种权衡上输入能量和保护当前细节的降噪网络。

为了方便起见,我们使用前述的 PCA 方法来在训练快开始前对所有模型排列整齐,而不是对 3D-ED-GAN 进行排列。