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

2024-05-11 03:36

本文主要是介绍浅析扩散模型与图像生成【应用篇】(二十三)——Imagic,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

23. Imagic: Text-Based Real Image Editing with Diffusion Models

  该文提出一种基于文本的真实图像编辑方法,能够根据纯文本提示,实现复杂的图像编辑任务,如改变一个或多个物体的位姿和组成,并且保持其他特征不变。相比于其他文本-图像编辑工作,Imagic具备更丰富的编辑方式,并且能够更好的保留编辑对象原有的特征。下面先展示一波结果,秀一下肌肉。可以看到编辑的效果非常逼真,而且是对图像中目标物体直接进行编辑,而不是重新生成一个新的对象。
在这里插入图片描述
  基于扩散模型的文本-图像编辑和生成的基础理论我这里就不再赘述了,不清楚的可以参考本博客该专栏下的其他文章。笼统点来讲,我们要把输入的文本描述转化为一个嵌入式向量,并将其作为一种条件信息引入到图像生成过程中,从而实现图像的编辑。本文提出的方法包含三个步骤:文本嵌入特征的优化,扩散模型的微调,以及特征插值与图像生成,如下图所示。
在这里插入图片描述
  首先,输入的文本描述经过一个文本编码器得到一个目标文本特征 e t g t e_{tgt} etgt,并使用一个预训练好的文本-图像生成模型 f θ f_{\theta} fθ对文本特征 e t g t e_{tgt} etgt进行优化,损失函数如下 L ( x , e , θ ) = E t , ϵ [ ∥ ϵ − f θ ( x t , t , e ) ∥ 2 2 ] \mathcal{L}(\mathbf{x},\mathbf{e},\theta)=\mathbb{E}_{t,\epsilon}\left[\left\|\boldsymbol{\epsilon}-f_{\theta}(\mathbf{x}_{t},t,\mathbf{e})\right\|_{2}^{2}\right] L(x,e,θ)=Et,ϵ[ϵfθ(xt,t,e)22]其中初始的 e \mathbf{e} e就是我们上文得到的 e t g t e_{tgt} etgt,在这个过程中生成模型 f θ f_{\theta} fθ的参数是固定不变的。随着训练的过程, e t g t e_{tgt} etgt被不断地更新,使其与输入图像 x x x的特征更加对齐,最终得到优化后的文本特征 e o p t e_{opt} eopt
  然后,我们再固定输入的文本特征 e o p t e_{opt} eopt不变,还是用上面的损失函数,对生成模型 f θ f_{\theta} fθ进行微调训练;同时如果还有其他的辅助模型,如提升分辨率的模型,也在这个过程中进行微调,只不过文本条件仍使用目标文本特征 e t g t e_{tgt} etgt,而不是优化过的 e o p t e_{opt} eopt。不要问为什么,问就是实验显示 e t g t e_{tgt} etgt效果更好。
  最后,我们使用一个线性插值函数来计算 e t g t e_{tgt} etgt e o p t e_{opt} eopt之间的插值,如下式 e ˉ = η ⋅ e t g t + ( 1 − η ) ⋅ e o p t \bar{\mathbf{e}}=\eta\cdot\mathbf{e}_{tgt}+(1-\eta)\cdot\mathbf{e}_{opt} eˉ=ηetgt+(1η)eopt η \eta η是可调的超参数,将插值得到的条件 e ˉ \bar{\mathbf{e}} eˉ输入到微调后的文本-图像生成模型中,即可得到对应的编辑结果。如下图所示,通过调整 η \eta η的大小,我们可以得到有原始图像到目标图像的渐进变化过程,作者表示 η \eta η取值为0.6-0.8时编辑的效果是最好的。
在这里插入图片描述
  作者与许多现有的图像编辑方法进行了比较,结果如下图所示
在这里插入图片描述

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



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

相关文章

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC