生成对抗网络系列——CVPR2019中的图像转化GAN

快毕业了,最近一直忙着毕业论文的事情,然后也废柴了一段时间,近期会把自己做I2I的一些研究结果总结一下,方便同实验室接手工作的童鞋,也方便继续这个研究方向的童鞋。先更新最新的研究成果。

Recently, 2019年CVPR的accept list 已经给出,Image to image translation的也有10篇左右吧,这个话题真的是热门,自己当年做的时候还没有这么多人关注,哈哈多亏很早就入坑了,现在也快弃坑啦~具体的网址在:

http://openaccess.thecvf.com/CVPR2019.pyopenaccess.thecvf.com

1. A Style-Based Generator Architecture for Generative Adversarial Networks

http://openaccess.thecvf.com/content_CVPR_2019/papers/Karras_A_Style-Based_Generator_Architecture_for_Generative_Adversarial_Networks_CVPR_2019_paper.pdfopenaccess.thecvf.com

源代码在:

NVlabs/stylegangithub.com图标


大名鼎鼎的styleGAN

2. Latent Filter Scaling for Multimodal Unsupervised Image-to-Image Translation

http://openaccess.thecvf.com/content_CVPR_2019/papers/Alharbi_Latent_Filter_Scaling_for_Multimodal_Unsupervised_Image-To-Image_Translation_CVPR_2019_paper.pdfopenaccess.thecvf.com

这篇文章主要针对unconditional image-to-image translation. 把无条件(unconditional )定义称为直接用编码生成图像,并不需要输入图像作为条件,也就是不用条件生成器。作者认为,在conditional image-to-image translation中,简单地把编码跟输入图像级联(concatenation)在一起导致生成器只能生成确定的结果,并没有真正学到编码。用一个图区分一下有条件和无条件就是:

文章指出目前多模态的无监督的图像间转换(multi-modal unsupervised image to image translation)是用GAN做图像间转换的趋势,但是现有的方法都是把隐编码(latent code)直接映射成图像,这就需要十分复杂的网络结构和引入很多超参数。这篇文章提出把隐编码当做卷积滤波器的修饰器(modifier),并保留传统GAN的判别损失,需要控制的参数只有权衡生成图像质量和多样性的这一个参数。这篇文章的贡献和创新点可以概括为:

  • 提出不用编码器和重建损失,只保留传统GAN的结构和判别损失
  • 本质上抑制了模式崩溃的发生
  • 较少的超参数和损失项,只有一个参数控制生成图像的质量和多样性。

文章提出方法的核心思想是不把隐变量看成编码数据,而是卷积操作的修饰器,他们称之为编码滤波放缩(latent filter scaling)如下图:

该方法其实就是强行给编码赋予视觉属性,让编码的前几维表示具体的特征,后几维表示抽象的特征。用这种方法可以建立高斯随机噪声和不同尺度滤波器图像间的关系。对于得到的隐编码,作者提出在把它映射成为一个标量(scalar),这些标量与网络产生的不同特征图相乘得到生成图像,最后再用解缠绕(disentanglement)的方法实现不同风格的转换。生成的结果仍是公认的几个例子,

如四季变换

轮廓图与鞋子的转换

标签图与真实图(Facade to label)的转换

定量评价的标准则是user study 和LPIPS,这个标准来自于

Richard Zhang, Phillip Isola, Alexei A. Efros, Eli Shechtman, and Oliver Wang. The unreasonable effectiveness of deep features as a perceptual metric. CoRR, abs/1801.03924, 2018.


3. Homomorphic Latent Space Interpolation for Unpaired Image-To-Image Translation

http://jiaya.me/papers/unpairimagetranslation_cvpr19.pdfjiaya.me

这篇文章来自港中文的图形学大佬Jia Jiaya团队。文章重点研究如何更好地解释隐变量的空间,以A和B两个领域为例,A中的某个样本点 x_a 对应B的样本点 x_b , 从x_a变换x_b 可能有很多种不同的中间路径(path),但只有那些只变换一种视觉属性的路径才是有用的,所谓path的解释如下图:

