【题外话:今天上课我做了一个关于DA-GAN技术的ppt演讲,写一点东西留念一下...】

转载请注明出处:https://www.cnblogs.com/GraceSkyer/p/9107471.html

 

DA-GAN技术是微软亚洲研究院新研发的一项技术,可能对今后的艺术创造模式产生巨大影响。

 前言

  首先,大家还记得微软小冰吗,目前最新的第五代拥有“高级感官”的小冰不仅会唱歌、讲故事、写文章,还能主动与人交往。除此之外,她还出版了人类首部人工智能灵思诗集《阳光失了玻璃窗》,这已体现其具有文字的创造力。

             

  我们知道,人工智能可以大致分为下图四个层次:

  从下往上依次是运算智能、感知智能、认知智能和创造智能。而正如前面举例的小冰,其创作的诗集就已经在文字方面体现了人工智能在创造能力上的发展。而我要介绍的DA-GAN技术,是微软亚洲研究院研发的一种让机器绘画创造成为可能的技术。

GAN(Generative Adversarial Nets)简介

   GAN(Generative Adversarial Nets)生成式对抗网络,启发自博弈论中的二人零和博弈(two-player game),GAN 模型中的两位博弈方分别由生成式模型(generative model)和判别式模型(discriminative model)充当。生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好;判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。

  简单说明GAN就比如:生成网络 G 好比假币制造团伙,专门制造假币,判别网络 D 好比警察,专门检测使用的货币是真币还是假币,G 的目标是想方设法生成和真币一样的货币,使得 D 判别不出来,D 的目标是想方设法检测出来 G 生成的假币。双方在训练中都极力优化自己的网络,从而形成竞争对抗,直到最后G可以以假乱真,D难以判定G是否为真时,目标就达成了。实际中,我们就可以用这个生成式的模型G来生成图片。

Deep Attention GAN(DA-GAN)简介

  但是,基于GAN展开的研究工作使得翻译图像的分布与目标集合的分布无法区分。这样的集合约束不能学习实例级别的对应关系(例如对象配置任务中对齐的语义部分)。这种限制常常导致误报(例如几何或语义伪像),并进一步导致模式崩溃问题。为了解决上述问题,微软研究院提出了一个由Deep Attention GAN(DA-GAN)提供的用于实例级图像转换的新框架。

  这样的设计使DA-GAN能够将翻译两个集合的样本任务分解成翻译高度结构化的潜在空间中的实例。具体来说,我们共同学习一个深入关注的编码器,通过参加学习的实例对可以发现实例级别的对应关系。因此,可以在集合级别和实例级别上利用约束条件。

DA-GAN实现效果

  我们首先来看一下DA-GAN实现的效果是什么样的。当我们用文字描述“我想要一只腹部、胸部为白色、头顶灰色、翅膀有白色翅斑的小鸟”时,计算机便可以通过DA-GAN在几毫秒的时间内生成多个与文字描述高度吻合的形象,如下图所示。这些由计算机生成的鸟 完全符合人们期待的鸟的形象,不过它有可能是真实存在于现实世界中的,也有可能是系统根据鸟类特征和文字描述“创造”出来的一只“鸟”。

技术核心部分

  DA-GAN在技术上最大的创新是 “隐空间”(latent space),这是它最核心的部分。

   与传统的数据训练模式需要pair data(数据对)不同,DA-GAN不需要将文本与真实的鸟一一对应,而是将原始图片分割成不同的部分(暂称该部分的样本为T),例如头部、身体、尾巴、姿势等,不同的部分分别投射到一个“隐空间”(暂称该部分的生成样本为T’),然后通过大量的图片训练,去验证T-T’对应的精确程度,也就是去不断验证该“隐空间”的好坏,从而不断迭代,确保从T-T’的过程并非随机产生,而是保持一定的规则,进而让“隐空间”的模型逐步趋于完善。这个过程就是DA-GAN系统最为核心的创新所在,也是它能够更加智能、真正具有举一反三学习能力的关键点。

  上图用于说明DA-GAN流水线的姿态变形示例。给定从源域S和目标域T两个鸟类的图像,姿态变形的目标是将源姿态转换为目标姿态,同时仍然保持s的身份。
