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

从四个参数学习 Chord Edit

ChordEdit 是 CVPR 2026 的一篇 one-step 图像编辑论文,作者主页称其获得了 Best Student Paper Honorable Mention 提名,一作/通讯的本科身份让文章爆火。[1][2] 虽然不是搞算法的,也带着好奇看热闹的心态来拜读学习一下。

附录的 Figure 15 是四个参数的消融实验: \(\delta\)\(\lambda\)\(t\), \(t_c\)。本文不妨从这四个参数视角入手整理理解文章。

Extra/Images/IMG_20260608141909074.png

\(\lambda\): Diffusion 推理好似问路

Diffusion 模型函数 \(F(x_t,t,c)\) 输入 latent \(x_t\) 、当前 timestamp \(t\) 以及 prompt \(c\) 作为 condition,输出当前 \(t\) 下的噪声 / velocity / \(x_0\) 等预测;真正从当前 timestamp 走到 target timestamp 的步长由 scheduler / solver 决定,模型本身一般并不把 \(\delta t\) 或 target timestamp 作为 condition。故 One-step Edit 的 baseline 模型也是基于 One-step Backbone,比如 SD-Turbo / ADD、SwiftBrush-v2、InstaFlow。[3][4] Chord Edit 在 one-step 模型本身位移的基础上,添加了接近于 1 的 \(\lambda\) 参数用于放缩位移长度。

Diffusion 推理像是一个不断问路的过程,输入当前位置 \(x_t,t\),查询目标位置 \(c\) ,问到一个大致的方向:往某个方向走多少。如果是 multi-step diffusion,则是需要走一步问一步,每次可能具体指导不准有偏差,但大致方向是对的,多次询问信息越来越准确收敛;而 one-step diffusion 就好比问到了 GPS,直接给出到目标位置的大跨度方向距离。

从 Forwarding 到编辑

Extra/Images/IMG_20260608141909199.png

如图原始图像和目标图像都可以被理解为从高斯噪声出发,通过扩散/flow 过程变为 \(x_{0}^{src}\)\(x_{0}^{tar}\)。Edit 就是要找到一条从 \(x_{src}\)\(x_{tar}\) 的路径。

但相比单独从噪声推理出两个图像,编辑从要求上:(1)编辑区域的语义干净;(2)又要保证非编辑区域的一致性;从实现上:(1)获取了干净的 \(x_0^{src}\) ,进而可以加噪获取任意 \(x_t^{src}\) ,加噪比去噪容易得多;(2)并没有推理完整路径中 \(x_{t}^{tar}\)

语义差分编辑:切换坐标系, \(t\):反事实查询和语义要求

但图像生成模型在训练的时候,只见过同一个图像语义不同噪声程度的变换,没有见过不同图像语义之间的变换。函数 \(F\) 给出的方向,是以噪声 \(N\) 作为原点的坐标系下的。也就是说,\(F(x_t, t, c)\) 即使输入包含另一个语义,模型也会认为那是噪声,被“洗掉”往 \(c\) 的方向优化。

解决这个问题的做法是差分编辑:不要直接用 target prompt 下的完整生成方向,而是减去 source prompt 下的完整生成方向,留下 target 相对 source 的编辑方向。这类 source-target 差分思想在 DiffEdit、FlowEdit、InfEdit 等工作中都能看到。[5][6][7]

更准确地说,ChordEdit 并不是用

\[F(x_t^{tar}, t, c_{tar})-F(x_t^{src}, t, c_{src}), \]

因为 \(x_t^{tar}\) 本身不可得。它实际使用的是同一个 source noisy latent:

\[z_t=\alpha_t x_{src}+\sigma_t\epsilon, \]

然后在这个 \(z_t\) 上做 prompt 差分:

\[R(x_{src},t)=B_t\left(F(z_t,t,c_{tar})-F(z_t,t,c_{src})\right). \]

