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

13. GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models

  该文提出一种基于文本引导的扩散模型用于图像的生成和编辑,可以根据给定的文字描述来生成或编辑图像。在ADM中我们曾介绍了一种基于分类器引导的图像生成模型,其基本的思想是额外训练一个分类器 p ϕ ( y ∣ x t ) p_{\phi}(y|x_t) pϕ(yxt)利用其对数的梯度来引导采样过程,具体来说是对去噪模型预测的均值 μ θ ( x t ∣ y ) \mu_{\theta}(x_t|y) μθ(xty)进行修改,如下式 μ ^ θ ( x t ∣ y ) = μ θ ( x t ∣ y ) + s ⋅ Σ θ ( x t ∣ y ) ∇ x t log ⁡ p ϕ ( y ∣ x t ) \hat{\mu}_{\theta}\left(x_{t} \mid y\right)=\mu_{\theta}\left(x_{t} \mid y\right)+s \cdot \Sigma_{\theta}\left(x_{t} \mid y\right) \nabla_{x_{t}} \log p_{\phi}\left(y \mid x_{t}\right) μ^θ(xty)=μθ(xty)+sΣθ(xty)xtlogpϕ(yxt)虽然这种做法实现了将类别条件引入到生成过程中,可以生成指定类别的图像。但需要额外训练一个分类器,且对于某些很难用分类器去描述的引导内容,该方法也会失效。因此在CDM(Classifier-free diffusion guidance)中提出一种无需分类器的引导方法,具体实现方法如下 ϵ ^ θ ( x t ∣ y ) = ϵ θ ( x t ∣ ∅ ) + s ⋅ ( ϵ θ ( x t ∣ y ) − ϵ θ ( x t ∣ ∅ ) ) \hat{\epsilon}_{\theta}\left(x_{t} \mid y\right)=\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)+s \cdot\left(\epsilon_{\theta}\left(x_{t} \mid y\right)-\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)\right) ϵ^θ(xty)=ϵθ(xt)+s(ϵθ(xty)ϵθ(xt))其中 ϵ θ ( x t ∣ y ) \epsilon_{\theta}\left(x_{t} \mid y\right) ϵθ(xty)表示带有条件 y y y训练的去噪模型,条件 y y y可以通过AdaGN或者图像级联的方式引入去噪模型中, ϵ θ ( x t ∣ ∅ ) \epsilon_{\theta}\left(x_{t} \mid \emptyset\right) ϵθ(xt)则表示条件为空时的扩散模型。

这里的写法和CDM原文中有一些出入,就是公式中第一个 ϵ θ ( x t ∣ ∅ ) \epsilon_{\theta}\left(x_{t} \mid \emptyset\right) ϵθ(xt)在CDM中应该是 ϵ θ ( x t ∣ y ) \epsilon_{\theta}\left(x_{t} \mid y\right) ϵθ(xty),不知道是作者的笔误还是我个人理解有误。

  采用与CDM类似的结构,作者将文本描述 c c c作为条件,用于引导图像生成,如下式 ϵ ^ θ ( x t ∣ c ) = ϵ θ ( x t ∣ ∅ ) + s ⋅ ( ϵ θ ( x t ∣ c ) − ϵ θ ( x t ∣ ∅ ) ) \hat{\epsilon}_{\theta}\left(x_{t} \mid c\right)=\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)+s \cdot\left(\epsilon_{\theta}\left(x_{t} \mid c\right)-\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)\right) ϵ^θ(xtc)=ϵθ(xt)+s(ϵθ(xtc)ϵθ(xt))其中文本描述 c c c先被编码为一个包含 K K K个Token的序列,并将其输入到Transformer中,得到的token嵌入一方面将取代ADM中的类别嵌入,另一方面token嵌入的最后一层(包含 K K K个特征向量)将会被分别映射到ADM模型的每个注意力层的维度,并与对应的注意力层级联起来。通过这样的方式实现了文本描述对去噪模型的引导。
  此外,作者还尝试了一种基于CLIP的引导方式,具体而言,就是利用CLIP中的图像编码器得到对应的图像特征 f ( x t ) f(x_t) f(xt),文本编码器得到文本特征 g ( c ) g(c) g(c),计算二者之间的点乘积梯度来引导去噪过程,如下式所示 μ ^ θ ( x t ∣ c ) = μ θ ( x t ∣ c ) + s ⋅ Σ θ ( x t ∣ c ) ∇ x t ( f ( x t ) ⋅ g ( c ) ) \hat{\mu}_{\theta}\left(x_{t} \mid c\right)=\mu_{\theta}\left(x_{t} \mid c\right)+s \cdot \Sigma_{\theta}\left(x_{t} \mid c\right) \nabla_{x_{t}}\left(f\left(x_{t}\right) \cdot g(c)\right) μ^θ(xtc)=μθ(xtc)+sΣθ(xtc)xt(f(xt)g(c))与ADM中的分类器引导类似,这个CLIP模型也是在带有噪声的图像 x t x_t xt上进行训练的,使其具备对于噪声图像的编码能力。
  实验结果表明,采用无分类器的文本引导方式生成效果要优于基于CLIP的引导方式,其生成效果对比如下