(a)中显示了前馈过程,其中两个输入图像被送到DAE中,并将它们投影到一个潜在空间(用虚线框标记)。然后,G从潜在空间中取出这些高度结构化的表示(DAE(s)和DAE(t)),以生成转换后的样本,即s0 = G(DAE(s)),t0 = G(DAE(t))。 (b)中显示了上述DAE的细节(以橙色块标记)。给定图像X,定位函数floc将首先根据X的特征图(即E(X),其中E是可以以任何形式使用的编码器)预测N个关注区域的坐标。然后在X上产生并激活N个注意掩模以产生N个关注区域。最后,每个区域的功能由实例级别的表示组成。通过在S和T上操作相同的方式,可以在潜在空间中找到实例级别的对应关系。我们利用实例级别和集合级别上的约束条件进行优化,如(c)所示。(d)中列出了所有符号。

  接下来,DA-GAN就可以基于该模型创作用户想要的鸟类了,正就如我前面说的,输入你的需求,一只栩栩如生的鸟就会相应生成。它可能是真实存在的,也可能是一只拥有A种鸟类的头部特征、B种鸟类的身体特征、C种鸟类的尾部特征以及任意姿态的一只“想象中 的鸟”,而在现实世界里并没有这样的鸟类,但它看上去就是一只真正的 “鸟”。

优势

  其分辨率已经从其他相关技术能够达到的64*64升级到了256*256,分辨率的提高,意味着图片每个部分所包含的细节信息更加完善,也正因为细节的丰富,才使得DA-GAN的表现在与真实世界的对比中优于同类技术。

  对于DA-GAN来说,最重要的是早期的数据训练,图片越多质量越高。DA-GAN生成的众多新的图片,又可以反哺给该系统,从而让它拥有更多的学习数据。也就是说,只要基于少量的原始数据,它就可以产生更多“真实”的练习数据,大大改善某些领域真实数据缺乏的问题。利用这一优势,研究团队实现了业内首次在鸟类数据集中增加生成数据,并将系统的准确度提升了两个百分点。

 

 

  下图是数据增强结果——一个姿态变换任务。图中有三组图片,每组图片的第一列是原始样本,第二列是目标样本,第三列是DA-GAN生成的鸟类。它保存了与第一列鸟类类别一致,但保留了第二列的鸟类姿态。

发展前景

  在未来,或许,DA-GAN技术将开启一个每个人都是创造者的时代。只要你的需求输入它能够读懂,哪怕是你脑海中幻想出来的物体和场景,它都能“画”出来。而由它所描绘出来的虚拟世界,可能一点都不比文学家、艺术家创作出来的场景逊色。

  它能为安防领域提供更真实的犯罪嫌疑人画像;在生活购物方面帮助人们贴合自身的情况试穿网络售卖的衣物,它也可能让已经灭绝的动植物,通过记载文字的描述重新跃然纸上,等等。它可以用于任何与图片相关的创作。

【这几个应用,老师觉得有些牵强???】

【然后我回答了两个问题,一个是无监督学习方式,一个是... 我又讲了其他类似的技术... Over...  .) 】

参考:

DA-GAN技术:计算机帮你创造奇妙“新物种”

【读书笔记】DA-GAN: Instance-level Image Translation

不要怂,就是GAN (生成式对抗网络) (一): GAN 简介

GAN学习笔记(一)——初探GAN

其他阅读(可能跟本博客内容无关,我看着了解了一点...):

http://www.cyzone.cn/article/14379.html 【了解了一下“视觉文字”以及一种图像分析方式...】

https://mp.weixin.qq.com/s?__biz=MzIzNjc1NzUzMw==&mid=2247497045&idx=2&sn=0ee27b910c192f9fc91dc0c790c8f68d&chksm=e8d04227dfa7cb31fe81cdca28e8ed7679bfbdd1b228c88382735c3e40ebd5da0fed1b1bc0d6&mpshare=1&scene=23&srcid=0527JjXjfwm1OSdCnqx27958#rd【这个看起来挺有意思...】

感兴趣的可以再了解了解“视频结构化”。。。。。。