这就好比切换坐标系:先问“当前状态在 source prompt 下会怎么走”,再问“同一个状态在 target prompt 下会怎么走”,二者相减得到相对编辑方向。Chord Edit 的 Chord transport 使用了两个 timestamp 上的这种差分;而后面的 refinement 严格说不是 source-target 差分,而是用 target prompt 做一次额外语义增强。

因为我们不可能从生成目标图像的路径 \(x_{t}^{tar}\) 中获取变动,我们必须基于 \(x_{t}^{src}\) 找到朝向 target prompt 的方向。所以实际是用 \(F(z_t,t,c_{tar})\) 去问模型:如果同一个 source noisy latent 要服从 target prompt,它会给出什么方向?问 LLM 说这叫做 反事实查询 (counterfactual query)
好在这个近似并非没有道理,随着 \(t\) 值趋近于 1,\(x_{t}^{src}\)\(x_{t}^{tar}\) 都趋向高噪声分布,二者更加接近。故直观上语义更加准确,差分编辑选取的 \(t\) 值需要比较靠近 1。从消融图上可以看得,随着 \(t\) 接近 1,语义指标大致呈现提升趋势。

但论文没有直接选 \(t=1\),而是默认 \(t=0.90\)。原因一方面是 \(t\) 越大语义越强,但背景保真越差;另一方面论文附录提到一些从模型输出映射到 velocity / drift 的系数在 \(t\) 太接近 1 时会数值不稳定。[1:1]

\(t_c\)\(\delta\) :一致性要求

从 prompt 的差分中可以提取编辑语义,那么修改的一致性又该如何保留呢?从差分的理解来说,如果 diffusion 网络能够准确执行分布的变换,差分 prompt 中应该自动消去不需要编辑的部分;但一来反事实查询如果太接近噪声,则会丧失原始图像的语义;二来本身 diffusion 也不能完美映射,需要多步修正。Diffusion 的非理想因素进而导致需要使用方法弥补一致性。

就如前文所说,diffusion 好比问路,每次准确度欠缺,但多次问路大致方向是正确的。换句话说,准确的场方向存在多步之中,而非一步中。 如何将原始存在多步的信息提取到一步之中?

  • 通过训练和轻量网络,将多步压缩到一步中(SwiftEdit);[8]
  • Test-time,将冗余信息去除,压缩到 few-step(InfEdit);
  • Test-time,使用并行的多时间点查询,效率等效 one-step(ChordEdit)。

Chord Edit 选择在相邻的 \(\delta\) timestamp 查询两次变换场,然后取平均,进而消除单步的误差:

\[\hat{u}=\frac{tR(x_{src},t-\delta)+\delta R(x_{src},t)}{t+\delta}. \]

因为本身是并行查询,并不会类似串行 step 显著增加推理时间。从图表上,一次 timestamp 修正效果便已经足够好。论文默认 \(\delta=0.15\)\(\delta=0\) 会退化成 naive residual,\(\delta\) 太大则会过度平滑导致 under-edit。

Extra/Images/IMG_20260608155151591.png

\(t_c\) 则是在进行第一次编辑后,在更远离噪声的时间做第二次微调加强。论文默认 full ChordEdit 是开 proximal refinement 的,也就是 Chord transport 一次 NFE,再加一次 prox refinement,总共 NFE=2。不开 prox 的版本更保守、PSNR 更高;开 prox 后 CLIP-Edited 更高,但背景保真会下降一些。这个做法的论证似乎更多来自前文,留在日后学习。

Test-time 的 diffusion 加速

本文虽然只是介绍图像编辑 one-step diffusion 的改进,对于门外汉而言,无论助于加深对 diffusion 的理解,还是 test-time 方法学习都有很大的意义。

Intra-step: 步数和步数的异质

一千个读者有一千个哈姆雷特,到底 diffusion 不同步数隐含了什么信息众说纷纭,有人说是低频到高频,有人说是从多模到单模,这篇是说语义到结构。当然这几个角度都对都自洽,diffusion 不同步确实承载着不同信息,但又很难量化,往往给出一种启发式方法。

Inter-step:稀疏步数的负面收益

