FiNet 和 InfoGAN

学习报告3

目录

    • 学习报告3
      • 兼容多样的时尚形象修复 FiNet: Compatible and Diverse Fashion Image Inpainting(ICCV 2019)
      • 通过信息最大化可生成对抗网络的可解释表示学习 InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets (NIPS 2016)
      • 总结

兼容多样的时尚形象修复 FiNet: Compatible and Diverse Fashion Image Inpainting(ICCV 2019)

(参考:博客

视觉兼容性对于时尚分析至关重要,但在现有的时尚图像合成系统中却缺少。该论文建议通过时尚图像修补显式地建立视觉兼容性模型。为此,作者提出了时尚修复网络(FiNet),这是一个两阶段的图像到图像生成框架,能够执行兼容且多样化的时尚形象修复。为了区分形状和外观的生成以确保获得真实感的结果,该框架由一个形状生成网络和一个外观生成网络组成。更重要的是,对于每一代网络,作者都引入了两个相互作用的编码器,以在共享的兼容性空间中学习latent code(潜码/隐含输入/隐变量,它包含了某些语义属性)。latent representations(隐式表示?这个概念不是特别理解,大概与隐变量有关)与相应的生成网络联合优化以调节合成过程,从而鼓励生成在视觉上与现有时装兼容的各种结果。此外,该论文的框架很容易扩展到服装改造和时尚转换。大量的实验与最新的时装合成任务方法进行比较,从数量上和质量上证明了该方法的有效性。

该论文的贡献包括:

  1. 提出了一种两阶段的图像到图像生成框架FiNet,用于修复时尚形象时能兼具兼容多样化的特点。

  2. 集成了一个兼容模块,该兼容模块能将服装兼容性信息(隐含信息)编码到网络中,从而使生成服装的形状和外观为与待修复图像现有服装在生成的隐样式空间中接近。

背景

在深度生成模型最近的突破,特别是变分自编码器(VAES),生成对抗网络(GANs)及其变体等,为在计算机视觉中无数时尚的应用打开大门,包括服装设计(如有条件的类比GAN:在人像上时尚换装),语言引导方式合成图像,虚拟试穿系统(如VITON:基于映像的虚拟试穿网络,Pivtons:具有条件图像完成功能的姿势不变虚拟试穿鞋),基于服装的外观转换(如Swapnet:基于图像的服装转换,人的外观转换)等等。与刚性物体的图像生成不同,时尚合成更加复杂,因为它涉及形成兼容搭配的多件服装。同一搭配中的物品可能具有截然不同的外观,例如质地和颜色,但它们在组装在一起时是互补的。因此,探索不同服装之间的兼容性以合成各种时装图像对于产生令人满意的虚拟试穿体验和令人惊叹的时装设计产品组合至关重要。

探索时尚图像合成的视觉兼容性关系,要生成一套整体服装是极具挑战性的,因为这需要在人物上生成各种形状和外观都不同的服装。因此该论文中仅仅通过使用现有服装中的人物,将视觉范围缩小到图像修复,从而为视觉兼容性建模。目标是渲染一组逼真的服装,以填充图像中缺失物品的区域,同时匹配现有服装的样式。而这在深度生成模型中的一个困难之处就是期望合成服装彼此相容的同时,使生成结果多样化。

视觉的兼容性一般是通过共同出现或共同购买来了解(如异质共生的视觉服装风格学习(这篇论文讨论了学习视觉兼容性的问题,与本文中假定出现在同一张现实照片即搭配的假设前提不同,它的前提是同一商品风格标签以及常被一同购买的服装是搭配的)),或者对象之间在上下文关系上精神相似(上下文中的对象)。研究表明,深度生成模型可以有效地利用上下文补绘失踪的区域,产生独特的结果,与周围的环境相一致,对图像进行合成(如(上下文编码器:基于图像修复的特征学习(提出一种无监督视觉特征学习算法,能够捕获视觉结构的语义),深度生成模型的语义图像修复)。

将这一思想推广到时装合成中更具有挑战性,因为我们需要合成形状和外观具有多样性的逼真的时装,同时确保所修补的服装在时尚风格上与当前图像中的现有服装兼容。这要求通过学习各种服装之间的固有关系来明确地编码兼容性,而不是简单地对上下文本身进行建模。另一个重大区别是,人们期望在时尚图像合成中使用多模式输出——对与缺少一件服装的时装形象,可以生成形状和外观不同的各种物品,来与已有服装搭配。而传统的图像修补通常是单模式问题。例如,在图1的示例中,一个上身可以具有不同类型的衣物形状(例如长袖或短袖),每种上衣类型在视觉外观上可以具有各种颜色。因此,缺失衣物的合成需要对形状和外观进行建模。但是,将它们的生成同时进行,通常会因为二者的耦合而无法处理好衣服的形状和边界(着装的人的生成模型(ClothNet,将生成过程分为了两部分,并经过实验发现“没有提出的两阶段结构,模型无法确定形状和布料边界。”),做你自己的普拉达:结构连贯的时尚合成(同样先生成分割图,再用另一个GAN渲染图像))。

FiNet 和 InfoGAN_第1张图片

图1. FiNet修复缺失时尚衣服,合成结果在形状和外观上都兼具兼容性和多样性。

方法
为了解决这些问题,作者提出了一个两阶段框架FiNet,该框架通过生成一组具有多样性的现实且兼容的时尚商品,在像素级别填充图像中缺失的时尚商品。FiNet利用一个形状生成网络和一个外观生成网络依次生成形状和外观,如图2所示。形状生成器和外观生成器共享相似的网络结构,并且它们都建立在U-Net结构上(U-Net:用于生物医学图像分割的卷积网络),而具体的结构在文章的附录中详细地标明了。

FiNet 和 InfoGAN_第2张图片

图2. FiNet框架。形状生成网络旨在在给定形状兼容性信息的情况下填充缺失的分割图,而外观生成网络则使用内嵌的分割图和外观兼容性信息来生成缺失的服装区域。形状和外观兼容性模块都带有不确定性,这使我们的网络可以生成如图1所示的各种兼容的时尚商品。

每个生成网络包含一个通过重建合成新图像的“编码器-解码器”生成器,以及两个相互作用以在保持视觉兼容性的同时鼓励多样性的编码器网络。以图3的形状生成网络为例,一个编码器学习缺失衣物的隐式表示,该隐式表示受到来自第二个编码器的隐变量的约束(学习一个兼容性隐空间,通过KL散度,在这个隐空间中鼓励兼容的时尚物品具有相似的分布),该第二个编码器的输入来自缺失项的相邻衣服。

FiNet 和 InfoGAN_第3张图片

图3. 形状生成网络结构

更正式地说,形状生成网络的目的是学习一个映射 G S G_{S} GS,该映射在将形状编码器 E S E_{S} ES的输出 z s z_{s} zs作为条件的情况下,能够把有缺失的外形信息 S ^ \hat{S} S^以及人体表示图 p S p_{S} pS映射到一个完整的外形信息图 S S S

为了得到人体的分割结果以训练该生成器,研究者使用了现有的人体解析器模型(通过零件分组网络进行实例级人物解析,该模型在 LIP 数据集上预训练)。假设给出一张输入的图像 I I I,研究者首先通过该解析器模型得到人体各部位的分割图,然后,通过合并相应区域,最终得到全身 8 大区域的掩码(但本文只考虑4种)。以上 8 种解析结果最终构成了 8通道的二进制图 S S S,它被用作输入重构后结果的ground truth值。映射 G S G_{S} GS的输入 S ^ \hat{S} S^通过把 S S S相应服饰所在区域的掩码去掉之后得到。例如,在图1中,合成上衣服装时,形状上下文 S ^ \hat{S} S^是通过删除可能出现上衣的区域产生的,这个区域由覆盖上衣和上身的边界框来表示。

此外,为了在形状重建中保留人的姿势和身份信息,作者采用与服装无关的特征 p S p_{S} pS,其包括人体姿势表示,以及头发和脸部区域布局。姿势表示包含在 COCO 关键点检测数据集上训练的现成姿势估计器(用于多人姿势估计的级联金字塔网络)所提取的 18 通道热图。由人体解析器(同样是通过零件分组网络进行实例级人物解析)生成面部和头发的二值掩码,其面部和头发区域中的像素设置为 1。然后将两个表示连接起来形成 p S p_{S} pS,其通道数为19。

直接使用标准的图像到图像转换网络如PIX2PIX通过 S ^ \hat{S} S^ p S p_{S} pS重新构建 S S S,虽然可行,但只会产生单一的输出,没有多样性。作者从变分自动编码器(VAEs)中汲取灵感,并使用隐向量 z s z_{s} zs进一步调整生成过程,通过在推理过程中的采样来鼓励多样性。

由于我们的目标是生成各种款式的服装以填补缺失的区域,我们使用形状编码器 E S E_{S} ES的训练 z s z_{s} zs来编码形状信息。

给定输入形状 x S x_{S} xS(通过 S  \text{S\ } 产生,是缺失服装的ground truth二进制分割图),形状编码器 E S E_{S} ES输出 z s z_{s} zs,利用重参数化技巧来使得损失函数可微, z S ∼ E S ( x S ) z_{S}\sim E_{S}(x_{S}) zSES(xS) z s z_{s} zs通常被迫遵循高斯分布 N   ( 0 , 1 ) N\ (0,1) N (0,1),当 x S x_{S} xS未知时,这可以在未知的测试时间进行随机抽样:

在这里插入图片描述

将学习的隐变量 z s z_{s} zs与形状上下文 S ^ \hat{S} S^和人物表示 p S p_{S} pS一起输入到生成器 G S G_{S} GS,以生成填充缺失区域的完整形状图 S ‾ \overline{\text{S}} S。之后,通过最小化 S ‾ \overline{\text{S}} S  S \text{\ S}  S 之间的交叉熵分段损失来优化形状生成器 G S G_{S} GS

在这里插入图片描述

其中是 C = 8 C = 8 C=8分割图的通道数。形状编码器 E S E_{S} ES和生成器 G S G_{S} GS可以通过最小化下面的函数共同优化:

在这里插入图片描述

其中 λ KL \lambda_{\text{KL}} λKL是一个平衡两个损失项的权重。在测试时,可以直接从 N ( 0 , 1 ) N(0,1) N(0,1) 采样生成 z s z_{s} zs,通过 S ‾ = G S ( S ^ , p S , z S ) \overline{\text{S}} = G_{S}(\hat{S}, p_{S}, z_{S}) S=GS(S^,pS,zS)重建一组不同的结果。

尽管形状生成器现在能够合成不同的服装形状,但它没有考虑视觉相容性关系。因此,许多生成的结果在视觉上是无吸引力的。为了缓解这个问题,作者通过使用现有服装(除了被屏蔽区域外的各项服装)来模拟视觉相容性关系以约束抽样过程,即上下文服饰(contextual garments),记作 x C x_{C} xC。为此,作者引入一个形状相容性编码器 E CS E_{\text{CS}} ECS,目的是学习合成服装形状与上下文服装形状之间的相关性。

这种直觉基于相容性建模方法中的相同假设,即通常搭配在一起的时尚服装是相容的(通过双向LSTM学习时尚兼容性,注意知识提取的神经相容性建模),因此上下文服装(共现服装)包含关于缺失服装的丰富相容性信息。因此,如果一件时尚服装与这些背景服装兼容,那么它的形状可以通过观察背景来确定。例如,考虑到上下文服装中的男式背心,丢失服装的合成形状更可能是一条男式短裤,而不是裙子。这个想法在概念上类似于文本领域中两个流行的模型,即连续bag-of-words(CBOW)和跳跃式语法模型(单词和短语的分布式表示及其组成),学习根据上下文中单词的表示来预测单词的表示,反之亦然。

如图3所示,我们首先使用 S S S提取上下文服装的图像片段,然后通过将这些图像片段从帽子连接到鞋子,形成上下文服装 x C x_{C} xC的视觉表示。然后,兼容性编码器 G CS G_{\text{CS}} GCS x C x_{C} xC映射到兼容性隐向量 y S y_{S} yS中,即 y S ∼ E CS ( x C ) y_{S} \sim E_{\text{CS}}(x_{C}) ySECS(xC)。为了使用 y S y_{S} yS作为生成 S ‾ \overline{\text{S}} S 的先验,我们假设目标服装 x S x_{S} xS与其上下文服装 x C x_{C} xC应该共享相同的隐空间。这类似于应用于未配对图像到图像转换的共享隐空间假设(无监督的图像到图像翻译网络,多模态无监督图像到图像翻译,通过分离的表示形式进行多样的图像到图像翻译(基于CycleGAN并借鉴了InfoGAN的思想))。因此,公式1中的KL散度可以修改为:

在这里插入图片描述

当由 E S ( x S ) E_{S}(x_{S}) ES(xS)编码的 z s z_{s} zs分布离由 E CS ( x C ) E_{\text{CS}}(x_{C}) ECS(xC)编码的兼容隐向量 y S y_{S} yS太远时会受到惩罚。 z s z_{s} zs y S y_{S} yS的共享隐空间也可以看作是一个相容空间,这在精神上类似于使用度量学习判断一对物品兼容性(学习类型识别嵌入以实现时尚兼容性,异质共生的视觉服装风格学习)。我们不必减少两个相容样本之间的距离,而是最小化两个分布之间的差异,因为我们需要随机性来生成不同的多模态结果。通过优化公式4, S ‾ = G S ( S ^ ,   p S ,   z S ) \overline{\text{S}} = G_{S}(\hat{S},\ p_{S},\ z_{S}) S=GS(S^, pS, zS)的生成不仅能够感知嵌入在上下文服装中的固有兼容性信息,而且能够在 x S x_{S} xS不可用的情况下,在推断过程中进行兼容性的采样——我们可以简单地从 E CS ( x C ) E_{\text{CS}}(x_{C}) ECS(xC)中采样 y S y_{S} yS,并使用 S ‾ = G S ( S ^ ,   p S ,   y S ) \overline{\text{S}} = G_{S}(\hat{S},\ p_{S},\ y_{S}) S=GS(S^, pS, yS)计算最终合成的形状图。因此,所生成的服装应该与现有的上下文服装视觉上兼容。形状生成网络的最终目标函数是:

在这里插入图片描述

FiNet 和 InfoGAN_第4张图片

图4. 外观生成网络

如图2所示,所生成的缺失项的兼容形状被输入到外观生成网络中以生成兼容外观。该网络具有与形状生成网络几乎相同的结构,由用于重建的“编码器-解码器”生成器 G a G_{a} Ga和将所需外观编码为潜在向量 z a z_{a} za的外观编码器 E a E_{a} Ea组成,以及外观兼容性编码器 E ca E_{\text{ca}} Eca,该编码器将上下文服装的外观投影到隐藏外观兼容性向量 y a y_{a} ya中。然而,外观生成在以下方面与形状生成不同。首先,如图4所示,外观编码器 E a E_{a} Ea将丢失的衣服项目的外观作为输入,而不是其形状,以产生隐变量 z a z_{a} za作为输入到 G a G_{a} Ga以进行外观重建。

此外,与通过最小化交叉熵损失来重建分割图的 G S G_{S} GS不同,外观生成器 G a G_{a} Ga侧重于在RGB空间中重建原始图像 I I I,给定缺少感兴趣的时尚项目的外观上下文 I ‾ {\overline{I}} I。此外,输入到遗传算法中的人体表示 p a p_{a} pa,包括ground truth分割图 S S S(在测试时,由于 S S S不可用,我们使用第一阶段生成的分割图 S  ‾ {\overline\text{S\ }} )以及面部和头发RGB段。分割图包含的信息比仅仅使用关于人的配置和体形的关键点更丰富,并且面部和头发图像约束网络使其在重建图像中保留人的身份 I ‾ = G a ( I ^ ,   p a ,   y a ) {\overline{I}} = G_{a}(\hat{I},\ p_{a},\ y_{a}) I=Ga(I^, pa, ya)

为了从 I I I重建 I ‾ {\overline{I}} I,我们采用了在样式转换中广泛使用的损耗(实时样式传输和超分辨率的感知损失(CycleGAN的生成器采用了这篇文章中的生成器结构),DCAN:用于无监督场景自适应的双通道方式对准网络,TextureGAN:使用纹理补丁控制深度图像合成),其中包含一个感知损耗,该感知损耗使感知神经网络中 I I I I ‾ \overline{I} I的对应特征映射之间的距离最小化,以及一个与其样式信息相匹配的样式损耗:

在这里插入图片描述

其中 ϕ l ( I ) \phi_{l}(I) ϕl(I)是在ImageNet上预先训练的VGG-19网络中图像 I I I的第 l l l个特征图。当 l ≥ 1 l \geq 1 l1时,我们在网络中使用conv1_2、conv2_2、conv3_2、conv4_2和conv5_2层,而 ϕ 0 ( I ) = I \phi_{0}(I) = I ϕ0(I)=I。在第二项中, G l ∈ R C l × C l \mathcal{G}_{l} \in R^{C_{l} \times C_{l}} GlRCl×Cl是Gram矩阵(解释),它计算矢量化特征映射之间的内积:

在这里插入图片描述

其中 ϕ l ( I ) ∈ R C l × H l W l \phi_{l}\left( I \right) \in R^{C_{l} \times H_{l}W_{l}} ϕl(I)RCl×HlWl与感知损失项里的定义相同, C l C_{l} Cl 是特征图通道维数。公式6中的 λ l    \lambda_{l}\text{\ \ } λl   γ l \gamma_{l} γl是平衡不同特征权重的超参数,并在惯例(VITON:基于映像的虚拟试穿网络,级联细化网络的摄影图像合成(由语义分割图生成逼真街景图))自动设置。通过最小化公式6,我们鼓励重建图像具有与原始图像相似的高层次内容以及详细的纹理和图案。

此外,为了鼓励合成外观的多样性(即不同的纹理、颜色等),作者利用外观兼容性编码器 E ca E_{\text{ca}} Eca,将上下文服装 x c x_{c} xc作为输入,通过KL散度 L ^ KL = D KL ( E a ( x a )   ∥   E ca   ( x c ) ) {\hat{L}}_{\text{KL}} = D_{\text{KL}}(E_{a}\left( x_{a} \right)\ \parallel \ E_{\text{ca}}\ \left( x_{c} \right)) L^KL=DKL(Ea(xa)  Eca (xc))来调节生成。我们的外观生成网络的目标函数是:

在这里插入图片描述

与形状生成网络类似,外观生成网络通过对外观兼容性建模,可以根据生成的服装分割图和推断过程中的隐变量,呈现一组多样化的视觉兼容外观: I   ‾ = G a ( I ^ ,   p a ,   y a ) \overline{I\ } = G_{a}(\hat{I},\ p_{a},\ y_{a}) I =Ga(I^, pa, ya),其中 y a ∼ E ca ( x c ) y_{a} \sim E_{\text{ca}}(x_{c}) yaEca(xc)

在共享完全相同的网络架构和输入的同时,形状兼容性编码器和外观兼容性编码器建模兼容性的不同方面,因此,他们的权重不共享。

在训练期间,作者使用ground truth分割图作为外观生成器的输入来重建原始图像。在推理期间,作者首先使用形状生成网络生成一组不同的分割(即穿搭形状布局信息)。然后,以这些生成的语义布局为条件,用外观生成网络在其上渲染出纹理,从而产生具有各种形状和不同外观的穿搭协调的合成时尚图像(例子在图1给出)。除了可以利用各种重建损失函数来修复缺失区域来得到有意义的多样性与兼容性的图像之外,FiNet还能够将服装渲染到具有不同姿势和形状的人身上。

与以前的姿势引导生成方法相比,FiNet不需要成对的数据,而是需要包含多个时装项目的图像,以模拟它们之间的兼容性。

注意,FiNet框架不涉及对抗性训练(难以稳定训练过程)或双向重建损失(需要精心设计的损失函数和选定的超参数)(如多模态无监督图像到图像翻译),从而使训练更容易,更快。

实验

在实验中,作者采用的基线的记号与描述如下:

记号 描述
FiNet w/o two-stage 我们使用一步生成器直接重建图像I,而无需提出两阶段框架。
FiNet w/o comp FiNet不带兼容性编码器
FiNet w/o two-stage w/o comp FiNet没有两阶段的训练且不带兼容性编码器
pix2pix + noise 将这个框架的输入修改为与FiNet w/o two-stage的输入相同。添加了一个噪声矢量来产生不同的结果。
BicycleGAN(迈向多模态图像到图像转换) BicycleGAN可以训练成对数据并输出多模态结果。
VUNET(用于条件外观和形状生成的变体U-Net) 对网络输入进行了类似的修改,以使其基于与FiNet w/o two-stage相同的输入对形状进行建模,并使用目标服装外观 x a x_{a} xa对外观进行建模。
ClothNet 用姿势热图替换ClothNet中的SMPL条件,并重建原始图像。

作者对实验从定性结果与定量比较两个方面进行了比较,关注兼容性、多样性与真实性三个评估标准。FiNet在各方面都表现良好,除此以外,VUNET,ClothNet在牺牲多样性的同时提供了更高的兼容性,而BicycleGAN虽然在多样性上更胜一筹,但合成的图像不具兼容性。


通过信息最大化可生成对抗网络的可解释表示学习 InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets (NIPS 2016)

(参考:翻译 介绍)

本文介绍了InfoGAN,它是一种对生成对抗网络的信息理论扩展,能够以完全无监督的方式学习特征分离表示。InfoGAN也是一个生成对抗网络,最大化潜在变量的一小部分与观察(生成)结果之间的相互信息。我们得出可以有效优化的互信息目标的下限。实验表明,InfoGAN可以学习与现有监督方法学习的表征相比具有竞争力的可解释性表征。

InfoGAN
主要特点是对GAN进行了一些改动,成功地让网络学到了可解释的特征,网络训练完成之后,我们可以通过设定输入生成器的隐含编码来控制生成数据的特征。

作者将输入生成器的随机噪声分成了两部分:一部分是随机噪声Z,另一部分是由若干隐变量拼接而成的latent code c。其中,c会有先验的概率分布,可以离散也可以连续,用来代表生成数据的不同特征。例如:对于MNIST数据集,c包含离散部分和连续部分,离散部分取值为0~9的离散随机变量(表示数字),连续部分有两个连续型随机变量(分别表示倾斜度和粗细度)。

为了让隐变量c能够与生成数据的特征产出关联,作者引入了互信息来对c进行约束,因为c对生成数据G(z, c)具有可解释性,那么c和G(z, c)应该具有较高的相关性,即它们之间的互信息比较大。互信息是两个随机变量之间依赖程度的度量,互信息越大就说明生成网络在根据c的信息生成数据时,隐编码c的信息损失越低,即生成数据保留的c的信息越多。因此,我们希望c和G(z, c)之间的互信息I(c; G(z, c))越大越好,故模型的目标函数变为:

在这里插入图片描述

作者采用了变分推断的思想,引入了变分分布 Q ( c ∣ x ) Q(c|x) Q(cx)来逼近P(c|x),而实际的InfoGAN的目标函数变为:

在这里插入图片描述

总结

本周进行了对FiNet的了解,包括其背景、原理、应用,以及相关的网络结构(即FINet中的兼容性模块,以及上周了解到的U-Net等结构)。认识深度学习在样式转换与图像修复的一些有趣应用(尤其是继CycleGAN之后的BicycleGAN)与发展经历。

理解一些概念尤其是与latent有关的如latent code, latent space等。了解再样式转换中常见的感知损耗的定义与应用场合。

加深了对无监督学习的认识。

CycleGAN同样是无监督学习,但是其无监督是通过循环一致性损失来达到目的的,相对好理解。而FiNet中涉及的无监督却是和无监督的图像到图像翻译网络中一样,假设了一个shared-latent space的存在,与输入的隐含语义特征密切相关。两种方法的各自特点我仍然无法明确判断,希望之后能有更清晰的认识。

(后续理解补充:循环一致性损失是一种达成目的的手段,而共享隐空间是原理)

还有文章提到近期有研究提出可以通过加入第三个网络 Siamese 来代替循环一致性损失,从而降低模型的复杂度以及训练成本,其原理也十分让人好奇。

你可能感兴趣的:(深度学习,计算机视觉,机器学习,人工智能,深度学习)