EmuEdit
EmuEdit详解:统一多任务图像编辑的扩展性范式
引言:图像编辑的困境
近年来,扩散模型(Diffusion Models)在图像合成和编辑方面取得了巨大进展,如 Prompt-to-Prompt (P2P)、InstructPix2Pix、DiffEdit 等方法。然而,它们往往存在以下问题:
- 局限于单一任务(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+1−cIs∥1
接着,将差值图 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]