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

2024-04-03 13:04

本文主要是介绍浅析扩散模型与图像生成【应用篇】(十五)——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。权重系数越大,生成结果则与引导信息更加一致,但生成结果的多样性也会随之下降。不同引导模式的生成结果如下
在这里插入图片描述

这篇关于浅析扩散模型与图像生成【应用篇】(十五)——SDG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872992

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为