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

news2024/9/20 17:34:55

摘要

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

引言

        分类器引导将扩散模型的分数估计与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_prob
    prompt_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.dtype
    image_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.coloradmin.cn/o/2141160.html

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

相关文章

WLAN实验简述

一&#xff1a;配置生产AP1上级接入层交换机LSW3 sys [Huawei]sysname LSW3 [LSW3]undo info-center enable [LSW3]vlan batch 10 100 [LSW3]int g0/0/2 [LSW3-GigabitEthernet0/0/2]port link-type trunk [LSW3-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 100 [LSW…

【爱给网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

OpenGL笔记二十一之几何类设计

OpenGL笔记二十一之几何类设计 —— 2024-09-16 下午 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记二十一之几何类设计1.运行1.1.立方体运行1.2.球体运行 2.几何类搭建1.立方体分析2.球体分析3.图片资源文件4.关键实现4.1.geometry.h4.2.geometry.cpp…

您使用过哪些AI集成工具提升工作效率

您使用过哪些AI集成工具提升工作效率 随着AI技术的飞速发展&#xff0c;个人开始寻求高效的方法来构建和管理定制化模型&#xff0c;以简化复杂的开发过程&#xff0c;提高工作效率。说起用AI集成工具来提高工作效率&#xff0c;个人作为开发者&#xff0c;确实在使用AI代码辅助…

进口车电子信息单二维码解密

目录 效果 二维码信息 解密后信息 进口车电子信息单二维码解密 效果 二维码信息 QzcOcj0yNsb9cVZsGoZKBOrBbn4RJ6O0N4q9/R10ANBvPgWt1vO75YmnWHsImhQUluNYC/OUYwWiO2IljHAhPmSAm3BieWZpXwi1IGWzLKAkRGkTUpqhT2pwEhkbMKcFsfsBfxh9MT1KRy2YaDvLKwLvOVHp7ZJUh4DdDof6GBGfsvam…

Json和Http专栏

json 理论 什么是JSON? 规则 被大括号包括的是JSON对象,被中括号包括的是JSON数组. JSON数组JSON对象 实验 构建JSON 用代码实现如下json内容: //构建JSON void WirteJson() {QJsonObject rootObject;//1.插入name字段rootObject.insert("name","china&quo…

OpenAI o1:隐含在训练与推理间的动态泛化与流形分布

随着OpenAI o1发布&#xff0c;进一步激发了产业与学术各界对AGI的期待以及new scaling law下的探索热情&#xff0c;也看到来自社区和专业机构对o1的阐释&#xff0c;但总感觉还差点什么&#xff0c;因此决定以自己的角度分篇幅梳理下&#xff0c;并分享给大伙&#xff1a; O…

使用mlp算法对Digits数据集进行分类

程序功能 这个程序使用多层感知机&#xff08;MLP&#xff09;对 Digits 数据集进行分类。程序将数据集分为训练集和测试集&#xff0c;创建并训练一个具有两个隐藏层的 MLP 模型。训练完成后&#xff0c;模型对测试数据进行预测&#xff0c;并通过准确率、分类报告和混淆矩阵…

vmvare如何给centos7 设置静态IP地址

本章教程,主要介绍如何在vmvare中如何给虚拟机中设置静态IP地址。本章教程中使用的linux发行版是centos7。 目前没有静态IP地址,并且不能联网,此时我们需要给它配置一个静态IP,并且可以实现联网功能。 一、前置步骤 1、网络设置 2、添加网络 添加一个虚拟机网络,选择VMne…

C++笔记---stack和queue

1. stack的介绍及重要接口 stack---栈&#xff0c;是一种“先进后出&#xff0c;后进先出”的数据结构。 此处的stack是STL库中定义的一个类模板&#xff0c;用于实例化出存储各种类型数据的栈。 bool empty() const;判断栈是否为空(空true/非空false)size_t size() const;返…

Kafka日志索引详解与常见问题分析

目录 一、Kafka的Log日志梳理 1、Topic下的消息是如何存储的&#xff1f; 1. log文件追加记录所有消息 2. index和timeindex加速读取log消息日志 2、文件清理机制 1. 如何判断哪些日志文件过期了 2. 过期的日志文件如何处理 3、Kafka的文件高效读写机制 1. Kafka的文件…

刷题日记【160. 相交链表】

160. 相交链表 这虽然是道简单题&#xff0c;但是最简单的方法&#xff08;Set数组存一边然后另一边遍历判断当前结点是否存在于另一边&#xff09;性能很一般&#xff0c;可以思考用双指针来优化写法&#xff08;可以将空间复杂度降至 O(1)&#xff09; 捋思路时&#xff0c;…

Maya怎么把黑色的面反转为白色面

1、选中需要调整的面。 2、点击菜单栏中的“网格显示”&#xff0c;再点击点击“反转(Reverse)”。 3、反转后&#xff0c;原本黑色的面将会变成正常的面&#xff0c;法线方向也会相应改变。 按住ctrlshift鼠标中键 拖动快捷图标至工具栏

NullPointerException 是什么, 如何修复?

下面是chatGPT 01的回复&#xff1a; **NullPointerException**&#xff08;空指针异常&#xff09;是在 Java 等编程语言中出现的运行时错误&#xff0c;当你尝试使用一个尚未初始化的对象引用&#xff08;即&#xff0c;指向 null&#xff09;时就会发生。这个异常表示你的程…

金融教育进乡村:红土散户联盟教你如何分辨好坏资产

2024年8月&#xff0c;【红土散户联盟】再度将关注的目光投向了农村地区&#xff0c;特别是那些经济不发达的地区。作为一个致力于为社会带来积极改变的组织&#xff0c;红土散户联盟再次举办了农村理财讲座&#xff0c;旨在帮助这些地区的居民提高他们的财务管理能力和投资意识…

OJ题-反转链表

给你一个单链表的头节点&#xff0c;请反转链表&#xff0c;并返回新的链表 eg&#xff1a; 1,2,3,4,5--->5,4,3,2,1 //反转链表 struct ListNode* reverseList(struct ListNode* head) {//定义三个变量struct ListNode* n1, * n2, * n3;n1 NULL;n2 head;n3 head->n…

图解Self-Attention和代码实现,大语言模型基础思维导图

文章目录 1 Self-Attention的概念注意优缺点 2 Self-Attention的原理Q,K,V, and Self-Attention计算公式代码实现 Self-Attention的计算细节输入是如何Embedding的&#xff1f;Word EmbeddingsSentence EmbeddingsPre-trained Embeddings SelfAttention是如何计算的计算图 4 Se…

为什么说开放式耳机比入耳式的好?学生党必入的蓝牙耳机推荐

因为开放式耳机相比入耳式耳机更具优势&#xff0c;具体如下&#xff1a; 佩戴舒适度更高&#xff1a; 开放式耳机通常不需要插入耳道&#xff0c;不会对耳道产生压迫&#xff0c;长时间佩戴耳朵不易感到闷热、疼痛或不适&#xff0c;减少了对耳部的物理压迫和摩擦&#xff0…

单硬盘安装Win10和麒麟V10双系统指导建议

随着信创电脑的普及,国产操作系统也逐渐走进了大家的视野,许多人选择了国产操作系统来体验其开源、安全、高效的特性,而Windows系统也是大多数人习惯使用的操作系统。一台电脑上同时安装银河麒麟V10和Windiows10双系统也成为了非常常见的需求。那么,如何在一台电脑上安装银…

阿里员工爆料:阿里前CTO张建峰,也是中专毕业的!之前觉得大专生做到 P9已经很牛了,现在看来,原来中专生也能成为合伙人

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…