classifier-free-guidance 扩散模型引导生成

浅谈扩散模型的有分类器引导和无分类器引导 - 知乎这篇文章主要比较一下扩散模型的引导生成的三种做法的区别。它们分别是用显式分类器引导生成的做法,用隐式无分类器引导的做法和用CLIP计算跨模态间的损失来引导生成的做法。 Classifier-Guidance: Diffusion Mode…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/582880086通俗理解Classifier Guidance 和 Classifier-Free Guidance 的扩散模型 - 知乎【当一个扩散模型训练好了之后,如何进行条件生成,例如如何按类别生成?】一、 Classifier Guidance Diffusion2021年OpenAI在「 Diffusion Models Beat GANs on Image Synthesis」中提出Classifier Guidance,使…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/640631667Diffusion学习笔记(五)——Conditional Control(Classifier-Guidance and Classifier-Free) - 知乎前几篇文章都是讨论无条件生成式的Diffusion模型,只能随机采样,无法控制模型的输出。但很多时候,我们要求得到与指定文本信息或者与图像信息对应的输出(即文生图或图生图),这就需要用到条件控制生成技术了。…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/623837604[论文理解] Classifier-Free Diffusion Guidance – sunlin-ai关于 Classifier-Free Diffusion 的论文理解icon-default.png?t=N7T8https://sunlin-ai.github.io/2022/06/01/Classifier-Free-Diffusion.htmlclassifer gudiance的classifer是用于生成任务还是分类任务? - 知乎和classifier-free guidance的区别是什么?icon-default.png?t=N7T8https://www.zhihu.com/question/607447662扩散模型引导生成的三种做法:1.classifier guidance,显式分类器引导生成;2.classifier-free guidance隐式无分类器引导生成;3.clip计算跨模态间的损失引导生成。其中第1种和第2种可以描述为:1.classifier guidance是无条件输入+classifier指导;2.classifier-free guidance是条件输入+无条件输入。可以对应到gan上,gan也有条件gan和非条件gan,gan里面大多数还是非条件gan,比如stylegan,非条件在特定领域训一波,比如人脸还是很有用的,条件gan,按照我之前的经验,效果有待商榷。扩散模型中,非条件的基本就是ddpm等这种生图算法,文生图就属于条件diffusion,那么文本这类condition在训练时如何引导就涉及到了classifier guidance这类方法,gan中比较简单,基本上是把类别的embedding直接拼到采样的随机噪声中,而diffusion model中要设计如何处理text embedding的问题,如何是cfg的话,就是条件输入+无条件输入,就是随机drop text embedding这种方式。

1.classifier guidance 显式分类器引导生成

也叫事后修改,即给定一个训练好的无条件diffusion模型,再进行条件控制输出。扩散模型的前向扩散过程和后向去噪过程都可以用一个随机微分方程表示,其中后向去噪时,可以通过一个神经网络来拟合当前输入关于原数据分布的梯度,来将一个先验分布(如高斯分布)里采样出的点逐渐推进到数据分布里。后向生成可以看成是一个马尔科夫蒙特卡洛采样过程,其中每一步的转移方程都是沿着往数据分布的梯度方向迈进,且该方向由神经网络的输出来拟合。DDPM里扩散网络预测的噪声实际上是往数据分布的转移梯度。

生成符合原数据分布的点,可以通过逐步往该网络的预测梯度方向行走来获得最终数据点。但是这样的无条件生成是无法做到条件生成的,2021年openai在diffusion models beat gans on image synthesis中提出classifier guidance,使得扩散模型能够按类别生成。将条件生成对输入的对数梯度用贝叶斯拆解一下:

想要获得数据分布里在条件约束下的数据点时,实际只要在往数据方向的梯度方向上再额外添加一个分类器的梯度方向即可。classifier guidance需要训练噪声数据版本的classifier网络,推理是每一步都需要额外计算classifier的梯度。

多了y关于x的梯度,这个就是classifier guidance。其中logp(y|x)是classifier。

在DDIM中,噪声估计加上分类器引导的梯度。可以把stable diffusion的预训练模型拿来用,text设置为空,根据它训练一个classifier,实现类别指导生成。

2.classifier-free guidance 

