DIFFEDIT-图像编辑论文解读
文章目录
- 摘要
- 算法
- Step1:计算编辑mask
- Step2:编码
- Step3:使用mask引导进行解码
- 理论分析:
- 实验
- 数据集:
- 扩散模型:
- ImageNet数据集上实验
- 消融实验
- IMAGEN数据集上实验
- COCO数据集上实验
- 结论
论文: 《DiffEdit: Diffusion-based semantic image editing with mask guidance》
github: https://github.com/johnrobinsn/diffusion_experiments/blob/main/DiffEdit.ipynb
摘要
图像生成最佳展现巨大优势,扩散模型对于各种文本prompt可生成令人信服图片。作者提出DiffEdit,基于文本query进行图像编辑。当前基于扩散模型图像编辑方法,通常需要提供mask,转为条件修复任务。作为对比,DiffEdit可基于prompt自动生成mask,高亮需要编辑区域。在ImageNet达到SOTA,同时作者在COCO及基于文本生成的图像上进行验证。
算法
DIFFEDIT依据文本推理需要编辑的mask区域,图2表示该方法的三个步骤:
Step1:计算编辑mask
进行图像去噪时,不同文本输入,扩散模型给出不同噪声估计,根据噪声估计的差异找到那些图像区域与条件文本变换有关。如图2所示。本算法中使用高斯噪声,通过去除10个输入噪声极值并进行平均化进行稳定预测,归一化到[0, 1],通过阈值0.5进行二值化。
Step2:编码
使用DDIM中编码器 E r E_r Er对输入图 x 0 x_0 x0编码到隐空间,直到达到编码比例 r r r,该过程未使用文本条件;
Step3:使用mask引导进行解码
获得隐向量 x r x_r xr后,基于编辑文本Q使用扩散模型解码 x r x_r xr,同时利用mask M引导扩散过程,该过程通过替换mask以外区域像素值为DDIM编码得到的 x t x_t xt对应区域像素值,因此可映射回源图。
编码比例r决定可编辑能力,该值越大编辑能力更强,从而更好地匹配文本Q,代价为与输入图偏差更大。
理论分析:
对于输入图 x 0 x_0 x0经编码得到的 x r x_r xr,通过无条件DDIM可解码为 x 0 x_0 x0,虽然DIFFEDIT中基于文本Q为条件进行解码,但仍存在强偏置使得与原图接近。
实验
数据集:
ImageNet、Imagen、COCO
扩散模型:
mask分辨率32 * 32(ImageNet)、64 * 64(Imagen及COCO),使用DDIM采样50 step
ImageNet数据集上实验
评估:使用LPIPS感知距离评估与输入图像距离,使用CSFID评估图片真实性以及与文本一致性,ImageNet为单目标因此适合。
越强的图像编辑能力,CSFID得分越低,但是导致图片与输入图不一致,导致LPIPS得分变高。图4表明DIFFEDIT相对于其他方案,在两者之间获得不错均衡。
消融实验
图6中Encode-Decode表示增加DDIM encoding,DiffEdit w/o Encode表示仅使用mask,图6左展示与SDEdit相比,两者均分别提升均衡性,并且两者结合展示出互补性。图5展示可视化结果。
图6右侧展示不同二值化阈值,阈值越低,mask区域越大,0.5可达到不错CSFID-LPIPS均衡。
IMAGEN数据集上实验
评估:使用FID评估图像逼真度,CLIP-Score评估图文一致性。
图7表明DIFFEDIT CLIP-LPIPS及FID-CLIP均衡。其中mask计算有两种:
w/ref. text:使用原始caption 作为参考text;
w/o ref. text:输入空text;
使用原始caption作为参考text获得最佳均衡。图8为可视化结果。使用参考text更容易忽视参考text及query text都描述的部分。
图9展示通过对比caption及query text推理所得mask。
COCO数据集上实验
作者使用COCO验证集,query text与图片对应caption相似但不一致,如图15,以此评估图像编辑能力。评估指标使用CLIPScore, FID and LPIPS。
图10展示DIFFEDIT达到CLIP-LPIPS最佳均衡,但是最大CLIP得分低于SDEdit。
可视化结果如图11,第一列展示DDIM编码好处:能够纠正mask中目标的主要特性;最后三列表明允许选择输入图中不同目标进行不同编辑。
结论
DIFFEDIT,一种新颖的基于扩散模型的语义图像编辑算法。给出文本query,使用扩散模型,DIFFEDIT推理相关区域进行编辑而无用用户提供mask。利用DDIM编码输入图进行初始化生成过程,作者进行理论分析及实验表明该方法保留输入图更多的外观信息。在ImageNet,COCO,Imagen数据集展示不错编辑能力,并且超越之前方法。
相关文章:

DIFFEDIT-图像编辑论文解读
文章目录 摘要算法Step1:计算编辑maskStep2:编码Step3:使用mask引导进行解码理论分析: 实验数据集:扩散模型:ImageNet数据集上实验消融实验IMAGEN数据集上实验COCO数据集上实验 结论 论文: 《D…...

