浅析扩散模型与图像生成【应用篇】(十五)——SDG

15. More Control for Free! Image Synthesis with Semantic Diffusion Guidance

  该文提出一种基于语义引导扩散模型的的图像生成算法,SDG,可使用文本或图像作为引导来指引图像的生成,也可以二者同时使用,实现多模态的引导。增加引导信息无需对扩散模型进行微调训练,可以直接作用在生成阶段。相对于现有的文本引导图像生成方法StyleCLIP或图像引导生成方法ILVR,SDG不仅能够适应更多模态的输入,且生成样本也具备更大的多样性。
在这里插入图片描述
  在ADM这篇论文中,作者提出一种基于分类器引导的扩散模型,通过额外训练一个分类器 p ϕ ( y ∣ x t , t ) p_{\phi}(y|x_t,t) pϕ(yxt,t),并计算分类器对输入 x t x_t xt的对数梯度 ∇ x t log ⁡ p ϕ ( y ∣ x t ) \nabla_{x_{t}} \log p_{\phi}\left(y \mid x_{t}\right) xtlogpϕ(yxt),将其乘以一个系数加到原本去噪模型估计得到的均值 μ \mu μ上,就可以实现对扩散模型的引导。相当于根据分类器的偏好改变了噪声估计的分布,使其均值向分类器的梯度方向移动。具体实现方式如下 μ , Σ ← μ θ ( x t ) , Σ θ ( x t ) x t − 1 ←  sample from  N ( μ + s Σ ∇ x t log ⁡ p ϕ ( y ∣ x t ) , Σ ) \begin{array}{l} \mu, \Sigma \leftarrow \mu_{\theta}\left(x_{t}\right), \Sigma_{\theta}\left(x_{t}\right) \\ x_{t-1} \leftarrow \text { sample from } \mathcal{N}\left(\mu+s \Sigma \nabla_{x_{t}} \log p_{\phi}\left(y \mid x_{t}\right), \Sigma\right)\end{array} μ,Σμθ(xt),Σθ(xt)xt1 sample from N(μ+sΣxtlogpϕ(yxt),Σ)  本文的方法借鉴了ADM的思想,只是将分类器引导拓展到更一般的语义引导,使用一个引导函数 F ϕ ( x t , y , t ) F_{\phi}(x_t,y,t) Fϕ(xt,y,t)取代了计算分类器对数 log ⁡ p ϕ ( y ∣ x t ) \log p_{\phi}\left(y \mid x_{t}\right) logpϕ(yxt)的过程,针对不同的引导方式,引导函数有不同的定义。SDG的计算过程如下
在这里插入图片描述

1. 文本引导

  作者采用了CLIP中的文本编码器 E L E_L EL和图像编码器 E I E_I EI来分别计算引导文本 l l l和生成图像 x t x_t xt对应的嵌入特征。有一点需要注意的是,由于CLIP中的图像编码器 E I E_I EI只能根据输入图像 x t x_t xt进行编码,而没有考虑时刻 t t t这一条件,因此作者对 E I E_I EI进行了小小的改动,利用AdaGN层将时刻 t t t引入编码过程,得到了时间依赖的图像编码器 E I ′ ( x t , t ) E_I'(x_t,t) EI(xt,t)。最终文本引导函数定义如下 F ( x t , l , t ) = E I ′ ( x t , t ) ⋅ E L ( l ) F\left(x_{t}, l, t\right)=E_{I}^{\prime}\left(x_{t}, t\right) \cdot E_{L}(l) F(xt,l,t)=EI(xt,t)EL(l)

2. 图像引导

  针对图像引导的情况,作者给出了多种引导方式,包括:图像内容引导,图像结构引导和图像风格引导。内容引导是指生成与引导图像包含相似内容的图像,如根据一张猫的照片,生成另一张猫的照片。内容引导本身不对生成结果的姿态或者空间布局情况进行限制,因此生成结果会包含更多不同的姿态和空间布局情况。而结构引导则更多的侧重于空间维度上的对齐。风格引导,则是注重图像全局风格上的一致性,如生成具有梵高绘画风格的照片。具体的计算过程分别如下:
  图像内容引导 F ( x t , x t ′ , t ) = E I ′ ( x t , t ) ⋅ E I ′ ( x t ′ , t ) F\left(x_{t}, x_{t}^{\prime}, t\right)=E_{I}^{\prime}\left(x_{t}, t\right) \cdot E_{I}^{\prime}\left(x_{t}^{\prime}, t\right) F(xt,xt,t)=EI(xt,t)EI(xt,t)
  图像结构引导 F ( x t , x t ′ , t ) = − ∑ j 1 C j H j W j ∥ E I ′ ( x t , t ) j − E I ′ ( x t ′ , t ) j ∥ 2 2 F\left(x_{t}, x_{t}^{\prime}, t\right)=-\sum_{j} \frac{1}{C_{j} H_{j} W_{j}}\left\|E_{I}^{\prime}\left(x_{t}, t\right)_{j}-E_{I}^{\prime}\left(x_{t}^{\prime}, t\right)_{j}\right\|_{2}^{2} F(xt,xt,t)=jCjHjWj1 EI(xt,t)jEI(xt,t)j 22
  图像风格引导 F ( x t , x t ′ , t ) = − ∑ j ∥ G I ′ ( x t , t ) j − G I ′ ( x t ′ , t ) j ∥ F 2 F\left(x_{t}, x_{t}^{\prime}, t\right)=-\sum_{j}\left\|G_{I}^{\prime}\left(x_{t}, t\right)_{j}-G_{I}^{\prime}\left(x_{t}^{\prime}, t\right)_{j}\right\|_{F}^{2} F(xt,xt,t)=j GI(xt,t)jGI(xt,t)j F2其中 x t ′ x'_t xt是由输入的引导图像 x 0 ′ x_0' x0经过 t t t步扩散过程得到的, G I ′ ( ) j G_I'()_j GI()j表示计算 E I ′ E_I' EI编码器输出的第 j j j层特征图的格拉姆矩阵。

格拉姆矩阵是表达图像风格常用的计算方式,本质是计算矩阵和自身转置矩阵之间的乘积,具体的介绍参见https://zhuanlan.zhihu.com/p/545090017

3. 多模态引导

  正如前文所说,文本引导和图像引导可以同时使用来引导生成过程,实现方式是简单的将不同的引导函数进行加权求和,如下式 F ϕ 0 ( x t , y , t ) = s 1 F ϕ 1 ( x t , y , t ) + s 2 F ϕ 2 ( x t , y , t ) F_{\phi_{0}}\left(x_{t}, y, t\right)=s_{1} F_{\phi_{1}}\left(x_{t}, y, t\right)+s_{2} F_{\phi_{2}}\left(x_{t}, y, t\right) Fϕ0(xt,y,t)=s1Fϕ1(xt,y,t)+s2Fϕ2(xt,y,t)权重系数 s s s可以对生成结果进行控制,对于文本引导权重系数通常取 s = 120 s=120 s=120,而图像引导权重系数通常取 s = 100 s=100 s=100。权重系数越大,生成结果则与引导信息更加一致,但生成结果的多样性也会随之下降。不同引导模式的生成结果如下
在这里插入图片描述

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

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

相关文章

【Redis】Redis的类型及相关操作

一、常用的key操作命令 keys * 查看当前数据库的键值 ttl key 查看还有多少秒过期,-1表示永不过期,-2表示过期 del / unlink key 同样是删除,unlink是非阻塞删除,del则有可能导致阻塞 select dbindex 切换数据库 flushdb 清空…

微服务(基础篇-007-RabbitMQ部署指南)

目录 05-RabbitMQ快速入门--介绍和安装_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p65&vd_source60a35a11f813c6dff0b76089e5e138cc 1.单机部署 1.1.下载镜像 1.2.安装MQ 2.集群部署 2.1.集群分类 2.2.设置网络 视频地址: 05-Rab…

《养育男孩》:培养未来男子汉,养育男孩的全方位指南

粉丝福利:公众号内回复4可免费获取本期《养育男孩》的读书音频哦。 作为一名家长,我们深知在孩子成长过程中,尤其是男孩的成长过程中,父母的角色和责任有多么重大。最近阅读了心理学家史蒂夫比达尔夫所著的《养育男孩》一书&…

使用plasmo开发浏览器插件在网页指定位置添加自定义UI

使用plasmo开发浏览器插件的时候,有时候需要在指定网站的指定页面添加自定义的UI内容,如果通过content.js内容脚本去通过js创建的话,可就太麻烦了,要写不少的js代码。不过plasmo已经帮我们实现了这个功能,就是Content …

「51媒体网」媒体邀约现场采访的优势有哪些?

传媒如春雨,润物细无声的,大家好,我是51媒体网胡老师。 媒体邀约现场采访的优势主要表现在以下几个方面: 实时报道与传播:现场采访能够让媒体了解活动的真实性,此外,到场报道媒体可以实时迅速将…

