| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 李宏毅机器学习——GAN(4) -> 正文阅读 |
|
[人工智能]李宏毅机器学习——GAN(4) |
摘要: 上节课学习GAN中的条件生成,这节课学习无监督下的条件生成。 首先介绍了什么是无监督生成:在条件生成的基础上,输入输出双方都是无label的。已知的数据只有两组不同的domain。 无监督生成有两种方法,一种是直接转换,在生成图片后面加上一个判别器,用来识别生成的图片是否符合要求的domain。我们还会担心生成的图片是否和输入图片相关,也提到了一些解决方法。这个方法主要处理图片的画风,颜色。 另一种方法是投影到相同的空间,对于不同的domain,设置不同的domain encoder和decoder。将两组encoder和decoder视为两组不相关的auto-encoder,之后讲了四种方法,把这两组auto-encoder联系起来。这个方法主要是提取转换前后的图片特征,用来处理复杂的图片。 最后还简单介绍了多个domain之间相互转化的做法:starGAN 目录 一.什么是Unsupervised conditional generation 一.什么是Unsupervised conditional generation上节课学习了CGAN,这节课来看无监督情况下的条件生成。 例如: 有domain x的画作和domain y的画作的data。可以训练一个生成器,无需label data就可以将x风格的画转换成 y风格的画作。 这种方法还可以用在语音和文字上。 二、无监督条件生成有哪些方法1.direct transformation(直接转换) 通常改变的是颜色、质地,也就是画风的变换。 2.projection to common space 处理差距比较大的两个domain,将domain x的特征提取出来,生成一个face attribute,然后再decoder出domain y风格的图像。 1.direct transformation首先,我们有两个domain的图像,如果输入domain x的数据,然后用生成器生成对应的domain y的图片。这是监督学习的方法。因为生成器看过domain y的风格,可以直接是生成出来。 对于非监督学习,我们加入判别器d,判别器看过y风格的图片,并且可以识别出输入图片是否属于domain y。这时就需要生成器去生成y风格的图片,来骗过判别器d。 这样会有一个问题,如果生成器为了骗过判别器,产生domain y的图片,但是这个图片与domain x完全无关怎么办? 有以下几种方法: 1.直接无视这个问题,因为生成器的输出会尽可能与输入接近。生成器不希望改太多,去骗过判别器。 2.pre-trained 先训练好一个network,将生成器的输入和输出传给pre-trained网络,通过pre-trained network,输入和输出会变成两个vector,训练的时候也让这两个vector尽可能接近。这样生成器的输入和输出自然不会差的很远。 3.cycle GAN 在x转换成y的基础上,加上一个domain y转换成domain x。 因为这个问题是在原来的基础上,让输入和输出越接近越好。如果生成器还是产生了一个无关的的图片,那么它是没办法再去将这个图片还原成domain x。因此,产生的图片必须保留domain x的信息,这样才可以再转回去。 Cycle GAN也可以做成双向的,domain x的图片转换成y,同时y也转换成x。这样可以将组生成器和判别器一起训练。 Cycle GAN也有一些问题: 在下面图片在两次转换中,中间图片红色方框的黑点消失了,但是Gy-x还是可以转换成原来的样子。这说明生成器通过某种方法,把方框中的黑点以某种形式隐藏起来。目前机器是如何做到的还不清楚。 还有一些其他类别的GAN,这三种GAN都是类似的做法,只不过取了不同的名字 starGAN这里简单讲了一下starGAN 之前的例子都是两个domain之间相互转换。如果需要进行多个domain之间的转换,那就需要starGAN。 StarGAN的做法: 首先StarGAN需要训练一个判别器,判别器做两件事情,1,识别图片的真假。2.识别图片属于那个domain。 之后只需要训练一个生成器,生成器的输入是目标domain和输入图片。将得到的fake image和原来的domain输入给相同的生成器,希望还原成之前的图片(让这张图片和原本的输入图片越接近越好)。(这部分的目的是保证转出的图片和输入图片是相关的) 最后将fake image输入给判别式,来检查fake image是否真实,是不是我们要的domain。 应用: 1.人物的造型转换: 这里表示multi-domain的方法是用编码。下面的黄色模块00101就是对应:Brown/Young的两个特征。 2.人物的表情转换: 2.projection to common space假设有两个domain:真人和动画,要做这两个之间的转换。 如果是监督学习,我们的想法是:对于不同的domain,设置不同的domain encoder和decoder。 例如下图:输入真人图片,通过x encoder,提取人脸特征后,输入给y decoder。最终实现真人转换成动漫。 现在情况是无监督学习 输入和输出都是真人,这就组成了一个auto-encoder。这样可以训练出encoder和decoder。 对于y domain也是同样道理。 上面做完,这两组auto-encoder还没有联系 这里可以先加上一个判别器,来判别decoder输出的图片属于那个domain。 这样我们就得到了,两套VAE GAN。 因为我们分别训练两个自动编码器… 解决方法: 1.希望不同domain的encoder,最后几层的参数是共用的。不同Decoder,前面几层参数也是共用的。(共享参数) 在中间表示特征的地方加一个domain 判别器 通过这个判别器来判断encoder输出来自于哪个domain。训练的目的就是骗过这个domain discrimination。当domain discrimination无法·识别出特征来自于哪个domain,说明两个encoder产生的特征表示都来自同一个分布。(也就是相同的维度表示相同的意思) 3.cycle consistency 真人图片经过encoder x,decoder y生成image,再将image经过encoder y,decoder x。最后生成真人图片,然后训练前后图片,让它们越接近越好。(这个思路很巧妙) 4.semantic consistency 这个方法和上一个原理相同,将真人图片通过encoder x和encoder y,将得到的image在通过encoder y,用这个特征表示和encoder x输出的特征表示进行比较,让它们越接近越好。 应用: 最后是老师用自己的照片,转换成二次元造型。 总结:生成对抗网络(GAN)是一种包含无监督学习的模型,通过向有标签样本学习其数据分布来生成类似的样本,这种过程更类似于人类学习外界知识时候采用的无监督方式。而通过无监督学习,生成对抗网络可以改善一般网络模型过于依赖数据数量及标签的缺点。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 21:32:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |