【AIGC】CFG:基于扩散模型分类器差异引导

摘要

分类器指导是最近引入的一种方法,在训练后在条件扩散模型中权衡模式覆盖率和样本保真度,在精神上与其他类型的生成模型中的低温采样或截断相同。分类器引导将扩散模型的分数估计与图像分类器的梯度相结合,因此需要训练与扩散模型分离的图像分类器。它还提出了一个问题,即是否可以在没有分类器的情况下执行指导。我们表明,如果没有这样的分类器,引导确实可以由纯生成模型执行:在我们称之为无分类器指导的情况下,我们联合训练一个条件扩散模型和一个无条件扩散模型,我们结合得到的条件和无条件分数估计来获得样本质量和多样性之间的权衡,类似于使用分类器指导获得的。

引言

        分类器引导将扩散模型的分数估计与a的对数概率的输入梯度混合在一起的分类器。通过改变分类器梯度的强度,Dhariwal和Nichol可以权衡Inception分数(Salimans等人,2016)和FID分数(Heusel等人,2017)(或精度和召回率),其方式类似于改变BigGAN的截断参数。

 

       针对64x64 ImageNet扩散模型的malamute类的无分类器指导。从左到右:增加无分类器引导的数量,从左边的非引导样本开始。

       引导器对三个高斯混合的影响,每个混合分量代表一个类条件下的数据。最左边的图是非引导的边际密度。从左到右是随引导强度增加的归一化引导条件的混合密度

        我们感兴趣的是是否可以在没有分类器的情况下进行分类器引导。分类器引导使扩散模型训练管道变得复杂,因为它需要训练一个额外的分类器,而且这个分类器必须在有噪声的数据上训练,所以通常不可能插入一个预训练的分类器。此外,由于分类器引导在采样期间混合了分数估计和分类器梯度,分类器引导的扩散采样可以被解释为试图将图像分类器与基于梯度的对抗性攻击混淆。这就提出了一个问题:分类器指导是否能够成功地提高基于分类器的度量,比如FID和Inception分数(is),仅仅是因为它与这些分类器是对立的。在分类器梯度方向上的步进也与GAN训练有一些相似之处,特别是使用非参数生成器;这也提出了一个问题,即分类器引导的扩散模型是否在基于分类器的指标上表现良好,因为它们开始类似于gan,而gan已经在这些指标上表现良好。 

        为了解决这些问题,我们提出了无分类器的引导方法,即完全避免使用任何分类器的引导方法。与在图像分类器的梯度方向上采样不同,无分类器引导混合了条件扩散模型和联合训练的无条件扩散模型的分数估计。通过扫过混合权重,我们获得了类似于分类器引导所获得的FID/IS权衡。我们的无分类器引导结果表明,纯生成扩散模型能够与其他类型的生成模型合成极高保真度的样本。 

算法

         虽然分类器指导成功地权衡了截断或低温采样预期的IS和FID,但它仍然依赖于图像分类器的梯度,我们试图消除分类器,原因见第1节。在这里,我们描述了无分类器指导,在没有这种梯度的情况下实现了相同的效果。无分类器指导是修改\epsilon_{\theta}(z_{\lambda},c)与分类器引导具有相同的效果的替代方法,但没有分类器。算法 1 和 2 详细描述了使用无分类器指导进行训练和采样。

算法1

 训练时

算法2

 推理时

讨论

         我们的无分类器指导方法最实际的优点是它极其简单:在训练期间(随机放弃条件)和在采样期间(混合条件和无条件分数估计)只需要对代码进行一行更改。相比之下,分类器引导使训练管道变得复杂,因为它需要训练额外的分类器。这个分类器必须在有噪声的zλ上进行训练,因此不可能插入一个标准的预训练分类器。

代码片段


if args.conditioning_dropout_prob is not None:random_p = torch.rand(bsz, device=latents.device, generator=generator)# Sample masks for the edit prompts.prompt_mask = random_p < 2 * args.conditioning_dropout_probprompt_mask = prompt_mask.reshape(bsz, 1, 1)# Final text conditioning.encoder_hidden_states = torch.where(prompt_mask, null_conditioning, encoder_hidden_states)# Sample masks for the original images.image_mask_dtype = original_image_embeds.dtypeimage_mask = 1 - ((random_p >= args.conditioning_dropout_prob).to(image_mask_dtype)* (random_p < * args.conditioning_dropout_prob).to(image_mask_dtype))image_mask = image_mask.reshape(bsz, 1, 1, 1)# Final image conditioning.original_image_embeds = image_mask * original_image_embeds# Concatenate the `original_image_embeds` with the `noisy_latents`.concatenated_noisy_latents = torch.cat([noisy_latents, original_image_embeds], dim=1)

参考

diffusers/src/diffusers/training_utils.py at main · huggingface/diffusers · GitHub

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

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

相关文章

C#语言依然是主流的编程语言之一,不容置疑

C#语言是由微软在2000年发布的现代面向对象编程语言。尽管在编程语言市场中的占有率相对较低&#xff0c;但C#依然保持了强大的存在感&#xff0c;并未像一些其他语言那样逐渐被淘汰。C#语言不仅有其存在的独特理由&#xff0c;而且拥有许多令人无法忽视的优势。以下从多个方面…

积分电路和滤波电路的主要区别点和应用场合

文章目录 前言一、滤波电路的分类二、有源滤波器和无源滤波器的优缺点和实用范围三、积分电路3.1 无源积分电路3.2 RC充放电的电路响应3.2.1 RC电路的零状态响应3.2.2 RC电路的零输入响应3.2.3 RC电路的全响应3.2.4 选取合适的时间常数四 、无源RC低通滤波器4.3.1 截止频率推导…

kubernetes技术详解,带你深入了解k8s

目录 一、Kubernetes简介 1.1 容器编排应用 1.2 Kubernetes简介 1.3 k8s的设计架构 1.3.1 k8s各个组件的用途 1.3.2 k8s各组件之间的调用关系 1.3.3 k8s的常用名词概念 1.3.4 k8s的分层结构 二、k8s集群环境搭建 2.1 k8s中容器的管理方式 2.2 k8s环境部署 2.2.1 禁用…

VuePress搭建文档网站/个人博客(详细配置)主题配置-导航栏配置

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

针对国内AIGC市场,国内目前出台了那些法律法规?

针对国内AIGC市场&#xff0c;特别是AI生成与合成内容方面&#xff0c;中国已经出台了一系列法律法规来规范其发展和应用。 图片源自“央视新闻” 以下是一些主要的法律法规&#xff1a; 一、国家层面的法律法规 《中华人民共和国网络安全法》 施行时间&#xff1a;2017年6月…

进程监控与管理详解

一、进程的定义: 进程process是正在运行的程序,包括: 分配的内存地址空间 安全属性、包括所有权和特权 一个或多个线程 进程状态 进程的环境包括: 本地和全局变量 当前调度上下文…

java多线程编程示例

程序功能 程序展示了 Java 中如何使用多线程来并行执行任务。具体功能如下&#xff1a; 程序创建了三个线程&#xff0c;每个线程执行相同的任务类 Task。 每个线程在运行时输出自身名称&#xff0c;并模拟执行五次任务&#xff0c;每次任务间隔 1 秒。 主线程在启动这三个线程…

专业学习|系统动力学概观(方法特色、构成要素、建模步骤)

一、系统动力学概览 &#xff08;一&#xff09;系统动力学介绍 系统动力学是一门综合交叉学科&#xff0c;其基础理论涵盖了控制论、信息论和决策论等多个领域。它利用计算机仿真技术对复杂系统进行定量研究&#xff0c;尤其是那些具有非线性、高阶次和多重反馈特征的系统。这…

【可视化大屏系列】数据列表自动滚动效果

要实现列表的自动滚动效果&#xff0c;这里提供两种解决方案&#xff1a; 1.vue插件 官方文档&#xff1a;链接: vue-seamless-scroll &#xff08;1&#xff09;安装依赖 npm install vue-seamless-scroll --save&#xff08;2&#xff09;全局注册&#xff08;main.js中&a…

