图像生成模型【自编码器、RNN、VAE、GAN、Diffusion、AIGC等】

news2024/12/24 21:58:45

目录

监督学习 与 无监督学习

生成模型

自编码器

从线性维度压缩角度: 2D->1D

线性维度压缩: 3D->2D

推广线性维度压缩

流形

自编码器:流形数据的维度压缩

全图像空间

自然图像流形

自编码器的去噪效果

自编码器的问题

图像预测 (“结构化预测”)

显式密度模型

RNN

PixelRNN [van der Oord et al. 2016]

PixelCNN [van der Oord et al. 2016]

Variational Auto-Encoder  (变分自编码器 VAE)

变分自编码器 VAE

VAE vs PixelRNN

​编辑

隐变量模型

VAE的“不温顺”:Intractability

Generative Adversarial Network  (对抗生成网络 GAN)

训练判别器网络预测图像是否真实

GAN模型

模式崩溃(Mode Collapse)

Diffusion扩散模型

AIGC


监督学习 与 无监督学习

监督学习

数据:(x, y) X是数据,Y是标签

目标:学习一个从x到y的函数映射

样例:分类、回归、物体检测、语义分割、描述

无监督学习

数据:(x) 只有数据,没有标签!

目标:从数据x中学习其固有的结构信息

样例:聚类、维度压缩、表征学习、密度估计 

生成模型

定义:给定训练数据,生成与训练数据服从相同分布的新样本

PixelRNN/CNN较为常用

为什么需要生成模型?

实际应用(图像修复,艺术生成等)

为下游任务(如分类)创造样本做表征学习

生成样本量极少的高维数据(物理、医疗图像等)

模拟环境用于决策判断(机器人、强化学习等)

自编码器

自编码器(Auto-Encoders):通过对编码层限制维度(Dimensionallity)、强制稀疏(Sparsity)、加入噪声(Denoising)等方法,来迫使模型学习数据的结构化表征

!!缺乏采样生成手段

简单来说就是:用无监督方法来获取无标签训练数据的低维表征

 z一般比x的维度小 为什么维度小?

数据压缩可以获得“有意义的信息”

怎么做到?

训练完去掉解码器

 

在有标注的数据集上微调编码器

有监督的数据可以让编码器获得“有意义的信息”

但这样无法采样z,因为不知道它的分布

从线性维度压缩角度: 2D->1D

考虑在二维平面上的点 这些点都在一条直线上

我们可以通过投影的方式把它们压缩到一维且保留相互之间的关系

线性维度压缩: 3D->2D

与一维类似,我们可以把点投影到平面上    进行 “平面拟合”

我们需要记录的数据从三维变成了二维+平面的参数

可以想象成把空间的点投影到一张纸

推广线性维度压缩

主成分分析 Principal Components Analysis (PCA):

- 根据数据的分布找到数据的主成分

- 每个正交的方向为一个主成分

- 可以保留前k个主成分来做维度压缩

- PCA与数据的特征空间高度相关

流形

一张纸上的点可以用二维空间表示

如果进行折叠,那么它仍然可以用二维表示,但是这张纸却变成了三维物体…

流形(manifold)可以看作这种形式的扩展…

自编码器:流形数据的维度压缩

大多数维度压缩的变换是不可逆的

自编码器所学的是一个从流形数据到低维特征的可逆变换

全图像空间

考虑所有分辨率为 100x100 图像   我们来随机采样…

提问: 完全随机采样的图像长什么样?

pixels = np.random.rand(100,100,3)

结论:大多数图像都是噪声

自然图像流形

大多数图像是噪声

有“意义”的图像一般分布在一个具体的流形上

该流形会包含所有拥有相同“意义”的图像

自编码器的去噪效果

自编码器会学习某个在流形上的可逆变换

由于没有“意义”,绝大多数噪声不在流形上

如果我们在输入端就加入噪声,我们就可以得到去噪后的数据

自编码器的问题

自编码器可以还原在流形上的数据点

但是并不能还原该流形上的所有数据点…

无法实现采样确保生成有效的新数据…

图像预测 (“结构化预测”)

我们通常会用类似自编码器的结构来进行 图像到图像之间的迁移

更好的损失函数:更好的生成效果

我们如何设计损失函数,使得不在流形上的数据得到应有的“惩罚”?

设计可学习的损失函数

