浅析扩散模型与图像生成【应用篇】(二十三)——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.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自