由于步数不同,往往采用根据任务裁剪冗余的方法,这篇论文介绍,稀疏步数本身也会带来负面受益。一些信息不在 intra-step 之中而在 inter-step 之中。

ChordEdit 使用“能量”来评估。能量即控制场变化量的平方(2 范数),如图所示,起点 \(x_{src}\) 和目标分布之间存在一条变换路径,对每次小段路径的变化量求平方和则是能量。这里借用了 Benamou-Brenier 动态最优传输中 kinetic energy 的思想。[9]

如果确定起点和终点,那么能量最小的路径是更稳定、更不容易过冲的路径,“准”的一部分被转换成了“能量小”。但这里也要注意:低能量不是语义正确性的充分条件,\(u=0\) 能量最低但完全不编辑。因此还是需要 CLIP 看语义、PSNR/LPIPS/SSIM 看保真,energy 更多是解释一步积分是否稳定。具体的能量推导和理解我没有太看懂,这部分留给日后加深学习。

静态修正和动态修正:Test-time / Training-free 的修正思路

Test-time 相比 training 无法改变模型参数分布,要更好地发掘出模型本身有什么能力。一般有两种修正思路,静态和动态,静态指针对所有任务,都用统一的方法去做;而动态指针对不同的任务子集分配不同的资源修正。在 test-time 修正,是原始模型设计者的下有,一般认为,在设计模型时都会做参数搜索或者消融实验,给出了完成所有目标任务(静态参数)的统一最小资源,所以一般针对不同任务(动态参数)修正不同的资源更容易去做。ChordEdit 这种既属于静态修正,又属于 training-free 实属难得。 这或许需要发现前人更难以找到的概念才能做出来。

做动态修正就好比写控制流程序,包含条件表达式构建、成本控制两方面:

if condition_experssion: # 条件表达式fast_path; # 分支主体
else:full_path;

条件表达式也叫 verification ,从训练、test-time 单次推理到单次推理某个 step 、某个 layer,随着粒度越来越细,越难给出细粒度方向清晰的指标。最粗粒度的训练覆盖多个任务样本还有 label,准确率指标意义非常清晰明确,而到了细粒度,频率?一致性?困惑度?语义性?各种指标和任务成功率的关系更难分析。给出清晰明确的细粒度判断目标,某种程度上和 RL 设置 reward 十分相似,不过一个从环境给,一个根据模型内部状态/输出给,从这个角度来说,验证条件可能会比 RL reward 更加黑盒。

其次要保证动态控制整体成本比原始 full path 路径更低,假设判断的频率是 \(\alpha\) ,fast path 命中率的概率是 \(p\) ,不同的成本用符号 \(C\), 那么则有:

\[\begin{align} C_{full}>>C_{fast}+(1-p)C_{full}+\alpha C_{cond}\\ pC_{full}>>C_{fast}+\alpha C_{cond} \end{align} \]

一般需要联合降低 \(p\)\(C_{fast}\)\(C_{cond}\) 变量使得等式成立,\(p\) 一般来自非常启发式的直觉,和任务性质本身有关难以用技术优化,此外其他成本一般的技巧有:

  • Batching: 原始模型不能用 batching 的难点往往在于存在数据依赖导致输入数据不足,关键在于找到低成本生成大量无依赖并行数据的方法,比如speculative decoding 用轻量模型低成本生成大量数据[10],ChordEdit 本身有源图像直接可以加噪构建中间态;
  • Skipping: skip 好处在于不需要用训练方式构建新的模型,只需要从原始网络做裁剪,而关键在于拉出一个不质变但是量变的关系,所谓不质变,即skip之后的网络子集对于任务仍然成立,最自然的比如自回归/扩散step,本身多个步骤之间就是完全同构的,删除一部分当然成立;另一种对网络进行 skip 则要麻烦一点,网络本身就是串行连接,怎么保证 skip 之后不同层的语义信息仍然可以输出有效结果,这也相当灰盒了。这种技术最常见应用就是 token pruning 以及 caching。

  1. https://openaccess.thecvf.com/content/CVPR2026/papers/Lu_ChordEdit_One-Step_Low-Energy_Transport_for_Image_Editing_CVPR_2026_paper.pdf ↩︎ ↩︎

  2. https://cnshiyang.github.io/ ↩︎

  3. https://arxiv.org/abs/2311.17042 ↩︎

  4. https://arxiv.org/abs/2408.14176 ↩︎

  5. https://arxiv.org/abs/2210.11427 ↩︎

  6. https://arxiv.org/abs/2412.08629 ↩︎

  7. https://arxiv.org/abs/2312.04965 ↩︎

  8. https://openaccess.thecvf.com/content/CVPR2025/papers/Nguyen_SwiftEdit_Lightning_Fast_Text-Guided_Image_Editing_via_One-Step_Diffusion_CVPR_2025_paper.pdf ↩︎

  9. https://doi.org/10.1007/PL00013653 ↩︎

  10. https://arxiv.org/abs/2605.13778 ↩︎