也叫事前修改,即直接将条件y加入到训练过程中。classifier guidance使用显式的分类器有几个问题:1.需要额外训练一个噪声版本的图像分类器;2.该分类器的质量会影响类别生成的效果;3.通过梯度更新图像会导致对抗攻击效应,生成图像可能会通过人眼不可察觉的细节欺骗分类器,实际上并没有按条件生成。谷歌2022年提出classifier-free guidance,可以通过调节引导权重,控制生成图像的逼真性和多样性的平衡,dalle2、imagen、glide和stable dffusion等都是以classifier-free guidance为基础进行训练和推理。classifier-free guidance是通过一个隐式分类器来替代显式分类器,而无需直接计算显式分类器及其梯度。分类器的梯度可以用条件生成概率和无条件生成概率表示:

新的生成过程不再依赖显式的classifier,训练时,classifier-free guidance需要训练两个模型,一个是无条件生成模型(DDPM),一个是条件生成模型,这两个模型可以用一个模型表示,训练时只需要在无条件生成时将条件向量置为零即可。推理时,最终结果可以由条件生成和无条件生成的线性外推获得,生成效果可以由引导系数调节,控制样本生成的逼真性和多样性。

classifier-free guidance一方面大大减轻了条件生成的训练代价,无需训练额外的分类器,只需要在训练时进行随机drop out condition来同时训练两个目标,另一方面,这样的条件生成并不是以一个类似于对抗攻击的方式进行。上面的采样式子,实际上是另个梯度的差值所形成的。在训练时同时算了e(xt,t,y)和e(xt,t),然后计算差值就到了加条件的目的。

在stable-diffusion-webui中,negative prompt实际上就用了无分类器引导的公式,将无条件生成转成不想要的提示的条件生成。

既然网络可以接受条件输入,输出不就自然是根据条件引导生成的结果,为什么还要用无条件的结果?并不是在生成网络加个条件输入就是条件生成,条件生成可理解为条件概率问题,cfg是根据隐分类器推导成线性外插的形式。classifier-guidance是每一步要训练一个分类器引导;classifier-free guidance不用训练分类器,只要在训练条件生成模型时,给一个空条件,然后使用真实条件引导+空条件引导来更好的控制条件生成。

stable diffusion在训练过程中,采用classifier-free guidance,就是在训练条件扩散模型的同时也训练一个无条件扩散模型,同时在采样阶段将条件控制下预测的噪声和无条件控制下的预测噪声组合在一起来确定最终的噪声。

这里w是guidance scale,当w越大时,condition起的作用越大,即生成的图像和输入文本一致,cfg实现很简单,在训练过程中,只需要以一定概率(比如10%)随机drop掉text即可,我们可以将text置为空字符串。

3.clip损失引导生成

通过使扩散生成的图像和目标文本的多模态clip损失尽可能小来达到目的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React + BraftEditor 实现富文本编辑

Braft Editor 是一个基于 React 和 Draft-js 开发的富文本编辑器,提供了丰富的基础功能,如基本文本格式化、列表、链接、图片上传、视频插入等,并且还支持扩展。 首先,确保你已经在项目中安装了 Braft Editor 和它的依赖项&#x…

腾讯云发布新一代基于AMD处理器的星星海云服务器实例SA5

基础设施的硬实力,愈发成为云厂商的核心竞争力。 11月24日,腾讯云发布了全新一代星星海服务器。基于自研服务器的高密设计与硬件升级,对应云服务器SA5是全球首家搭载第四代AMD EPYC处理器(Bergamo)的公有云实例&#…

【机器学习】平滑滤波

平滑滤波技术 平滑滤波,顾名思义就是对信号进行处理使之整体显得更加平滑,降低噪声影响,提高信号质量,它常见于数字信号处理和图像处理,一般意义上的数字信号多体现于一维数据,图像信号多体现于二维数据。…

大众博客系统测试报告【改】

一、项目背景 大众博客系统采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。前端主要有四个页面构成:登录页、列表页、详情页以及编辑页,以上模拟实现了最简单的大众博客系统。其结合后端…

DGL在异构图上的GraphConv模块

回顾同构图GraphConv模块 首先回顾一下同构图中实现GraphConv的主要思路(以GraphSAGE为例): 在初始化模块首先是获取源节点和目标节点的输入维度,同时获取输出的特征维度。根据SAGE论文提出的三种聚合操作,需要获取所…

Day40力扣打卡

打卡记录 包子凑数(裴蜀定理 DP) 根据裴蜀定理,存在 c gcd(a, b) 使不定方程ax by c满足条件,如果gcd(a, b) 1即a与b互素的情况下,就会 ax by 1,由于为1可以构造后面的无穷数字,故得到结…

项目实战详细讲解带有条件响应的 SQL 盲注、MFA绕过技术、MFA绕过技术、2FA绕过和技巧、CSRF绕过、如何寻找NFT市场中的XSS漏洞

