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损失尽可能小来达到目的。

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

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

相关文章

浏览器是什么

浏览器是什么 本文简要介绍浏览器的功能和组成。 浏览器(Web Browser)是一种用于访问和浏览互联网上的网页和资源的软件应用程序。它是用户与互联网交互的主要工具之一。 浏览器通过使用网络协议(如HTTP、HTTPS等)与远程服务器通…

从0开始学习JavaScript--JavaScript数据类型与数据结构

JavaScript作为一门动态、弱类型的脚本语言,拥有丰富的数据类型和数据结构,这些构建了语言的基础,为开发者提供了灵活性和表达力。本文将深入探讨JavaScript中的各种数据类型,包括基本数据类型和复杂数据类型,并介绍常…

nginx知识梳理及配置详解

软件开发全文档获取:点我获取 nginx安装 #nginx安装 yum -y install gcc pcre-devel openssl-devel #依赖包 useradd -s /sbin/nologin nginx ./configure --prefix/usr/local/nginx #指定安装目录 --usernginx #指定用户 --with-http_ss…

【数据库篇】关系模式的表示——(1)问题的提出

1、关系模式的表示 R:表示关系的名字比如:sc选课表,student学生表。 U:表示一个关系模式的所有属性,比如student表:U(sno,sname,sage,ssex)。 …

LedControl 库说明文档

LedControl 库最初是为基于 8 位 AVR 处理器的 Arduino 板编写的。但由于该代码不使用处理器的任何复杂的内部功能,因此具有高度可移植性,并且应该在任何支持 和 功能的 Arduino(类似)板上pinMode()运行digitalWrite() 。 单个 M…

C练习题_3

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。 以下正确的C语言自定义标识符是() A. la B. 2a C. do D. a.12 2.在C语言中,错…

3、Qt使用windeploy工具打包可执行文件

新建一个文件夹,把要打包的可执行文件exe拷贝过来 点击输入框,复制一下文件夹路径 点击电脑左下角,找到Qt文件夹, 点击打开 “Qt 5.12.0 for Desktop” (我安装的是Qt 5.12.0版本) 输入“cd bin”&#xff…

vivado产生报告阅读分析20-QOR

Report QoR Suggestions report_qor_suggestions 命令是处理 QoR 建议对象时使用的主要命令。 QoR 建议对象会创建命令和属性来改善设计的时序性能( 欲知详情 , 请参阅 QoR 建议 ) 。 report_qor_suggestions 命令可执行两项任务 &am…

chatGPT4机器学习数据后最终保留在机器里的是什么? 机器是怎么产生智能的? TensorFlow没有直接开发出类似GPT-4这样的模型

机器学习数据后最终保留在机器里的是机器学习模型。机器学习模型是机器学习系统中的核心,它是机器学习系统能够进行推理和预测的基础。 机器学习模型通常由参数组成。参数是机器学习模型的权重和偏差。机器学习系统通过训练来学习这些参数。训练是指让机器学习系统…

webpack 打包优化

在vue.config.js中配置 下载 uglifyjs-webpack-plugin 包 const { defineConfig } require("vue/cli-service"); var path require("path");module.exports defineConfig({transpileDependencies: true,filenameHashing: false, // 去除Vue打包后.cs…

0003Java程序设计-ssm基于微信小程序的家教信息管理系统

文章目录 摘要目 录系统实现开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘要 本文讲述了基于微信小程序的家教信息管理系统的设计与实现。结合线上管理的特点,分析了家教信息管理系统的现状,给出…

外汇天眼:香港监管机构对AMTD Global Markets Limited启动法律诉讼

香港证监会(SFC)已经启动了法律程序,要求首次审裁法院调查AMTD Global Markets Limited(AMTD,目前以orientiert XYZ Securities Limited为名)及其前高管在与首次公开发行(IPO)相关的…

【经典小练习】修改文件中的数据

文章目录 🌹例子🌺思路🛸方法一✨报错解决 🛸方法二 🌹例子 文本文件中有下面的数据 2-1-9-4-7-8 将文件中的数据进行排序,变成下面的数据 1-2-4-7-8-9 🌺思路 要对这些数据进行排序&#xf…

智慧楼宇可视化视频综合管理系统,助力楼宇高效安全运行

随着互联网技术的进步和发展,智能化的楼宇建设也逐步成为人们选择办公场所是否方便的一个重要衡量因素。在智能化楼宇中,安全管理也是重要的一个模块。得益于互联网新兴技术的进步,安防视频监控技术也得到了快速发展并应用在楼宇的安全管理中…

Python武器库开发-前端篇之html概述(二十八)

前端篇之html概述(二十八) html概述 HTML5是构建Web内容的一种语言描述方式。HTML5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。HTML产生于1990年,1997年HTML4成为互联网标准,…

虹科Pico汽车示波器 | 汽车免拆检修 | 2011款瑞麒M1车发动机起动困难、加速无力

一、故障现象 一辆2011款瑞麒M1车,搭载SQR317F发动机,累计行驶里程约为10.4万km。该车因发动机起动困难、抖动、动力不足、热机易熄火等故障进厂维修。用故障检测仪检测,发动机控制单元(ECU)中存储有故障代码“P0340相…

Vue框架学习笔记——事件处理

文章目录 前文提要事件处理的解析过程样例代码如下:效果展示图片:v-on:click"响应函数"v-on:click简写形式响应函数添加响应函数传参占位符"$event"注意事项 前文提要 本人仅做个人学习记录,如有错误,请多包…

2、git进阶操作

2、git进阶操作 2.1.1 分支的创建 命令参数含义git branch (git checkout -b)<new_branch> <old_branch>表示创建分支-d <-D>删除分支 –d如果分支没有合并&#xff0c;git会提醒&#xff0c;-D强制删除-a -v查看分支-m重新命名分支commit id从指定的commi…

如何打造“面向体验”的音视频能力——对话火山引擎王悦

编者按&#xff1a;随着全行业视频化的演进&#xff0c;我们置身于一个充满创新与变革的时代。在这个数字化的浪潮中&#xff0c;视频已经不再只是传递信息的媒介&#xff0c;更是重塑了我们的交互方式和体验感知。作为字节跳动的“能力溢出”&#xff0c;火山引擎正在飞速奔跑…

RK3588平台 USB框架与USB识别流程

一.USB的基本概念 在最初的标准里&#xff0c;USB接头有4条线&#xff1a;电源&#xff0c;D-,D,地线。我们暂且把这样的叫做标准的USB接头吧。后来OTG出现了&#xff0c;又增加了miniUSB接头。而miniUSB接头则有5条线&#xff0c;多了一条ID线,用来标识身份用的。 热插拔&am…