百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

「实战」GAN网络图像翻译机:图像复原、模糊变清晰、素描变彩图

connygpt 2024-08-28 14:14 5 浏览

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网络,只要较少的训练样本就可以让生成图像非常逼真,大家可以尝试在更多图像对偶场景下应用图像翻译的思路,发挥深度学习的威力。

(本文作者是泰康保险集团数据信息中心刘世强)

点击阅读原文可查看职位详情,期待你的加入~

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...