http://www.rkmt.cn/news/1488644.html

相关文章:

  • 5分钟实现通达信缠论自动化:告别手动画线,让AI帮你分析股票走势
  • 跟着 MDN 学JavaScript day_12:实战挑战——构建交互式笑话生成器
  • Agent记忆系统:基于LangChain的Memory开发实战
  • pyltp加载自定义词典踩坑实录:解决专业术语(如‘亚硝酸盐’)分词不准的问题
  • 航班延误预测:面向运控决策的实时风险评估系统设计
  • 深耕金属包装二十载:东莞万鑫隆的全链路马口铁盒定制之道 - 变量人生001
  • m4s-converter:如何永久保存B站视频的完整指南
  • 终极游戏库管理神器:Playnite一站式整合20+平台与模拟器游戏
  • 计算机小程序毕设实战-基于SSM的图书馆自习室座位预约小程序基于ssm+微信小程序的自习室预约小程序的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • AutoCAD Plant 3D自定义元件避坑指南:手把手教你调试Python脚本参数(以水平四通为例)
  • [20260604]简单测试获取sid的最佳方法.txt
  • Umi-OCR插件完全指南:7款免费OCR引擎的终极安装与使用教程
  • macOS 命令行自动投稿 B 站:biliup-rs 安装 + 一键投稿脚本
  • 国产MCU替代实战:华大HC32F460串口DMA+超时中断,如何搞定不定长数据帧?
  • RTL8153B-VB-CG、集成 LDO / 开关稳压器,支持 EEE 节能与双唤醒功能的网口 IC
  • JAVA算法刷题---DAY2 牛牛的快递、最小花费爬楼梯、数组中两个字符串的最小距离
  • 航空危险品运输全流程智能监管平台技术方案
  • 亚马逊团队“最优快递员“:把一个臃肿的AI大脑变成高效专家小组
  • 告别HC-05!用ESP32内置蓝牙实现主从机通信,成本直降且更灵活
  • 朗禾品牌设计,深耕餐饮VI与空间设计,以专业实力赋能品牌成长 - TOP10品牌推荐榜单
  • Windows右键菜单管理架构解析:ContextMenuManager的核心技术与实现方案
  • KeSpeech:革新方言语音识别的分布式智能数据平台
  • 咸阳樱花热水器燃气灶售后维修电话|快速上门 - GrowthUME
  • 别再每次烧录了!用STM32F4内部Flash保存PID参数,一个完整工程示例
  • 马口铁盒定制厂家观察:东莞市万鑫隆制罐有限公司的业务纵深与认证体系 - 变量人生001
  • 3步构建嵌入式温度控制核心:从PID算法到工业级实现
  • 在职读EMBA怎么选?业内靠谱机构深度解析 - 品牌测评鉴赏家
  • 2026年6月无锡装修公司推荐:避坑攻略与五家靠谱企业实操评测 - 资讯速览
  • Streamlit搭建中文文本摘要Web应用实战
  • 在业务一线,AI能解决哪些实际问题?