7.5 GAN的应用(图像翻译)
7.5.1 什么是图像翻译
GAN作为一种强有力的生成模型,其应用十分广泛。最为常见的应用就是图像翻译。所谓图像翻译,指从一幅图像到另一幅图像的转换。可以类比机器翻译,一种语言转换为另一种语言。常见的图像翻译任务有:
- 图像去噪
- 图像超分辨率
- 图像补全
- 风格迁移
- .....
本节将介绍一个经典的图像翻译网络及其改进。图像翻译可以分为有监督图像翻译和无监督图像翻译:
- 有监督图像翻译:原始域与目标域存在——对应数据
- 无监督图像翻译:原始域与目标域不存在——对应数据
7.5.2 有监督图像翻译:pix2pix
在这篇paper里面,作者提出的框架十分简洁优雅(好用的算法总是简洁优雅的)。相比以往算法的大量专家知识,手工复杂的loss。这篇paper非常粗暴,使用CGAN处理了一系列的转换问题。下面是一些转换示例:
上面展示了许多有趣的结果,比如分割图 街景图,边缘图 真实图。对于第一次看到的时候还是很惊艳的,那么这个是怎么做到的呢?我们可以设想一下,如果是我们,我们自己会如何设计这个网络?
直观的想法?
最直接的想法就是,设计一个CNN网络,直接建立输入-输出的映射,就像图像去噪问题一样。可是对于上面的问题,这样做会带来一个问题。生成图像质量不清晰。
拿左上角的分割图 街景图为例,语义分割图的每个标签比如“汽车”可能对应不同的样式、颜色的汽车。那么模型学习到的会是所有不同汽车的平均,这样会造成模糊。
如何解决生成图像的模糊问题?
这里作者想了一个办法,即加入GAN的Loss去惩罚模型。GAN相比于传统生成式模型可以较好的生成高分辨率图片。思路也很简单,在上述直观想法的基础上加入了一个判别器,判断输入图片是否是真实样本。模型示意图如下:
上图模型和CGAN有所不同,但它是一个CGAN,只不过输入只有一个,这个输入就是条件信息。原始的CGAN需要输入随机噪声,以及条件。这里之所以没有输入噪声信息,是因为在实际实验中,如果输入噪声和条件,噪声往往被淹没在条件C当中,所以这里直接省去了。
7.5.3 其他图像翻译的tricks
从上面两点可以得到最终的Loss由两部分构成:
- 输出和标签信息的L1 Loss
- GAN Loss
- 测试也使用Dropout,以使输出多样化
采用L1 Loss而不是L2 Loss的理由很简单,L1 Loss相比于L2 Loss保边缘(L2 Loss基于高斯先验,L1 Loss基于拉普拉斯先验)。
GAN Loss为LSGAN的最小二乘Loss,并使用PatchGAN(进一步保证生成图像的清晰度)。PatchGAN将图像换分成很多个Patch,并对每一个Patch使用判别器进行判别(实际代码实现有更取巧的办法),将所有Patch的Loss求平均作为最终的Loss。
7.5.4 如何生成高分辨率图像和高分辨率视频
pix2pix 提出了一个通用的图像翻译框架。对于高分辨率的图像生成以及高分辨率的视频生成,则需要利用更好的网络结构以及更多的先验知识。pix2pixHD提出了一种多尺度的生成器以及判别器等方式从而生成高分辨率图像。Vid2Vid则在pix2pixHD的基础上利用光流,时序约束生成了高分辨率视频。
7.5.5 有监督的图像翻译的缺点
许多图像翻译算法如前面提及的pix2pix系列,需要一一对应的图像。可是在许多应用场景下,往往没有这种一一对应的强监督信息。比如说以下一些场景:
以第一排第一幅图为例,要找到这种一一配对的数据是不现实的。因此,无监督图像翻译算法就被引入了。
7.5.6 无监督图像翻译:CycleGAN
模型结构
总体思路如下,假设有两个域的数据,记为A,B。对于上图第一排第一幅图A域就是普通的马,B域就是斑马。由于A→B的转换缺乏监督信息,于是,作者提出采用如下方法进行转换:
a. A->fake_B->rec_A b. B->fake_A->rec_B
对于A域的所有图像,学习一个网络G_B,该网络可以生成B。对于B域的所有图像,也学习一个网络G_A,该网络可以生成G_B。
训练过程分为两步,首先对A域的某张图像,送入G_B生成fake_B,然后对fake_B送入G_A,得到重构后的A图像rec_A。对于B域的某一张图像也是类似。重构后的图像rec_A/rec_B可以和原图A/B做均方误差,实现了有监督的训练。此处值得注意的是A→fake_B(B→fake_A)和 fake_A→rec_B(fake_B→rec_A)的网络是一模一样的。下图是形象化的网络结构图:
cycleGAN的生成器采用U-Net,判别器采用LS-GAN。
Loss设计
总的Loss就是X域和Y域的GAN Loss,以及Cycle consistency loss:
整个过程End to End训练,效果非常惊艳,利用这一框架可以完成非常多有趣的任务。
7.5.7 多领域的无监督图像翻译:StarGAN
CycleGAN模型较好的解决了无监督图像转换问题,可是这种单一域的图像转换还存在一些问题:
- 要针对每一个域训练一个模型,效率太低。举例来说,我希望可以将橘子转换为红苹果或青苹果。对于CycleGAN而言,需要针对红苹果,青苹果分别训练一个模型。
- 对于每一个域都需要搜集大量数据,太麻烦。还是以橘子转换为红苹果和青苹果为例。不管是红苹果还是青苹果,都是苹果,只是颜色不一样而已。这两个任务信息是可以共享的,没必要分别训练两个模型。而且针对红苹果,青苹果分别去搜集大量数据集太费事。
starGAN则提出了一个多领域任务的无监督图像翻译框架,实现了多个领域的图像转换,且对于不同领域的数据可以混合在一起训练,提高了数据利用率。
7.6 GAN的应用(文本生成)
7.6.1 GAN为什么不适合文本任务
GAN在2014年被提出之后,在图像生成领域取得了广泛的应用研究。然而在文本领域却一直没有很惊艳的效果,主要在于文本数据是离散数据。而GAN在应用于离散数据时存在以下几个问题:
- GAN的生成器梯度来源于判别器对于正负样本的判别。然而,对于文本生成问题,RNN输出的是一个概率序列,然后取argmax。这会导致生成器Loss不可导。还可以站在另一个角度理解,由于是argmax,所以参数更新一点点并不会改变argmax的结果,这也使得GAN不适合离散数据。
- GAN只能评估整个序列的Loss,但是无法评估半句话,或者是当前生成单词对后续结果好坏的影响。
- 如果不加argmax,那么由于生成器生成的都是浮点数值,而ground truth都i是one-hot encoding,那么判别器只要判别生成的结果是不是0/1序列组成的就可以了。这容易导致训练崩溃。
7.6.2 seqGAN用于文本生成
seqGAN在GAN的框架下,结合强化学习来做文本生成。模型示意图如下:
在文本生成任务,seqGAN相比较于普通GAN区别在以下几点:
- 生成器不取argmax
- 每生成一个单词,则根据当前的词语序列进行蒙特卡洛采样生成完成的句子,然后将句子送入判别器计算reward。
- 根据得到的reward进行策略梯度下降优化模型。
7.7 GAN在其他领域的应用
7.7.1 数据增广
GAN的良好生成特性近年来也开始被用于数据增广,以行人重识别为例,有许多GAN用于数据增广的工作[1-4]。行人重识别问题一个难点在于不同摄像头下拍摄的人物环境,角度差别非常大,导致存在较大的Domain gap。因此,可以考虑使用GAN来产生不同摄像头下的数据进行数据增广。以论文[1]为例,本篇paper提出了一个cycleGAN用于数据增广的方法。具体模型结构如下:
对于每一对摄像头都训练一个cycleGAN,这样就可以实现将一个摄像头下的数据转换成另一个摄像头下的数据,但是内容(保持)不变。在CVPR19中,[9]进一步提升了图像的生成质量,进行了“淘宝换衣”式的高质量图像生成(如下图),提供了更高质量的行人训练数据。
7.7.2 图像超分辨与图像补全
图像超分辨率与补全均可以作为图像翻译问题,该类问题的处理方法也大都是训练一个端到端的网络,输入是原始图片,输出的是超分辨率后的图片,或者是补全后图片。文献[5]利用GAN作为判别器,使得超分辨率模型输出的图片更加清晰,更符合人眼主观感受。日本早稻田大学研究人员[6]提出一种全局+局部一致性的GAN实现图像补全,使得修复后的图像不仅细节清晰,且具有整体一致性。
7.7.3 语音领域
相比于图像领域遍地开花,GAN在语音领域应用相对少了很多。这里零碎的找一些GAN在语音领域进行应用的例子作为介绍。文献[7]提出了一种音频去噪的SEGAN,缓解了传统方法支持噪声种类稀少,泛化能力不强的问题。Donahue利用GAN进行语音增强,提升了ASR系统的识别率。
参考文献
[1] Zheng Z , Zheng L , Yang Y . Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in Vitro[C]// 2017 IEEE International Conference on Computer Vision (ICCV). IEEE Computer Society, 2017.
[2] Zhong Z , Zheng L , Zheng Z , et al. Camera Style Adaptation for Person Re-identification[J]. 2017.
[3] Deng W , Zheng L , Ye Q , et al. Image-Image Domain Adaptation with Preserved Self-Similarity and Domain-Dissimilarity for Person Re-identification[J]. 2017.
[4] Wei L , Zhang S , Gao W , et al. Person Transfer GAN to Bridge Domain Gap for Person Re-Identification[J]. CVPR, 2017.
[5] Ledig C , Theis L , Huszar F , et al. Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network[J]. CVPR, 2016.
[6] Iizuka S , Simo-Serra E , Ishikawa H . Globally and locally consistent image completion[J]. ACM Transactions on Graphics, 2017, 36(4):1-14.
[7] Pascual S , Bonafonte A , Serrà, Joan. SEGAN: Speech Enhancement Generative Adversarial Network[J]. 2017.
[8] Donahue C , Li B , Prabhavalkar R . Exploring Speech Enhancement with Generative Adversarial Networks for Robust Speech Recognition[J]. 2017.
[9] Zheng, Z., Yang, X., Yu, Z., Zheng, L., Yang, Y., & Kautz, J. Joint discriminative and generative learning for person re-identification. IEEE Conference on Computer Vision and Pattern Recognition (CVPR)[C]. 2019.