【优选算法】—— 字符串匹配算法
在本期的字符串匹配算法中,我将给大家带来常见的两种经典的示例: 1、暴力匹配(BF)算法 2、KMP算法 目录 (一)暴力匹配(BF)算法 1、思想 2、演示 3、代码展示 (二&…...

Docker容器:docker consul的注册与发现及consul-template守护进程
文章目录 一.docker consul的注册与发现介绍1.什么是服务注册与发现2.什么是consul3.docker consul的应用场景4.consul提供的一些关键特性5.数据流向 二.consul部署1.consul服务器(192.168.198.12)(1)建立 Consul 服务启动consul后…...

Blazor 依赖注入妙用:巧设回调
文章目录 前言依赖注入特性需求解决方案示意图 前言 依赖注入我之前写过一篇文章,没看过的可以看看这个。 C# Blazor 学习笔记(10):依赖注入 依赖注入特性 只能Razor组件中注入所有Razor组件在作用域注入的都是同一个依赖。作用域可以看看我之前的文章。 需求 …...
Python 基础 -- Tutorial(三)
7、输入和输出 有几种方法可以表示程序的输出;数据可以以人类可读的形式打印出来,或者写入文件以备将来使用。本章将讨论其中的一些可能性。 7.1 更花哨的输出格式 到目前为止,我们已经遇到了两种写值的方法:表达式语句和print()函数。(第三种方法是使…...

基于STM32的四旋翼无人机项目(二):MPU6050姿态解算(含上位机3D姿态显示教学)
前言:本文为手把手教学飞控核心知识点之一的姿态解算——MPU6050 姿态解算(飞控专栏第2篇)。项目中飞行器使用 MPU6050 传感器对飞行器的姿态进行解算(四元数方法),搭配设计的卡尔曼滤波器与一阶低通滤波器…...

微信小程序开发教学系列(1)- 开发入门
第一章:微信小程序简介与入门 1.1 简介 微信小程序是一种基于微信平台的应用程序,可以在微信内直接使用,无需下载和安装。它具有小巧、高效、便捷的特点,可以满足用户在微信中获取信息、使用服务的需求。 微信小程序采用前端技…...

Nginx虚拟主机(server块)部署Vue项目
需求 配置虚拟主机,实现一个Nginx运行多个服务。 实现 使用Server块。不同的端口号,表示不同的服务;同时在配置中指定,Vue安装包所在的位置。 配置 Vue项目,放在 html/test 目录下。 config中的配置如下…...

JAVA开发环境接口swagger-ui使用总结
一、前言 swagger-ui是java开发中生产api说明文档的插件,这是后端工程师和前端工程师联调接口的桥梁。生成的文档就减少了很多没必要的沟通提高开发和测试效率。 二、 swagger-ui的使用 1、引入maven依赖 <dependency><groupId>io.springfox</grou…...

mongodb 数据库管理(数据库、集合、文档)
目录 一、数据库操作 1、创建数据库 2、删除数据库 二、集合操作 1、创建集合 2、删除集合 三、文档操作 1、创建文档 2、 插入文档 3、查看文档 4、更新文档 1)update() 方法 2)replace() 方法 一、数据库操作 1、创建数据库 创建数据库…...
分布式与集群的定义及异同
分布式与集群的定义及异同 分布式定义优点不足 集群优点不足 异同 分布式 定义 分布式是指将一个系统或应用程序分散到多个计算机或服务器上进行处理和管理的技术。它是指多个系统协同合作完成一个特定任务的系统。例如,可以将一个大业务拆分成多个子业务…...
电脑端teams一直在线小程序,简单好用易上手
居家办公的你,会不会想要摸鱼!!会不会想要下楼拿快递!!会不会想要出去下馆子!!!然而,teams的5分钟不操作电脑状态就变为离开大大的阻挡了你幸福生活的脚步!&a…...

YOLOv5算法改进(4)— 添加CA注意力机制
前言:Hello大家好,我是小哥谈。注意力机制是近年来深度学习领域内的研究热点,可以帮助模型更好地关注重要的特征,从而提高模型的性能。在许多视觉任务中,输入数据通常由多个通道组成,例如图像中的RGB通道或…...

无涯教程-PHP - XML GET
XML Get已用于从xml文件获取节点值。以下示例显示了如何从xml获取数据。 Note.xml 是xml文件,可以通过php文件访问。 <SUBJECT><COURSE>Android</COURSE><COUNTRY>India</COUNTRY><COMPANY>LearnFk</COMPANY><PRICE…...

Spark Standalone环境搭建及测试
🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 篇一:Linux系统下配置java环境 篇二:hadoop伪分布式搭建(超详细) 篇三:hadoop完全分布式集群搭建(超详细…...
【PHP】流程控制-ifswitchforwhiledo-whilecontinuebreak
文章目录 流程控制顺序结构分支结构if分支switch分支 循环结构for循环while循环do-while循环continue和break 流程控制 顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构) 分支结构:给定一个条件,…...
Pytorch-day04-模型构建-checkpoint
PyTorch 模型构建 1、GPU配置2、数据预处理3、划分训练集、验证集、测试集4、选择模型5、设定损失函数&优化方法6、模型效果评估 #导入常用包 import os import numpy as np import torch from torch.utils.data import Dataset, DataLoader from torchvision.transfor…...

使用Xshell7控制多台服务同时安装ZK最新版集群服务
一: 环境准备: 主机名称 主机IP 节点 (集群内通讯端口|选举leader|cline端提供服务)端口 docker0 192.168.1.100 node-0 2888 | 3888 | 2181 docker1 192.168.1.101 node-1 2888 | 388…...

python numpy array dtype和astype类型转换的区别
Python3 本身对整数的支持做了提升,可以支持无限长度的整数:比如: b 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffPython的模块numpy array定义的数组在windows和MACOS上默认长度是…...
浮动属性样式
🍓浮动属性 属性名称中文注释备注float设置盒子浮动left左浮动,right右浮动,none不浮动clear清除浮动left清除左浮动,right清除右浮动,both左右浮动都清除(注意:clear清除浮动一般只有作用在块…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...

goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...

动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...