GAN做图像翻译的一点总结

如今,随着 GAN 在生成清晰图像(sharp images)上的成功,GAN 在图像翻译任务上的方法越来越多,pix2pix,CycleGAN,UNIT,DTN,FaderNets,DistanceGAN,GeneGAN,pix2pixHD,StarGAN 等等。现在的方法太多了,图像质量也从 64x64 分辨率一路做到了 1024x2048。

我关注这个方向已经超过半年了,在这里总结一点小经验:

关于生成高质量图像

这里不谈怎么调参能够得到更好的结果,这里谈两个不用经过调参就能获得不错效果的方法。

有三个可以借鉴的经验,其一来自于 pix2pixHD,采用 multi-scale 的 Discriminator 和 coarse2fine 的 Generator 能够有效帮助提升生成的质量

所谓 multi-scale 的 Discriminator 是指多个 D,分别判别不同分辨率的真假图像。比如采用 3 个 scale 的判别器,分别判别 256x256,128x128,64x64 分辨率的图像。至于获得不同分辨率的图像,直接经过 pooling 下采样即可。

Coarse2fine 的 Generator 是指先训一个低分辨率的网络,训好了再接一个高分辨率的网络,高分辨率网络融合低分辨率网络的特征得到更精细的生成结果。具体介绍可以参考 pix2pixHD[1]。

下图以及题图是 CelebA 数据上交换属性的实验,图像分辨率 256x256,如果单个 Discriminator,生成质量很差,加上 multi-scale 之后生成质量有了很大提升,并且没有经过调参哦。

请点击此处输入图片描述

△ 图1:交换刘海

请点击此处输入图片描述

△ 图2:交换眼镜

其二是采用 progressive growing 的训练方式,先训小分辨率,再逐渐增加网络层数以增大分辨率,这个跟 coarse2fine 有点像。具体可以参看 PGGAN [2],或者这里。

请点击此处输入图片描述

其三则是借鉴 LAPGAN 的做法,从低分辨率起步,通过不断生成高分辨率下的残差,累加得到高分辨率。图中 z1,z2,z3 是不同分辨率的输入。这个做法还没有尝试过,不知道生成质量怎样,图中的虚线是我认为可能不必要的连接。

请点击此处输入图片描述

关于生成样本多样性

这里其实有两个问题,一个是多模态多样性,一个是属性强弱的多样性。

对于多模态多样性,现有的技术不多,总结起来有三种。

其一,引入 noise,通过变分的方式让 noise 得到表达,获得多样性。这个方法来自于 BicycleGAN [3] 的 cVAE-GAN。

请点击此处输入图片描述

△ 图3:图片来自于 BicycleGAN [3]

其二,引入 noise,通过回归的方法在生成图像上预测所引入的 noise。这个方法失败率比较高。当然,它也可以跟第一种方法结合。具体介绍参考 BicycleGAN [3] 的 cLR-GAN。

请点击此处输入图片描述

△ 图4:图片来自于 BicycleGAN [3]

前两种方法都比较容易想到。在文章出来以前,我也曾经尝试过第二种方法,但是没有 work。这也印证了它失败率高。

第三种方法是通过交换来实现多模态。交换的图像可以是多种多样,一个不带属性的图,可以通过跟具有不同类型的刘海(眼镜、帽子等)的图片进行交换,以给目标人物加上不同类型的刘海(眼镜、帽子等)。这个方法可以参考 GeneGAN [4] 或者 DNA-GAN [5]。题图就是一个交换属性的例子。

另一种多样性是属性强弱。对于需要输入 label 的生成方法(如 FaderNets,StarGAN),可以通过控制喂给生成器的 label 强弱来得到生成图像的属性强弱。

关于属性强弱,有一类方法比较特殊,它没有办法实现,那就是 CycleGAN,因为它只需要输入图像,并不需要输入 label,没有控制 label 强弱的操作。

下面介绍一种原创的方法,能够对 CycleGAN 引入属性强弱的控制(不打算写成论文,因为没有什么特别的贡献,不想灌水。如使用该方法请注明出处)。

我们通过精简 CycleGAN 来实现,以两个域为例,原始 CycleGAN 需要 2 个 Generator 和 2 个 Discriminator,我们不难发现,可以把域转换称 condition,这样只需要一个 Generator 和 Discriminator 了。

