2023春季李宏毅机器学习笔记 05 :机器如何生成图像

news2024/11/26 21:36:37

资料

  • 课程主页:https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php
  • Github:https://github.com/Fafa-DL/Lhy_Machine_Learning
  • B站课程:https://space.bilibili.com/253734135/channel/collectiondetail?sid=2014800

一、图像生成常见模型

前提:一张好的图像的资讯量是远超一句文句所能提供的。

差异:在图像中许多文字中没有提供的信息是需要机器进行大量的脑补才能产生的,这也是图片生成(或语音生成)与文字生成的不同之处,而这种不同体现在模型的设计上。

对比
在这里插入图片描述

  • 文字生成:多采用Autoregressive(各个击破)的方法,也就是去计算下一个输出文字的概率

  • 图像生成:类比文字生成,多采用Autoregressive(各个击破)的方法,计算下一个像素出现的概率;图像逐行生成,可行,但是生成速度慢,所以在图像生成中一般采用一次到位的生成方法

    一次到位产生的问题:输入一段文字,正确答案并不是只有一个,单独做每个像素的分布,各有各的想法,会导致生成的图像像拼凑的破布;在这里插入图片描述

    对应解法:增加一个额外的输入normal/uniform distribution,产生P(x|y)在这里插入图片描述

二、常见图像生成模型

在这里插入图片描述

1. VAE

在这里插入图片描述
说明:

  • 1)文字输入decoder,用于限制图像生成的范围;
  • 2)Encoder输出一个向量交给Decoder,希望还原回一样的图像;
  • 3)Encoder和Decoder一起训练,希望生成的图像越相似越好;
  • 4)Encoder生成的向量强制满足Normal Distribution;

2. Flow-based Generative Model

在这里插入图片描述说明:
1)训练Encoder,输入一张图片输出一个向量,并保证这个向量是Invertible可逆的(大小与输入图像一致);
2)多个向量组成Normal Distribution,输入Encoder得出生成图像;

3. Diffusion Model

在这里插入图片描述
说明:
1)对一张图片不断添加噪声,让它看起来就像一个Normal Distribution取样得出的向量;
2)训练一个Denoise(解噪声)模型,一步步去除噪音,得到原图;

4. GAN

在这里插入图片描述
说明:
1)训练decoder,输出大量从Normal Distribution中sample出的向量(此时的输出质量差,几乎看不出是什么,只是一堆噪音),
2)训练Discriminator(鉴别器),作用是判断一张图片是decoder生成的图片P’(x)(左)还是真正的图片P(x)(右),
3)调整decoder的参数,计算P’(x)和P(x)的相似程度Loss,使discriminator越接近越好;

三、浅谈Diffusion Model

相关论文:Denoising Diffusion Probabilistic Models (DDPM)
论文地址:https://arxiv.org/abs/2006.11239

在这里插入图片描述

1. Diffusion Model原理

(1)Diffusion model在这里插入图片描述
(2)Denoise模块

  • 将带有噪音的图像和噪音严重程度输入Noise Predicter
  • Noise Predicter预测输入图片的噪音并输出噪音图像
  • 最后将输入的图片减去预测的噪音图像作为输出结果
    在这里插入图片描述

(3)Noise Predicter模块

  • 训练数据:通过Forward/Diffusion Process不断对原图像加噪音生成噪音图像;
  • 输入:输入图像input、噪声严重程度step
  • 输出:Ground truth
    在这里插入图片描述

2. Text-to-Image 文生图

在这里插入图片描述
说明:

  • 模型:在原有Diffusion的基础上增加文本输入;
    在这里插入图片描述

  • 数据来源:在原有Noise Predicter训练基础上增加文本输入;
    在这里插入图片描述

四、Stable Diffusion、DALL-E、Imagen 背后共同的套路

1. 观察Stable Diffusion、DALL-E、Imagen

在这里插入图片描述

