2023春季李宏毅机器学习笔记 05 :机器如何生成图像
资料
- 课程主页: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. 总结套路
- Text Encoder将文字叙述转化为多个向量;
- Generation Model,输入噪音和text Encoder生成的向量,生成一个中间产物(中间产物有不同的形式)
- 把中间产物(图中的中间产物是图片的压缩版本)输入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)
相关文章:

2023春季李宏毅机器学习笔记 05 :机器如何生成图像
资料 课程主页:https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.phpGithub:https://github.com/Fafa-DL/Lhy_Machine_LearningB站课程:https://space.bilibili.com/253734135/channel/collectiondetail?sid2014800 一、图像生成常见模型…...
C#和C++存储 和 解析 bin 文件
C 解析 bin 文件 // C 解析 bin 文件 #include <stdio.h>int main() {FILE *file; // 定义文件指针file fopen("example.bin", "rb"); // 打开二进制文件(只读模式)if (file NULL) {printf("无法打开文件\n");re…...

【React系列】Redux(二)中间件
本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 中间件的使用 1.1. 组件中异步请求 在之前简单的案例中,redux中保存的counter是一个本地定义的数据…...

YOLOv8改进 | 2023Neck篇 | 利用Gold-YOLO改进YOLOv8对小目标检测
一、本文介绍 本文给大家带来的改进机制是Gold-YOLO利用其Neck改进v8的Neck,GoLd-YOLO引入了一种新的机制——信息聚集-分发(Gather-and-Distribute, GD)。这个机制通过全局融合不同层次的特征并将融合后的全局信息注入到各个层级中,从而实现更高效的信息交互和融合。这种…...

ubuntu环境安装配置nginx流程
今天分享ubuntu环境安装配置nginx流程 一、下载安装 1、检查是否已经安装 nginx -v 结果 2、安装 apt install nginx-core 过程 查看版本:nginx -v 安装路径:whereis nginx nginx文件安装完成之后的文件位置: /usr/sbin/nginx…...

【LMM 010】MiniGPT-v2:使用独特的标识符实现视觉语言多任务学习的统一的多模态大模型
论文标题:MiniGPT-v2: Large Language Model As a Unified Interface for Vision-Language Multi-task Learning 论文作者:Jun Chen, Deyao Zhu, Xiaoqian Shen, Xiang Li, Zechun Liu, Pengchuan Zhang, Raghuraman Krishnamoorthi, Vikas Chandra, Yun…...

人工智能如何重塑金融服务业
在体验优先的世界中识别金融服务业中的AI使用场景 人工智能(AI)作为主要行业的大型组织的重要业务驱动力,持续受到关注。众所周知,传统金融服务业在采用新技术方面相对滞后,一些组织使用的还是上世纪50年代和60年代发…...
Iterable 对象转换为 Stream 对象
在 Java 8 中,可以使用 Stream API 来对集合进行操作。要将 Iterable 对象转换为 Stream 对象,可以使用 StreamSupport 类的 stream() 方法。具体来说,可以按照以下步骤进行转换: 调用 Spliterators.spliteratorUnknownSize(iter…...

基于Java+SpringBoot+vue+elementUI私人健身教练预约管理系统设计实现
基于JavaSpringBootvueelementUI私人健身教练预约管理系统设计实现 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于JavaSpringBootvueelementUI私人健身教练预约管理系统设计实现一、前言介绍:二、系统设计:2.1 性能需求分析2.2 B/S架构&…...

2024,启动(回顾我的2023)
零.前言 打开博客想写个年度总结,发现已经半年没有更新文章了,排名从几千掉到了几万,不过数据量还是不错的。 时间过得可真快,2023年是充满动荡的一年,上半年gpt横空出世,下半年各种翻车暴雷吃瓜吃到嘴软…...
Web网页开发-盒模型-笔记
1.CSS的三种显示方式 (1)块级元素:标签所占区域默认为一行 特点:一行一个 可设宽高 (2)行内元素:标签所占区域由内容顶开,行内元素无法使用text-align 特点:一行多个 不可设宽高,margin上下和padding上下都不能改变位…...
Java打成压缩包的方法汇总
文章目录 1.将指定目录下的文件打包成 .zip2.将指定目录下的文件打包成 .tar.gz3.将指定目录下的文件打包成 .tar4.将指定目录下的文件打包成 .rar5.生成若干个txt并打包到zip中 1.将指定目录下的文件打包成 .zip 代码示例: import java.io.*; import java.util.z…...

2023年第2季社区Task挑战赛贡献者榜单
基于FISCO BCOS及Weldentity,实现SSO单点登录服务;提供食品溯源、电商运费险7天退保、电子病历等智能合约库业务场景案例;基于FISCO BCOS更新游戏体验;体验并分析解读最新发布的分布式数据协作管理解决方案DDCMS,提供相…...
Clickhouse 为什么快
ClickHouse是一个用于联机分析处理(OLAP)的开源列式数据库管理系统(DBMS)。它之所以能提供出色的查询性能和处理速度,主要归功于以下几个方面的设计和优化: 列式存储 ClickHouse存储数据按列而不是按行组织…...

【React系列】react-router
本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识react-router 1.2. 前端路由原理 前端路由是如何做到URL和内容进行映射呢?监听URL的改变。 UR…...
[数据集][目标检测]车辆检测数据集VOC+YOLO格式1.6w张3类别
一共分为3个压缩包: 【车辆检测数据集AVOCYOLO格式5423张3类别】 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5423 标注数…...

FindMy技术用于鼠标
鼠标是计算机的标准配置之一,其设计初衷是为了使计算机的操作更加简便快捷,减少用户在操作中的负担。用户可以通过移动鼠标,实现光标的精确移动,进而选择、拖拽、复制、粘贴等操作。这种操作方式,使得计算机的操作变得…...

已解决‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。”的问题
已解决‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。”的问题 文章目录 问题介绍 问题分析 解决思路 解决方法 检查并修复环境变量 进入c:\windows\system32再ping 使用系统工具修复系统文件 Q1 - 问题介绍 当您尝试在Windows命令提示符下…...
基于PGPGPOOL-II部署PostgreSQL高可用环境
PGPOOL-II是一个位于PostgreSQL服务器和 PostgreSQL 数据库客户端之间的中间件,具有以下功能: 1. 连接池:PGPOOL-II可以保持已经连接到 PostgreSQL 服务器的连接,并在使用相同参数(例如:用户名、数据库、协议版本)连接进来时重用它们。这可以减少连接开销,并增加系统的…...

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建
【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行模式-CSDN博客 1、模板虚拟机环境准备 1.1、 hadoop100 虚拟机配置要求如下 &…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...