小一在读论文(一)--Learning Part Generation and Assembly for Structure-aware Shape Synthesis
原文分析
本文主要用于新手对文章的理解以及本人回顾时使用,不保证完全准确,仅供参考。
需要读者对GAN、自编码器,神经网络等有最基础的了解。(打算看这篇论文的你多半能力就够了!)
先放上原文链接:
由于本人能力有限,若有错误恳请各位斧正!
原文梗概
考虑到在生成3D对象的时候,很难获得到3D对象的整体分布。所以现在生成3D图像的思路是先通过训练一组VAE-GAN来生成一块块的零件,之后再通过训练一个分配器来合理的分配已经生成的3D对象。
0.VAE-GAN
可以参考这篇文章
这是将VAE(变可自编码器)和GAN(生成对抗网络)联合在一起来,这是一种常用的生成给定条件下的物体的方法。先通过VAE对给定的输入进行编码/解码,然后将这个编码/解码的结果作为GAN的输入来生成想要的对象。
原文结构
0.摘要
直接获得3D对象整体分布很困难,所以引入了一种零件感知的生成模型(PAGENet)。就是用一组VAE-GAN生成局部零件,然后再通过分配器把零件放置到他们该出现的位置上。最后展示两种相关应用。一是语义分割图形,二是基于零件的图形编辑。
1.简介
从有了3D图形的生成后,如何保证结构的正确性就是一个难题。现在大部分都是直接生成整体图形的,这有问题。一些手段虽然规避了这个问题(如点云等),但是还是会有别的问题。在3D对象的合成领域有一种认知是要使合成的东西有结构意识,就是说要让零件之间有联系并且摆放位置合理。基于此想法,训练一个加PAGENet的生成网络用以生成目标类的存在,并在之后训练一个零件分配器来分配。这种方法可以很容易将模型转化为其他类型的模型(如点云等)。PAGENet是一组VAE-GAN的级联,用以生成不同的零件。
贡献
- 使用分治思想来生成3D对象
- 训练了一个零件分配器
- 两种应用:一是语义分割图形,二是基于零件的图形编辑。
2.相关工作
- 3D图形的深度生成模型
- 3D图像的结构感知合成
3.思路
1.网络结构
上图是零件生成器,下图是零件分配器。
零件生成器由多个VAE-GAN组成,每个VAE-GAN预定义了生成结果的类别。生成的时候接收一个随机向量来生成零件。然后再通过零件分配器进行组合成合理的样式。
零件生成
生成器由一组VAE-GAN组成,让我们针对一个VAE-GAN进行研究。首先VAE由一个解析度为64x64x64的解码器和编码器组成,隐变量的维度是50.编码器由5块全连接卷积层组成。其中kernel 的大小是4x4x4,步长为2.每两个卷积层之间都插入了Relu和batch normalization。解码器是将编码器进行逆置,然后在最后一层加入sigmoid函数。之后的判别器也是使用了和编码器相同的结构(只是额外多了一个MLP层)。(以下是MLP的解释,来自维基百科)。
多层感知器(MLP)是一类的前馈 神经网络(ANN)。术语MLP含糊不清,有时宽松地指代任何前馈ANN,有时严格指代由多层感知器组成的网络(具有阈值激活);参见§术语。多层感知器有时通俗地称为“香草”神经网络,尤其是当它们具有单个隐藏层时。
因此零件生成器的损失函数由三个部分组成:对零件进行重建带来的损失(GAN生成器带来的损失) L r e c o n L_{recon} Lrecon ,KL散度的损失 L K L L_{KL} LKL,对抗损失 L a d v L_{adv} Ladv.此外还引入了用以惩罚非对称结构的损失 L r e f L_{ref} L