论文地址:https://arxiv.org/abs/2112.10752

模型:最右边是输入(不只可以输入文字),中间是一个生成模型(使用diffusion modal),将diffusion modal生成的中间产物(一个图片压缩后的版本)输入最左边,还原回原来的图像;
在这里插入图片描述
模型:DALL-E series内置两个生成模型autoregressive(图像不大时使用)与diffusion modal
在这里插入图片描述
模型:先通过diffusion modal生成64×64的小图,再通过decoder生成256×256的大图;

2. 总结套路

在这里插入图片描述

  1. Text Encoder将文字叙述转化为多个向量;
  2. Generation Model,输入噪音和text Encoder生成的向量,生成一个中间产物(中间产物有不同的形式)
  3. 把中间产物(图中的中间产物是图片的压缩版本)输入Decoder,将图片还原为原始图像
模块 1:Text Encoder

过程:文字转为向量

模块2:Generation Model

过程:输入文字的向量和噪音图像,输出中间产物,与前面的描述diffusion model不同的是,noise不是直接加在图片上,而是加在representation上。
在这里插入图片描述
训练完成后,将Latent Representation与一段文字输入Denoise,重复多次,得到合适的中间产物传给Decoder;
在这里插入图片描述

模块3:Decoder

过程:Decoder的训练不需要文字资料,只需要大量的图片资料。

  • 第一种:中间产物是小图,将原图(图像对的右边)做down-sampling变为小图(左),即可得到训练资料;
    在这里插入图片描述

  • 第二种:中间产物是Latent Representation(潜在图像特征),获取方式(使用Auto-encoder:往encoder输入一张图像,生成Latent Representation,再把Latent Representation输入decoder,以还原原来的图片,让输入与输出越接近越好。训练完成后,取出decoder即为所求。
    在这里插入图片描述

五、拓展学习

Variational Auto-encoder (VAE)
Flow-based Generative Model
Generative Adversarial Network (GAN)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1357431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提示循环引用 一个循环引用但无法列出导致循环的引用且文件打不开无法修改

目录 设备环境: 提示内容: 具体错误问题描述: 图示: Office 报错 WPS 报错 问题分析: 问题解决: 关注我的 GitHub(魔法网络访问): 设备环境: Window…

(湖科大教书匠)计算机网络微课堂(下)

第四章、网络层 网络层概述 网络层主要任务是实习网络互连,进而实现数据包在各网络之间的传输 因特网使用TCP/IP协议栈 由于TCP/IP协议栈的网络层使用网际协议IP,是整个协议栈的核心协议,因此TCP/IP协议栈的网络层常称为网际层 网络层提供…

1.1 理解大数据(2)

小肥柴的Hadoop之旅 1.1 理解大数据(2) 目录1.1 理解大数据1.1.3 大数据概述1.1.4 更多思考 参考文献和资料 目录 1.1 理解大数据 1.1.3 大数据概述 step_0 大数据定义 【《大数据算法设计分析》】: 通常来讲大数据(Big Data&am…

【Linux操作系统】探秘Linux奥秘:Linux 操作系统的解密与实战

🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS …

目标跟踪算法中的卡尔曼滤波学习

在使用多目标跟踪算法时,接触到卡尔曼滤波,一直没时间总结下,现在来填坑。 1. 背景知识 在理解卡尔曼滤波前,有几个概念值得考虑下:时序序列模型,滤波,线性动态系统 1. 时间序列模型 时间序…

Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (一)

本实践教程将教你如何使用 Elasticsearch 构建完整的搜索解决方案。 在本教程中你将学习: 如何对数据集执行全文关键字搜索(可选使用过滤器)如何使用机器学习模型生成、存储和搜索密集向量嵌入如何使用 ELSER 模型生成和搜索稀疏向量如何使用…

【KingbaseES】实现MySql函数Field

CREATE OR REPLACE FUNCTION field(value TEXT, VARIADIC arr TEXT[]) RETURNS INT AS $$ DECLAREi INT; BEGINFOR i IN 1 .. array_length(arr, 1) LOOPIF arr[i] value THENRETURN i;END IF;END LOOP;RETURN 0; END; $$ LANGUAGE plpgsql IMMUTABLE;

【Mac】Mac新机配置前端环境教程

1、先安装谷歌浏览器,稳定版 作为一名前端程序员,和浏览器打交道肯定是必不可少的。Chrome,Edge 都有着丰富的扩展资源。你可以下载插件帮助你更好的在工作中调试代码。 React Developer Tools Vue.js devtools GraphQL developer tools 如…

信号量原理及其应用

一、信号量定义 信号量是一种用于保护临界资源的同步机制。它可以用来控制对共享资源的访问,以避免并发访问导致的数据不一致或竞争条件。信号量的PV操作是原子操作,即不可被中断的操作。 在信号量的操作中,P操作(也称为wait操作…

imgaug库指南(四):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

AIGC实战——自回归模型(Autoregressive Model)

AIGC实战——自回归模型 0. 前言1. 长短期记忆网络基本原理2. Recipes 数据集3. 处理文本数据3.1 文本与图像数据处理的差异3.2 文本数据处理步骤 4. 构建 LSTM 模型4.1 模型架构4.2 LSTM 计算流程4.3 训练 LSTM 5. LSTM 模型分析小结系列链接 0. 前言 自回归模型 (Autoregres…

基于gamma矫正的照片亮度调整(python和opencv实现)

import cv2 import numpy as npdef adjust_gamma(image, gamma1.0):invGamma 1.0 / gammatable np.array([((i / 255.0) ** invGamma) * 255 for i in np.arange(0, 256)]).astype("uint8")return cv2.LUT(image, table)# 读取图像 original cv2.imread("tes…

使用 SpringSecurity 发送POST请求出现 403

问题场景 在使用 SpringSecurity 时对一些访问权限进行了设置, 在用户请求资源时出现了403错误 , 通过检查代码发现请求权限是开放的, 并且切换成 GET 请求也是可以通过, 换成POST 请求就无法通过。 解决方法 在 SpringSecurity 中关闭 CSRF 因为 前端向后台发送 post 请求…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑分布式资源交易的气电综合能源配网系统出清模型》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主的免费专栏栏目《论文与完整程序》 这个标题涉及到气电综合能源配网系统的出清模型,特别强调了对分布式资源交易的考虑。以下是对标题中关键术语的解读: 气电综合能…

java SSM体育器材租借管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM体育器材租借管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要…

Ubuntu不能挂载移动硬盘

我有一个2T 的移动硬盘,分了两个区 不知道为啥突然之间一个分区老无法挂载,万能的重启也无法解决。 经查资料,这种情况一般是在使用时(如看电影或者拷贝文件过程中)将移动硬盘异常拔出再插入时,就提示不能…

MySQL:约束主键唯一键

表的约束:表中一定有约束,通过约束让插入表中的数据是符号预期的 约束的本质是通过技术手段,倒逼程序员插入正确的数据 Null约束 这里的Null表示在插入的时候,该属性能否为空,如果是NO,则插入时候必须有数…

广义双曲分布、KS检验与抄底沪指

上一篇笔记我们抛出一个问题,沪指大跌 4%时,能不能抄底?今天的笔记,我们就通过 KS 检验,找出沪指的概率分布,进而回答这个问题。在后面的笔记中,我们还将换一个方法继续回答这个问题。 K-S 检验…

Xshell 上传文件到服务器

Liunx 上传文件 rz //回车,从本地选择文件上传 ll //查看文件 pwd //查看当前目录 mkdir filename //创建文件如果遇到错误信息“bash: rz: command not found” 安装 lrzsz sudo yum install lrzsz操作 mv //移动文件或目录 tar //解压文件vim //文本编辑器&am…