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)的更多相关文章

  1. Generative Adversarial Networks overview(2)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...

  2. Generative Adversarial Networks overview(1)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...

  3. Generative Adversarial Networks overview(4)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章主要介绍Gan的应用篇,3,主要介绍图像应用,4, 主要介绍文本以及医药化学其他领域应用 原理篇请看 ...

  4. 生成对抗网络(Generative Adversarial Networks,GAN)初探

    1. 从纳什均衡(Nash equilibrium)说起 我们先来看看纳什均衡的经济学定义: 所谓纳什均衡,指的是参与人的这样一种策略组合,在该策略组合上,任何参与人单独改变策略都不会得到好处.换句话 ...

  5. 生成对抗网络(Generative Adversarial Networks, GAN)

      生成对抗网络(Generative Adversarial Networks, GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的学习方法之一.   GAN 主要包括了两个部分,即 ...

  6. 论文解读(GAN)《Generative Adversarial Networks》

    Paper Information Title:<Generative Adversarial Networks>Authors:Ian J. Goodfellow, Jean Pouge ...

  7. (转)Introductory guide to Generative Adversarial Networks (GANs) and their promise!

    Introductory guide to Generative Adversarial Networks (GANs) and their promise! Introduction Neural ...

  8. 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks

    Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...

  9. 《Self-Attention Generative Adversarial Networks》里的注意力计算

    前天看了 criss-cross 里的注意力模型  仔细理解了  在: https://www.cnblogs.com/yjphhw/p/10750797.html 今天又看了一个注意力模型 < ...

随机推荐

  1. Lab_1:练习5——实现函数调用堆栈跟踪函数

    题目:实现函数调用堆栈跟踪函数 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记录的返回地址.如 ...

  2. 微信公众号 --- 获取access_token

    获取access_token 在左侧菜单栏中也可以找到 可以一步步的进行设置  ,  身份验证的时候要 注意:密码是你创建微信公众号的密码 往一步步的执行就可以了 接下来就是获取ip 白名单,进行设置 ...

  3. SpringBoot使用@ServerEndpoint无法依赖注入问题解决(WebSocket)

    如上两图所示,在WebSocket中我想使用Redis.把自己编写的RedisUtil使用@Autowired自动注入到当前类. 在运行时,出现异常:java.lang.NullPointExcept ...

  4. scratch教程:学做控制类积木

    少儿编程中scratch很容易被小孩所接受,不管是从外观还是教程中,都符合少儿的兴趣,为此现在只要是开少儿编程课都会有scratch课程,今天娜娜姐小码王scratch培训机构就为大家分享,scrat ...

  5. flask异常处理:abort、errorhandler、app_errorhandler,封装全局异常处理

    目录 1. abort() 1.1 使用方式一:传递一个错误码 1.2 使用方式二:传递一个json格式字符串 1.3 使用方式三:传递一个响应体 2. errorhandler 2.1 简单使用: ...

  6. gitblit搭建

    gitblit 1.8.0  + java7 下载安装java7 https://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-windows- ...

  7. 1、VUE介绍

    1.VUE简介 最近一段时间,Web前端领域出现了很多MVVM框架技术,如AngularJS.React,VUE.js等等. Vue.js借鉴了AngularJS的设计理念,也吸取了React和Ang ...

  8. 整理下log4net日志

    今天整理了下log4net日志,记录一下... 日志是一个系统排错的重要组成,有在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net.NLog.CommonLogg ...

  9. 2019 荔枝java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.荔枝等公司offer,岗位是Java后端开发,因为发展原因最终选择去了荔枝,入职一年时间了,也成为了面试官,之 ...

  10. jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载

    jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载 一丶jQuery动画 show,hide, ...