雷锋网 AI科技评论按,本文转自知乎专栏学术兴趣小组 ,作者Gapeng ,雷锋网 AI科技评论获其授权转载。正文如下:
这是一篇总结文,总结我看过的几篇用GAN做图像翻译的文章的“套路”。
首先,什么是图像翻译?
为了说清楚这个问题,下面我给出一个不严谨的形式化定义。我们先来看两个概念。第一个概念是图像内容(content) ,它是图像的固有内容,是区分不同图像的依据。第二个概念是图像域(domain),域内的图像可以认为是图像内容被赋予了某些相同的属性。举个例子,我们看到一张猫的图片,图像内容就是那只特定的喵,如果我们给图像赋予彩色,就得到了现实中看到的喵;如果给那张图像赋予铅笔画属性,就得到了一只“铅笔喵”。喵~
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/cf30e66f349826cd0f6f402a709bb17e.jpg" data-caption="" data-rawwidth="1494" data-rawheight="723" class="origin_image zh-lightbox-thumb" width="1494" data-original="https://pic3.zhimg.com/v2-b0716d48d52da81441f7f544d461c116_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/cf30e66f349826cd0f6f402a709bb17e.jpg"/>
图像翻译是指图像内容从一个域 迁移到另一个域 ,可以看成是图像移除一个域的属性 ,然后赋予另一个域的属性 。我们用 和 来表示域 和域 的图像,图像翻译任务即可以定义为,寻找一个合适的变换 使得
当然,还有一种图像翻译,在翻译的时候会把图像内容也换掉,下面介绍的方法也适用于这种翻译,这种翻译除了研究图像属性的变化,还可以研究图像内容的变化,在这里就不做讨论了。
常见的GAN图像翻译方法
下面简单总结几种GAN的图像翻译方法。
简单来说,它就是cGAN。Generator的输入不再是noise,而是图像。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/0a2438e52e5219998bf55f47e6d4fa86.jpg" data-caption="" data-rawwidth="1748" data-rawheight="452" class="origin_image zh-lightbox-thumb" width="1748" data-original="https://pic3.zhimg.com/v2-6a79aa726941691102342b4ace04cdbe_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/0a2438e52e5219998bf55f47e6d4fa86.jpg"/>
要求图像翻译以后翻回来还是它自己,实现两个域图像的互转。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/7b593400334fea4d639e30b2f9d18fce.jpg" data-caption="" data-rawwidth="1912" data-rawheight="697" class="origin_image zh-lightbox-thumb" width="1912" data-original="https://pic1.zhimg.com/v2-2255d10c8a78c890e46da3638e76bb38_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/7b593400334fea4d639e30b2f9d18fce.jpg"/>
用一个encoder实现两个域的共性编码,通过特定域的decoder解码,实现图像翻译。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/4850679b526d6f517729a52702c8c347.jpg" data-caption="" data-rawwidth="2574" data-rawheight="998" class="origin_image zh-lightbox-thumb" width="2574" data-original="https://pic3.zhimg.com/v2-4db6e4214bc0eef684fdff5286d6c7fe_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/4850679b526d6f517729a52702c8c347.jpg"/>
用encoder编码图像的内容,通过喂给它不同的属性,得到内容的不同表达。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/91c087f65d1fcb4e40f320c1af33d316.jpg" data-caption="" data-rawwidth="1621" data-rawheight="820" class="origin_image zh-lightbox-thumb" width="1621" data-original="https://pic2.zhimg.com/v2-9cc785564dc5fd6f0862735339bc4dfd_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/91c087f65d1fcb4e40f320c1af33d316.jpg"/>
依靠cGAN喂给它不同属性得到不同表达的能力,学一个可逆的cGAN以实现图像到图像的翻译(传统的cGAN是编码+属性到图像的翻译)。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/0e61c6d2f88300052984fe3aca18b8be.jpg" data-caption="" data-rawwidth="2173" data-rawheight="755" class="origin_image zh-lightbox-thumb" width="2173" data-original="https://pic3.zhimg.com/v2-72ff0716207050b56088a5ada7e39e7e_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/0e61c6d2f88300052984fe3aca18b8be.jpg"/>
将图像编码成内容和属性,通过交换两张图的属性,实现属性的互转。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/5dcfc72b636f62246018c372a968d16d.jpg" data-caption="" data-rawwidth="2724" data-rawheight="1048" class="origin_image zh-lightbox-thumb" width="2724" data-original="https://pic1.zhimg.com/v2-68af7df041ddb9f4e29a5bcf8aa348f0_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/5dcfc72b636f62246018c372a968d16d.jpg"/>
这篇是做同个人不同年龄的翻译。依靠cGAN喂给它不同属性(年龄)得到不同年龄的图像的能力,学cGAN的逆变换以得到图像内容的编码,再通过人脸识别系统纠正编码,实现保id。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/f19d25b4ea86467101365722beaba451.jpg" data-caption="" data-rawwidth="2945" data-rawheight="811" class="origin_image zh-lightbox-thumb" width="2945" data-original="https://pic4.zhimg.com/v2-082e5182d4c622844ac324bb2b3cea63_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/f19d25b4ea86467101365722beaba451.jpg"/>
图像翻译方法的完备性
我认为一个图像翻译方法要取得成功,需要能够保证下面两个一致性(必要性):
此外,我们也似乎也可以认为,满足这两点的图像翻译方法是能work的(充分性)。
我把上述两点称为图像翻译方法的完备性,换句话说,只要一个方法具备了上述两个要求,它就应该能work。关于这个完备性的详细论述,我会在以后给出。
下面,我们来看一下上述几种方法是如何达成这两个一致性的。
内容一致性 我把它们实现内容一致性的手段列在下面的表格里了。
这里有两点需要指出。
其一,有两个方法(IcGAN和Face Age-cGAN)依靠cGAN的能力,学cGAN的逆映射来实现图像换属性,它们会有多个训练阶段,不是端到端训练的方法。而cGAN训练的好坏,以及逆映射的好坏对实验结果影响会比较大,经过几个阶段的训练,图像的内容损失会比较严重,实际中我们也可以观察到 IcGAN 的实验效果比较差。Face Age-cGAN通过引入人脸识别系统识别结果相同的约束,能够对内容的编码进行优化,可以起到一些缓解作用。
其二,DTN主要依靠TID loss来实现内容的一致性,而编码一般来说是有损的,编码相同只能在较大程度上保证内容相同。从DTN的emoji和人脸互转的实验我们也可以看出,emoji保id问题堪忧,参看下图。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/c87ef43becd6716b5b169f8bbad018ef.jpg" data-caption="" data-rawwidth="1536" data-rawheight="1792" class="origin_image zh-lightbox-thumb" width="1536" data-original="https://pic3.zhimg.com/v2-447603f2825345980f66046bcecd314e_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/c87ef43becd6716b5b169f8bbad018ef.jpg"/>
论域一致性 论域一致性是指,翻译后的图像得是论域内的图像,也就是说,得有目标论域的共有属性。用GAN实现的方法,很自然的一个实现论域一致性的方法就是,通过discriminator判断图像是否属于目标论域。
上述几种图像翻译的方法,它们实现论域一致性的手段可以分为两种,参见下表。
此外,可以看到,FaderNets实现两个一致性的方法都是剥离属性和内容,而实现剥离手段则是对抗训练。编码层面的对抗训练我认为博弈双方不是势均力敌,一方太容易赢得博弈,不难预料到它的训练会比较tricky,训练有效果应该不难达成,要想得到好的结果是比较难的。目前还没有看到能够完美复现的代码(20171013 Update:FaderNets目前能出效果,但是达不到文章那么好的清晰度,autoencoder重构效果还是偏差)。文章的效果太好,好得甚至让人怀疑。
Autumn is coming
这篇文章标题是Autumn is coming——GAN眼中的四季变化。然而通篇虽然只字不提人脸,但是参考文献做人脸的居多。为什么起这个标题呢,以前是想着把这些方法用到四季转换中去,跑些实验结果放在正文部分。嗯,实验还没做完......还是拖延症的问题,这是毕业论文的工作,距离开题还有段时间,捂脸......
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/647d7a90b9fc1c4098fb6bcb4e514b76.jpg" data-caption="" data-rawwidth="2499" data-rawheight="2085" class="origin_image zh-lightbox-thumb" width="2499" data-original="https://pic2.zhimg.com/v2-d854945c728bfb03bbf04e70e8bf3271_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/647d7a90b9fc1c4098fb6bcb4e514b76.jpg"/>
// 喂喂喂,autumn is comming,实验再不做就要winter is comming了!
最后的最后,放一个歌单,听说听这个歌单炼丹会更快哦。
<img src="https://static.leiphone.com/uploads/new/article/pic/201711/f001ec95e4e2f6698ca66e6ab32ae67b.jpg" data-caption="" data-rawwidth="1080" data-rawheight="4475" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic2.zhimg.com/v2-639edc5f94d431051ecce0cfc79da145_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201711/f001ec95e4e2f6698ca66e6ab32ae67b.jpg"/>
参考文献 Isola P, Zhu J Y, Zhou T, et al. Image-to-image translation with conditional adversarial networks[J]. arXiv preprint arXiv:1611.07004, 2016.
Zhu J Y, Park T, Isola P, et al. Unpaired image-to-image translation using cycle-consistent adversarial networks[J]. arXiv preprint arXiv:1703.10593, 2017.
Yi Z, Zhang H, Gong P T. DualGAN: Unsupervised Dual Learning for Image-to-Image Translation[J]. arXiv preprint arXiv:1704.02510, 2017.
Kim T, Cha M, Kim H, et al. Learning to discover cross-domain relations with generative adversarial networks[J]. arXiv preprint arXiv:1703.05192, 2017.
Taigman Y, Polyak A, Wolf L. Unsupervised cross-domain image generation[J]. arXiv preprint arXiv:1611.02200, 2016.
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.
Lample G, Zeghidour N, Usunier N, et al. Fader Networks: Manipulating Images by Sliding Attributes[J]. arXiv preprint arXiv:1706.00409, 2017.
Brock A, Lim T, Ritchie J M, et al. Neural photo editing with introspective adversarial networks[J]. arXiv preprint arXiv:1609.07093, 2016.
Antipov G, Baccouche M, Dugelay J L. Face Aging With Conditional Generative Adversarial Networks[J]. arXiv preprint arXiv:1702.01983, 2017.
Perarnau G, van de Weijer J, Raducanu B, et al. Invertible Conditional GANs for image editing[J]. arXiv preprint arXiv:1611.06355, 2016.
雷锋网 AI科技评论