把一个不笑的男士转化成一个笑的女士,一种路径可以是先把不笑的男士变成笑的男士,再把笑的男士变成笑的女士;也可以是把不笑男士变成不笑的女士,再把不笑的女士变成笑的女士!

本文研究的就是如何从一个领域的样本连续变换到另一个领域,其实有点像NIPS 18年那篇文章的研究动机

A Unified Feature Disentangler for Multi-Domain Image Translation and Manipulation

http://papers.nips.cc/paper/7525-a-unified-feature-disentangler-for-multi-domain-image-translation-and-manipulation.pdfpapers.nips.cc


这篇文章的研究结果可以进一步推广到多领域多模态的转换。文章指出,广泛用在无监督image to image translation 上的循环一致损失(cycle consistency loss)无法处理连续的中间结果的情况,以笑容逐渐消失为例:

基于循环一致损失的starGAN只做到了闭嘴,这篇文章提出的方法是让表情的逐渐变化~就是可以做到有意义的隐变量编码插值。

为了实现这种连续的变换,作者提出用Wessenstein距离来衡量隐变量空间中产生的插值图像与真实图像的距离,此外也用了训练好的网络去调整(regularize)隐变量空间,最后定义了一种同态损失(homomorphic loss)来训练可供的插值器(interpolator),贡献可以概括为:

  • 提出一种基于插值的网络架构,适用于多模态多领域连续的image to image translation
  • 提出一种重要的训练策略来训练可控的插值器

主要思路介绍

这篇文章主要以人脸转换为例,使用到的每个人脸突破都有一定的属性作为标签,他们把每个领域表示的图像的集合看成一个非凸的流型(manifold),用一个编码器把这个流程展开(unfold)成一个铺平的(flattened)隐变量空间,使得插值图像能够位于真实图像空间中,然后用GAN判别生成图像和真实图像。使用到的判别损失为WGAN-GP损失,如下:

为了避免编码器把所有图像映射成一个点,他们又引入了类似于重建损失的项:

当然也用到了训练好的VGG网络去提取一些语义信息,其实类似于内容损失和风格损失,不过他们叫做语义知识指导(Semantic Knowlegde Guidance):

损失函数就是这些损失项的和:

中间的插值结果使用类似于线性插值的思想:

最后为保证代数上的同态性,加入了一个衡量同态差异的损失项:

因为整个网络包含复杂的模块,训练的时候,引入了分类器,也对网络的残差模块做了处理,整个损失函数就是:

论文给的实验结果都是人脸之间的转换:

不同表情的变换

男变女

文章说补充材料有其他domain之间转换的例子,但失败的例子中也给出了本文的方法可能并不适用于标准测试样例Faced-Label

因为人类数据库中本身就含有丰富的表情变换,所以模拟出连续变换不难,但对于不通领域相差很大的情况,感觉这篇文章提出的方法可能不work。

4. Multi-Channel Attention Selection GAN With Cascaded Semantic Guidance for Cross-View Image Translation

http://openaccess.thecvf.com/content_CVPR_2019/papers/Tang_Multi-Channel_Attention_Selection_GAN_With_Cascaded_Semantic_Guidance_for_Cross-View_CVPR_2019_paper.pdfopenaccess.thecvf.com

用GAN做多视图变换,源代码在:

Ha0Tang/SelectionGANgithub.com图标

记得去年CVPR有一篇类似的工作

http://openaccess.thecvf.com/content_cvpr_2018/papers/Regmi_Cross-View_Image_Synthesis_CVPR_2018_paper.pdfopenaccess.thecvf.com

这篇文章是对它的改进,作者提出了一个叫做SelectionGAN的新网络可以把输入的场景和语义图转化成为任意视点的图像。具体是使用了“由粗到精”地两个阶段的做法,如图:


首先用一个循环的(cycled)语义指导的(semantic-guided)生成器把输入的图像和目标的语义图像转化成目标图像,第二个阶段用多通道注意力选择机制(multi-channel attention selection mechanism)来修正生成的图像。使用的数据集为Dayton, CVUSA和Ego2Top,使用的损失函数是一个机遇pixel的损失,判别损失和一个,全局正则项:

