跳转至

BiFM: Bidirectional Flow Matching for Few-Step Image Editing and Generation

会议: CVPR 2026
论文: CVF Open Access
代码: 暂未公开
领域: 扩散模型 / 图像生成 / 图像编辑
关键词: flow matching, 少步编辑, 双向流匹配, 图像反演, MeanFlow

一句话总结

BiFM 让同一个 flow matching 模型在一次训练里同时学会"噪声→图像"的生成和"图像→噪声"的反演,靠一个共享的瞬时速度场约束两个方向的平均速度,从而在 1~4 步的少步预算下做出高保真的反演式图像编辑,效果稳定超过现有少步编辑方法。

研究背景与动机

领域现状:扩散 / flow matching 模型的图像编辑主流走"反演式编辑"路线——把源图像 inversion 回生成模型的中间隐空间,再用目标 prompt 重新 forward 一遍生成编辑结果。这条路线能保持语义和背景,但天然慢:反演 + 重生成把推理步数翻倍。于是近年研究都在卷"少步编辑"(few-step editing),追求实时交互。

现有痛点:少步反演本质上很难学。少步模型用很大的时间步更新,会放大局部线性化和 ODE solver 的近似误差。具体表现为两类失败:(a) 训练自由反演(如 DDIM inversion)直接把生成步数值反转,但在大步长下 \(|\epsilon_\theta(x_t,t)-\epsilon_\theta(x_{t+\Delta t},t)|\) 的差异变得显著,导致隐变量恢复糟糕、语义漂移、背景保不住;(b) 调优式反演(TurboEdit / iCD 等)在预训练生成器上外挂一个辅助反演网络 \(\Phi\),保真度上去了,但额外参数、额外训练开销大,而且换个 backbone 就不通用。

核心矛盾:反演难学的根子在于训练时强加的"噪声→数据"单向时间约定。模型只见过 \(x_t\) 作为输入去算速度,可反演时却要从 \(x_{t+\Delta t}\) 出发,输入和训练分布不匹配,误差自然来。现有方法要么忍受这个误差(训练自由),要么再贴一个网络绕开它(调优式),都没从根上统一生成和反演。

本文目标 / 核心 idea:能不能训练一个少步扩散模型,让它直接学会自己的反演过程?BiFM 的答案是从 ODE 视角自然地拿到反演——把 flow matching ODE 沿两个时间方向积分,让同一个模型既输出前向平均速度(生成)又输出后向平均速度(反演),两者由同一个瞬时速度场约束。一句话:用"双向平均速度场"替代"外挂反演网络 / DDIM 数值反转",把生成和反演装进一个模型里联合学。

方法详解

整体框架

