前 言
GAN全称是Generative adversarial networks,中文是生成对抗网络,是一种生成式模型,由good fellow在14年提出,近四年来被AI研究者疯狂研(guan)究(shui),更有大神建立一个GAN zoo,收集了上百种不同的GAN:
https://github.com/hindupuravinash/the-gan-zoo
事实上随着GAN理论的不断完善,GAN逐渐展现出了自己非凡的魅力,在一些应用领域开始大放异彩,由此衍生了一些非常fancy的应用。本文对其中的一部分做一些汇总展示给读者,希望在枯燥的科研生活之余给读者一些消遣。
注:本文不牵涉复杂的公式说明,旨在用结果展示GAN的应用场景,文中包含大量的图片。
图像生成
前言里提到了GAN是一个生成模型,可以用来生成图像、音频等等,生成质量逐年增加,看下图:
从32x32分辨率生成都困难的GAN,到生成2K真假难辨高清分辨率图像的proGAN,GAN正在发挥着自己独特的优势,并且逐渐渗透到二次元领域。
上图是同济大学的一个工作,生成二次元软妹子。
不仅仅作用于图像,GAN用来生成3D目标和音乐上也是不含糊:
说到这里,就可能有一些疑问,图像生成除了养眼,究竟有什么用呢,事实上用处还是很广泛的,比如可以用来制作海报,自己用来生成一个高清美女图像作为海报主角,省了一大批广告费。
图像转换
图像转换或者说是图像翻译,是将图像转换为另一种形式的图像,与风格迁移稍有不同,这方面典型的工作是pixel-2-pixel
一般的GAN的生成器G输入是一个随机向量,输出的是图像,这里的生成器的输入是图像,输出的是转换后的图像。
感兴趣的可以玩一下pix2pix的demo,还是很有趣的:https://affinelayer.com/pixsrv/
说到这里,就需要提到cycle-GAN了,可以实现风景画和油画互变,马和斑马互相转换等domain transfer等任务,更多有意思的变化可以在论文主页上看到:https://junyanz.github.io/CycleGAN/,cycleGAN的主要贡献是提供了一种unpaired的图像翻译方法,这是pix2pix所做不到的:
除了cycleGAN还有一篇和其比较相似的论文,就是DiscoGAN,DiscoGAN在不需要label标记和图像pairing的情况下学习交叉domain之间的联系,比如它可以将包包的图像风格迁移到鞋子的图像上,效果上图:
事实上,理工科的可爱的研究员们可不会仅满足于此,他们更希望全世界充满笑容,于是用cycleGAN给冷酷大哥加上笑容,将人脸图像转换为卡通图像,类似之前很火的脸萌APP,这个工作见DTN
(https://arxiv.org/pdf/1611.02200.pdf)。
图像合成
图像合成这个任务是通过某种形式的图像描述创建新图像的过程。pix2pix和cycleGAN 都属于图像合成领域的一部分。图像合成也有一些典型的工作,并且有很nice的应用场景。
场景合成
首先,第一个场景合成,此部分在于如何给定部分显示场景的信息还原出真实的场景信息,比如根据分割图像还原出原始场景信息,刚好是图像分割的逆过程,据说英伟达在不断的开拓这个方向,试想一下,只要GAN还原的场景足够真实,完全可以模拟无人驾驶的路况场景,从而在实验室阶段就可以完成无人驾驶汽车的上路测试工作,很nice的一个应用,但是面对的问题就是如何生成高分辨率的和足够真实的图像,此部分工作可以见pix2pixHD。
人脸合成
人脸合成主要是根据一张人脸的图像,合成出不同角度的人脸图像,可以用做人脸对齐,姿态转换等辅助手段提高人脸识别的精度,典型的工作是中科院的TP-GAN,可以根据半边人脸生成整张人脸的前向图,对人脸识别任务有很大的辅助效果。
文本到图像的合成
这个方向是NLP与CV碰撞的结果,任务描述为:从给定的一段文字描述,生成一张和图像文字匹配的图像。比如:根据文字:一只黑色冠冕和黄色喙的白色的鸟,生成下面的这张图像;
类似的工作还有stack GAN和attn GAN:https://arxiv.org/abs/1711.10485,后者更是在细粒度的text-to-image上做了一番功夫。
风格迁移
效果看上去很nice,此部分的工作是:Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks,作者发明了一种马尔可夫GAN迁移图像的风格,算是不错的贡献了。
年龄变化
想不想知道自己20年后长什么样子呢,Age-cGAN可以告诉我们答案,只要有一张年轻时候的照片,就可以提前知道自己几十年之后的样子,还是蛮期待的,这个方向之前有朋友做过,生成了一张50岁的韩庚的样子,效果还不错。
图像超分辨率
图像超分辨率一直是一个很重要的研究课题,比较重要的是对天文图像和卫星图像做超分辨率,不管是在天文,军事还是其他方面,都有很重要的应用。在生活中,如果有标清的视频可以变为高清的视频,我相信很多人还是很乐意的,下图是超分之后的七龙珠和原版的七龙珠视频。
上述过程都是可逆的,既然可以增加图像的分辨率,那么同样可以减小图像的分辨率。既然都说到了图像超分辨率,那么就谈谈图像去马赛克的一些操作,知乎一位大佬集图像转化和超分辨率之大成,完成了对爱情动作片的添加和去除马赛克操作,详情请移步知乎:https://zhuanlan.zhihu.com/p/27199954,36k的高赞文章,相信可以从中学到一些知识。
图像域的转换
GAN很适合学习数据的分布(只要是数据是连续的,对于离散的文本数据效果不是很好),同时也能完成domain转换的任务,比如使用GAN完成domain的迁移,此部分有比较典型的工作,CVPR的oral论文StarGAN是其中一个。Pix2Pix模型解决了有Pair对数据的图像翻译问题;CycleGAN解决了Unpaired数据下的图像翻译问题。但无论是Pix2Pix还是CycleGAN,都是解决了一对一的问题,即一个domain到另一个domain的转换。StarGAN就是在多个domain之间进行转换的方法。可以做多个图像翻译任务,比如更换头发颜色,表情变化,年龄变换等等,文章公布了代码:https://github.com/yunjey/StarGAN。
另外一个比较有意思的domain转换的是穿衣搭配问题,详细工作可见PixelDTGAN: https://github.com/fxia22/PixelDTGAN PixelDTGAN是指像素级的domain 转换,输入的是一张复杂的图片,输出的是不包含背景的单纯的服饰的图像,下图中第一行是数据集中的例子,第二行是左图是输入图像,右图是输出的效果。
感觉这个工作反过来就可以做穿衣搭配问题了,之前有个工作是穿衣搭配的,还被iangood fellow转发在了twitter上,奈何现在找不到这个内容了。穿衣搭配也可以看为是conditioned image generation,不过更加复杂。
图像修复
GAN在图像修复(image inpainting)上绝对是大放异彩了,且看英伟达最新的研究成果(Image Inpainting for Irregular Holes Using Partial Convolutions),给定一张缺失的图像,修复出完整的图像,下面左图为待修复图像,右图为修复好的图像,这个方法是目前的state-of-art:
之前借助GAN做过一段时间的image inpainting,奈何实验结果的更新速度总比不上arxiv上inpainting论文的更新速度。
文本填空
GAN在图像领域建树颇多,但是在文本领域作用并不是很大,主要是NLP中的词的数据都是离散数据,GAN不适合学习离散的数据分布,但是并不意味着没法学,Google brain的团队发明了一个结合强化学习的MaskGAN,可以用作完型填空,具体任务是补全句子中的缺失部分。
不得不说,作者起名字也是很有水平,论文的标题竟然空了一个单词,使用下划线来代替,一般能这么给论文起名字的作者都是大佬,比如attention is all you need。
** 其他**
另外,有研究者们希望将GAN的学习方式和学习能力用在药学分子和材料学领域,用来生成药学分子结构和合成新材料配方,不得不说,这相当的有创意,如果真的能完成的话,那么AI将无所不能。
上文总结的GAN应用并不包含所有的工作,举得例子也很有限,另外有GAN用在视频预测,视频生成等领域的,在目标检测、行人识别、重定位上也有辅助作用,了解有限,不详细展开,读者有意可自行Google查询。
参考文献
[1]Towards the Automatic Anime Characters Creation with Generative Adversarial Networks
[2] https://arxiv.org/pdf/1710.10196.pdf
[3] http://papers.nips.cc/paper/6096-learning-a-probabilistic-latent-space-of-object-shapes-via-3d-generative-adversarial-modeling.pdf
[4] https://arxiv.org/pdf/1703.10847.pdf
[5]pix2pix https://affinelayer.com/pixsrv/
[6]CycleGAN https://arxiv.org/pdf/1703.10593.pdf
[7] DiscoGAN https://github.com/carpedm20/DiscoGAN-pytorch
[8] TPGAN https://arxiv.org/pdf/1704.04086.pdf
[9]pix2pix HD https://tcwang0509.github.io/pix2pixHD/
[10]stackGAN https://arxiv.org/pdf/1612.03242.pdf
[11] AttnGAN https://arxiv.org/abs/1711.10485
[12] DTN https://arxiv.org/pdf/1611.02200.pdf
[13] MGAN https://arxiv.org/pdf/1604.04382.pdf
[14]Age-cGAN https://arxiv.org/pdf/1702.01983.pdf
[15] StarGAN https://arxiv.org/abs/1711.09020
[16]image inpainting https://arxiv.org/abs/1804.07723
[17] MaskGAN https://arxiv.org/abs/1801.07736
个人技术博客:https://blog.csdn.net/qq_25737169
微信:TonyJeemy520 加个人微信拉你进机器学习、深度学习交流群,请备注 : 来自简书
QQ交流群:651616387 请备注 : 来自简书
微信公众号:机器学习算法工程师 ----二维码见下图
扫码关注微信号:机器学习算法工程师,更多干货分享, 或加个人微信,拉你进机器学习、深度学习交流群