DA-GAN技术【简介】【机器通过文字描述创造图像】的更多相关文章

  1. Java Servlet 技术简介

    Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...

  2. CSS border三角、圆角图形生成技术简介

    http://www.zhangxinxu.com/wordpress/?p=794 一.前言 利用CSS的border属性可以生成一些图形,例如三角或是圆角.纯粹的CSS2的内容,没有兼容性的问题, ...

  3. FC总线技术简介

    FC是由美国标准化委员会(ANSI)的X3T11小组于1988年提出的高速串行传输总线,解决了并行总线SCSI遇到的技术瓶颈,并在同一大的协议平台框架下可以映射更多FC-4上层协议.FC具备通道和网络 ...

  4. 常见爬虫/BOT 对抗技术简介(二)

    上一篇文章分别从网络协议,Robots文件,JS渲染,行为分析等多方面讲了些“反爬虫”,“反-反爬虫”技术. 点击查看:<常见爬虫/BOT 对抗技术简介(一)> 本文将主要介绍各种IP地址 ...

  5. 【转】Android 防破解技术简介

    http://www.cnblogs.com/likeandroid/p/4888808.html Android 防破解技术简介 这几年随着互联网的不断发展,Android App 也越来越多!但是 ...

  6. InfiniBand技术简介

    InfiniBand技术简介   转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍         随着CPU和通讯处理速度的 ...

  7. Windows NT 技术简介

    Windows NT 技术简介 NT:New Technoly(新技术,因比DOS.WIN9X采用了很多新技术而得名) Windows NT基本介绍 WindowsNT是Microsoft推出的面向工 ...

  8. P2P技术简介

    P2P技术简介 NAT( Network Address Translation)穿越(俗称打洞)技术 前言: p2p已经存在于我们生活的方方面面:我们通过下载在工具(比如迅雷,bitorent,各种 ...

  9. 【CUDA并行程序设计系列(1)】GPU技术简介

    http://www.cnblogs.com/5long/p/cuda-parallel-programming-1.html 本系列目录: [CUDA并行程序设计系列(1)]GPU技术简介 [CUD ...

随机推荐

  1. C# 代码占用的空间

    是不是代码会占用空间,如果一个程序初始化需要 100M 的代码,那么在他初始化之后,这些代码就没有作用了,他会不会占空间?本文经过测试发现,代码也是会占空间. 我写了2k个垃圾类代码,然后把他放在一个 ...

  2. 师范大学 e: skyscrapers

    #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> usi ...

  3. Quartz —— 任务调度框架

    一.Quartz Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现.该项目于 2009 年被 Terracotta 收购,目前是 Terrac ...

  4. time模块,计算时间差

    计算当前时间与所输入的时间的时间差 #1 计算当前时间的时间戳时间 t_now = time.time() # 计算以前的时间的时间戳时间 t_before = input('请输入时间(例如:200 ...

  5. 0<Double.MIN_VALUE

    好吧, 吐嘈一下: 前几天写代码时发现 Double 有几个静态成员变量, 如 MAX_VALUE , MIN_VALUE 等, 当时就自己"故名思意"了, 分别当成了 doubl ...

  6. 基于jQuery的软键盘

    基于jQuery的软键盘   前些天写了一个基于基于jQuery的数字键盘,今天给大家带来一个基于jQuery的全字母键盘插件(支持全字母大小写切换,数字输入,退格清除,关闭功能,可调整大小和键盘位置 ...

  7. JS全局变量VAR和THIS--在函数内部,加var是局部变量,不加是全局变量

    JS全局变量VAR和THIS 2011-05-23 21:43 很多人都觉得在JavaScript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在wi ...

  8. Spring Boot fastJSON的使用

    springBoot,默认使用的json解析框架是Jackson. 虽然jackson能够满足json的解析,如果想使用熟悉的alibaba的fastjon,我们只需要在pom文件中配置maven依赖 ...

  9. 阿里云短信服务Java版

    短信服务管理平台 https://dysms.console.aliyun.com/dysms.htm java短信发送API    https://help.aliyun.com/document_ ...

  10. Android Dialog的整个生命周期

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...