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 虚拟机配置要求如下 &…...
Python 操作 JMeter 探索:pymeter 实操指南
概要 JMeter 是一个流行的性能测试工具,用于测试 Web 应用程序的性能和负载。它通常与 GUI 一起使用,但如果您想在自动化测试中集成 JMeter,或者以编程方式创建和运行测试计划,那么 pymeter 库将是一个强大的工具。本文将介绍如何…...
微软 Power Platform 使用Power Automate发送邮件以Dataverse作为数据源的附件File Column
微软Power Platform使用Power Automate发送邮件添加Power Apps以Dataverse作为数据源的附件File Column方式 目录 微软Power Platform使用Power Automate发送邮件添加Power Apps以Dataverse作为数据源的附件File Column方式1、需求背景介绍2、附件列File Column介绍3、如何在Po…...
雾天条件下 SLS 融合网络的三维目标检测
论文地址:3D Object Detection with SLS-Fusion Network in Foggy Weather Conditions 论文代码:https://github.com/maiminh1996/SLS-Fusion 论文摘要 摄像头或激光雷达(光检测和测距)等传感器的作用对于自动驾驶汽车的环境意识…...
在pycharm中执行 os.makedirs 提示用户名或密码不正确
问题:在pycharm中运行脚本,在 \10.0.21.249\share 共享目录下创建目录提示错误 发现:手动在该目录下创建目录没有问题。 解决方法: 切换到cmd 命令行运行该脚本成功创建 猜测:感觉应该是pycharm中使用的用户名和密码存…...
使用Go语言编写高效的HTTP服务器
随着互联网的快速发展,HTTP服务器在Web开发中扮演着越来越重要的角色。而Go语言作为一种高效、并发性强的编程语言,为编写高性能的HTTP服务器提供了强大的支持。本文将探讨如何使用Go语言编写高效的HTTP服务器。 首先,我们需要了解Go语言的H…...
代码随想录day20 开始二叉搜索树
654.最大二叉树 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构…...
从0开始python学习-39.requsts库
目录 HTTP协议 1. 请求 2. 响应 Requests库 1. 安装 2. 请求方式 2.1 requests.请求方式(参数) 2.2 requests.request() 2.3 requests.session().request() 2.4 三种方式之间的关联 3. 请求参数 3.1 params:查询字符串参数 3.2 data:Form表单…...
【面试高频算法解析】算法练习3 双指针
前言 本专栏旨在通过分类学习算法,使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目,帮助您深度理解每种算法,避免出现刷了很多算法题,还是一知半解的状态 专栏导航 二分查找回溯双指针滑动窗口深度优先搜索…...
React16源码: Why16, 研究源码的意义, 源码目录核心结构分析
为什么要选择React16 现在React18都早已实践很多,为何回过头来看16版本的代码理由如下 从实际出发,企业内老旧项目多为16版本,理解16的核心能够帮助我们快速解决问题16版本React是完全重写了核心代码, 是一次重大的更新 引入了 fiber 这个概…...
mybatis-flex笔记
MyBatis-Flex 的增删改功能 - MyBatis-Flex 官方网站https://mybatis-flex.com/zh/base/add-delete-update.html 代码https://gitee.com/hntianshu/mybatis-flex-test 一 新增数据 不忽略 null 值。 就是允许有null 忽略null 就是不允许有null BaseMapper 的接口提供了 inser…...
汕头模版网站建设/seo上海网站推广
舍与得 前言 凡是过往,皆为序章 规划自己就像玩游戏一样。要么氪金,要么爆肝,还有就是又氪又肝。规划有三个部分,首先是目标,确定目标,才能确定方向;第二是方法,方法正确࿰…...
浪子做的阿哲喊麦网站多少/北京网站优化页面
在职场中,写日报、周报是工作标配。但是,这也是让很多人感到头疼且抗拒的事情。尤其是项目经理们,明明每天都已经忙得脚不沾地了,哪有时间去写那个啥报?环环总结了几条大家讨厌写周报的原因,看看有没有你&a…...
上网站建设公司/百度云搜索引擎官网入口
有时根据题意需得根据输入的二维数来动态的创建二维数组,那么此时就不能想以前一样直接定义多少行多少列了。因为不知道行列多少,假如设定太大浪费空间,申请太小完成不了程序的数据存储。因此需要合理的开辟二维空间。以下的两种方法都可以建…...
求个网站没封的/百度搜索排行榜风云榜
jgit 打版本tagJGit和EGit实现的新版本发布 Git SCM的JGit和EGit实现的1.1版已经发布。 JGit 1.1添加了新的Git瓷器命令和命令选项,包括ReflogCommand,DeleteTagCommand和DiffCommand,并且ResetCommand现在支持在特定目录上进行递归重置。 在…...
b2b开发/南昌seo技术外包
Id sunRainAmazing hibernate 注解 Id无对应的属性指定实体的主键。Id应用注释的字段或属性应为以下类型之一:任何Java基元类型; 任何原始的包装类型; String;java.util.Date; java.sql.Date; java.math.BigDecimal;java.math.BigInteger。实体主键的映射列被认为是…...
旅游门户网站建设方案/网站域名解析ip
目录Selenium WebDriver 基本使用安装与测试基本 APIXPath 查找CSS 选择器查找By 对象查找页面元素操作获取页面元素内容浏览器弹出框Selenium WebDriver 基本使用 安装与测试 使用 pycharm 作为开发 IDE 请自行配置好 python 环境变量,避免因为多解释器的问题导致…...