生成模型小结

news2024/11/17 16:48:50

突然发现之前整理的makedown有必要放在博客里面,这样不同的设备之间可以直接观看达到复习的效果.

GAN

在这里插入图片描述
G和D不断的博弈提高自己。GAN的优点是保真度比较高,缺点是多样性比较低。

(auto-encoder)AE,DAE、VAE、VQVAE

在这里插入图片描述
输入x,经过编码器生成,低维度的特征Z(叫bottleneck),然后经过解码器得到图像x‘,训练的目标函数是希望x’能重建之前的x。

Bottleneck Layers 是DenseNet 中的一种特殊的layer,它使用1 x 1 卷积来减少输入特征图的数量,从而提高计算效率。
AU用于无监督学习,学习没有数据标签的数据,学习对高维数据的低维表示(降维)。
denosing auto encoder:DAE、mask AE掩码自编码器
在这里插入图片描述
原图x经过程度的打乱得到Xc,然后输入到编码器,训练的目标函数是希望x’能重建原图的x。

VAE

在这里插入图片描述
学习一个高斯分布均值和方差,例如加一个FC(全连接)层,然后采样一个特征Z。这样在训练完之后编码器就可以不要了,直接在高斯噪声里面随机抽样一个样本给解码器生成照片X。

全连接层 Fully Connected Layer 一般位于整个卷积神经网络的最后,负责将卷积输出的二维特征图转化成一维的一个向量,由此实现了端到端的学习过程(即:输入一张图像或一段语音,输出一个向量或信息)。全连接层的每一个结点都与上一层的所有结点相连因而称之为全连接层。由于其全相连的特性,一般全连接层的参数也是最多的

q(z|x):给定x生成z的过程:后验概率

q(x|z):给定先验分布z预测x。

为什么在图像生成中VAE的多样性比GAN多呢?因为VAE是学习一个分布,在分布中随机生成特征Z,所以多样性要多一些。

VQ-VAE:vector quantised量化
在这里插入图片描述
分布不好学,不预测分布了,使用codebook代替,codebook是8192个向量,可以理解为是聚类中心,比如8192个聚类中心。使用特征图f的向量和codebook里面的向量作对比,找到最接近的聚类中心,把聚类中心的编码存到Z的矩阵里面,比如把Z里面编号为1在codebook里面对应编号为1的向量拿出来当做fq,即为新的特征图fq

为什么叫量化后的特征呢?因为fq是可控的,永远是从codebook里面拿出来的,不是随机生成的。

codebook是一个固定的学习得来的。论文用学到的codebook做一个prior(pixel CNN)用来做生成的任务。pixel CNN其实是auto regressive自回归的模型。

自回归模型AR还有什么?Open家的GPT系列。
自回归模型: 统计上一种处理时间序列的方法,用同一变数例如x的之前各期,亦即x1至xt-1来预测本期xt的表现,并假设它们为一线性关系。 因为这是从回归分析中的线性回归发展而来,只是不用x预测y,而是用x预测x(自己)

OpenAI把pixel CNN换成GPT,这就是DALL E的由来。
在这里插入图片描述
首先是图像文本对,然后把VQVAE的codebook直接拿来用生成特征,然后将文本特征和图像特征直接连接起来,变成序列,然后将序列扔给GPT,让GPT模型去预测一个。推理的过程只需要文本,然后得到文本特征,然后GPT中自回归的生成图像。

DALLE生成的很多图片怎么选择呢,使用CLIP把生成的图片排位,与文本最贴切的图片挑出来。

扩散模型

扩散模型来自于热力学的一个概念,高密度物质到低密度物质扩散,最终达到趋于平衡的状态。例如在屋子里面喷香水,整个屋子都香了
在这里插入图片描述
前向过程:X0不断的加噪声(高斯噪声),每一步加一点,直到最后XT达到平衡的状态,比如0-1正态分布。