Mysql调优之性能监控(一)

前言&#xff1a; 官网就是最好的老师&#xff1a;MySQL&#xff0c;里面各种语法跟参数跟性能调试工具 一、使用show profile查询剖析工具 -- 开启 SET profiling 1; -- 关闭 SET profiling 0; -- 显示查询的性能分析信息 show profiles; -- 显示具体查询id的执行步骤耗时 S…

linux文件系统权限详解

注:目录的执行权限代表是否可以进入。 一、文件权限控制对文件的访问: 可以针对文件所属用户、所属组和其他用户可以设置不同的权限 权限具有优先级。user权限覆盖group权限,后者覆盖other权限。 有三种权限类别:读取、写入和执行 读权限:对文件:可读取文件…

Django_Vue3_ElementUI_Release_003_前端Vue3项目初始化

1. 概念扫盲 Node.js是基于ChromeV8引擎&#xff0c;让JS在服务端运行的开发平台&#xff0c;就是JS的一种解释器WebPack就是模块打包机&#xff0c;把浏览器不能直接运行的拓展语言找到并打包为合适的格式给浏览器直接使用Vue基于WebPack构件项目的&#xff0c;并带有合理默认…

【网络】TCP/IP 五层网络模型:网络层

最核心的就是 IP 协议&#xff0c;是一个相当复杂的协议 TCP 详细展开讲解&#xff0c;是因为 TCP 确实在开发中非常关键&#xff0c;经常用到&#xff0c;IP 则不同&#xff0c;和普通程序猿联系比较浅。和专门开发网络的程序猿联系比较紧密&#xff08;开发路由器&#xff0…

2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示

目录 1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律数据预处理绘图热力图相关系数图百分比条形图箱线图小提琴图直方图KED图描述性统计分析偏度系数峰度系数其它统计量1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律 数据预处理 …

使用java程序生成具有3D效果的图片

程序功能 图像初始化&#xff1a;创建一个800x800像素的 BufferedImage 对象&#xff0c;并使用 Graphics2D 进行绘图操作。 光照效果&#xff1a;使用 RadialGradientPaint 实现径向渐变效果&#xff0c;模拟从图片中心向外扩散的光照&#xff0c;使图片有深度感&#xff0c;…

Maven 解析:打造高效、可靠的软件工程

Apache Maven【简称maven】 是一个用于 Java 项目的构建自动化工具&#xff0c; 通过提供一组规则来管理项目的构建、依赖关系和文档。 1.Pre-预备知识&#xff1a; 1.1.Maven是什么&#xff1f; [by Maven是什么&#xff1f;有什么作用&#xff1f;Maven的核心内容简述_ma…

【数据结构与算法 | 灵神题单 | 自顶向下DFS篇】力扣1022,623

1. 力扣1022&#xff1a;从根到叶的二进制之和 1.1 题目&#xff1a; 给出一棵二叉树&#xff0c;其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。 例如&#xff0c;如果路径为 0 -> 1 -> 1 -> 0 -> 1&#xff0c;那…

通过sshd_config限制用户登录

在CentOS Stream或其他现代的Linux发行版中&#xff0c;你可能会发现传统的hosts.deny和 hosts.allow文件已经不存在或不被使用。这是因为随着时间的推移&#xff0c;系统的安全策略和网络管理工具已经发生了演变&#xff0c;许多系统管理员和发行版维护者选择使用更现代、更灵…

Mac 上,终端如何开启 proxy

前提 确保你的浏览器可以访问 google&#xff0c;就是得先有这个能力 步骤 查看网络的 http/https 还有 socks5 的 port配置 .zshrc 查看 port 点击 wifi 设置 以我的为例&#xff0c;我的 http/https 都是 7890&#xff0c; socks5 是 7891 查看代理的port 以我的软件…

Ubuntu24.04部署docker

1、更新软件 apt update 2、安装curl apt install apt-transport-https curl 3、导入阿里云GPG秘钥 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 4、添加Docker阿里云仓库到Ubuntu 24.04的…