项目实战详细讲解带有条件响应的 SQL 盲注、MFA绕过技术、MFA绕过技术、2FA绕过和技巧、CSRF绕过、如何寻找NFT市场中的XSS漏洞。 带有条件响应的 SQL 盲注 这篇文章的核心要点如下: 漏洞发现:作者在Portswigger提供的实验室中发现了一个盲SQL注入漏洞。这个漏洞存在于一个应…

【libGDX】Mesh纹理贴图

1 前言 纹理贴图的本质是将图片的纹理坐标与模型的顶点坐标建立一一映射关系。纹理坐标的 x、y 轴正方向分别朝右和朝下,如下。 2 纹理贴图 本节将使用 Mesh、ShaderProgram、Shader 实现纹理贴图,OpenGL ES 的实现见博客 → 纹理贴图。 DesktopLauncher…

Prometheus环境搭建和认识

Prometheus 环境搭建 1.prometheus 简介 Prometheus是基于go语言开发的一套开源的监控、报警和时间序列数据库的组合,是由SoundCloud公司开发的开源监控系统,Prometheus于2016年加入CNCF(Cloud Native Computing Foundation,云原生计算基金…

虾皮插件:优化Shopee商家店铺运营的利器

在如今竞争激烈的电商市场中,如何提升Shopee商家店铺的运营效率和销售业绩成为了摆在每个商家面前的一道难题。然而,幸运的是,虾皮插件-知虾的出现为商家们带来了一种全新的解决方案。本文将介绍虾皮插件的用途和优势,并详细介绍其…

【第一部也是唯一一部】3DMAX脚本语言MAXScript 中文帮助

3DMAX我们很多3D设计师和艺术家都在使用这款功能强大的三维软件,但是再强大的工具也不可能包罗万象,无所不能,所以,通常官方努力在功能和性能平衡之间的同时,也提供第三方扩展软件功能的可能—插件开发。 3DMAX插件开发…

Linux的基本指令(3)

16.cal指令 cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。 命…

安防系统智能视频监控中出现画面异常该如何自检?

大家都知道,在当今社会,摄像头无处不在,除了常见的生活与工作场景中,在一些无法人员无法长期驻点场景,如野生动物监测、高空作业监控、高压电缆监控等场景,在这些地方安装摄像头就是为方便日常监控。但是由…

java 反射和注解1-反射详解

反射和注解本就是一家人,注解离不开反射,这里先将反射的写法,本文涉到的注解暂时可以不不用理解 1,创建一个类 public class ReflexUser {public String name;private String namePrivate;protected String nameProtected;Strin…

【自主探索】基于 rrt_exploration 的单个机器人自主探索建图

文章目录 一、rrt_exploration 介绍1、原理2、主要思想3、拟解决的问题4、优缺点 二、安装环境三、安装与运行1、安装2、运行 四、配置自己的机器人1、Robots Network2、Robots frame names in tf3、Robots node and topic names4、Setting up the navigation stack on the rob…

CSS特效018:科技动画,hover后点亮阁楼,拉伸出楼梯

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…

Linux时间命令—— 显示时间,日历等

目录 1.date显示时间 1.1 常用的标记列表: 1.2 设定时间: 2.cal显示日历 3.时间戳 1.date显示时间 date 用法:date [OPTION] ... [FORMAT] 1.1 常用的标记列表: %H : 小时 (00..23) %M : 分钟 (00..59) %S : 秒 (00..61…

nginx基础篇学习

一、nginx编译安装 1、前往nginx官网获取安装包 下载安装包 2、解压 3、安装 进入安装包 安装准备:nginx的rewrite module重写模块依赖于pcre、pcre-devel、zlib和zlib-devel库,要先安装这些库 安装: 编译: 启动&#xff…

ErphpdownV16.21插件 安装教程和插件下载

ErphpdownV16.21插件下载_新版本 上传插件并解压 登入后台插件管理启动ErphpdownV16.21插件即可 启动后设置即可使用此版本为学习版插件 功能介绍: Erphpdown会员推广下载专业版 经过完美测试运行于wordpress 3.x-6.x版本。后续会增加更多实用的功能。已针对此插件…

医学图像分割:U_Net 论文阅读

“U-Net: Convolutional Networks for Biomedical Image Segmentation” 是一篇由Olaf Ronneberger, Philipp Fischer, 和 Thomas Brox发表的论文,于2015年在MICCAI的医学图像计算和计算机辅助干预会议上提出。这篇论文介绍了一种新型的卷积神经网络架构——U-Net&a…