当前位置: 首页 > news >正文

EmuEdit

EmuEdit详解:统一多任务图像编辑的扩展性范式


引言:图像编辑的困境

近年来,扩散模型(Diffusion Models)在图像合成和编辑方面取得了巨大进展,如 Prompt-to-Prompt (P2P)InstructPix2PixDiffEdit 等方法。然而,它们往往存在以下问题:

  • 局限于单一任务(Single-task),例如只能修改颜色、添加对象等;
  • 方法碎片化:每种任务用不同的pipeline,缺乏统一框架;
  • 难以扩展新任务(Poor generalization),新增任务通常需要微调整个模型;
  • 缺乏鲁棒性和任务区分能力

这些问题严重限制了图像编辑系统的通用性、交互性和扩展性


EmuEdit的目标

EmuEdit 提出一个统一框架,用于支持多种图像编辑任务,并在不重新训练整个模型的情况下,适应新任务

其核心目标:

  • 支持多任务图像编辑
  • 使用任务嵌入 Task Embedding作为条件信号
  • 实现训练后无调参地扩展新任务(Task Inversion,类似于Textual Inversion的思想)

min ⁡ v new E y , ϵ , t [ ∥ ϵ − ϵ θ ( z t , t , E ( c I ) , c T , v new ) ∥ 2 2 ] \min_{v_{\text{new}}} \, \mathbb{E}_{y, \epsilon, t} \left[ \left\| \epsilon - \epsilon_\theta\left(z_t, t, E(c_I), c_T, v_{\text{new}} \right) \right\|_2^2 \right] vnewminEy,ϵ,t[ϵϵθ(zt,t,E(cI),cT,vnew)22],where v n e w v_{new} vnew is the learned task embedding


EmuEdit如何建模图像编辑任务?

EmuEdit将图像编辑任务统一建模为四元组 (I, T, Tar, TI)

  • I:原始图像
  • T:用户编辑指令文本
  • Tar:目标编辑图像(监督信号)
  • TI:任务类型嵌入(Task Index / Embedding)

本质上是一个条件图像生成问题
给定输入图像 I,文本指令 T,和任务向量 TI,生成目标图 Tar


核心组件与设计

1. 文本指令(T)的构造:人类 + GPT增强

已知image caption和task index,然后利用LLM的in-context learning来给定few-shot examples输出edit instruction。

instruction的格式如下:1)edit指令;2)edit的目标(edited object);3)新的image caption;4)原始目标(original object)

2. 编辑对((I, Tar))的构造:基于 Soft Mask-based Attention Control

EmuEdit 训练需要大量成对图像(输入图像 I 和目标图像 Tar),这些编辑对需保持:

  • 一致的内容结构(同一场景/物体)
  • 明确的编辑目标
  • 可用于监督模型学习图像编辑行为
2.1 背景:从 Prompt-to-Prompt (P2P) 到 Attention Control

最初,Prompt-to-Prompt (P2P) 方法基于扩散过程中的注意力模块修改生成行为,并保持内容一致性。其核心思想是利用文本中词语的注意力,对应地修改图像的局部区域。

但这种方式存在两个局限:

  • 需要 word-to-word alignment,即源指令和目标指令之间词汇的一一对应;
  • 对于复杂或模糊的编辑需求(如“使天空更梦幻”),这种对齐变得不现实。
2.2 引入 Mask-based Attention Control

为了解决上述问题,研究者提出了基于显式 mask 的 attention control方法:

  • 利用图像中显式的空间 mask(如要修改的区域)来调控注意力;
  • 在生成图像时,仅在被 mask 区域施加指令影响,其余区域保持不变。

但 Mask-based Attention Control 也存在问题:

  • Mask 区域边界硬,过于“精确”导致 artifact;
  • 单一 mask 来源不够稳健(例如 DINO 分割不准时会误导注意力);
  • 无法兼顾编辑粒度、形状和上下文一致性。
2.3 EmuEdit 的创新:Soft Mask-based Attention Control

为解决上述问题,EmuEdit 提出 Soft Mask 机制:将多个来源的 mask 混合生成 连续权重分布,让注意力控制更平滑自然。

Soft Mask 是以下三种 mask 的融合(以权重线性组合):

Mask 类型描述
精准 Mask使用 DINO + SAM 提取精细目标区域,获得精确前景掩码;
平滑 Mask将精准 mask 先 膨胀 (dilation),再加上 高斯模糊,获得软边界区域;
Bounding Box Mask用于提供更大但粗糙的上下文编辑范围;用于保证覆盖性;

最终类似于DiffEdit的方法进行融合得到一个 Soft Mask M(x, y) ∈ [0, 1],表示每个像素被编辑的程度。

这种 soft mask 被用于控制 attention weight,在扩散生成图像时:

  • 高 mask 值区域 → 强烈施加新指令影响
  • 低 mask 值区域 → 保持原图信息