反向过程:输入是一个随机噪声Z,训练一个网络,能够根据这个噪声一点一点恢复回来,到最初的图像,从而完成图像生成。
大部分的扩散模型用的是U-Net但也可以用其他的。
在这里插入图片描述
反向过程:这个过程是一个Markov Chain(马尔科夫链https://www.bilibili.com/video/BV1mY411J7u9/?spm_id_from=333.788&vd_source=bc5f7e4259c737be2c0ca390d620bfde
在这里插入图片描述
这个过程可以理解为,我们根据 xt 作为输入,预测高斯分布的均值和方差,再基于预测的分布进行随机采样得到 xt−1 。通过不断的预测和采样过程,最终生成一张真实的图片。

扩散模型引导生成的三种做法

区别:它们分别是用显式分类器引导生成的做法,用隐式无分类器引导的做法和用 CLIP 计算跨模态间的损失来引导生成的做法。

Classifier-Guidance: Diffusion Models Beat GANs on Image Synthesis

Classifier-Free: Classifier Free Diffusion Guidance

DiffusionCLIP: Text-Guided Diffusion Models for Robust Image Manipulation

有分类器引导是通过分类器添加类别信息的,无分类器引导省略了分类器,需要让模型的输入接收类别信息,所以重新训练了一个支持类别信息的模型。训练好后,模型提供类似有分类器引导的梯度。

参考论文: A Survey on Generative Diffusion Model

DDPM
原始的扩散模型用Xt预测Xt-1,DDPM预测的是从Xt到Xt-1的噪声,上面右图,思想和resnet差不多。time embeding用来告诉unet到了扩散模型的第几步,为什么要time embeding?原因是,比如怎么根据不同的输入生成不同的输出,希望unet网络一开始生成粗糙的轮廓,最后希望学到一些高频的特征,但其实所有的unet都是共享参数的,所以需要time embeding提醒模型到什么步骤了,控制输出粗糙一点还是细致一点。
在这里插入图片描述
不停的计算目标函数完成训练。loss是计算噪声的差值。fz是unet网络结构。Z是前向过程中加的噪声是已知的。

DDPM的改进版本
把添加噪声的方式改了,从线性的到余弦的。

diffusion model beats GAN

把模型加大加宽,增加自注意力头的数量。

使用了classifier guide引导模型,加快反向的速度。y是引导信息
在这里插入图片描述

引导信息可以是分类器、clip、图像特征级别的、图像像素级别的

GLIDE:classifier free guided

输出是两个,一个是有条件引导,一个是无条件引导,然后计算他们的差值
在这里插入图片描述

DALLE2

作用:文生图,生成不存在的图片。根据文本编辑图片,例如在原图中添加东西。图生图(生成同一种风格的图片);图像内插;
DALLE2=CLIP+GLIDE(基于扩散模型的文生图方法)
层级式Hierarchical:先生成一个64x64的图片,然后利用一个模型上采样生成 256x256,然后在利用一个模型上采样生成 1024x1024。
在这里插入图片描述CLIP Latents:先训练好一个CLIP模型,找到图片和文本对之间的这种相连关系

然后使用DALLE2的两阶段模型,一个是prior先验模型,一个是解码器decoder。本质上是用clip指导扩散模型。其中的解码器是扩散模型,prior模型也是扩散模型。

扩散模型:概率分布模型,在分布里面采样,所以相比于GAN具有更好的多样性(原创性)。

DALLE 模型的原理
在这里插入图片描述
首先输入图像和文本对训练CLIP,然后CLIP模型是锁住的:训练好之后不会在进行微调和训练了。进一步去走两阶段这个流程。

两阶段的数学原理
在这里插入图片描述
给定文本y预测图片x,等价于给定一个文本y生成x和图像特征zi,因为clip锁定了,也就是图像z和图像zi是一一对应的关系。根据链式法则,将概率写成后面的形式。P(zi|y)就是给定文本生成图像特征也就是prior这个过程,P(x|zi,y),给定文本和图像特征生成图像x是decoder。
Prior怎么训练实现文本特征到图像特征的呢?
用上面的图像特征作监督,监督文本特征生成图像特征,这样就可以保证生成的图像特征不会太离谱。
decoder是升级版的GLIDE模型。

stable diffusion

在这里插入图片描述

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

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

相关文章

Elasticsearch学习笔记(2)

索引库操作 在Elasticsearch中,Mapping是定义文档字段及其属性的重要机制。 Mapping映射属性 type:字段数据类型 1、字符串: text:可分词的文本,适用于需要全文检索的情况。keyword:用于存储精确值&am…

二阶低通滤波器(Simulink仿真)

1、如何将S域传递函数转为Z域传递函数 传递函数如何转化为差分方程_非差分方程转成差分方程-CSDN博客文章浏览阅读4.1k次,点赞4次,收藏50次。本文介绍了如何将传递函数转化为差分方程,主要适用于PLC和嵌入式系统。通过MATLAB的系统辨识工具箱获取传递函数,并探讨了离散化方…

OpenCV第十二章——人脸识别

1.人脸跟踪 1.1 级联分类器 OpenCV中的级联分类器是一种基于AdaBoost算法的多级分类器,主要用于在图像中检测目标对象。以下是对其简单而全面的解释: 一、基本概念 级联分类器:是一种由多个简单分类器(弱分类器)级联组…

Yolov10环境配置

参考文章:1.YOLOv10超详细环境搭建以及模型训练(GPU版本)-CSDN博客 2.Windows下安装pytorch教程(下载.whl的方式)_pytorch whl-CSDN博客 安装步骤和文件夹顺序一样 1.安装CUDA和cuDNN 1.1安装CUDA 1.1.1查看当前你的电脑显卡支持的最高CUD…

Docker从入门到精通_02 Docker魔法之旅:零基础Linux用户也能轻松驾驭的安装部署指南

文章目录 Docker从入门到精通_02 Docker魔法之旅:零基础Linux用户也能轻松驾驭的安装部署指南一 操作系统安装二 操作系统环境准备2.1 关闭防火墙2.1.2.2 关闭selinux2.2.1 临时关闭selinux2.2.2 永久关闭selinux 三 docker引擎安装3.1 从get.docker.com 下载 get-d…

02-ZYNQ linux开发环境安装,基于Petalinux2022.2和Vitis2022.2

petalinux安装 Petalinux 工具是 Xilinx 公司推出的嵌入式 Linux 开发套件,包括了 u-boot、Linux Kernel、device-tree、rootfs 等源码和库,以及 Yocto recipes,可以让客户很方便的生成、配置、编译及自定义 Linux 系统。Petalinux 支持 Ver…

了解 如何使用同快充充电器给不同设备快速充电

在这科技发展迅速的时代,快充技术已经走进了我们生活,不得不说有了快充技术的对比,传统的充电模式已经满足不了人们对充电速度的要求。就比如用华为输出100 W快充充电器为手机充电大概需要23分钟充满100%电量,而传统的充电器则需要…

可以免费制作表情包的AI工具来了!

一直想自己制作一套表情包,但一直没有找到好用的工具,要么就是太麻烦,要么就是不免费。 今天AI表情包免费制作工具来了,手机就可以直接做表情包,非常方便。 先看效果~ 工具用到的是通义APP,可以在频道中找…

车辆重识别(利用扩散模型合成有效数据进行行人再识别预训练)论文阅读2024/9/27

[1]Synthesizing Efficient Data with Diffusion Models for Person Re-Identification Pre-Training 作者:Ke Niu1, Haiyang Yu1, Xuelin Qian2, Teng Fu1, Bin Li1, Xiangyang Xue1*单位:1复旦大学, 2西北工业大学 摘要: 现有的行人重识别…

若伊(前后端分离)学习笔记

基础应用篇 1. 若伊搭建 若伊版本 若依官方针对不同开发需求提供了多个版本的框架,每个版本都有其独特的特点和适用场景: 前后端混合版本 :RuoYi结合了SpringBoot和Bootstrap的前端开发框架,适合快速构建传统的Web应用程序&…

画两个数的平方和的曲线

代码1: from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt# Creating dataset x np.outer(np.linspace(-3, 3, 32), np.ones(32)) y x.copy().T # transpose z (x **2 y **2 )# Creating figure fig plt.figure(figsize …

Android Studio :The emulator process for AVD was killed。

问题描述&#xff1a; 创建虚拟器&#xff0c;点击运行后提示&#xff1a;<font style"color:rgb(34, 34, 38);">The emulator process for AVD was killed</font> 分析原因&#xff1a; 虚拟机安装路径中包含中文字符导致乱码 > Android Studio …

锦天云中秋之夜团圆家宴圆满成功

2024年9月7日&#xff0c;锦天云&#xff08;深圳&#xff09;计算机设备有限公司 在中国深圳成功举办了“融创智合•月满锦天 锦天云中秋之夜团圆家宴。本次盛会吸引了来自各行业的精英和合作伙伴&#xff0c;大家齐聚一堂&#xff0c;共同庆祝这一传统佳节&#xff0c;此次活…

Subdominator:一款针对漏洞奖励计划的子域名安全枚举工具

关于Subdominator Subdominator是一款针对漏洞奖励计划的子域名安全枚举工具&#xff0c;可用于在漏洞搜寻和侦察过程中进行被动子域名枚举。它旨在通过高效枚举子域名和各种免费被动资源来帮助研究人员和网络安全专业人员发现潜在的安全漏洞。 Subdominator 与各种免费和付费…

Comfyui 学习笔记2

在潜空间放大&#xff0c;三种方法&#xff1a;NNLatentUpscale、Upscale Latent、Upscale Latent&#xff0c;其中只有NNLatentUpscale自带模型优化&#xff0c;其他两种需要KSample重新绘画&#xff0c;NNLatentUpscale后也可以接KSmaple。 像素空间放大&#xff0c;同理&am…

attrs:Python的类装饰器(简化类定义)

在 Python 中&#xff0c;类定义和数据管理是非常常见的编程任务。然而&#xff0c;随着代码的复杂性增加&#xff0c;手动编写大量的 __init__、__repr__ 和 __eq__ 等方法可能会显得冗长和重复。为了解决这些问题&#xff0c;attrs 提供了一个简洁且强大的工具&#xff0c;帮…

HTML|基础|创建一个猫咪信息表单的最佳实践指南

创建一个猫咪信息表单的最佳实践指南 本文将指导你如何创建一个简单而有效的猫咪信息表单。我们将通过 HTML 代码的实例&#xff0c;介绍关键元素和最佳实践&#xff0c;确保表单既易于使用又符合标准。 0. 代码全貌 <!DOCTYPE html> <html lang"en">&…

机器学习:opencv--特征检测

目录 前言 一、 Harris 角点检测 1.基本思想 2.代码实现 二、 SIFT&#xff08;尺度不变特征变换&#xff09; 1.代码实现 前言 特征检测是计算机视觉中的一个重要任务&#xff0c;旨在从图像中提取具有辨识度的关键点或区域。这些特征可以用于后续的图像分析、匹配和识别…

江科大笔记—LED闪烁 LED流水灯 蜂鸣器

LED闪烁& LED流水灯& 蜂鸣器 LED闪烁 第一步&#xff0c;使用RCC开启GPIO时钟。 第二步&#xff0c;使用GPIO_Init函数初始化GPIO。 第三步&#xff0c;使用输出或输入的函数控制GPIO口。 RCC库函数 GPIO库函数&#xff08;先了解这些&#xff09; GPIO的8种输入模…

第十四届蓝桥杯真题Java c组A.求和(持续更新)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;蓝桥杯关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 【问题描述】 求1(含)至 20230408(含)中每个数的和。 【答案提交】 这是一道结…