具体实现时,都是标准配置~生成器用Unet,判别器则是PatchGAN

部分实验结果如图:

还有室内场景的结果

这篇文章的思路其实可以借鉴到我自己做的服装图片生成中。


5. Towards Instance-level Image-to-Image Translation

http://openaccess.thecvf.com/content_CVPR_2019/papers/Shen_Towards_Instance-Level_Image-To-Image_Translation_CVPR_2019_paper.pdfopenaccess.thecvf.com

数据集和源代码在

http://zhiqiangshen.com/projects/INIT/index.htmlzhiqiangshen.com

本文主要针对实例级别的Image to image translation, 从这个也可以看出IIT的发展趋势,就是supervised→unsupervised→multi-modal→multi-domain→fine-grained. 也许越往后做,能挖的坑就越少了....

文章指出,现有IIT都关注的是整个图像的风格或者视觉属性的迁移,但是当图像中有多个物体的时候,现有方法生成的图像就没有那么好了,这是因为不同物体与背景的风格差异巨大。这篇文提出的方法则能真的不同的物体和背景分别做转换,作者提出借助实例级别的风格向量(instance-level style vector)来实现这种转换,如图:

在白天转换夜晚的task中,路牌和汽车的变换应该是不一样的,汽车有灯,而路牌没有。大致的做法是:首先用编码器去获得全局与实例的内容和风格编码,然后用解缠绕的思想(两个领域图像的交换内容和风格编码)去获得风格化的图像。这篇文章的主要贡献可以概括为:

  • 提出了针对实例级别的IIT网络以及一种特别的损失函数:复合损失(compound loss)
  • 构建了相应的数据集给大家用

网络结构如下图:

使用到的损失项有全局重建损失,实例重建损失,全局判别损失,实例判别损失:

具体的结果如下:

主要跟常见的CycleGAN, MUNIT, UNIT, DRIT,这些在我的专栏中都有介绍。

定量评价的标准用了: LPIPS Metric, IS, CIS这些。作者都是在他自己的数据集上跑实验结果,不知道在well-known的数据集上是什么performance,可以拿过他的代码试一下。

6. Reversible GANs for Memory-efficient Image-to-Image Translation

http://openaccess.thecvf.com/content_CVPR_2019/papers/van_der_Ouderaa_Reversible_GANs_for_Memory-Efficient_Image-To-Image_Translation_CVPR_2019_paper.pdfopenaccess.thecvf.com

这篇文章主要是在经典的pix2pix, CycleGAN的网络架构的基础上,如何建立一种可逆的映射,同时也能更好的节省Image to image translation task的内存。这篇文章从理论上分析了如何构建IIT中可逆的映射,针对有监督和无监督网络分别提出了各自的损失函数:

有监督

无监督

在测试的时候使用到了Cityscapes(标签图到街景图的转换),

Maps(地图到卫星图的转换)数据集

人脑图片数据集(HCP Brain)

7. Art2Real: Unfolding the Reality of Artworks via Semantically-Aware Image-to-Image Translation

http://openaccess.thecvf.com/content_CVPR_2019/papers/Tomei_Art2Real_Unfolding_the_Reality_of_Artworks_via_Semantically-Aware_Image-To-Image_Translation_CVPR_2019_paper.pdfopenaccess.thecvf.com

源代码在:

aimagelab/art2realgithub.com图标

作者的写作动机是:艺术图片到真实图片的转换在文化遗迹方面有很重要的作用!但是现有的自然图片和对应的艺术图片的数据集太少了。如图

该文的目标就是希望借助GAN实现这种转换来reduce gap。所以说,在IIT文章井喷式增加的今天,能找个应用点是很关键!!!!这篇文章的提出的架构借助弱监督的相似度匹配策略,用该策略去检索和学习(retrieving and learning)真实自然图像的细节。本文研究了不同风格和艺术家的图画到真实图像的转换,主要的贡献可概括为:

  • 提出基于记忆组(memory bank)的网络,在该记忆组内可以在图像块级别上(patch-level)恢复图像细节,图像块用检索的方法得到,训练时也会用到语义信息的MASK。

