点击上方“机器学习与生成对抗网络”,关注"星标"
获取有趣、好玩的前沿干货!
0、前言
这是一篇 CVPR 2020 论文简记
MixNMatch: Multifactor Disentanglement and Encoding for Conditional Image Generation
https://github.com/Yuheng-Li/MixNMatch
1、概要
提出MixNMatch,一个可以在极小监督情况下完成对图像中的背景、物体姿势、形状和纹理等进行分开(解耦)的条件生成模型,分解后可以通过混合它们以生成新的图像。
如下图所示,通过对1到4行真实图像进行解耦学习,得到对应的形状、姿势、纹理、背景等,重新组合可生成第5行的图像。
方法是基于2019年的FineGAN(一个无条件的生成模型)框架进行改进,以适用于条件式的图像转换任务。所用的监督信息仅仅是bounding box,而无需其他监督信息。
2、相关工作
条件图像生成。大量的图像转换框架pix2pix等等不赘述。它们大都缺乏一种显示地对图像“变化成分/因子”的分解学习能力。能否将这些因子比如物体形状、纹理、背景等进行单独学习,对于模型解释性也有重要意义;
解耦表征学习。尽管也有一些现有工作尝试进行解耦学习,但他们大多局限于两种因子的分拆例如形状和纹理;亦或是受限于需要大量的监督信息,比如边缘、关键点、mask标注等人工标签。
本文方法是基于FineGAN(FineGAN: Unsupervised Hierarchical Disentanglement for Fine-Grained Object Generation and Discovery)展开,它利用信息论(互信息相关)进行背景、物体姿势、形状和纹理的解耦学习,而且是在较弱的监督信息下;但是FineGAN是一种无条件式生成模型,无法进行图像转换;故本文对此做了改进。
3、方法
3.1 任务
用 表示某类的无标签的图像集合(例如鸟类图像),任务是学习一个条件式生成模型,可以同时将背景、物体姿势、形状和纹理等因子编码到一个解纠缠的潜码空间(每个因子单独受一个潜码控制),并且通过结合这些因子可以组合生成逼真的新图像。
3.2 基本框架FineGAN(2019)
下图来自FineGAN论文
FineGAN将四个随机采样的潜码 作为输入,以三个阶段分层次生成图像:(1)背景阶段,其中仅建模学习如何生成背景,以一个one-hot的潜码b为条件;(2)父阶段,在该阶段中,模型以潜码p和连续的z为条件,生成对象的形状和姿势,并将其融合进背景图像上;(3)子阶段,以one-hot的潜码c为条件,对上一生成图像进行纹理填充。
在父阶段和子阶段中,FineGAN都会自动生成mask(无需任何监督mask)以捕获适当的形状和纹理细节。为了解开背景因子,该方法依赖于对象边界框(例如,通过对象检测器获取)。为了在没有其它监督的情况下解耦剩余的因子,FineGAN使用信息论方法(参考inforGAN),对潜码之间的关系施加了约束。
在训练期间,FineGAN(1)将采样的子阶段潜码约束为不相交的group,以便每个group共享相同的唯一父阶段潜码,(2)将每个生成的图像的采样背景和子潜码强制为相同的。
上述约束中,第一个约束是基于这样的事实考虑,即来自同一类别的某些对象实例即使具有不同的纹理,也往往具有相同的形状(例如具有不同纹理细节的不同鸭子共享相同的鸭子形状);第二个约束是背景通常与特定的对象类型相关(例如,鸭子通常以水为背景)。如果不遵循这些约束,那么生成器可能会生成在树上的鸭子(背景潜码b不等于纹理码c)。然后,鉴别器将很容易将这些图像分类为假图像,因为它们很少存在于真实图像中。这极可能导致无法学习到所需的解缠。
FineGAN进行了三项损失(对应背景、父阶段和子阶段)的训练,使用对抗训练使生成的图像看起来真实,最大化相应的潜码和图像之间的互信息,以便每种潜码都可以控制各自的因子(背景,姿势,形状,颜色),具体参照FineGAN:
3.3 调整FineGAN
3.3.1 成对的“图像-潜码”分布匹配
尽管FineGAN可以分解多个因子并重新生成逼真的图像,但它是无条件式生成的:基于采样的潜码,而不是图像。
而要对真实图像中解纠缠的表示进行编码以生成条件混合图像,首先需要提取条件输入图像的z(控制姿势),b(控制背景),p(控制形状)和c(控制纹理)等编码,同时保留FineGAN的分层解缠属性。为此,训练四个编码器,每个编码器从真实图像中预测z,b,p,c。
但不能简单地将这些编码(z,b,p,c)输入到生成器中以重建图像,这极可能退化为简单的自编码器,而无法保留FineGAN的解缠属性。关键之处在于,引入类似ALi或者BiGAN那种进行对抗学习(逆映射image->z),这样一来所得到的编码,并得到“图像-潜码”对 ;而生成器得到 。注:这里的y是z,b,p,c等的placeholder。
所以判别器的输入是“图像-潜码”对:
3.3.2 放宽潜码约束
所要解决的重要问题是,确保得到的编码是解开的。
FineGAN施加了严格的潜码约束(见上述3.2),比如强加了子码要共享相同的唯一父码,而背景码和子码要始终相同。然而,对于一些真实图像,这些严格的关系可能不成立(例如,飞鸟在真实图像中可具有多个不同的背景);另外,这可能导致鉴别器很容易分辨出【图像-潜码】对是真实的还是生成的(基于码的关系)。而且,由于背景和子码总被采样为相同的(b = c),这也会混淆背景b和纹理c编码器:可能将变得完全相同,而无法区分背景和物体的纹理。
为此本文首先训练四个单独的鉴别器,对应每种码类型。这防止了鉴别器看到其他码;其次,在训练编码器时,还提供了fake图像作为输入,它们是用随机采样的潜码生成的,且去除了码约束。在这些图像中,任何前景纹理都可以与任何任意背景和任何任意形状耦合。具体来说,训练编码器E来预测回用于生成相应fake图像的采样码y(b,p,c):
表示cross-entropy loss,对于连续的z,则采取L1损失。上述损失用于训练编码器E而不是生成器G。
3.3.3 精准形状和姿势的“特征模式”
到目前为止,MixNMatch的编码器最多可以接收四幅不同的真实图像,并将编码得到b,z,p,c码,分别对背景,物体姿态,形状和纹理进行建模。然后,MixNMatch的生成器可以使用这些码生成新的、逼真的图像;默认情况下,将此设置称为MixNMatch的码模式。
尽管生成的图像已高度捕获了这些因子(参见下图,“码模式”),但是某些图像转换应用可能需要精确的像素级形状、姿势对齐。码模式下的MixNMatch无法保留参考图像精确像素级形状和姿势细节。主要原因是,负责捕获形状的p潜空间小,无法为每个实例像素建模。(它被设置得较小是因为必须粗略地匹配数据中3D形状变化。
码模式和特征模式之间的比较。第1-3行是真实参考图像,其中分别提取了背景b,纹理c和shape + pose的p&z。第4-5行是MixNMatch的特征模式(可准确保留原始形状信息)和码模式(可在语义级别保留形状信息)生成。
如上图所示,引入MixNMatch的特征模式以解决此问题。关键思想不是直接将参考图像编码为低维形状代码,而是直接学习从图像到更高维特征空间的映射,以保留参考图像的空间对齐的形状和姿势(像素级)细节。具体来说的特征模式下,训练一个新的形状和姿势特征提取器S,将真实图像x作为输入并输出特征S(x),以此与父阶段协作更精准的对齐x的形状等信息。
4、实验以及部分结果
5、讨论
最后,作者也谈及一些方法的局限,比如:
生成的背景可能会错过大型结构,因为使用patch鉴别器。
特征模式的训练比较敏感、取决于码模式下所训练模型的好坏。
对于图像的背景和目标对象纹理相似的场合下,无法生成良好的mask,导致生成一个不合理的目标物体。
公众号近期荐读:
GAN&CV交流群,无论小白还是大佬,诚挚邀您加入!
一起讨论交流!长按备注【进群】加入:
更多分享、长按关注本公众号: