1新智元专栏
作者:刘世强
【导读】本文介绍深度学习方法在图像翻译领域的应用,通过实现一个编码解码“图像翻译机”进行图像的清晰化处理,展示深度学习应用在图像翻译领域的效果。
近年来深度学习在图像处理、音频处理以及NLP领域取得了令人瞩目的成绩,特别在图像处理领域,深度学习已然成为主流方法。本文介绍深度学习方法在图像翻译领域的应用,通过实现一个编码解码“图像翻译机”进行图像的清晰化处理,展示深度学习应用在图像翻译领域的效果。此外,由于神经网络能够自动进行特征工程,同一个模型,如果我们使用不同场景下的数据进行训练,便可适应不同的场景,真正实现了以不变应万变。在存在对偶关系的图像处理场景,不妨尝试一下“图像翻译机”方法,效果应该不会太差。最后我们介绍一下最近大热的生成对抗神经网络(GAN)在图像翻译的最新进展。
图像翻译,类似于语言翻译,是把一种图像转换为另一种图像,例如图像复原、把二维地图转换为三维地图、把模糊图像转换为清晰图像、把素描转化为彩图等等。在深度学习流行之前,进行图像翻译是一种state of art的工作,以图像复原为例,原来常使用滤波的方法,针对不同种类的退化图像,需要使用不同的滤波方案。而现在使用深度学习方法,只要训练数据足够多,方法简单粗暴但效果很好。下面这些图例都可以归为图像翻译的范围:
这里让我们构造一个简单的编码解码“图像翻译机”进行模糊图像的清晰化处理,项目地址:https://github.com/lsqpku/img2img。note: 本项目中的一部分代码来自于DCGAN项目(https://github.com/Newmu/dcgan_code)。
本文构造的“图像翻译机”参考了自编码神经网络的思想,自编码神经网络是一种无监督学习算法,通过编码-解码过程,使得输出尽量和输入相等,因此可以把自编码神经网络看作是一个恒等函数,关于自编码神经网络可参考斯坦福大学的教学资料http://deeplearning.stanford.edu/wiki/index.php/Autoencoders_and_Sparsity。我们把GAN中discriminator网络结构和generator网络结构重新组合起来,把discriminator改造为encoder,把generator改造为decoder,这样就建一个简单的图像翻译网络,网络结构如下:
(作为示例项目,为减少计算量和过拟合,在网络结构中心并没有增加全连接的bottleneck层)其中encoder网络结构的tensorflow代码是:
其中卷积层后面挂着batch norm层进行正则化,卷积层激活函数是leaky relu。
generator网络结构tensorflow代码是:
其中卷积层后面挂着batch norm层进行正则化,激活函数是relu,最后进行了tanh激活。
这一结构类似于自编码神经网络,不同的是,在训练这个翻译网络的时候,输入和输出图像属于不同的域。例如在训练一个模糊图像清晰化的神经网络时,输入的训练样本是模糊图像,输出是清晰化后的图像,输出图像要尽量和对应的清晰图像接近,因此训练样本是模糊图像加对应的清晰图像。
示意图,输入模糊图像,输出清晰图像:
对于损失函数,我们简单地使用了输出图像和原图像的L2 loss作为损失函数。
self.loss = tf.nn.l2_loss(self.G - inputs)
我们使用了wiki 人脸数据(https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/)进行训练,删除原始数据集中的黑白图片,并把人脸按照性别分开,本项目使用男性人脸数据进行训练。此外,为了得到模糊图像,我们分别对原始图像进行了高斯模糊、随机高斯模糊以及先缩小再放大到原尺寸的resize模糊,模糊图像和原始图像一一对应,这样就得到一大批对偶的模糊-清晰图像训练集(超过2万张图片)。理论上我们可以使用任何图片数据集进行训练和测试,但是需要注意训练数据的样本量,对于上述的模型,当图片数量不超过1000时,会导致明显的过拟合,建议训练样本在上万张以上。对于测试数据,我们使用了男性人脸、女性人脸、甚至建筑物进行测试。
前面第一副图像以及下图都是使用该神经网络对男性测试样本进行的清晰化处理,从处理效果看,虽然并不完美,但清晰化程度已大大提高(从左到右:原图像、模糊化后的图像和通过模型清晰化的图像)。
那么使用男性人脸训练的模型对女性测试样本进行清晰化处理效果如何呢?下图是女性测试样本的处理效果(同样对女性样本进行高斯模糊),和男性处理效果差不多(从左到右:原图像、模糊化后的图像和通过模型清晰化的图像)。
开一下脑洞,对非人脸样本的处理效果如何?下图是对一些非人脸图片的测试效果(同样是先进行了高斯模糊),发现效果也是比较好的,但是色系发生了变化,从冷色调转变为人脸色调(从左到右:原图像、模糊化后的图像和通过模型清晰化的图像)。
把上图转为灰度图像,清晰化效果看起来更明显一些(从左到右:原图像、模糊化后的图像和通过模型清晰化的图像):
然而,高斯模糊只是模糊方法的一种,使用高斯模糊图像进行训练的模型是否适用于其他模糊方案(例如先resize原图像的1/16,再resize回原尺寸)?下图是对resize模糊方案处理过的测试样本的测试效果(左图为对高斯模糊图像进行清晰化后的效果,右图为对resize模糊图像进行清晰化后的效果)。
可以看出使用高斯模糊图像训练的模型在处理resize模糊图像效果变差,但这是可以解释的,深度学习本质上还是一种模式识别,使用高斯模糊的训练样本,模型会找到高斯模糊的模式。为了使得模型也能够处理resize模糊图像,我们可以把两种样本都作为训练样本进行训练,试验表明对两种情况的清晰化都会比较好,这就是深度神经网络的强大之处,模型的capacity可以很大,通过增加测试样本和模型规模,一个模型可以处理更复杂的情况。
上面的模型只是一种神经网络简单的应用,由于模型的损失函数是简单的L2-loss,因此会造成图像模糊化的效果。为了使图像变得更加真实并减少对训练样本量的依赖,有人使用GAN进行图像翻译,这里介绍几个比较不错的案例:
1. pix2pix
article: https://arxiv.org/abs/1611.07004
repo:torch版本https://github.com/phillipi/pix2pix;
tensorflow版本:https://github.com/affinelayer/pix2pix-tensorflow)
这篇文章的创新之处在于两点:一是generator的损失函数除了判别真伪以外,加入了L1损失;另一个技巧是在判别真伪时,不是在整个图像范围内判别,而是把图片按patch进行判别,作者称之为patchGAN。经过对比测试发现,在人脸数据上这个模型的效果和上面的基础模型差别不大,但是在facades和citycapes等数据集上,效果看起来要更真实(由于facades和citycapes数据集很小,我们的模型出现了过拟合现像)。
2. CycleGAN
article: https://arxiv.org/pdf/1703.10593.pdf repo:https://github.com/hardikbansal/CycleGAN
基础模型以及pix2pix模型要求配对的训练样本,但是实际上常常很难找到大量的此类样本,CycleGAN的作者提出了另一种GAN变种, 主要贡献在于发挥无监督学习的作用,只要提供两类数据集即可,不要求严格配对(比如普通马转斑马)。模型较复杂(需要用到2个判别器和两个生成器),感兴趣的可参阅https://hardikbansal.github.io/CycleGANBlog/
3. DualGAN
Article: https://arxiv.org/abs/1704.02510
把对偶学习思想和GAN结合起来,思路和上面的CycleGAN有点类似,也用于解决训练样本不足的问题,用到两套GAN,一套GAN生成的图像作为另一套GAN的输入网络结构如下。
总的来说,使用神经网络进行图像翻译,简单高效,结合GAN网络,只要较少的训练样本就可以让生成图像非常逼真,大家可以尝试在更多图像对偶场景下应用图像翻译的思路,发挥深度学习的威力。
☞ 【干货】可能是近期最好玩的深度学习模型了:CycleGAN的原理与实验详解
☞ 【学界】牛津大学ICCV 2017 Workshop论文:利用GAN的单视角图片3D建模技术
☞ 【深度】Yann LeCun最新演讲再谈预测学习:记忆网络和对抗训练是很有前景的方向
☞ 【分享】三角兽首席科学家分享实录:基于对抗学习的生成式对话模型
☞ 【学界】清华朱军团队探索DNN内部架构,采用对抗性例子监督网络生成及错误
☞ 【几何图景】GAN的几何图景:样本空间的Morse流,与鉴别网络D为何不可能真正鉴别真假
☞ 【应用】生成式对抗网络GAN有哪些最新的发展,可以实际应用到哪些场景中?
☞ 【从头开始GAN】Goodfellow开山之作到DCGAN等变体
☞ 【智能自动化学科前沿讲习班第1期】上海交大倪冰冰副教授:面向图像序列的生成技术及应用初探
☞ 【智能自动化学科前沿讲习班第1期】University of Central Florida 的Guojun Qi:LS-GAN
☞ 【智能自动化学科前沿讲习班第1期】微软秦涛主管研究员:从单智能体学习到多智能体学习
☞ 【智能自动化学科前沿讲习班第1期】王坤峰副研究员:GAN与平行视觉
☞ 【原理】十个生成模型(GANs)的最佳案例和原理 | 代码+论文
☞ 【教程】经得住考验的「假图片」:用TensorFlow为神经网络生成对抗样本
☞ 【模型】基于深度学习的三大生成模型:VAE、GAN、GAN的变种模型
☞ 【大会】还记得Wasserstein GAN吗?不仅有Facebook参与,也果然被 ICML 接收
☞ 【学界】邢波团队提出contrast-GAN:实现生成式语义处理
☞ 【专栏】阿里SIGIR 2017论文:GAN在信息检索领域的应用
☞ 【学界】康奈尔大学说对抗样本出门会失效,被OpenAI怼回来了!
☞ 警惕人工智能系统中的木马、病毒 ——深度学习对抗样本简介
☞ 【生成图像】Facebook发布的LR-GAN如何生成图像?这里有一篇Pytorch教程
☞ 【智能自动化学科前沿讲习班第1期】国立台湾大学(位于中国台北)李宏毅教授:Anime Face Generation
☞ 【变狗为猫】伯克利图像迁移cycleGAN,猫狗互换效果感人
☞ 【论文】对抗样本到底会不会对无人驾驶目标检测产生干扰?又有人发文质疑了
☞【智能自动化学科前沿讲习班第1期】王飞跃教授:生成式对抗网络GAN的研究进展与展望
☞【专栏】基于对抗学习的生成式对话模型的坚实第一步 :始于直观思维的曲折探索
☞ 【重磅】平行将成为一种常态:从SimGAN获得CVPR 2017最佳论文奖说起
☞ 【最新】OpenAI:3段视频演示无人驾驶目标检测强大的对抗性样本!
☞ 【论文】CVPR 2017最佳论文出炉,DenseNet和苹果首篇论文获奖
☞ 【深度学习】解析深度学习的局限性与未来,谷歌Keras之父「连发两文」发人深省
☞ 苹果重磅推出AI技术博客,CVPR合成逼真照片论文打响第一枪
☞ 【Ian Goodfellow 五问】GAN、深度学习,如何与谷歌竞争
☞ 【巨头升级寡头】AI产业数据称王,GAN和迁移学习能否突围BAT垄断?
☞ 【高大上的DL】BEGAN: Boundary Equilibrium GAN
☞ 【最详尽的GAN介绍】王飞跃等:生成式对抗网络 GAN 的研究进展与展望
☞ 【最全GAN变体列表】Ian Goodfellow推荐:GAN动物园
☞ 【DCGAN】深度卷积生成对抗网络的无监督学习,补全人脸合成图像匹敌真实照片
☞ 【开源】收敛速度更快更稳定的Wasserstein GAN(WGAN)
☞ 【Valse 2017】生成对抗网络(GAN)研究年度进展评述
☞ 【开源】谷歌新推BEGAN模型用于人脸数据集:效果惊人!
☞ 【深度】Ian Goodfellow AIWTB开发者大会演讲:对抗样本与差分隐私
☞ 论文引介 | StackGAN: Stacked Generative Adversarial Networks
☞ 【纵览】从自编码器到生成对抗网络:一文纵览无监督学习研究现状
☞ 【论文解析】Ian Goodfellow 生成对抗网络GAN论文解析
☞ 【推荐】条条大路通罗马LS-GAN:把GAN建立在Lipschitz密度上
☞【Geometric GAN】引入线性分类器SVM的Geometric GAN
☞ 【GAN for NLP】PaperWeekly 第二十四期 --- GAN for NLP
☞ 【Demo】GAN学习指南:从原理入门到制作生成Demo
☞ 【学界】伯克利与OpenAI整合强化学习与GAN:让智能体学习自动发现目标
☞ 【人物 】Ian Goodfellow亲述GAN简史:人工智能不能理解它无法创造的东西
☞ 【DCGAN】DCGAN:深度卷积生成对抗网络的无监督学习,补全人脸合成图像匹敌真实照片
☞ 带你理解CycleGAN,并用TensorFlow轻松实现
☞ PaperWeekly 第39期 | 从PM到GAN - LSTM之父Schmidhuber横跨22年的怨念
☞ 【CycleGAN】加州大学开源图像处理工具CycleGAN
☞ 【SIGIR2017满分论文】IRGAN:大一统信息检索模型的博弈竞争
☞ 【贝叶斯GAN】贝叶斯生成对抗网络(GAN):当下性能最好的端到端半监督/无监督学习
☞ 【贝叶斯GAN】贝叶斯生成对抗网络(GAN):当下性能最好的端到端半监督/无监督学习
☞ 【GAN X NLP】自然语言对抗生成:加拿大研究员使用GAN生成中国古诗词
☞ ICLR 2017 | GAN Missing Modes 和 GAN
☞ 【学界】CMU新研究试图统一深度生成模型:搭建GAN和VAE之间的桥梁
☞ 【专栏】大漠孤烟,长河落日:面向景深结构的风景照生成技术
☞ 【开发】最简单易懂的 GAN 教程:从理论到实践(附代码)
☞ 【论文访谈】求同存异,共创双赢 - 基于对抗网络的利用不同分词标准语料的中文分词方法
☞ 【LeCun论战Yoav】自然语言GAN惹争议:深度学习远离NLP?
☞ 【争论】从Yoav Goldberg与Yann LeCun争论,看当今的深度学习、NLP与arXiv风气
☞ 【观点】Yoav Goldberg撰文再回应Yann LeCun:「深度学习这群人」不了解NLP(附各方评论)
☞ PaperWeekly 第41期 | 互怼的艺术:从零直达 WGAN-GP
☞ 【谷歌 GAN 生成人脸】对抗创造新艺术风格,128 像素扩展到 4000
☞ 【原理】只知道GAN你就OUT了——VAE背后的哲学思想及数学原理