显式密度模型

RNN

PixelRNN [van der Oord et al. 2016]

从左上角开始生成每个像素

使用RNN和所有已经生成好的像素点生成新的像素点

缺点:顺序生成过程过于缓慢

PixelCNN [van der Oord et al. 2016]

同样从左上角开始生成每个像素

仅使用当前像素点周围一个窗口的区域生成当前像素点

比PixelRNN快很多 但仍然很慢

Variational Auto-Encoder  (变分自编码器 VAE)

变分自编码器 VAE

变分自编码器(Variational Autoencoders,VAE):通过对中间表征概率建模(Probabilistic Modeling)使隐变量服从先验分布

VAE vs PixelRNN

优点:快,直接可以生成所有的像素点

缺点:“不温顺”,无法直接优化z,只能推出似然估计的下界

这样学习的问题是什么?

“不温顺”(难以处理的)

隐变量模型

隐变量模型(Latent Variable Models):学习一个潜在的隐变量空间来解释观测数据的生成过程,可以生成新的样本

VAE的“不温顺”:Intractability

由于z维度较大,较难有效采样 无法通过蒙特卡洛估计 z 来优化p(x│z)

优点: 可以通过微调编码器学习有效编码 理论性更强

缺点: 生成效果一般

研究领域: 解耦表征

Generative Adversarial Network  (对抗生成网络 GAN)

训练判别器网络预测图像是否真实

GAN模型

模式崩溃(Mode Collapse)

GAN总结

优点: 效果好!

缺点: 难以训练

改进方式: Wasserstein GAN (WGAN)、梯度惩罚 (Gradient Penalty)、谱标准化 (Spectral Normalization)

Diffusion扩散模型

如何避免对每一个概念训练一个扩散网络?

方法1:加一个标签给扩散网络

方法2:使用语言模型

与GAN的对比

优点: 扩散模型更好训练

缺点: 速度较慢(需要多步迭代)

AIGC

剩下的应用就不记笔记了~有认真看~

完结撒花!!

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

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

相关文章

CSS判断手机暗黑模式

