Semantically Multi-modal Image Synthesis
作者:Zhen Zhu, Zhiliang Xu, Xiang Bai{Huazhong University of Science and Technology}, Ansheng You{Peking University}
会议:CVPR 2020
论文:https://openaccess.thecvf.com/content_CVPR_2020/papers/Zhu_Semantically_Multi-Modal_Image_Synthesis_CVPR_2020_paper.pdf
代码:https://github.com/Seanseattle/SMIS
项目界面(包含视频):https://seanseattle.github.io/SMIS/
Abstract
本文主要研究语义多模态图像合成(SMIS)任务,即在语义层面上生成多模态图像。先前的工作试图使用多个特定类的生成器,但它只能在具有少量类的数据集上的使用。相反,我们提出了一种新的Group Decreasing Network(GroupDNet),它利用生成器中的分组卷积group convolutions,并逐步减少解码器中卷积的分组数量。因此,GroupDNet在将语义标签翻译成自然图像方面具有更强的可控性,并且对于具有许多类别的数据集具有看似合理的高质量输出。在几个具有挑战性的数据集上的实验证明了GroupDNet在执行这些任务上的优越性。我们还表明,GroupDNet能够执行各种有趣的合成应用。代码和模型在:https://github.com/Seanseattle/SMIS。
1. Introduction
语义图像合成,即把语义标签翻译成自然图像,在现实世界中有许多应用,引起了社会的广泛关注。这本质上是一对多映射问题。无数可能的自然图像对应一个单一的语义标签。先前的工作使用了不同的策略来完成任务:采用可变自动编码器的思想[36,56,2,11],在训练时引入噪声[19],构建多个子网[10]并包括实例级特征嵌入[41]等。虽然这些方法在提高图像质量和扩展更多应用方面取得了非凡的成就,但我们更进一步,特别关注特定的多模态图像合成任务,这增加了控制生成结果的灵活性。
想象一下从人像语义图创建内容的场景。 借助语义到图像的转换模型,可以将解析图转换为真实的人像。总体看起来不错,但是上身的衣服不适合你的口味。那么问题来了——要么这些模型不支持多模态综合,要么当这些模型改变了上装,其他部分也相应地改变了。这两者都不符合你的意图。总之,这种用户可控的内容创建场景可以被解释为执行一项任务,该任务在语义级别上产生多模态结果,而其他语义部分未被触及。我们把这个任务概括为:语义多模态图像合成(Semantically Multi-modal Image Synthesis, SMIS)。如图1所示,对于每种语义,我们都有其特定的控制器。通过调整特定类别的控制器,仅相应地改变相应的区域。
该任务的一个直观解决方案是为不同的语义构建不同的生成网络,然后通过融合不同网络的输出来生成最终的图像。与[10]的整体方案颇为相似,侧重于人像编辑。然而,这种类型的方法很快会面临性能下降、训练时间和计算资源消耗线性增加的问题。
为了使网络更加优雅,我们创造性地用群卷积代替生成器中的所有常规卷积,从而将生成过程统一在一个模型中。当卷积的群数等于类的群数时,我们的策略在数学上和功能上等价于[10]。然而,我们采用的另一个策略是设置不同的方式——我们在forwarding的过程中减少解码器卷积中的组数。**我们观察到不同的类别之间有内在的相互关系,例如,草和树叶的颜色应该非常相似。在这种情况下,逐步合并这些组给模型足够的能力来建立不同类别之间的相互关系,从而提高整体图像质量。**此外,当数据集的类数量很大时(例如,ADE20K [53]),这种策略也大大减轻了计算消耗问题。我们把使用了这两种策略的发生器称为群递减网络(GroupDNet)。为了评估GroupDNet在SMIS任务中的表现,我们提出了两个新的度量标准,称为mean Class-Specific Diversigy(mCSD)和mean Other-Class Diversity(mOCD)。当一些语义部分变化很大,但其他部分保持不变时,mCSD度量往往保持较高的值,mOCD往往较低。
2. Related work
Generative models.
Conditional image synthesis.
Multi-modal label-to-image synthesis.
Group convolution. 以前的工作[25,44,51,32,43]表明,群卷积有利于降低计算复杂度和模型参数,因此它们已广泛应用于轻型网络。[32]提到组卷积的过度使用会导致较大的内存访问成本。尽管在网络中使用具有小分组甚至没有分组卷积的分组卷积是理想的,但是我们在实验中表明,在解码器中完全避免分组卷积对于SMIS任务的性能是有问题的。此外,我们的减少组数策略大大缓解了巨大的媒体访问控制问题,使其适用于现实世界的应用。
3. Semantically multi-modal image synthesis
3.1. Problem definition.
让M表示一个语义分割掩码。假设数据集中有C个语义类。H和W分别代表图像的高度和宽度。作为一种非常简单的进行标签到图像转换的方式,生成器G需要M作为条件输入来生成图像。**然而,为了支持多模态生成,我们需要另一个输入源来控制生成多样性。**通常,我们使用一个编码器来提取一个潜码Z作为控制器,其灵感来自于VAE [24]。在接收到这两个输入后,图像输出 O O O可以通过 O = G ( Z , M ) O = G(Z,M) O=G(Z,M)产生。然而,在语义多模态图像合成(SMIS)任务中,我们的目标是通过扰动特定类潜码class-specific latent code来产生语义多样的图像。
3.2. Challenge
**对于SMIS任务,关键是将潜码分成一系列特定类别的潜码,每个潜码只控制特定语义类别的生成。**传统的卷积编码器不是最佳选择,因为所有类别的特征表示都在潜在代码内部纠缠。即使我们有特定于类的潜在代码,如何利用这些代码仍然是个问题。正如我们将在实验部分说明的那样,简单地用特定类代码替换SPADE [36]中的原始潜在代码,处理SMIS任务的能力有限。这一现象启发我们,我们需要在编码器和解码器中进行一些架构修改,以更有效地完成任务。
3.3. GroupDNet
基于以上分析,我们现在给出更多关于这个任务的解决方案的细节——Group Decreasing Network。GroupDNet的主要体系结构是从SPADE [36]中获得的设计灵感,是因为SPADE在标签到图像生成任务中的卓越性能。GroupDNet的一个主要改进是将典型卷积替换为组卷积[25],以实现特定类别的可控性。在下文中,我们将首先简要概述我们的网络架构,然后描述我们在网络的不同组件中所做的修改。
group convolutions 分组卷积:
https://zhuanlan.zhihu.com/p/65377955
Overview. 从图2可以看出,GroupDNet包含一个编码器和一个解码器。受VAE [24]和SPADE [36]思想的启发,编码器E在训练过程中产生一个假定遵循高斯分布N(0,1)的潜码Z。测试时,编码器E被丢弃。从高斯分布中随机抽样的代码代替了Z。为了实现这一点,我们使用重新参数化技巧re-parameterization trick[24]来实现训练期间的可微损失函数。具体而言,编码器通过两个完全连接的层来预测均值向量和方差向量,以表示编码的分布。编码分布和高斯分布之间的差距可以通过施加KL-散度损失来最小化:
其中 D K L D_{KL} DKL代表KL散度。
Encoder . 让 M c M_c Mc为类c的二进制掩码, X ∈ R H × W X ∈ R^{H×W} X∈RH×W为输入图像。通过将X拆分为不同语义类的不同图像,我们有:
此操作减少了编码器处理特征解缠的工作,使得编码特征更加精确。编码器的输入是这些图像的拼接: S = c a t c X c S =\mathop{cat}\limits_ c X_c S=ccatXc。编码器E内的所有卷积都有相同的组数,也就是c类的总数。从输入端和架构端,我们解耦不同的类,使之相互独立。结果,编码的潜码Z由所有类的类特定潜码 Z c Z_c Zc(Z的离散部分)组成。在接下来的解码阶段, Z c Z_c Zc充当类c的控制器。与产生两个向量作为高斯分布的均值和方差预测的一般方案不同,我们的编码器通过卷积层产生均值图和方差图,以大量保留潜在代码Z中的结构信息。
潜码Z是由各个类特定潜码 Z c Z_c Zc的组合
Decoder. 一旦接收到潜码Z,解码器就在语义标签的指导下将其转换成自然图像。问题是如何利用语义标签来正确引导解码阶段。有几种方法可以达到这个目的,比如将语义标签连接到输入,或者在解码器的每个阶段进行加上条件进行调节。前者不适合我们的情况,因为解码器输入具有非常有限的空间大小,这将严重丢失语义标签的许多结构信息。我们选择后者,并选择一个典型的高级模型——SPADE生成器[36]作为我们网络的主干。正如在[36]中提到的,SPADE是一些条件标准化层的更普适的形式[6,16],并且在语义图像合成中显示出产生像素级指导的卓越能力。遵循在生成器中使用所有组卷积的思想,我们用组卷积替换SPADE模块中的卷积层,并将这个新的条件模块称为条件组标准化(Conditional Group Normalization, CG-Norm),如图2所示。然后,我们通过动态合并CG-Norm和group convolutions来组成一个称为Conditional Group Block(CG-Block)的网络块。CG-Block的体系结构也显示在图2中。
同样,让 F i ∈ R H i × W i F^i∈\R^{H^i×W^i} Fi∈RHi×Wi为解码器网络第 i i i层的特征映射, g i g^i gi表示第 i i i层的组数。此外, N , D i , H i , W i N,D^i,H^i,W^i N,Di,Hi,Wi分别是batch size、通道数量、特征图的高度和宽度。如图2所示,CG-Norm内的组卷积将把语义标签输入转换成像素级调整参数 γ ∈ R D i × H i × W i γ ∈ \R^{D^i×H^i×W^i} γ∈RDi×Hi×Wi和 β ∈ R D i × H i × W i β ∈ \R^{D^i×H^i×W^i} β∈RDi×Hi×Wi。特征输入 F i F^i Fi将首先通过批量标准化层[18],该层对Fi进行标准化:
其中这里 γ B N γ_{BN} γBN, β B N ∈ R D β_{BN}∈ \R^D βBN∈RD是从数据中学习的仿射参数。针对每个特征通道的批次大小和空间维度计算的 μ d \mu_d μd和 σ d \sigma_d σd:
然后,输出 B N ( F i ) BN(F^i) BN(Fi)与先前预测的像素级γ和β相互作用,产生插入语义信息的新特征图 F o F^o Fo。考虑到公式3:
当 i i i变大时,组数最终减少到1。在常规卷积之后,该特征被映射到三通道RGB图像 O O O。
3.4. Other solutions
除了GroupDNet之外,执行SMIS任务的一个简单解决方案是构建一组编码器和解码器,每个编码器和解码器都专注于一个特定的语义类,如图3 (a)所示。其基本思想是独立处理每个类,然后融合不同子网的结果。为了简单起见,我们称这种网络为多网络。另一个具有类似想法的替代方案是在整个网络中使用组卷积[25]。如图3 (b)所示,用组卷积[25]替换编码器和解码器中的所有卷积,并设置组号等于组网络(GroupNet)中的类号。如果每组中的信道数等于MulNet单个网络中对应层的信道数,则理论上等价于MulNet。图3 ©说明了我们的GroupDNet。**GroupDNet和GroupNet的主要区别是解码器中组的数量单调递减。**虽然这种修改看似简单,但却带来了几个值得注意的好处,主要体现在以下三个方面:
Class balance. 值得注意的是,不同的类具有不同数量的实例[30,5,53],并且需要不同的网络容量来对这些类进行建模。MulNet和GroupNet很难找到合适的网络设计来平衡所有的类。更重要的是,不是所有的类都出现在一个图像中。在这种情况下,MulNet和GroupNet不可避免地会浪费大量的计算资源,因为它们必须在训练或测试期间激活所有类的所有子网络或子组。然而,在GroupDNet中,不平衡的类与其邻居类共享参数,极大地缓解了类的不平衡问题。
Class correlation. 在自然世界中,语义类通常与其他类有关系,例如,草的颜色和树叶的颜色相似,建筑物影响附近道路上的阳光等。为了产生合理的结果,MulNet和GroupNet都在解码器的末尾具有融合模块(在我们的情况下为几个常规卷积),以将不同类的特征合并到一个图像输出中。 通常,融合模块会粗糙的考虑不同类别的相关性。 但是,我们认为这是不够的,因为不同类别的相关性太复杂,以至于无法通过使用具有受限制的感受野的简单组件来全面探索。 一种替代方法是使用一些网络模块,例如自我注意模块,以捕获图像的远程依赖性,但其过高的计算量会阻碍其在此类情况下的使用[47]。 但是,GroupDNet将这些关系贯穿整个解码器。 因此,它可以更准确,更彻底地利用相关性。 结果,与其他两种方法生成的图像相比,GroupDNet生成的图像更好,更逼真。
GPU memory. 为了保证MulNet的每个单个网络,或者GroupNet中每个类的分组参数都有足够的容量,信道总数将随着类数的增加而显著增加。在一定限度内,显卡的最大图形处理器内存甚至不能容纳一个样本。正如我们在ADE20K数据集[53]上粗略估计的那样,即使批量大小设置为1,一个特斯拉V100显卡也无法容纳足够容量的模型。然而,在GroupDNet中,这个问题不太严重,因为不同的类共享参数,因此没有必要为每个类设置这么多通道。
3.5. Loss function
我们采用与SPADE [36]相同的损失函数:
L G A N L_{GAN} LGAN是GAN损失的hinge版本, L F M L_{FM} LFM是真实和合成图像之间的特征匹配损失。具体来说,我们使用多层鉴别器从真实和合成图像中提取特征。然后,我们计算这些配对特征之间的 L 1 L_1 L1距离。同样, L P L_P LP是为风格迁移提出的感知损失[20]。使用预先训练的VGG网络[39]来获得成对的中间特征图,然后我们计算这些成对特征图之间的 L 1 L_1 L1距离。KL-散度损失项为公式1中所示的。我们设 λ 1 = 10 , λ 2 = 10 , λ 3 = 0.05 λ_1= 10,λ_2= 10,λ_3= 0.05 λ1=10,λ2=10,λ3=0.05,同SPADE [36]。
4. Experiments
4.1. Implementation details
我们对生成器和鉴别器中的所有层应用Spectral Normalization[35]。发生器和鉴别器的学习速率分别设置为0.0001和0.0004,遵循两个时标更新规则time-scale update rule[12]。我们使用Adam优化器[23],并设置β1= 0,β2= 0.9。所有实验都是在至少4个P40 GPUs上进行的。此外,我们使用同步批处理标准化来同步多个图形处理器的均值和方差统计。更多细节,如详细的网络设计和更多的超参数,在补充材料中给出。
4.2. Datasets
我们在三个极具挑战性的数据集上进行实验,包括DeepFashion[30]、Cityscapes[5]和ADE20K [53]。我们选择DeepFashion是因为该数据集在所有语义类之间显示出许多差异,这自然适用于评估模型进行多模态合成的能力。因此,我们在这个数据集上与几个基线模型进行比较,以评估我们的模型在SMIS任务上的优势。城市景观中的图像大小相当大,因此测试模型在该数据集上生成高分辨率图像的能力是合适的。ADE20K的课程数量庞大,极具挑战性,我们发现用有限的GPU很难在ADE20K上训练MulNet和GroupNet。更多细节可以在补充材料中找到。
4.3. Metrics
Mean SMIS Diversity. 为了评估为SMIS任务设计的模型的性能,我们引入了两个新的度量标准:平均特定类多样性(mean Class-Specific Diversigy, mCSD)和平均其他类多样性(mean Other-Class Diversity, mOCD)。我们基于LPIPS度量[50]设计了新的度量,该度量通过计算图像pairs的深层特征之间的加权L2距离来评估模型的生成多样性。对于相同的语义标签输入,我们仅通过调整语义类别c的潜码 Z c Z_c Zc来为每个语义类别生成n个图像。因此,我们有一组图像 S = { I 1 1 , . . . , I 1 n , . . . , I C 1 , . . . , I C n } S = \{I^1_1,...,I^n_1, ..., I^1_C, ... , I^n_C\} S={I11,...,I1n,...,IC1,...,ICn}。最后,mCSD和mOCD由下式计算
其中, L c L_c Lc是采样的m对之间的c类语义区域的平均LPIPS距离[50],而 L ≠ c L_{\neq c} L=c 是相同对之间的所有其他类的区域中的平均LPIPS距离[50]。在我们的设置中,我们按照[56,17]设置n = 100,m = 19。ImageNet预先训练的AlexNet [25]被用作深度特征提取器。SMIS任务的更高性能要求特定语义区域的高度多样性(高mCSD),以及所有其他区域的低多样性(低mOCD)。(个人理解:因为要针对某个类进行多模态生成,所以特殊类的应具有高多样性,而其余不参与变化的类具有低多样性)此外,我们还通过为相同的语义标签生成全局不同的结果来报告整体LPIPS距离。
Human Evaluation Metrics.
Fréchet Inception Distance. FID
Segmentation Performance. 使用语义分割模型来判断生成图像与原始图像的相似度。
4.4. Results
4.4.1 Comparison on SMIS
对于可能为SMIS任务修改的模型的一个基本要求是,它们应该具有进行多模态图像合成的能力。我们比较了几种支持多模态图像合成的方法,以展示GroupDNet的优越性:
- 变分SPADE [36] (VSPADE)具有图像编码器,其将真实图像处理成均值和方差向量,其中应用KL散度损失来支持多模态图像合成。详细的描述可以在他们的论文中找到;
- BicycleGAN[56]将给定的图像输入映射到潜在的代码中,该代码随后与标签输入相结合以产生输出。由于潜在码受到KL散度损失的约束,它可以由高斯分布的随机样本代替;
- DSCGAN [45]通过在生成器上引入显式正则化,试图缓解以前模型的模式崩溃问题,对BicycleGAN进行了补充。
除了Sec. 3.4中描述的MulNet和GroupNet,我们还通过替换VSPADE模型的编码器/解码器中的卷积进行了两个进一步的实验,将卷积分组为组号设置为等于数据集类号,分别表示为GroupEnc/GroupDec。注意MulNet、GroupNet、GroupEnc、GroupDec和VSPADE是用与GroupDNet相同的多尺度鉴别器[41]和训练设置训练的。为了公平地比较性能,我们平衡了这些模型的参数数量,以减轻使用更多参数带来性能改进的疑虑。对于BicycleGAN和DSCGAN,我们采用他们原始的训练和测试协议。
定量和定性结果,分别参见表1和图4。定量结果证明了GroupDNet的整体优势。一般来说,GroupDNet表现出最好的图像质量(最低的FID)和整体多样性(最高的LPIPS)。就SMIS任务的性能而言,MulNet和GroupNet比GroupDNet稍好,因为有证据表明它们要么具有更大的mCSD,要么具有更低的mOCD。然而,MulNet和GroupNet的图像质量并不令人满意(高FID),MulNet显示的FPS比GroupDNet低得多。就SHE指标而言,GroupDNet与MulNet和GroupNet相比也很有竞争力。虽然VSPADE有相当大的mCSD,但它的mOCD也很大,这表明它在SMIS任务上的表现不令人满意。同样的现象也在BicycleGAN和DSCGAN中观察到,它们的FIDs相对比VSPADE高得多,显示了SPADE架构的优势。从VSPADE和GroupDec的高mOCD值(它们的编码器是由规则卷积组成的),我们得出结论,组编码器是SMIS任务高性能的关键。然而,GroupDNet的出色性能表明,与GroupEnc相比,解码器中的组减少修改也是有效的,并带来了进一步的性能提升。通过收集这些信息,GroupDNet是一个很好的权衡模型,它考虑了速度、视觉质量和SMIS任务的性能。
从定性结果来看,很明显MulNet、GroupNet、GroupEnc和GroupDNet能够生成语义上的多模态图像,而其他的不能。然而,MulNet、GroupNet、cyclickegan和DSCGAN的图像质量远远不能令人满意,因为它们的图像在视觉上不可信。GroupEnc的图像质量更好,但在SMIS任务中质量会下降。从图4的前两行可以看出,当上衣换成另一种款式时,GroupEnc也会稍微改变牛仔裤短裤的颜色。
4.4.2 Comparison on label-to-image translation
这一节对比的是label-to-image,重点不在多模态。由于我们的网络是基于SPADE构建的,因此在DeepFashion和Cityscapes数据集上,其性能几乎保持与SPADE相同的性能。在ADE20K数据集上,我们的方法不如SPADE,但仍优于其他方法。这种现象一方面显示了SPADE体系结构的优越性,另一方面也暴露了GroupDNet仍然难以处理具有大量语义类的数据集。
4.4.3 Applications
Appearance mixture. 通过在推理过程中利用GroupDNet中的编码器,我们可以收集一个人不同身体部位的不同风格。这些风格的每一个组合都呈现出一个不同的人物形象,给定一个人类解析掩码。通过这种方式,我们可以在一个人物图像库中创建成千上万个多样且真实的人物图像。图6(b)展示了这种应用。在我们的代码库中可以找到演示视频。
Semantic manipulation. 类似于大多数标签到图像的方法[41,36,28],我们的网络也支持语义操作。如图6 ©所示,我们可以在房间里放一张床,或者用树木代替建筑物等。
Style morphing. 向编码器馈送两个真实图像会生成这些图像的两个样式代码。通过在这两个代码之间进行外推,我们可以生成从图像a到图像b逐渐变化的图像序列,如图6 (d)所示。
5. Conclusion and future work
在这篇文章中,我们提出了一个新的语义多模态合成网络,称为GroupDNet。我们的网络非常规地采用所有的组卷积,并修改卷积的组数以减少解码器中的卷积,与其他可能的解决方案(如多个生成器)相比,大大提高了训练效率。
尽管GroupDNet在语义多模态合成任务中表现良好,并产生了较高质量的结果,但仍有一些问题有待解决。首先,与pix2pixHD和SPADE相比,它需要更多的计算资源来训练,尽管它比多生成器网络快近2倍。第二,对于多样性有限的数据集,GroupDNet仍然难以对某个特定类创建不同的布局,尽管它可以展示一些低级别的变化,如光照、颜色和纹理等。
个人总结:主要是编码器采用了组卷积,然后解码器用递减的组卷积(好处是论文中提到的三点),实现了针对特定类的多模态语义生成。