zoukankan      html  css  js  c++  java
  • 《python深度学习》笔记---8.4、用变分自编码器生成图像

    《python深度学习》笔记---8.4、用变分自编码器生成图像

    一、总结

    一句话总结:

    【用深度学习进行图像生成,就是通过对潜在空间进行学习来实现的】:这个潜在空间能够 捕捉到关于图像数据集的统计信息。通过对潜在空间中的点进行采样和解码,我们可以 生成前所未见的图像。这种方法有两种重要工具:变分自编码器(VAE)和生成式对抗 网络(GAN)。
    【VAE得到的是高度结构化的、连续的潜在表示】:因此,它在潜在空间中进行各种图像编 辑的效果很好,比如换脸、将皱眉脸换成微笑脸等。它制作基于潜在空间的动画效果也 很好,比如沿着潜在空间的一个横截面移动,从而以连续的方式显示从一张起始图像缓 慢变化为不同图像的效果。
    【GAN可以生成逼真的单幅图像,但得到的潜在空间可能没有良好的结构,也没有很好的连续性。】

    1、目前最流行也是最成功的创造性人工智能应用?

    【从图像的潜在空间中采样,并创建全新图像或编辑现有图像】:这是目前最流行也是最成 功的创造性人工智能应用。

    2、图像生成有关的 两种主要技术?

    【变分自编码器(VAE,variational autoencoder)和生成式对抗网络(GAN,generative adversarial network)】
    【使用GAN 和 VAE 还可以探索声音、音乐甚至文本的潜在空间】:我们这里介绍的技术不仅适用于图像,使用GAN 和 VAE 还可以探索声音、音乐甚至文本的潜在空间,但在实践中,最有趣的结果都是利用图像获得的

    3、图像生成的关键思想?

    【低维表示潜在空间】:图像生成的关键思想就是找到一个低维的表示潜在空间(latent space,也是一个向量空间), 其中任意点都可以被映射为一张逼真的图像。
    【生成器(generator,对于GAN 而言)或解码器(decoder, 对于VAE 而言)】:能够实现这种映射的模块,即以潜在点作为输入 并输出一张图像(像素网格),叫作生成器(generator,对于GAN 而言)或解码器(decoder, 对于VAE 而言)。
    【映射到图像空间】:一旦找到了这样的潜在空间,就可以从中有意地或随机地对点进行采样,并 将其映射到图像空间,从而生成前所未见的图像

    4、想要学习图像表示的这种潜在空间,GAN 和 VAE 是两种不同的策略,每种策略都有各自 的特点?

    【VAE 非常适合用于学习具有良好结构的潜在空间,其中特定方向表示数据中有意义的 变化轴。 】
    【GAN 生成的图像可能非常逼真,但它的潜在空间可能没有良好结构,也 没有足够的连续性。】

    5、概念向量(concept vector)?

    【空间中的特定方向可能表示原始数据中有趣的变化轴】:给定一个表示的潜在空间或一个嵌入空间,空间中的特定方向可能表示原始数据中有趣的变化轴。
    【可能存在一个微笑向量(smile vector)s】:比如在人脸图像的潜在空间中,可能存在一个微笑向量(smile vector)s,它满足:如果潜在点 z 是某张 人脸的嵌入表示,那么潜在点z+s就是同一张人脸面带微笑的嵌入表示。
    【将图像投射到潜在空间中,用一种有意义的方式来移动其表示,然后再将其解码到图像空间】:一旦找到了这样的向量, 就可以用这种方法来编辑图像:将图像投射到潜在空间中,用一种有意义的方式来移动其表示, 然后再将其解码到图像空间。
    【各种向量:比如戴墨镜向量】:在图像空间中任意独立的变化维度都有概念向量,对于人脸而言, 你可能会发现向人脸添加墨镜的向量、去掉墨镜的向量。将男性面孔变成女性面孔的向量等。

    6、变分自编码器?

    【自编码器适用于利用概念向量进行图像编辑的任务】:自编码器是一种生成式模型,特别适用于利用概念向量进行图像编辑的任务。
    【将深度学习的想法与贝叶斯推断结合在一起】:它是一种现代化的自编码器,将深度学习的想法与贝叶斯推断结合在一起。
    【将输入编码到低维潜在空间】:自编码器是一种网络类型,其目的是将输入编码到低维潜在空间,然后再解码回来。

    7、经典的图像自编码器?

    【通过一个编码器模块将图像映射到潜在向量空间】:经典的图像自编码器接收一张图像,通过一个编码器模块将其映射到潜在向量空间,然后再通过一个解码器模块将其解码为与原始图像具有相同尺寸的输出
    【对原始输入进行重新构建】:然后,使用与 输入图像相同的图像作为目标数据来训练这个自编码器,也就是说,自编码器学习对原始输入 进行重新构建。
    【对代码(编码器的输出)施加各种限制】:通过对代码(编码器的输出)施加各种限制,我们可以让自编码器学到比较有 趣的数据潜在表示。
    【将代码限制为低维的并且是稀疏的】:最常见的情况是将代码限制为低维的并且是稀疏的(即大部分元素为0), 在这种情况下,编码器的作用是将输入数据压缩为更少二进制位的信息。

    8、经典的自编码器 和 VAE 的区别?

    【经典的自编码器得到的数据并没有多有用】:在实践中,这种经典的自编码器不会得到特别有用或具有良好结构的潜在空间。
    【经典的自编码器也没有对数据做多少压缩】:它们也没有对数据做多少压缩。因此,它们已经基本上过时了。
    【VAE向自编码器添加了一点统计魔法】:但是,VAE 向自编码器添加了一点统计魔法,迫使其学习连续的、高度结构化的潜在空间。这使得 VAE 已成为图像生成的强大工具。
    【VAE统计平均值和方差】:VAE 不是将输入图像压缩成潜在空间中的固定编码,而是将图像转换为统计分布的参数, 即平均值和方差。

    9、VAE 本质?

    【VAE统计平均值和方差】:VAE 不是将输入图像压缩成潜在空间中的固定编码,而是将图像转换为统计分布的参数, 即平均值和方差。
    【输入图像是由统计过程生成】:本质上来说,这意味着我们假设输入图像是由统计过程生成的,在编码和解 码过程中应该考虑这一过程的随机性。
    【VAE使用平均值和方差这两个参数来从分布中随机采样一个元素】:然后,VAE 使用平均值和方差这两个参数来从分布中随 机采样一个元素,并将这个元素解码到原始输入
    【随机性提高了其稳健性】:这个过程的随机性提高了其稳健性,并迫使潜在空间的任何位置都对应有意义的表示,即潜在空间采样的每个点都能解码为有效的输出。

    10、从技术角度来说,VAE 的工作原理如下?

    【将输入图像转换为表示潜在空间中的两个向量】:(1)一个编码器模块将输入样本 input_img 转换为表示潜在空间中的两个参数 z_mean 和 z_log_variance。
    【从这个正态分布中随机采样一个点生成输入图像】:(2)我们假定潜在正态分布能够生成输入图像,并从这个分布中随机采样一个点 z:z = z_mean + exp(z_log_variance) * epsilon,其中 epsilon 是取值很小的随机张量。
    【解码器模块将潜在空间的这个点映射回原始输入图像】:(3)一个解码器模块将潜在空间的这个点映射回原始输入图像。

    11、VAE 工作原理说明(为什么VAE每个方向都表示数据中一个有意义的变化轴)?

    |||-begin
    【将输入图像转换为表示潜在空间中的两个向量】:(1)一个编码器模块将输入样本 input_img 转换为表示潜在空间中的两个参数 z_mean 和 z_log_variance。
    【从这个正态分布中随机采样一个点生成输入图像】:(2)我们假定潜在正态分布能够生成输入图像,并从这个分布中随机采样一个点 z:z = z_mean + exp(z_log_variance) * epsilon,其中 epsilon 是取值很小的随机张量。
    【解码器模块将潜在空间的这个点映射回原始输入图像】:(3)一个解码器模块将潜在空间的这个点映射回原始输入图像。
    |||-end

    【可以确保,与input_img 编码的潜在位置(即 z-mean)靠近的每个点都能被解码为与 input_img 类似的图像,从而迫使潜在空间能够连续地有意义】:因为epsilon 是随机的,所以这个过程可以确保,与input_img 编码的潜在位置(即 z-mean)靠近的每个点都能被解码为与 input_img 类似的图像,从而迫使潜在空间能够连续地有意义。
    【潜在空间中任意两个相邻的点都会被解码为高度相似的图像。】
    【迫使潜在空间中的每个方向都表示数据中一个有意义的变化轴】:连续性以及潜在空间的低维度,将迫使潜在空间中的每个方向都表示数据中一个有意义的变化轴,这使得潜在空间 具有非常良好的结构,因此非常适合通过概念向量来进行操作。

    12、VAE 的参数通过两个损失函数来进行训练?

    【重构损失】:一个是重构损失(reconstruction loss),它迫使解码后的样本匹配初始输入;
    【正则化损失】:另一个是正则化损失(regularization loss),它有助于学习具有 良好结构的潜在空间,并可以降低在训练数据上的过拟合。

    13、VAE 代码关键点?

    【将图像映射为潜在空间中概率分布的参数】:下列代码给出了我们将使用的编码器网络,它将图像映射为潜在空间中概率分布的参数。
    【使用 z_mean 和 z_log_var 来生成一个潜在空间点 z】:将使用 z_mean 和 z_log_var 来生成一个潜在空间点 z,z_mean 和 z_log_ var 是统计分布的参数,我们假设这个分布能够生成 input_img。

    二、内容在总结中

    博客对应课程的视频位置:

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    169. Majority Element
    283. Move Zeroes
    1331. Rank Transform of an Array
    566. Reshape the Matrix
    985. Sum of Even Numbers After Queries
    1185. Day of the Week
    867. Transpose Matrix
    1217. Play with Chips
    766. Toeplitz Matrix
    1413. Minimum Value to Get Positive Step by Step Sum
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13828741.html
Copyright © 2011-2022 走看看