网络架构如图:

使用到的损失函数为:

判别损失,循环一致损失以及自己定义的Multi-scale variant,具体实现时生成器用了李菲菲经典的风格迁移的判别器,而判别器则是patchGAN,跟现有的几个无监督方法的对比如下图:

风景图的生成

肖像画的生成

定量评价的准则用了FID和user study,还考察了各个方法的生成图像特征的分布情况。

8.TraVeLGAN: Image-to-image Translation by Transformation Vector Learning

http://openaccess.thecvf.com/content_CVPR_2019/papers/Amodio_TraVeLGAN_Image-To-Image_Translation_by_Transformation_Vector_Learning_CVPR_2019_paper.pdfopenaccess.thecvf.com

文章指出,现有的image to image translation在一些特定的领域(particular subset of domain)取得了不错的结果,也就是说转换的两个领域的图像其实差距不大,有很强的同质性(homo-geneous),大多是外观相似、风格或者纹理存在差异。因此,本文主要面向有显著形状和语义差别(shape and context)的领域间的图像translation问题,图像间有异质性(heterogeneity)。本文在传统GAN的基础上提出添加一个孪生网络(siamese network),孪生网络可以获取到领域间的高级语义特征。

本文的主要思路是借鉴于NLP中的word2vec embedding方法。作者的解释是,

if we need to transform one original image into another original image by moving a foreground object from the top-left corner to the bottom-right corner, then the generator must generate two points in the target domain separated by the same transformation vector.

如果想通过从右上角交到左下角移动前景对象,把一张原始图像转化成另一种原始图像,生成器应该在目标领域中生成由相同转换向量分隔开的两个独立的点。与以往用GAN做IIT方法不同点在于:

  1. 完全消除了训练中的循环一致的需求。
  2. 本文引入一个独立的网络,该网络的输出空间可以衡量原始图像和生成图像的相似性。
  3. 完全用神经网络做参数化,并没有使用图像间的均方误差,因为有研究指出用pixel之间的MSE会使得生成的图像趋于平均图像(tendency to bias towards the mean images)
  4. 通过新引入的隐变量空间(word2vec得到的空间)来解释无监督领间的图像转换

概括起来,这篇文章认为现有的方法用MSE不好,现有的循环一致假设也不严谨,因此作者提出把图像空间映射先映射到一个向量空间中,用向量空间的距离来取代之前直接在图像空间上的MSE距离。所以提出的TraVelGAN在适合于复杂的、异质性的两个域之间的转换

主要思路

对于两个不同的领域 XY ,他们之间的映射为 G_{XY}, G_{YX},这篇文章认为这个映射分成两个部分:域间关系(domain membership)和个性(individuality)。传统的GAN方法使用对抗损失,只能学到域间关系,此外传统方法中使用的循环一致损失注定了这些方法并不适用于两个域变化很大的情况。而个性是指学到的映射是有意义的,比如 X 领域中的两个不同的图像 x_i,x_j ,为什么 G_{XY}(x_i)x_iY 中的对应点而 x_j 却不是。

为了解决上述问题,本文引入了NLP中转换向量(transformation vector)的概念:把词映(word)射到一个向量(vector)空间,在该向量空间中,原空间相似的词有相同的向量,如图:

原来空间是一个维度很高的空间,该空间映射到一个二维平面后,原来空间中有些点的关系在映射后的空间中应该相同,假设man,woman,king和queen都是向量,则:

man-woman=king-queen

称转换后的向量的差为转换向量(transformation vector),该向量所在的空间为embedding空间。记图像空间映射到向量空间的映射为 S(.) ,因此把这个性质推广到image to image translation上就是

S(x_j)-S(x_i)=S(G_{XY}(x_j))-S(G_{XY}(x_i))

如果记转换向量:

v(x_i,x_j)=S(x_j)-S(x_i)

则:

v(x_i,x_j)=v(G_{XY}(x_i),G_{XY}(x_j))

简单说,就是映射后的空间表示语义信息,source domain与target domain中相对应的图像对有相同的语义;source domain中图像间的关系与target domain中图像间的关系相同,或者说sourse domain中图像的关系在target domain中保留。因此可以设计一个网络衡量这两个domain中的关系,而目标就是让这两个关系的差距越接近越好,即:

其中 Dist 表示距离衡量的标准,可以使用余弦相似性。同样的,可以使用一个网络来表示 S ,但是 S 网络与生成器 G 是相互依存的,它们共同的目标就是让损失函数 L_{TraVeL} 最小,但 SG 也有各自的目标,因此构建一组孪生网络(这里有点不太懂),最终的目标函数为:

其中:

最后,作者也给出了几组实验结果,

首先是source domain 跟target domain相似的情况:

包括水果转换(注意下图(a)中最后一行阴影都可以正确的映射),梵高画到自然图片(注意最后一行,任务画像转化成了自然图片),四季转换,CelebA数据库的人脸转换,sketch到鞋子的转换

接着是source domain跟target domain相差大的情况:

填字游戏到算珠的转换、火山到灯笼的转换、沙漏到时钟的转换、鱼到鸟的转换


特别地,纸上图画改变位置,算盘上相应算珠的位置也改变

这篇文章通过引入孪生网络来表示语义信息从而解决两个领域中图像形状较大时的转换,这个思路确实是可以借鉴的!

9.TransGaGa: Geometry-Aware Unsupervised Image-to-Image Translation

这篇文章主要针对形变差异大的两个domain间的Image to image translation.出发点像18年ECCV那篇 Improving Shape Deformation in Unsupervised Image-to-Image Translation.这篇文章的链接在

http://openaccess.thecvf.com/content_CVPR_2019/papers/Wu_TransGaGa_Geometry-Aware_Unsupervised_Image-To-Image_Translation_CVPR_2019_paper.pdfopenaccess.thecvf.com

源代码在:

https://wywu.github.io/projects/TGaGa/TGaGa.htmlwywu.github.io

文章指出,现有的无监督的translation的挑战是两个domain的图像在有大的几何变的情况下,translation不易学到。这篇的动机就是解决该问题,该文不直接学领域间的映射关系,而是把图像空间解缠绕到外表隐空间(appearance latent space)和几何隐空间(geometry latent space)的笛卡尔积上。该文还特别提出一个几何先验损失(geometry prior loss)和条件VAE loss,让网络去学一个独一无二但互补的表示(complementary representation),然后分别建立外表和几何的转换。该文的贡献可以概括为:

1. 并不是直接建立两个图像空间的转换关系,而是appearance-geometry space的转换关系。这篇文章扩展了CycleGAN在复杂物体图片间转换的能力

2. 生成的图像有多样性,并且可以做基于指定范例的图像生成(exemplar-guided generation)

主要思路

如下图:

TransGaGa的主要思路

整个网络结构由两个自编码器(auto-encoder)和两个几何、外观转换器(geometry/appearance geometry)构成。刚开始输入的图像 x \in X 经过几何自编码器 E^g_x 生成有30个通道的几何表示图(实质是a stack of landmark heatmap),接着,再用一个编码器 E^c_x 把该几何编码器表示成几何编码,于此同时外观编码器可以把 x 表示成外观编码,几何编码+外观编码重新聚合(concatenate)成新的编码,用解码器 D_x 可以这个编码解码成原图 \hat{x}

损失函数

算法的损失函数分成几个部分,包括:

x\hat{x} 之间的VAE损失 L_{CVAE}

几何heat map间的几何先验损失 L_{prior}

x 与转换后的有相同几何结构的图像应该在外观保持一致,因此引入外观一致损失

还有,循环一致损失 L^a_{cyc},L^g_{cyc},L^{pix}_{cyc}对抗损失,整个损失项就是:

此外实现外观转换借助的是CycleGAN的方式,而几何转换则是用的de facto几何变换以及PCA的方法,该文提出的架构同样支持多模态(Multimodal)。

实验结果

使用到的数据集有CAD模型渲染的动物数据集[1],YFCC100M人脸数据集[2],Stanford Dog[3]和CelebA[4]数据集