谷粒商城实战(009 缓存-分布式锁)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强 总时长 104:45:00 共408P 此文章包含第158p-第p165的内容 分布式锁 原理和使用 使用下shell对产生的命令进行发送 查看 -> 撰写 -> 撰写栏 idea 选中的代码提取成方法 加锁…

go优雅读取zip压缩包-进阶2

【前言】 看到这里就晓得了,之前那一一篇文章go优雅读取zip压缩包,依旧还是有些问题,接下来,我就开始描述下本文章讲述的内容: 面对需要多次读取多个zip压缩包里的指定文件内容,如何提升读取的速度&#x…

smart link实验配置

相关知识点:stp生成树协议,收敛时间慢会导致丢帧,所以利用samrt link配置 1.分主从端口,正常情况下主端口工作,从端口阻塞,防止回路,主端口出问题,切换从端口,并通过flu…

寒冬已逝,“量子春天”正来

最近,全球对量子技术领域的私人投资有所下降,引发了一些观点认为这个领域可能正逐渐衰退。 政治家、资助者和投资者并不总是以科学为关注焦点。然而,某些科技领域偶尔会成为热点,正如20世纪50年代核能技术的兴起,那时人…

分月饼 java题解

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in); int m sc.nextInt(); // 读取员工数量mint n sc.nextInt(); // 读取月饼数量n// 调用distribute方法并打印返回的分配方法总数//先默认每人分一个…

​慧天[HTWATER]可以与与SWMM模型之间实现转换吗?

​慧天[HTWATER]软件简介 针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行地表水文、管网水力、水质过程的模拟计算。可以对城市低影响开…

echarts仪表盘特殊样式

const drawChartOption function (value, max) {const colorConfig {name: 测试,colorList: {text: #fff,line2: {type: linear,x: 0, // 右y: 0, // 下x2: 1, // 左y2: 0, // 上colorStops: [// {// offset: 0,// color: transparent// },{offset: 0.1,color: #031e…

TikTok防关联引流系统:全球多账号运营的终极解决方案

tiktok防关联引流系统介绍,tiktok防关联系统是基于tiktok生态研发的效率工具,帮你快速实现tiktok全球多账号运营,系统配备了性能强劲的安卓,防关联智能终端,可一建创建全球多国手机环境,完美满足各类app软件…

CX3324A是德科技CX3324A器件电流波形分析仪

181/2461/8938产品概述: 器件电流波形分析仪,1 GSa/s,14/16 位,4 通道 主机功能特性 为电流和差分传感器以及无源探头接口适配器提供 4 个模拟通道带宽选件:50 MHz、100 MHz、200 MHz存储器深度选件:4 M…

eclipse操作

1. 屏蔽不用的代码或文件夹 右键需要屏蔽的文件夹或文件,选择properties,选择c/c build ,在Exclude resource from build 前面勾选,然后点击apply应用,就屏蔽了这个文件夹或者文件了,编译时就会忽略。 设置…

浅聊什么是Redis?

需求:MySQL面临大量的查询,即读写操作,因此类比CPU,给数据加缓存,Redis诞生。应用程序从MySQL查询的数据,在Redis设置缓存(记录在内存中,无需IO操作),后再需要…

Linux(CentOS)安装Redis教程_简单快捷

一、安装依赖 因为redis是用C语言开发的,所以在安装之前需要确定是否安装gcc环境(gcc -v),如果没有安转可以执行一下命令进行安装 [rootlocalhost ~]# yum install -y gcc 二、下载安装包 1.在官网先进行下载 官网地址&#x…

Node.js-------初识Node.js与内置模块

能够知道什么是 Node.js能够知道 Node.js 可以做什么能够说出 Node.js 中的 JavaScript 的组成部分能够使用 fs 模块读写操作文件能够使用 path 模块处理路径能够使用 http 模块写一个基本的 web 服务器 一.初识Node.js 1.浏览器中的 JavaScript 的组成部分 2.Node.js 简介 …

从“量子”到分子:探索计算的无限可能 | 综述荐读

在2023年年末,两篇划时代的研究报告在《科学》(Science)杂志上引发了广泛关注。这两篇论文分别来自两个研究小组,它们共同揭示了单氟化钙分子间相互作用的研究成果,成功地在这些分子间创造出了分子量子比特。这一成就不…

理解二分类场景评估中的Recall和Precision

场景解释: 二分类场景会有两种输出。我的样本里有猫的图片和其他的图片。我的输出值是“是猫”和“非猫”。这个场景下,“是猫”是我的正样本(Postive)。“非猫”是我的负样本(Negative)。 Confusion matrix: 横向表示预测的结果。纵向表示真实的结果。…