CoCoEdit: Content-Consistent Image Editing via Region Regularized Reinforcement Learning¶
会议: ICML 2026
arXiv: 2602.14068
代码: https://github.com/CoCoEdit (有)
领域: 图像生成 / 指令式图像编辑 / RL 后训练
关键词: 内容一致性编辑、像素级相似度 reward、区域正则化、DiffusionNFT、FLUX/Qwen-Image-Edit
一句话总结¶
本文针对"编辑模型常在不该改的区域乱改"这一痛点,构造 CoCoEdit-40K 局部编辑数据集 + 提出 pixel-level 相似度 reward 补充 MLLM reward + 设计区域正则化 RL 目标(高奖励样本约束非编辑区一致、低奖励样本强迫编辑区做出改变),把 FLUX.1 Kontext 和 Qwen-Image-Edit 同时在编辑得分和 PSNR/SSIM 上提升,打破现有"提编辑能力必伤一致性"的 trade-off。
研究背景与动机¶
领域现状:现代指令式编辑模型(FLUX.1 Kontext、Qwen-Image-Edit、Step1X-Edit、BAGEL、OmniGen2)凭海量数据 + 强生成 backbone 已能很好理解指令;近期 Edit-R1、MotionNFT 等用 RL(DPO/PPO/GRPO/DiffusionNFT)+ MLLM reward 做后训练进一步推动编辑得分。
现有痛点:(i) 编辑模型在该编辑的区域做得不错,但非编辑区经常被无意修改——例如改前景人物时背景的枕头消失;(ii) 现有 RL 后训练只用 MLLM reward,而 MLLM 对细粒度的非编辑区像素差异不敏感,反而把编辑模型推向"为了高分而剧烈改图",PSNR 显著下降(Edit-R1 把 FLUX 的 PSNR 砍掉 5.15 dB)。
核心矛盾:编辑能力(MLLM Score)和内容一致性(PSNR)在现有训练目标下是冲突的:MLLM reward 是空间无关的标量、对小改动不敏感;用它做 RL 必然牺牲一致性。
本文目标:构造一个能同时驱动 (i) 准确编辑、(ii) 严格保留非编辑区 的后训练框架,无需在推理时额外提供 mask(保持与基线公平),并配套修改 benchmark 让一致性可被量化评估。
切入角度:(a) 用 MLLM + SAM2 离线标注每个训练样本的 editing mask + 改写指令;(b) 在 reward 端补一个 pixel-level 相似度 reward(masked PSNR/SSIM)让 MLLM 看不见的细节差异被量化;(c) 在 loss 端用 mask 把 latent 分成编辑区和非编辑区,对正负样本分别施加区域级正则化。
核心 idea:把"非编辑区一致性"这件事同时作为 reward 和 region-aware regularizer 注入 RL 后训练,并让高奖励样本(编辑成功)保非编辑区、低奖励样本(欠编辑)反向逼编辑区做改变——形成正负双向修正闭环。
方法详解¶
整体框架¶
三步 RL 循环(每 iteration)。Step 1 数据 + 标注:从 OmniEdit/ImgEdit 选 local editing 样本,用 Qwen2.5-VL-72B 生成 bbox → SAM2 出 mask → dilate → MLLM 用 mask 重写指令,再用 Qwen2.5-VL-72B 按 instruction clarity / mask accuracy / target prominence 三维过滤,得 40K triplet (image, mask, instruction)。Step 2 在线 RL 训练:(i) 从旧策略 \(v^{old}\) 采 \(N\) 个样本 \(\hat x_0^{1:N}\);(ii) 算 MLLM reward \(r_{mllm}\) + 在非编辑区算 normalized PSNR/SSIM 得 \(r_{sim}\),加权融合并经 \(\mathrm{op}(\cdot)\) 转优 optimality;(iii) 用 DiffusionNFT 的隐式正负策略 \(v_\theta^\pm\) + 加上 \(L_{ner}^+\) 与 \(L_{er}^-\) 区域正则项做 policy update。Step 3 推理:mask 仅训练时使用,推理纯文本指令,FLUX/Qwen 直接 LoRA 加载。
关键设计¶
-
像素级相似度 reward \(r_{sim}\) 补 MLLM 盲区:
- 功能:把 MLLM reward 看不见的"非编辑区细节是否被无意改动"显式量化为奖励信号。
- 核心思路:给定输入 \(\hat c_I\)、采样输出 \(\hat x_0\)、editing mask \(m\),在非编辑区计算 \(\mathrm{PSNR}_m, \mathrm{SSIM}_m\);把 PSNR 归一化到 \([0,1]\) 与 SSIM 同尺度,求均值得 \(r_{sim}^{1:N}\);总 reward \(r=\mathrm{op}(\lambda_{mllm} r_{mllm}+\lambda_{sim} r_{sim})\)(\(\lambda_{mllm}=0.8,\lambda_{sim}=0.2\) 默认,op 是 optimality 转换)。
- 设计动机:单 MLLM reward 对"姿态相同但背景细节微变"几乎给同分(Fig.5 例子),导致 RL 训练后非编辑区悄悄漂移;加上像素级 reward 让"保非编辑区"成为可微的优化目标。但若像素 reward 权重过大(\(\lambda_{sim}=0.5\))模型会走向极端保守、完全不编辑——所以 \(\lambda\) 必须偏向 MLLM 一侧。
-
区域解耦正则化 \(L_{ner}^+\) + \(L_{er}^-\)(正负样本分治):
- 功能:把"非编辑区要像、编辑区要变"分别只施加在该约束最相关的样本上,避免一个 loss 同时管两件相反的事。
- 核心思路:基于 DiffusionNFT 的 \(x\)-prediction 公式拿到 \(x_\theta^+(x_t\mid c)\)(正策略输出)和 \(x_\theta^-(x_t\mid c)\)(负策略输出),用下采样后的 mask \(\tilde m\) 定义投影算子 \(P_{ner}(z)=z\odot\tilde m\)、\(P_{er}(z)=z\odot(1-\tilde m)\)。对高奖励(正)样本用 \(L_{ner}^+=\max(0, d(x_\theta^+, c_I)_{\tilde m}-\tau^+)\) 让其在非编辑区与输入 latent 相似(hinge \(\tau^+\) 允许小偏差);对低奖励(负)样本用 \(L_{er}^-=\max(0,\tau^- - d(x_\theta^-, c_I)_{1-\tilde m})\) 反向逼其在编辑区与输入差距大于 \(\tau^-\)(防止欠编辑)。最终 \(\mathcal{L}=\mathbb{E}[r\cdot(\mathcal{L}^+ +\lambda_{ner}L_{ner}^+)+(1-r)\cdot(\mathcal{L}^- +\lambda_{er}L_{er}^-)]\)。
- 设计动机:单一 reward 是标量、没空间信息;像素 reward 虽提供全局一致性但没法对编辑区/非编辑区分别约束。直接把"非编辑区像 + 编辑区不像"两个目标同时塞 loss 会冲突;按正负样本分治——正样本编辑成功了就管"别破坏其他地方"、负样本编辑没做到位就管"赶紧改"——形成方向互补的优化信号,且与 NFT 的 implicit positive/negative policy 框架天然契合。
-
CoCoEdit-40K:mask + 改写指令 + RL 友好的数据 pipeline:
- 功能:把"原本只有 image-instruction 对"的 OmniEdit/ImgEdit 升级成 (image, mask, refined instruction) 三元组,并按"条件信号质量"过滤而非按 GT 编辑结果质量过滤。
- 核心思路:(a) Mask Annotation:Qwen2.5-VL-72B 出 bbox → SAM2 出 mask;(b) Instruction & Mask Augmentation:用 MLLM 把简短指令扩成含空间位置 + 物体属性的 refined instruction,对 replace/motion 类做 mask dilation 覆盖新生成内容;(c) Data Filtering:按 instruction clarity / mask accuracy / target prominence 三维打分,留高分样本,不需要 GT 编辑图像(因为 RL 不学 ground-truth pixel)。
- 设计动机:以往数据集都过滤"编辑效果好坏"以适配 SFT;但 RL 通过 reward 自己探索,需要的不是漂亮 GT 而是"清晰的指令 + 准的 mask"——这两个东西好,policy 才能在每个样本上拿到精确的区域信号。这一数据策略和 RL 目标耦合得很紧。
损失函数 / 训练策略¶
\(\mathcal{L}(\theta)=\mathbb{E}[r\cdot(\mathcal{L}^+ + \lambda_{ner}L_{ner}^+)+(1-r)\cdot(\mathcal{L}^- + \lambda_{er}L_{er}^-)]\)。基础 \(\mathcal{L}^\pm=\|x_\theta^\pm-x_0\|_2^2\),正负策略由 NFT 的 \(v_\theta^\pm = (1\mp\beta)v^{old}\pm\beta v_\theta\) 得到。LoRA rank=32,FLUX.1 Kontext / Qwen-Image-Edit 各微调,8×A800、batch 3、group 12、1K 步,VRAM ≈ 70 GB(与 Edit-R1 持平),每步 ≈ 12 min(比 Edit-R1 多 2 min)。
实验关键数据¶
主实验(GEdit-Bench-EN,加入 PSNR/SSIM/LPIPS/DINO + Rank)¶
| Method | Overall↑ | PSNR↑ | SSIM↑ | LPIPS↓ | DINO↑ | Human Rank↓ |
|---|---|---|---|---|---|---|
| FLUX.1 Kontext | 6.286 | 24.168 | 0.825 | 0.150 | 0.871 | 2.1 |
| w/ Edit-R1 | 7.113 | 19.013 | 0.716 | 0.214 | 0.804 | 2.6 |
| w/ CoCoEdit | 6.939 | 25.331 | 0.874 | 0.139 | 0.882 | 1.6 |
| Qwen-Image-Edit | 7.560 | 19.488 | 0.662 | 0.185 | 0.831 | 2.7 |
| w/ Edit-R1 | 7.746 | 18.441 | 0.639 | 0.214 | 0.804 | 3.3 |
| w/ MotionNFT | 7.711 | 18.709 | 0.642 | 0.201 | 0.813 | 2.9 |
| w/ CoCoEdit | 7.754 | 22.283 | 0.774 | 0.162 | 0.852 | 1.4 |
在 Qwen-Image-Edit 上 CoCoEdit 同时拿下最高编辑得分(7.754)和最高 PSNR(22.283,+2.8 dB),而 Edit-R1/MotionNFT 编辑得分提升但 PSNR 反而下降。ImgEdit-Bench 上 PSNR +1.16 dB / +1.49 dB,Overall 同步提升。
消融实验¶
| Setting | GEdit Overall↑ | GEdit PSNR↑ | ImgEdit Overall↑ | ImgEdit PSNR↑ |
|---|---|---|---|---|
| Qwen-Image-Edit (base) | 7.560 | 19.488 | 3.70 | 17.635 |
| w/ SFT on 40K (含一致性 loss) | 7.219 | 20.293 | 3.61 | 18.048 |
| w/ RL on 120K | 7.723 | 22.204 | 3.79 | 19.201 |
| w/ RL on 40K (CoCoEdit) | 7.754 | 22.283 | 3.79 | 19.125 |
| Reward 配比 | 现象 |
|---|---|
| \(\lambda_{mllm}=0.5,\lambda_{sim}=0.5\) | 编辑得分崩塌、PSNR 暴涨 → 模型完全不编辑 |
| \(\lambda_{mllm}=0.8,\lambda_{sim}=0.2\) | 编辑稳步上升、一致性有上限 |
| + 区域正则化(默认) | 编辑得分进一步提升 + 收敛更快 |
关键发现¶
- 40K 高质量数据已足够 RL 收敛,3× 扩到 120K 几乎无增益(7.754 vs 7.723),印证 RL 看重质量而非规模。
- SFT 即使加一致性 loss 也只小幅提 PSNR、Overall 反降(7.219 < 7.560),说明 CoCoEdit-40K 不是为 SFT 设计——增益主要来自 RL 算法本身 + region regularizer,而非数据。
- Edit-R1 在 FLUX 上把 PSNR 砍掉 5.15 dB,在 Qwen 上砍 1.04 dB;MotionNFT 类似——验证了"现有 RL 后训练偏向编辑能力而牺牲一致性"这一核心动机。
- 全局编辑(style/tone/extract)虽未训练但保持竞争力,甚至 Style 上略胜(Qwen 6.992 vs 6.666);像素一致性训练副作用是利好结构保持的全局风格变换。
亮点与洞察¶
- reward 与 regularizer 双管齐下的设计哲学:MLLM reward 看大方向、像素 reward 看细节、区域正则化按正负样本分别管空间约束——三个信号在不同维度互补,避免任何一个信号过强带来副作用(纯像素 reward 会让模型不编辑、纯 MLLM reward 会让模型乱编辑)。
- 正负样本分治的区域正则化:把"非编辑区一致"放在正样本上、"编辑区必须改变"放在负样本上,是利用 DiffusionNFT 框架 implicit positive/negative policy 的巧思——同一个 loss 在不同样本上传递相反方向的梯度,实现自动 trade-off。
- 数据策略思想可迁移:传统编辑数据集按"GT 图像质量"过滤适配 SFT;本文按"条件信号(指令 + mask)质量"过滤适配 RL——把数据筛选与训练范式对齐,这一思路在其他 RL 后训练任务(视频编辑、3D 编辑)同样适用。
- mask 训练用、推理不用的对齐做法:相比 FireEdit 等推理时也要 mask 的方法,CoCoEdit 推理纯指令,能与 baseline 公平比较——是一个易被实践者忽视但很重要的设计抉择。
局限与展望¶
- 仅在 FLUX.1 Kontext 和 Qwen-Image-Edit 上验证,其他大编辑模型(Step1X-Edit、OmniGen2、BAGEL)是否需要重新训 LoRA 未试。
- 训练数据全是 local editing,对 global style/tone 虽未严重退化但也无显著提升;motion 类编辑只在 Qwen 上提升明显。
- 区域正则化阈值 \(\tau^\pm\) 是 adaptive 但需 type-specific 调参(Appendix B.3),不同编辑类别的最优 \(\tau\) 可能不同;超大编辑(如 90% 区域 replace)下 mask 退化为全 1,region regularizer 失效。
- 训练时需 MLLM-as-reward(Qwen2.5-VL-32B 独立服务器),训练成本仍偏高;负价情感/极端指令下 reward 噪声会放大欠编辑风险。
相关工作与启发¶
- vs Edit-R1 (UniWorld-V2):同样基于 DiffusionNFT 做 image editing RL,但 Edit-R1 用图像生成数据集且只有 MLLM reward;CoCoEdit 改用 image editing 数据 + 像素 reward + 区域正则化,PSNR 比 Edit-R1 提升 6.3 dB(FLUX 25.33 vs 19.01)。
- vs MotionEdit / MotionNFT:MotionNFT 加 motion 对齐 reward 提升运动编辑能力;CoCoEdit 提供更通用的一致性框架,在 Motion 类别(Qwen 7.758 vs MotionNFT 7.760)持平且其他类全面领先。
- vs DPO / PPO / GRPO:本文用 DiffusionNFT 框架避开 policy gradient(DanceGRPO、Flow-GRPO 也走 GRPO 路线),证明在 image editing 这种"奖励信号有噪声 + 区域感很强"的场景下,对比正负策略 + 区域正则化比纯 PG 更稳。
- vs SeedEdit / Step1X-Edit / LongCat-Image:这些是大规模数据训练的强 baseline;CoCoEdit 不需要从头大规模训练,只用 40K + 1K iterations RL 后训练就能把已有顶级模型再推一档,对资源有限的研究者非常友好。
评分¶
- 新颖性: ⭐⭐⭐⭐ pixel-level reward 补 MLLM + 正负样本分治的区域正则化是该子方向首次明确提出的组合,DiffusionNFT 的应用也很巧。
- 实验充分度: ⭐⭐⭐⭐ 两大基线模型 × 两大 benchmark × 多 baseline + 局部/全局编辑 + 数据规模 / SFT 消融 + 人评,覆盖很全。
- 写作质量: ⭐⭐⭐⭐ "三步循环"流程清晰,正负样本分治的 motivation 推导自然,限制和效率分析诚实。
- 价值: ⭐⭐⭐⭐⭐ 实际解决了大编辑模型部署时"乱改背景"的痛点,且能即插即用到现有 SOTA 模型上同时提升编辑质量和一致性,工业应用价值极高。