在这里插入图片描述
该方法还可以用于图像修复等编辑类任务,效果如下
在这里插入图片描述

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

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

相关文章

汇编语言学习记录 01

目录 VScode配置调试环境 Debug的主要命令 简单写个Hello World VScode配置调试环境 没有IDE真的蛮难受的 安装插件TASM/MASM 右键扩展设置,选择Assembler:MASM 右键调试即可开始 Debug的主要命令 R-查看和修改寄存器 D-查看内存单元 E-修改内…

Machine Learning机器学习之向量机(Support Vector Machine,SVM)

目录 前言 算法提出背景: 核心思想: 原理: 应用领域: 一、支持向量机分类(主要变体) 二、构建常见的支持向量机模型 基于Python 中的 Scikit-learn 库构建线性支持向量机(SVM) 三、向…

基于SpringBoot和Vue的校园管理系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的校园管理系统的设计与实现 !!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!! 💕💕作者:李同学 💕&#x1f…

超级会员卡积分收银系统源码:积分+收银+商城三合一小程序 带完整的安装代码包以及搭建教程

信息技术的迅猛发展,移动支付和线上购物已经成为现代人生活的常态。在这样的背景下,商家对于能够整合收银、积分管理和在线商城的综合性系统的需求日益强烈。下面,罗峰给大家分享一款超级会员卡积分收银系统源码,它集积分、收银、…

深入在线文档系统的 MarkDown/Word/PDF 导出能力设计

深入在线文档系统的 MarkDown/Word/PDF 导出能力设计 当我们实现在线文档的系统时,通常需要考虑到文档的导出能力,特别是对于私有化部署的复杂ToB产品来说,文档的私有化版本交付能力就显得非常重要,此外成熟的在线文档系统还有很…

Ubuntu 配置 kubernetes 学习环境,让外部访问 dashboard

Ubuntu 配置 kubernetes 学习环境 一、安装 1. minikube 首先下载一下 minikube,这是一个单机版的 k8s,只需要有容器环境就可以轻松启动和学习 k8s。 首先你需要有Docker、QEMU、Hyperkit等其中之一的容器环境,以下使用 docker 进行。 对…

spark 参数

spark.yarn.executor.memoryOverhead 默认值是384M Configuration - Spark 3.5.1 Documentation

最新 CentOS7 上使用 yum 安装 MySQL8 超详细教程

CentOS7 使用 yum 安装 MySQL8 卸载 1、检查本机是否已经安装mysql # rpm -qa | grep mysql # rpm -qa | grep mariabd 命令举例如下: [zhangnode4 yum.repos.d]$ rpm -qa | grep mysql mysql-community-libs-compat-8.0.36-1.el7.x86_64 mysql-community-client…

基于javaweb宠物领养平台管理系统设计和实现

基于javaweb宠物领养平台管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联…

左手医生:医疗 AI 企业的云原生提效降本之路

相信这样的经历对很多人来说并不陌生:为了能到更好的医院治病,不惜路途遥远奔波到大城市;或者只是看个小病,也得排上半天长队。这些由于医疗资源分配不均导致的就医问题已是老生长谈。 云计算、人工智能、大数据等技术的发展和融…

微信小程序的页面交互1

一、page()函数 每个页面的s代码全部写入对应的js文件的page()函数里面。点击编译,就可以显示js代码的运行效果。注意,每个页面的page()函数是唯一的。 page(&#xff…

k8s入门到实战(十三)—— 认证与鉴权

认证与鉴权 官网:https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/ 访问控制 客户端进行认证和鉴权操作 在 k8s 集群中,客户端通常有两类: User Account:一般是独立于 k8s 之外的其他服务管理的用户账号 Ser…