不妨给两个域 X = {x_i} 和 Y = {y_j} 分别编码为 -1 和 1:

请点击此处输入图片描述

这样就实现了 x -> y -> x 和 y -> x -> y 的 cycle。剩下的跟 CycleGAN 一样即可。在测试的时候,就可以通过调节编码的强度来控制属性的强弱了。

关于 inference

模型训练好了,测试的时候还有一道关要过。虽然现在很多图像翻译方法训练的时候都不需要配对数据,但是它们都需要弱监督,也就是需要提供 label。

而测试集上我们不一定有 label,这其实是很常见的一个问题,用户上传的图像不会给你打好标签,况且还存在用户「故意」制造错误标签误导算法(测试算法性能)的可能。有什么解决方案呢?

我们很容易想到,加一个分类器,先分类具有什么属性,然后再转换属性。这个想法简单,但是需要额外的网络,会增加计算量。

有没有不引入分类器的方法呢?仍然以两个域互转的 CycleGAN 为例。训练的时候,我们强迫生成器具有分类器的功能。具体来说,生成器需要需要额外做两个任务(原创方法,没有发表,使用请注明出处):

请点击此处输入图片描述

这两项的 loss 为重构误差:

请点击此处输入图片描述

这可以说是一种自监督。这么做也就确保了生成器能够处理「故意误导」性的转换,也实现了 label-free 的 inference。

下图是季节转换的一个例子。图片从左到右依次为秋季原图、转成夏季图、夏季图转回秋季图、秋季原图转到秋季图。

请点击此处输入图片描述

△ 图5:label=0.5

请点击此处输入图片描述

△ 图6:label=1.0

注意到上图 checkerboard 效应很严重。怎么解决 checkerboard 呢?

关于 inference

生成模型很容易产生 checkerboard 效应,图像翻译任务尤为严重。据研究 [6],checkerboard 主要来自于反卷积(convolution transpose,通常也称 deconvolution)操作,而跟对抗训练关系不大。

[6] 指出,使用 nearest upsample + conv 替代 deconv 可以移除 checkerboard。在实验中我发现这个替换确实发现能够很好地解决问题。

请点击此处输入图片描述

△ 图7:反卷积带来了 overlap,从而引入了 checkerboard,图来自于[6]

替代 deconv 需要引入其他的上采样方法。上采样的方法除了 nearest upsample 和 bilinear upsample 等类型之外,还有一种不叫上采样,但是可以得到类似效果的操作:pixel shuffle[7]。它只改变了数据的摆放位置,(N, C*k^2, H, W) -> (N, C, kH, kW))

这也是实现图像从小到大的方法,但是实验中我发现没有效果,可能是因为 channel 数太少。注意到 channel 数是增长是很快的,为了减少显存,减少卷积层数或者减少第一个卷积层的 channel 数都会影响网络的表达能力。

也就是说,目前比较好的解决方案还是使用 nearest upsample + conv 替代 deconv

参考文献

1. Wang T C, Liu M Y, Zhu J Y, et al. High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs[J]. arXiv preprint arXiv:1711.11585, 2017.

2. Karras T, Aila T, Laine S, et al. Progressive growing of gans for improved quality, stability, and variation[J]. arXiv preprint arXiv:1710.10196, 2017.

3. Zhu J Y, Zhang R, Pathak D, et al. Multimodal Image-to-Image Translation by Enforcing Bi-Cycle Consistency[C]//Advances in Neural Information Processing Systems. 2017: 465-476.

备注:文章发表时是这个名字,但是后来改名了,找原文请搜 Toward Multimodal Image-to-Image Translation

4. Zhou S, Xiao T, Yang Y, et al. GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data[J]. arXiv preprint arXiv:1705.04932, 2017.

5. Xiao T, Hong J, Ma J. DNA-GAN: Learning Disentangled Representations from Multi-Attribute Images[J]. arXiv preprint arXiv:1711.05415, 2017.

6. https://distill.pub/2016/deconv-checkerboard

7. Shi W, Caballero J, Huszár F, et al. Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 1874-1883.

理论
暂无评论
暂无评论~
返回顶部