BiFM 建立在两个已有基石上:flow matching(学一个时间相关速度场 \(v_\theta(x_t,t)\),把噪声沿 ODE \(dx_t/dt = v_\theta(x_t,t)\) 流到数据)和 time-interval supervision / MeanFlow(不学整条轨迹,而是学时间区间 \([t,t']\) 上的平均速度,这样一步就能近似积分一段 ODE,天然支持少步)。

BiFM 的关键转折在于一个观察:前向平均速度(生成)和后向平均速度(反演)其实是对同一个瞬时速度场 \(v(x_t,t)\) 在相反时间区间上的积分。所以只要把 MeanFlow Identity 从"只对 \(t<t'\)"放宽到"也对 \(t>t'\)",就能用完全相同的公式定义反演,不需要任何额外网络。整个 pipeline 是:从共享瞬时速度场出发 → 用 MeanFlow Identity 给出训练目标,分别监督前向 / 后向平均速度 → 加一个双向一致性损失把两个方向钉成互为相反数 → 通过时间区间 embedding 注入网络(可对预训练模型 LoRA 微调)→ 推理时用两次模型调用(先反演到噪声、再带目标 prompt 生成)完成编辑。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["源图像 + 源/目标 prompt"] --> B["共享瞬时速度场 v(x,t)<br/>预定义schedule 或 预训练生成器"]
    B --> C["平均速度场 + MeanFlow Identity<br/>区间 [t,t'] 上学一步生成"]
    C -->|沿正向时间| D["双向一致性目标<br/>前向(生成)与后向(反演)互为相反数"]
    C -->|沿反向时间| D
    D --> E["时间区间嵌入<br/>编码 (t, t'-t),LoRA 微调预训练模型"]
    E --> F["推理:反演到噪声→换 prompt 生成<br/>1/4/多步少步编辑"]

关键设计

1. 平均速度场 + MeanFlow Identity:把"一步近似一段 ODE"变成可训练目标

少步编辑要快,就不能老老实实解 ODE 的每一步。BiFM 沿用 MeanFlow 的思路,定义时间区间 \([t,t']\) 上的平均速度场为瞬时速度的积分:

\[u(x_t,t,t') := \frac{1}{t'-t}\int_{t}^{t'} v(x_\tau,\tau)\, d\tau\]

直接监督平均速度,就等价于让模型"一步从 \(t\) 跨到 \(t'\)"去逼近积分整段 ODE,而不用密集采样整条轨迹。把上式对 \(t\) 求导(用 Jacobian-vector product 表达全导数),得到 MeanFlow Identity,给出训练时要回归的目标平均速度:

\[u_{\text{tgt}} = v(x_t,t) + (t'-t)\cdot\big[v(x_t,t)\,\partial_{x_t}u_\theta + \partial_t u_\theta\big]\]

训练损失 \(\mathcal{L}_{\text{MF}} = \mathbb{E}_{t,t',x}\big[\|u_\theta(x_t,t,t') - \text{sg}(u_{\text{tgt}})\|^2\big]\),其中 \(\text{sg}(\cdot)\) 是 stop-gradient。妙处在于 \(u_{\text{tgt}}\) 的计算不需要显式访问 \(v(x_t,t)\) 本身:from scratch 时 \(v\) 取 rectified flow 这种预定义 schedule,微调时直接用预训练多步生成器 \(v_\theta\)。收敛后 \(u_\theta\) 就是一个与多步动力学一致的一步生成器。这一步是后面双向化的地基。

2. 双向一致性目标:用一个公式同时定义生成和反演,并钉死它们的可逆性

这是 BiFM 最核心的创新,直接打在"单向时间约定导致反演难学"这个痛点上。作者的关键洞察是:MeanFlow Identity 本身不依赖 \(t<t'\) 的顺序,对 \(t>t'\) 同样成立。于是给定 \(t<t'\),把 \(u(x_t,t,t')\) 解释为生成(前向平均速度),把 \(u(x_{t'},t',t)\) 解释为反演(后向平均速度)——两者来自同一个瞬时速度场 \(v\),只是在相反区间上积分。连续时间下,后向区间 \([t',t]\) 的平均速度恰好是前向区间 \([t,t']\) 平均速度的相反数。这正是反演式编辑要的可逆性:从 \((x_t,t)\) 前向到 \((x_{t'},t')\) 再后向回来,应当近似还原原状态。

为了在学到的平均速度层面把这个可逆性显式编码进去,BiFM 加了一项双向一致性损失,强行让前向和后向预测互为相反数:

\[\mathcal{L}_{\text{BiFM}} = \mathcal{D}\big(u_\theta(x_t,t,t'),\, -u_\theta(x_{t'},t',t)\big)\]

\(\mathcal{D}(\cdot,\cdot)\) 是距离度量(消融里用 robust \(\ell_p\) 范数,\(p\approx0.5\) 的 Pseudo-Huber 最好)。最终目标是 \(\mathcal{L} = \mathcal{L}_{\text{MF}} + w(t,t')\cdot\mathcal{L}_{\text{BiFM}}\),其中 \(w(t,t')\) 是随时间逐渐加强约束的 warm-up 权重 schedule(一上来就强约束会在预测还很糙时过度正则化)。和外挂反演网络的方法相比,BiFM 不增加任何反演专用参数,反演能力是从同一组权重里"长出来"的;和 DDIM 反演相比,它不靠数值反转,绕开了大步长下的近似误差。

3. 时间区间嵌入 + LoRA:让大预训练模型零侵入地学会双向

BiFM 要在 Stable Diffusion 3 这种已经训好的复杂弯曲轨迹模型上落地,不能重训。由于训练目标 \(\mathcal{L}\) 不需要显式 \(v(x_t,t)\),BiFM 可以直接 LoRA 微调预训练 backbone。但模型原来只吃单个时间步,现在要表达"区间",所以作者给 backbone 额外加一个时间嵌入:把 \(t\)\((t'-t)\) 各自过标准 MLP time embedding,相加成一个区间嵌入向量,按原 timestep embedding 完全相同的方式注入网络,并零初始化做 warm-up(初期等价于原模型,不破坏已学到的能力)。消融证明把区间长度 \((t'-t)\) 显式喂进去很关键:条件用 \((t, t'-t)\) 比用 \((t,t')\) 的 FID 从 59.37 降到 55.22,因为 \((t'-t)\) 当作"积分跨度"正好匹配平均速度这个训练目标。

损失函数 / 训练策略

  • 总损失 \(\mathcal{L} = \mathcal{L}_{\text{MF}} + w(t,t')\cdot\mathcal{L}_{\text{BiFM}}\)\(\mathcal{L}_{\text{MF}}\) 带 stop-gradient 回归 MeanFlow 目标,\(\mathcal{L}_{\text{BiFM}}\) 强约束双向可逆。
  • \((t,t')\) 的采样偏向较短区间(log-normal 采样器优于 uniform),早期更稳。
  • \(w(t,t')\) 用 warm-up 而非 linear/sin/log;距离度量用 \(p\approx0.5\) 的 robust loss 软裁剪困难区间的大残差。
  • 编辑推理只需两次模型调用:u = model(x_1,1,0,p_s); x_0 = x_1+u(反演),u_edit = model(x_0,0,1,p_t); x_1_edit = x_0+u_edit(生成)。多步采样则把大区间拆成 \(N\) 段线性时间步逐段累加。

实验关键数据

主实验:PIE-Bench 反演式图像编辑(微调 SD3)

在 PIE-Bench 上按多步 / 少步 / 一步三档采样预算对比,指标含背景保持(LPIPS↓、SSIM↑、PSNR↑、MSE↓)和 CLIP 语义对齐。

设置 方法 NFE LPIPS↓ SSIM%↑ PSNR↑ CLIP-Whole↑
多步 PnP Inv (ICLR24) 50 49.25 84.86 27.22 25.83
多步 DNAEdit (NeurIPS25) 28 112.60 83.69 23.24 28.90
多步 BiFM (ours) 50 47.01 87.50 29.89 27.42
少步 InstantEdit (ICCV25) 4 44.39 86.44 27.96 26.28
少步 TurboEdit (ECCV24) 4 76.95 84.63 25.51 25.49
少步 BiFM (ours) 4 67.25 87.29 28.92 26.77
一步 SwiftEdit (CVPR25) 1 91.04 81.05 23.33 25.16
一步 BiFM (ours) 1 92.30 85.88 28.46 26.09

多步设置下 BiFM 在保真和语义之间取得最佳平衡;4 步下 SSIM/PSNR 领先训练自由反演和外挂网络法;一步下相比 SwiftEdit 用略高的 LPIPS(92.30 vs 91.04)换来明显更好的 SSIM/PSNR/MSE/CLIP,说明极端一步预算下 BiFM 更偏向结构 / 语义保持。

反演重建(50 步反演)

方法 MSE×10⁴↓ LPIPS×10³↓ SSIM%↑ PSNR↑
DDIM (ICLR21) 224.43 210.84 70.96 17.76
PnP Inv (ICLR24) 105.66 95.95 87.20 28.79
RF-Solver (ICML25) 94.80 106.15 86.36 28.26
BiFM (ours) 87.72 89.49 88.03 30.32

BiFM 学到的反演过程在全部重建指标上都领先,能保住全局布局又恢复出更锐利的局部细节(眼睛、物体几何)。

消融实验(1-NFE ImageNet-256,FID 越低越好)

维度 配置 FID↓
时间条件 加离散方向标志 (t,t′,direc.) 69.01
时间条件 (t,t′) 59.37
时间条件 (t, t′−t)(默认) 55.22
一致性权重 linear 67.37
一致性权重 warm up(默认) 55.22
损失范数 p=0(纯 L2) 72.84
损失范数 p=1.0(默认) 55.22

生成质量(旁证双向训练不损害甚至增益生成)

数据集 方法 FID↓ 备注
MSCOCO-256 (T2I) MMDiT (vanilla) 6.05 flow matching baseline
MSCOCO-256 (T2I) MMDiT+REPA 4.73 表征对齐
MSCOCO-256 (T2I) MMDiT+BiFM 4.57 与 REPA 类改进互补
CIFAR-10 (1 NFE) MeanFlow 2.92
CIFAR-10 (1 NFE) BiFM 2.75 一步 FID 最佳
ImageNet-256 SiT-XL/2 17.2 from scratch
ImageNet-256 SiT-XL/2+BiFM 15.5 各模型尺度都降 FID

关键发现

  • 双向一致性是核心增益来源:把它从生成(MeanFlow)扩展到反演,是 BiFM 能在少步反演上稳过基线的关键;它不引入反演专用参数,反演能力来自共享权重。
  • 区间长度要显式喂:条件用 \((t,t'-t)\) 显著优于 \((t,t')\)(55.22 vs 59.37),因为它直接对应"平均速度=对区间长度归一化的积分"这个目标;反而加离散方向标志最差(69.01),说明方向应隐式由积分区间表达而非硬编码。
  • 训练稳定性靠 warm-up + robust loss:一致性项用 warm-up 权重、距离用 \(p\approx0.5\) 的 Pseudo-Huber,能软裁剪困难区间的大残差,避免初期过度正则。

亮点与洞察

  • 反演是"免费"长出来的:核心 insight 是 MeanFlow Identity 不依赖 \(t<t'\),对 \(t>t'\) 一样成立——一个公式同时定义生成和反演,省掉了所有外挂反演网络。这种"换个时间方向解读同一个数学对象"的思路很优雅,可迁移到其他需要可逆映射的生成任务。
  • 零初始化时间嵌入 + LoRA:把区间表达零侵入地塞进 SD3 这种大模型,warm-up 初期等价原模型,是把新能力嫁接到预训练 backbone 的可复用 trick。
  • 生成不退反增:双向训练不仅没拖累纯生成,还在 MSCOCO/CIFAR/ImageNet 上一致降 FID,且与 REPA 这类正交改进互补,说明双向约束本身是有益的正则。

局限与展望

  • 论文未公开代码,复现需自行实现 MeanFlow Identity 的 JVP 与双向损失。
  • 一步极限下 LPIPS 略逊 SwiftEdit,说明感知级细节在最激进预算下仍有取舍空间。⚠️ 这是作者自己定位为"偏结构/语义保持"的取舍,并非纯优势。
  • 主要在 SD3 + MMDiT/SiT/U-Net 几个 backbone 上验证;面对更复杂、轨迹更弯曲的视频或 3D 生成模型是否仍稳,尚待验证。
  • 双向一致性的 warm-up schedule、\(p\)、采样分布等超参较多,迁移到新数据集可能需要重新调。

相关工作与启发

  • vs DDIM inversion / 训练自由反演:它们靠数值反转生成步,大步长下近似误差累积;BiFM 直接学反演方向的平均速度,绕开 solver 近似,少步下重建/编辑都更稳。
  • vs TurboEdit / iCD 等调优式反演:它们在预训练生成器上外挂反演网络或一致性蒸馏,引入额外参数、换 backbone 不通用;BiFM 把反演装进同一组权重,零反演专用参数、可 LoRA 适配大模型。
  • vs MeanFlow:MeanFlow 只在生成方向做 time-interval 监督;BiFM 把速度监督扩展到两个时间方向,支持联合训练与微调,从纯生成走到了反演式编辑。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ "MeanFlow Identity 对称地用于反演"这个观察简洁而强,把生成与反演统一进一个速度场。
  • 实验充分度: ⭐⭐⭐⭐ 覆盖编辑、重建、生成多任务和多 backbone,消融清晰;但缺代码、缺更大分辨率/视频验证。
  • 写作质量: ⭐⭐⭐⭐ 推导链条(平均速度→MeanFlow Identity→双向扩展→一致性损失)讲得连贯。
  • 价值: ⭐⭐⭐⭐ 给少步反演式编辑提供了一个统一、可嫁接到预训练模型的范式,实用性强。