[1]Silvia Zuffi, Angjoo Kanazawa, and Michael J. Black. Lions and tigers and bears: Capturing non-rigid, 3d, articulated shape from images. In CVPR, 2018.
[2]Sebastian Kalkowski, Christian Schulze, Andreas Dengel, and Damian Borth. Real-time analysis and visualization of the yfcc100m dataset. In MM Workshop, 2015.
[3]Aditya Khosla, Nityananda Jayadevaprakash, Bangpeng Yao, and Li Fei-Fei. Novel dataset for fine-grained image categorization. In CVPR Workshop, 2011.
[4]Ziwei Liu, Ping Luo, Xiaogang Wang, and Xiaoou Tang. Deep learning face attributes in the wild. In ICCV, 2015.

对比的方法则有CycleGAN,UNIT,MUNIT和DRIT,定量评价的标准用的是User study, FID, 和LPIPS,部分转换结果如图:

动物间转换:

人脸与与动物的转换

当然还可以用例子做约束条件,与例子外观相同,与输入图像几何相同的图片:

外观和几何编码的也可以连续变化

自我感觉,这篇文章把其他文章中提到的内容风格编码,换成了几何和外观编码,同时使用了cv中比较热的landmark heatmap,把一些最新技术与自己要解决的问题做结合可能是今后i2i发展的趋势。

10. Image-to-Image Translation via Group-wise Deep Whitening and Coloring Transformation

https://arxiv.org/pdf/1812.09912.pdfarxiv.org

这篇文章主要是从风格迁移(style translation)的角度理解Image to image translation. 熟悉风格迁移的小伙伴应该知道,从Gatys 14年的那篇文章开始用网络做风格迁移成为新的趋势,之后的方法通过各种normalization(如:AdaIN)、协方差等技术对原方法做改进。直接把style transfer的这些技术用到image to image translation上存在各种问题,比如:计算复杂(computationally intensive),容易出错(error-prone) 。所以本文提出一种新的regularization方法,该方法在时间和空间上优于现有方法。

在MUNIT中,作则使用了AdaIN 去匹配两个统计量:均值和方法。本文的作者则认为只有两个统计量并不能很好的反应目标领域的风格。这篇文章也通过实验证明了:Gram矩阵和协方差表现出的变量间的交互作用(interaction effects)可以传达出重要的风格信息。这篇文章提出的模型主要借鉴与风格迁移中用到的白化-彩化变换技术(whitening-and-coloring transformation, WCT),即使用特征图的协方差对图像的风格编码。 然而WCT的 O(n^3) 复杂度的,而且计算反向传播的梯度也是不平凡的(non-trivial)。因此本文的贡献可以概括为:

  1. 提出一种新的基于深度网络的白化-彩化变换的方法

2.提出群体性的(group wise)WCT算法来提升计算效率

主要思路

方法架构与18年ICCV的那两篇文章MUNIT和DRIT相似, 以A 领域中的图像 x_a 为例,用两个编码器把输入图像分别编码成内容编码 E^c_A(x_A) 和风格编码 E^s_A(x_A) ,把 x_a 的内容编码与 x_B 的风格编码输入到生成器前,使用群体性白化-彩化变化模块(GDWCT)。接着用判别器判断生成图片与真实图片的区别,最后提取生成图片的内容和风格编码还原出原图。

损失函数

与MUNIT和DRIT类似,使用到的损失函数包括,风格、内容、原图的循环一致损失

以及重建损失

当然还有判别损失

总的损失函数就是

白化变换模块

之后作者花大篇幅介绍了这篇文章改进的白化-彩化变换(Whitening transformation)

实验结果

作者对比了MUNIT,DRIT,WCT方法,做了风景图与不同风格绘画(梵高风格,莫奈风格等)的转换,部分结果如图:

四季变换,彩铅画的转换,猫狗互换

性别互换

定量评价的标准有User study,分类准确率和时间


11.结语

总的来说,个人认为TraVeLGAN是19年CVPR的几篇IIT工作中最值得关注的,直接把图像间转换提升到语义的角度,我相信这也是未来的发展方向。

编辑于 2019-10-06

文章被以下专栏收录