2.4 筛选高质量训练对

生成 (I, Tar) 后,使用以下方式筛选有效数据对:

  • 计算 CLIP 图文匹配分数,保证图像与指令语义一致;
  • 图像保真度检测,防止生成图偏离原图结构;
  • 保留高质量样本进入训练集。

最终构建了一个具有强一致性与鲁棒性的 高质量多任务图像编辑数据集


3. 任务嵌入(TI)

  • 为每种任务(如“变颜色”、“加对象”、“去背景”)分配唯一任务 ID
  • 映射成任务向量 v_task,作为扩散模型的条件之一
    值得注意的是,在推理阶段,用户无需输入task index,作者基于Flan-T5-XL训练了一个task index预测模型,来根据用户输入的instruction预测出相应的task index。

模型结构与训练流程

输入:原始的image caption,原始的image object,原始的image caption用Diffusion生成的图片和编辑后的image caption,编辑后的image object。
输出:编辑后的image

此外,为了缓解多轮编辑中误差积累导致的伪影(artifacts)问题,EmuEdit 在每一轮编辑后引入了 逐像素阈值处理步骤(per-pixel thresholding step)

多轮编辑中的逐像素阈值处理策略(Per-pixel Thresholding in Multi-turn Editing)

在每一轮编辑 s s s中,设输出图像为 c I s + 1 c_I^{s+1} cIs+1 ,输入图像为 c I s c_I^s cIs。我们首先计算 RGB 通道上的绝对差值图:

d = ∥ c I s + 1 − c I s ∥ 1 d = \|c_I^{s+1} - c_I^s\|_1 d=cIs+1cIs1

接着,将差值图 d d d 通过低通滤波器平滑,得到平滑差值 d ˉ \bar{d} dˉ,以消除前后帧之间的小尺度波动,并增强过渡的自然性。然后,对每一个像素应用如下逐像素阈值函数:

c I s + 1 = { c I s , if  d ˉ < α c I s + 1 , otherwise c_I^{s+1} = \begin{cases} c_I^s, & \text{if } \bar{d} < \alpha \\ c_I^{s+1}, & \text{otherwise} \end{cases} cIs+1={cIs,cIs+1,if dˉ<αotherwise

其中, α \alpha α 是设定的变化阈值。若某像素的变化小于该阈值,就保留前一轮的像素值,防止无意义的小幅编辑扰动。EmuEdit论文中采用的阈值为:

α = 0.03 \alpha = 0.03 α=0.03

通过该策略,EmuEdit 有效抑制了多轮图像编辑中微小扰动的累积,提高了最终生成图像的稳定性和视觉一致性。这一技术尤其适用于 multi-turn editing 场景。

模型结构基于 条件扩散模型(U-Net + text encoder + task encoder),训练目标如下:
min ⁡ θ E ( I , T , T a r , T I ) [ ∥ ϵ − ϵ θ ( z t , T , E ( I ) , T I ) ∥ 2 ] \min_{\theta} \mathbb{E}_{(I, T, Tar, TI)} \left[ \left\| \epsilon - \epsilon_{\theta}(z_t, T, E(I), TI) \right\|^2 \right] θminE(I,T,Tar,TI)[ϵϵθ(zt,T,E(I),TI)2]

http://www.xdnf.cn/news/519841.html

相关文章:

  • 网页 H5 微应用接入钉钉自动登录
  • python29
  • 【从基础到模型网络】深度学习-语义分割-ROI
  • C++ - 网络编程之初始连接(Winsock2 概述、初始连接案例、初始连接案例解读)
  • 封装、继承、多态的理解
  • Java面试实战:从Spring Boot到分布式缓存的深度探索
  • 程序代码篇---python获取http界面上按钮或者数据输入
  • 批量下载AlphaFold结构
  • leetcode刷题日记——翻转二叉树
  • 第11章 JDBC与MySQL数据库
  • UI架构的历史与基础入门
  • GOP模式调节画面质量讲解
  • 八股碎碎念01——HashMap原理
  • GESP编程能力等级认证C++3级1-数组1
  • 研读论文《Attention Is All You Need》(6)
  • 软考复习——部署
  • 嵌入式通信协议(二)——IIC总线
  • 《P5283 [十二省联考 2019] 异或粽子》
  • OpenAI Chat API 详解:打造智能对话应用的基石
  • 牛客网NC210769:孪生素数对问题解析与实现
  • 5月18日day29打卡
  • Listener method could not be invoked with the incoming message
  • 《C++与OpenCV实战:图像增强大核心算法详解》​​
  • [ctfshow web入门] web122
  • Git目录分析与第一个git commit文件
  • 20倍云台球机是一种高性能的监控设备
  • PortSwigger Labs CSRF详细教程
  • C++学习:六个月从基础到就业——C++17:string_view与filesystem
  • Vue3前端xlsx导出
  • 微服务项目->在线oj系统(Java版 - 3)