手机有个功能到了晚上会自动变成深色也就是暗黑模式.这种情况下网页会自动变颜色.如果想自由控制暗黑模式下的html样式的话,可以用如下方式: media (prefers-color-scheme: dark) {/*html, body {*//*filter: invert(1) hue-rotate(180deg);*//*}*/.maill{margin-left: 0;marg…

哪吒汽车“三头六臂”之「浩智电驱」

撰文 / 翟悦 编审 / 吴晰 8月21日,在哪吒汽车科技日上,哪吒汽车发布“浩智战略2025”以及浩智技术品牌2.0。根据公开信息,主编梳理了以下几点:◎浩智滑板底盘支持400V/800V双平台◎浩智电驱包括180kW 400V电驱系统和250kW 800…

Python的装饰器详解:提升接口自动化测试效率

在接口自动化测试中,我们经常会遇到一些共用的功能,例如请求日志记录、接口鉴权、性能监控等。为了避免在每个接口函数中重复编写这些功能的代码,Python提供了装饰器(Decorator)的功能,它能够在不修改原有函…

SAP MM学习笔记26- SAP中 振替转记(转移过账)和 在库转送(库存转储)4- Plant间在库转送 之 在库转送Order(有出荷)

SAP 中在库移动 不仅有入库(GR),出库(GI),也可以是单纯内部的转记或转送。 1,振替转记(转移过账) 2,在库转送(库存转储) 1&#xff…

Web安全——信息收集下篇

Web安全 一、网络空间搜索引擎二、扫描敏感目录/文件1、御剑2、7kbstorm3、bbscan4、dirmap5、dirsearch6、gobuster7、网站文件 三、扫描网页备份四、网站头信息收集五、敏感文件搜索1、GitHub搜索2、Google-hacking3、wooyun漏洞库4、网盘搜索5、社工库6、网站注册信息7、js敏…

Vue学习笔记一(2019)

1.Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用…

【移动机器人】基于JADE改进差分算法的多AGV轨迹规划

最近帮同学做个东西,但是问题在于是之前从没接触过的领域–移动机器人轨迹规划,虽然也是搞机器人的,但是对 AGV 那边的情况是一无所知,这次能完成也算是挑战成功。此次任务目的是多辆AGV小车搬运货物,保证搬运总时间最…

Git学习part1

02.尚硅谷_Git&GitHub_为什么要使用版本控制_哔哩哔哩_bilibili 1.Git必要性 记录代码开发的历史状态 ,允许很多人同时修改文件(分布式)且不会丢失记录 2.版本控制工具应该具备的功能 1)协同修改 多人并行不悖的修改服务器端…

MinIO分布式存储k8s集群部署

一、MinIO是什么 MinIO是go开发的,高性能分布式存储;基于GNU AGPL v3开源,可免费使用; 官网:https://min.io/ github: https://github.com/minio/minio 官网宣传MinIO是世界上速度最快的分布式对象存储; …

Typora导出的PDF目录标题自动加编号

Typora导出的PDF目录标题自动加编号 在Typora主题文件夹增加如下文件后,标题便自动加上了编号: https://gitcode.net/as604049322/blog_data/-/blob/master/base.user.css 例如: 但是导出的PDF中,目录却没有编号: 这…

ConsoleApplication17_2项目免杀(Fiber+VEH Hook Load)

加载方式FiberVEH Hook Load Fiber是纤程免杀,VEH是异常报错,hook使用detours来hook VirtualAlloc和sleep,通过异常报错调用实现主动hook 纤程Fiber的概念:纤程是比线程的更小的一个运行单位。可以把一个线程拆分成多个纤程&#…

高可用集群介绍

一、高可用集群概念 高可用集群( High Availability Cluster, HA 集群),其中高可用的含义是最大限度地可以使用。从集群 的名字上可以看出,此类集群实现的功能是保障用户的应用程序持久、不间断地提供服务。当应用程序出现故障或…

XSSchallenge1-20

test1 第一题直接在test插入XSS代码即可 test2 第二关对内容进行”“包裹 这里可以采用”>来绕过 test3 代码审计发现这里用了htmlspecialchars函数&#xff0c;这个函数对<>和’ “等进行了转义&#xff0c;这里可以用事件来绕过 test4 这里用了str_replace&a…

vue+elementUI el-table实现单选

if (selection.length > 1) {this.$refs.table.clearSelection();this.$refs.table.toggleRowSelection(selection.pop());}

Kubernetes技术--k8s核心技术持久化存储

有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…

Linux多线程同步机制(下)

文章目录 前言一、读写锁二、条件变量总结 前言 一、读写锁 多线程同步机制中的读写锁&#xff08;Read-Write Lock&#xff09;是一种特殊的锁机制&#xff0c;用于控制对共享资源的读写访问。读写锁允许多个线程同时读取共享资源&#xff0c;但在写操作时需要独占访问。 读…

2023年IT服务行业研究报告

第一章 行业概况 1.1 定义 IT服务行业是一个广泛的术语&#xff0c;涵盖了所有提供技术支持和服务的公司。这些服务包括系统集成&#xff0c;云计算服务&#xff0c;软件和硬件支持&#xff0c;网络服务&#xff0c;咨询服务&#xff0c;以及一系列其他类型的技术服务。此外&…

CodeFlow - 渐进式低代码开发管理工具(目前仅服务于前端)

CodeFlow 渐进式低代码开发管理工具 目前仅支持前端开发的使用。 简介 通过界面化操作&#xff0c;简化工作流程。 目前项目支持情况 前端 vue3 软件构想图 codeflow构想图.png 目前功能与界面 功能 前端Web 支持工程管理&#xff0c;将不同的项目归纳到一个工程下进行管理支持…

聊聊检索增强,LangChain一把梭能行吗?

背景 ChatGPT诞生之初&#xff0c;大家仿佛从中看到了未来&#xff1a;可以拿着大语言模型&#xff08;LLM&#xff09;这把锤子&#xff0c;锤遍业务上的钉子。其中最被看好的场景&#xff0c;莫过于搜索&#xff0c;不仅是微软、谷歌、百度这样的大公司将LLM用到自己的搜索业…

【ES6】Promise的入门介绍

Promise 是 JavaScript 中的一个对象&#xff0c;用于处理异步操作。Promise 对象代表一个最终可能完成&#xff08;并得到结果&#xff09;或失败&#xff08;并被拒绝&#xff09;的操作&#xff0c;以及其结果的值。 一个 Promise 有三种状态&#xff1a; Pending&#xf…