Generative Adversarial Networks overview(3)
Libo1575899134@outlook.com
Libo
(原创文章,转发请注明作者)
本文章主要介绍Gan的应用篇,3,主要介绍图像应用,4, 主要介绍文本以及医药化学其他领域应用
原理篇请看上两篇
https://www.cnblogs.com/Libo-Master/p/11167804.html
https://www.cnblogs.com/Libo-Master/p/11169198.html
-----------------------------------------------------------------------------------
今天主要介绍Gan的应用,主要涵盖六大部分:
有的不直接是Gan的应用,而是对抗训练的应用,从图像到文本,延申到医药领域的一些应用。
简单回顾下Gan由两部分组成生成器的G和判别器的D,他们两个的目标是相反的,生成器尽量生成真样本,判别器尽量判别真样本和生成器的生成样本。比较好的比喻,就是警察和假币制造商,在对抗过程中双方都要不断的提高造假和鉴别能力,最后达到一种平衡。
从数学上就可以看作一种min-max的博弈。噪音向量通过神经网络生成器以后生成假样本,我们有一对假样本,同时还有一些真样本,从两类样本中做一个伯努利的采样,给到判别器去判定是真样本还是假样本。
如果从数学上来看,目标函数分成两部分,判别器识别真样本为真,假样本为假的假的目标。
判别器的目标是最大化,真判别为真的概率,假的为假的概率。生成器的目标刚好相反。
第一部分的应用,是传统的图像生成和图像的修改、操作,这里只介绍最新的一些方法
Plug and Play Generative Networks , 生成样本比较丰富,真实度也比较高,火山的不同状态,以及在不同天气下的状态。
BE Gan 最google最近的工作,变形度很低,丰富的人种,多样性,
下面展示了通过L参数控制多样性,0.7显示了更丰富的样本,0.3降低了丰富度。
18年三月份,改进的W-Gans,收敛度和逼真程度都提高了很多,有量化的指标。但是放大来看不如人脸的效果好,主要是因为卧室的背景比较复杂。
这个应用第一个落地在淘宝的人脸认证。看起来很真,但是像素不高,很容易过人脸检测
第二个领域也是在图像生成的,但是不是从图像生成图像。而是从给定的描述生成图片(比如生成白色翅膀的鸟)画的效果比鸟的好,是因为鸟的背景比较复杂
这种模型的创新在于,对于真假程度的判定,提出了Matching-aware的判别器,需要考虑图片real,但是text不对的时候,也要捕捉进来。
前面的文章适用于背景比较简单,前景比较集中生成效果的是最好的,是因为Gan有比较好的捕捉能力会把前景和背景分开建模,所以当分开刻画这两者的时候 效果会变得更好,强行只先生成轮廓,第二步填充细节,下面这篇stack-Gan的创新在于此,第一步先生成小的图片,细节不够完美,轮廓和背景色块已经出来了,第二步再把细节和颜色的限制加进去。
下面可以看到可以看到花的效果非常好。
上面说的是图像生成,下面说一下图像编辑/修改
由左边矮帮的鞋生成右边高帮的鞋,GVM的工作重点是原始的Gan生成图片比较模糊,生成的边缘毛躁,纹理不清晰,所以先把原始鞋的表面的纹路扒下来,贴到最终生成鞋上面,但是问题在于形状已经不一样了
方法就是捕捉整个变化过程的流程,下面的变换过程在隐空间是一步一步变换的并不是一步到位的,把这个一步一步的变换捕捉过来之后,可以形成光场一样的东西
通过光场做出来以后,可以得到一步一步的隐射,在贴片的时候只需要按照这个光场变换信息一步一步贴回去就行了。所以这篇GVM的贡献在于把光场的限制加了进去,做了这个小改变容易控制,同时把纹理和形状拆分成了两步,先保证生成出我们想要的形状,再通过光场的限制再把纹理加上去。
GVM有个比较有意思的应用,就是说通过几笔修改就可以把晴天的山变成雪山,画几笔白线条Gan就会把它融合进来,等等
接下来的工作是图像转换,有两类图像,他们之间是由一定的对应关系的,比如分割图到实物图,也可以是黑夜到白天,也可以是线条图到上色图。只要在pair里的变化都被叫做图像转换/翻译,判别器需要判定的不是当前这组图片是不是真,而是当前这组翻译是不是真,比如给kitty上色,判别器需要判定的是一组图片而不是一个图片
下面的应用是分割图,生成了实景图。3D谷歌地图可以转换成平面图,黑白到上色,线条上色。下面就是更多白天到黑夜的生成的效果。
图像转换中非常重要的工作就是auto painting,很多人的手稿有线条不封闭的问题,需要有很多细节上的处理,下面的图片展示了不仅体现了上色,而且体现了上色中的阴影,让图片更加的立体感
还是图像转换这个工作,之前考虑的是pair输入给判别器,训练中一定要有pair的样本,对样本的标注要求很大,后面就出现了三篇工作,思想非常相似,先让它映射过去,再让它隐射回来,自我形成pair,并不需要有这样的标注,而生成的东西就是pair的一部分,下图组成的CycleLoss 可以实现没有pair的训练
第一幅图是马变斑马,虽然马和斑马身形不是很一致,但效果已经很好了,同时可以返回名印象派画跟真实场景的转换,夏天变冬天
下图实现了不同画作的转变,基于同一个风景不同的派系。
下面实现了不同物种的转换,马变斑马,苹果变橘子,作者也说了目前还局限于外形比较相似的情况,比如橘子变成香蕉比较困难,也是他们现在正在解决的问题。
下面是有人基于Chainer 做的一个自动上色模型,网址在下面。
(https://paintschainer.preferred.tech/index_en.html)
还可以给一些指示,比如希望头发是什么颜色的。否则就会基于经验。
下面是deepcolor 的一些效果图
线条到猫的转换
超分辨率的应用:SR
SR在类似于天眼还原地清晰度的人脸信息可以提供帮助,甚至与说是玻璃的反光图像都可以把人捕捉出来。
(https://www.youtube.com/watch?time_continue=67&v=LhF_56SxrGk)
下面是一些SR的网络模型。
下面可以通过一些细节图对比不同的方法。
下图展示的是应用在人脸中的效果。但是对于侧脸,角度比较奇葩的还是比较困难。
还有一个应用就是在天文图像的处理,由于光圈的限制望远设备的限制,提高清晰度。
第二部分主要讲照片的编辑:
抠图可以通过Gan(pix2pix)一步解决。视频抠图:
图像的融合,很多时候,很多时候希望把自己P到明星身边去,直接P的话可能很差劲,如果对于拷贝 粘贴的结果之上做一定的融合,加了很多的约束的GP-Gan
还有人做基于侧脸还原正脸,侧脸的效果不是很好,对于疑犯追踪,哪怕拍到的只是一个侧脸,可能够追踪到他的正脸
接下来就是人脸合成的问题:可以把两个人脸的不同部位进行交换,并且看起来效果很逼真。比如把笑容交换到不笑的人脸上。
判别器去判别的时候需要把两方的映射都考虑进去。
笑容属于一种feature,此外还有肤色,发型 都可以作为交换的特征。
(https://devblogs.nvidia.com/parallelforall/photo-editing-generative-adversarial-networks-2/) 下面的数据集基于人脸做了很多标签,眉毛,眉形,发色,人种,等等很多标签。我们就可以做类似的加减法,比如戴着眼镜的人,减去人,加到得到一个眼镜,把这个眼镜加到另一个人的脸上,17年初的工作 效果一般。
(https://devblogs.nvidia.com/parallelforall/photo-editing-generative-adversarial-networks-2/)可以把不同的人种的脸进行聚类,下面也有Demo 可以通过滑动条控制属性的强弱。
右边通过滑动条来控制
下面是通过生成网络学出来的几位大佬的属性,以及属性值的强弱
有了这项技术可以想象人脸50年后的样子。“人脸老化”。
这项工作重点的思想是,并不是在生成人脸之后才把对抗过程加进去的,并不是判断已经生成的人脸是否更像人脸,而是D是针对与Encoder 来加的,普遍认为把判别器加到这里可以拓展到文本领域,文本领域如果不是直接把特征decode出来的话,是可以直接在连续空间处理这个事情的,解决了离散序列不能求导,不能反向传播的问题。
下面是百度的公益项目
下面是一个图像填洞。图像有一定的遮挡,也可以还原出来。
遮挡补全技术
在室内分割场景,沙发被遮挡了很大一部分,可以通过Gan把原始的沙发做补全。
下面是视频相关的应用
视频中对行人运功轨迹的预测,方向和动作,去生成一些视频。利用了一些特征不变性,视频中人是不变的,动作是变的。如果把这两部分拆开,就可以学到内容不变的同时,再去做关于动作上的预测,下面显示了在pose 加了个判别器。
有了这个知识以后,就可以去做动作建模,姿态预估。
下面是3D减模,有个2D的平面面图可以把3D的整个建模出来
下面是抽象智力题的学习:
这个是生成对的答案:
下面是生成不对的答案:
图像部分完
------------------------------------------------------------------------------------------------
Generative Adversarial Networks overview(3)的更多相关文章
- Generative Adversarial Networks overview(2)
Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...
- Generative Adversarial Networks overview(1)
Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...
- Generative Adversarial Networks overview(4)
Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章主要介绍Gan的应用篇,3,主要介绍图像应用,4, 主要介绍文本以及医药化学其他领域应用 原理篇请看 ...
- 生成对抗网络(Generative Adversarial Networks,GAN)初探
1. 从纳什均衡(Nash equilibrium)说起 我们先来看看纳什均衡的经济学定义: 所谓纳什均衡,指的是参与人的这样一种策略组合,在该策略组合上,任何参与人单独改变策略都不会得到好处.换句话 ...
- 生成对抗网络(Generative Adversarial Networks, GAN)
生成对抗网络(Generative Adversarial Networks, GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的学习方法之一. GAN 主要包括了两个部分,即 ...
- 论文解读(GAN)《Generative Adversarial Networks》
Paper Information Title:<Generative Adversarial Networks>Authors:Ian J. Goodfellow, Jean Pouge ...
- (转)Introductory guide to Generative Adversarial Networks (GANs) and their promise!
Introductory guide to Generative Adversarial Networks (GANs) and their promise! Introduction Neural ...
- 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks
Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...
- 《Self-Attention Generative Adversarial Networks》里的注意力计算
前天看了 criss-cross 里的注意力模型 仔细理解了 在: https://www.cnblogs.com/yjphhw/p/10750797.html 今天又看了一个注意力模型 < ...
随机推荐
- Lab_1:练习5——实现函数调用堆栈跟踪函数
题目:实现函数调用堆栈跟踪函数 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记录的返回地址.如 ...
- 微信公众号 --- 获取access_token
获取access_token 在左侧菜单栏中也可以找到 可以一步步的进行设置 , 身份验证的时候要 注意:密码是你创建微信公众号的密码 往一步步的执行就可以了 接下来就是获取ip 白名单,进行设置 ...
- SpringBoot使用@ServerEndpoint无法依赖注入问题解决(WebSocket)
如上两图所示,在WebSocket中我想使用Redis.把自己编写的RedisUtil使用@Autowired自动注入到当前类. 在运行时,出现异常:java.lang.NullPointExcept ...
- scratch教程:学做控制类积木
少儿编程中scratch很容易被小孩所接受,不管是从外观还是教程中,都符合少儿的兴趣,为此现在只要是开少儿编程课都会有scratch课程,今天娜娜姐小码王scratch培训机构就为大家分享,scrat ...
- flask异常处理:abort、errorhandler、app_errorhandler,封装全局异常处理
目录 1. abort() 1.1 使用方式一:传递一个错误码 1.2 使用方式二:传递一个json格式字符串 1.3 使用方式三:传递一个响应体 2. errorhandler 2.1 简单使用: ...
- gitblit搭建
gitblit 1.8.0 + java7 下载安装java7 https://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-windows- ...
- 1、VUE介绍
1.VUE简介 最近一段时间,Web前端领域出现了很多MVVM框架技术,如AngularJS.React,VUE.js等等. Vue.js借鉴了AngularJS的设计理念,也吸取了React和Ang ...
- 整理下log4net日志
今天整理了下log4net日志,记录一下... 日志是一个系统排错的重要组成,有在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net.NLog.CommonLogg ...
- 2019 荔枝java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.荔枝等公司offer,岗位是Java后端开发,因为发展原因最终选择去了荔枝,入职一年时间了,也成为了面试官,之 ...
- jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载
jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载 一丶jQuery动画 show,hide, ...