贴个文章,记录学习历程
http://www.sohu.com/a/169212360_473283

本文介绍深度学习方法在图像翻译领域的应用,通过实现一个编码解码“图像翻译机”进行图像的清晰化处理,展示深度学习应用在图像翻译领域的效果。

近年来深度学习在图像处理、音频处理以及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数据集很小,我们的模型出现了过拟合现像)。

  1. CycleGAN

article: https://arxiv.org/pdf/1703.10593.pdf repo:https://github.com/hardikbansal/CycleGAN

基础模型以及pix2pix模型要求配对的训练样本,但是实际上常常很难找到大量的此类样本,CycleGAN的作者提出了另一种GAN变种, 主要贡献在于发挥无监督学习的作用,只要提供两类数据集即可,不要求严格配对(比如普通马转斑马)。模型较复杂(需要用到2个判别器和两个生成器),感兴趣的可参阅https://hardikbansal.github.io/CycleGANBlog/

  1. DualGAN

Article: https://arxiv.org/abs/1704.02510

把对偶学习思想和GAN结合起来,思路和上面的CycleGAN有点类似,也用于解决训练样本不足的问题,用到两套GAN,一套GAN生成的图像作为另一套GAN的输入网络结构如下。

总结

总的来说,使用神经网络进行图像翻译,简单高效,结合GAN网络,只要较少的训练样本就可以让生成图像非常逼真,大家可以尝试在更多图像对偶场景下应用图像翻译的思路,发挥深度学习的威力。

GAN网络图像翻译机:图像复原、模糊变清晰、素描变彩图相关推荐

  1. 综述:基于GAN的图像翻译模型盘点

    作者丨薛洁婷 学校丨北京交通大学硕士生 研究方向丨图像翻译 图像翻译(Image translation)是将一个物体的图像表征转换为该物体的另一种图像表征,也就是找到一个函数能让 A 域图像映射到 ...

  2. GAN做图像翻译的一点总结

    作者丨洪佳鹏 学校丨北京大学 研究方向丨生成式对抗网络 本文经授权转载自公众号「学术兴趣小组」. 如今,随着 GAN 在生成清晰图像(sharp images)上的成功,GAN 在图像翻译任务上的方法 ...

  3. 【图像翻译GAN】我家那只蠢猫更像狗子还是更像虎哥?让AI模型来看看

    前言 当忠诚的狗狗与凶猛的大老虎进行身份交换 老虎看起来也并没有那么凶残 甚至多了几分可爱 当可爱的猫咪与大老虎发生变换 猫猫的眼神里也多了几分坚定 而且充满了凶猛的气息 这是什么神仙操作? 它叫图像 ...

  4. 【阿里云课程】图像翻译GAN结构与应用

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中的一节,介绍如下: 图像翻译GAN结构与应用 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生 ...

  5. GAN眼中的图像翻译(附神奇歌单)

    这是一篇总结文,总结我看过的几篇用GAN做图像翻译的文章的"套路". 首先,什么是图像翻译? 为了说清楚这个问题,下面我给出一个不严谨的形式化定义.我们先来看两个概念.第一个概念是 ...

  6. CVPR 2019 开源论文 | 基于翻译向量的图像翻译

    作者丨薛洁婷 学校丨北京交通大学硕士生 研究方向丨图像翻译 图像翻译通常要解决两个问题:将原域图像翻译至目标域并且翻译后的图像和原域图像保持相似性.我们利用 GAN 可以很好的解决第一个问题,而针对第 ...

  7. 解读最早的草图-图像翻译工作SketchyGAN

    前言:虽然2018年之前的Pix2Pix GAN和CycleGAN把GAN在图像翻译这方面的天赋展现的淋漓尽致,在edge-to-image的任务上表现不错,但是在sketch-to-image的表现 ...

  8. GAN生成对抗网络-PIX2PIXGAN原理与基本实现-图像翻译09

    什么是pix2pix Gan 普通的GAN接收的G部分的输入是随机向量,输出是图像 :D部分接收的输入是图像(生成的或是真实的),输出是对或 者错.这样G和D联手就能输出真实的图像. 对于图像翻译任务 ...

  9. CVPR2017/图像翻译:Image-to-Image Translation with Conditional Adversarial Networks基于条件对抗网络的图像到图像的翻译

    CVPR2017/图像翻译:Image-to-Image Translation with Conditional Adversarial Networks基于条件对抗网络的图像到图像的翻译 0.摘要 ...

最新文章

  1. CMRNet++:在激光雷达地图中与地图和相机无关的单目视觉定位
  2. aiohttp 高并发web服务_【Python入门】50.异步IO之 asyncio实现异步操作
  3. 【程序员面试宝典】强制类型转换之面试例题2
  4. grub2的配置文件grub.cfg详解
  5. TEAM WORK 認清自己的角色
  6. Java.lang.IllegalStateException Activity has been destroyed
  7. STL:list用法详解
  8. 企业系统门户需要哪些模块_灵活用工平台SAAS系统有哪些功能模块
  9. SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
  10. 如何系统地自学python~知乎_经验分享 | 如何系统地自学 Python?
  11. 黑客新技术在ATM钻洞就让其吐钱
  12. ViewController的生命周期你真的懂了吗?
  13. 资深架构师自述:程序员的黄金奋斗时期是前5年
  14. web项目移动端在线预览(excel在线预览)
  15. CSS布局大全-案例
  16. html制作唐诗,Steve:HTML创始人来中国当教师 痴迷李白自称“唐诗”
  17. Excel 美化要点
  18. 华硕冰刃4不显示,拆开检查2个故障,如不仔细分析上电又要烧板
  19. C语言005:常见例题
  20. 企业家普遍关注的问题是什么?

热门文章

  1. pycharm报错Traceback (most recent call last):
  2. Linux实战教学笔记14:用户管理初级(上)
  3. mac Charles抓包: 台式机无无线网卡用charles排查https请求,微信视频号视频下载, 修改路由表分别访问局域网和外网
  4. 祖玛游戏(记忆搜索+A*算法)
  5. canvas多彩条纹背景
  6. 三轮全向底盘实现SLAM导航功能
  7. 从零开始的C1认证:任务四:艰巨挑战
  8. ch05与游戏世界交互——鼠标打飞碟小游戏
  9. 电容三点式振荡器电路图
  10. Scrapy:boos直聘爬虫案例