Denoising, Fast and Slow: Difficulty-Aware Adaptive Sampling for Image Generation¶
会议: CVPR 2026
arXiv: 2604.19141
代码: https://github.com/CompVis/patch-forcing (有)
领域: 扩散模型 / 图像生成
关键词: Patch-level 去噪、Diffusion Forcing、不确定性预测、自适应采样、Flow Matching
一句话总结¶
扩散/流匹配模型默认对所有 patch 用同一个时间步、均匀分配算力,本文提出 Patch Forcing (PF):训练时给每个 patch 独立的噪声水平、并学一个轻量的「patch 难度头」,让置信(简单)区域先去噪、为不确定(困难)区域提供"未来"上下文,配合两个难度感知采样器在 ImageNet 256² 上把 SiT 的 FID 从 17.2 降到 9.8(XL/2,固定算力)。
研究背景与动机¶
领域现状:现代 diffusion / flow matching 图像生成器(DiT、SiT 等)在每个去噪步对所有空间位置用同一个全局时间步 \(t\)、同样的函数评估次数(NFE),算力在空间上是均匀分配的。
现有痛点:这种均匀分配隐含假设"图像每个区域去噪难度相同",但自然图像高度异质——大片低频背景、饱和区域很容易;而细小结构、物体边界、小字、遮挡边界要到去噪后期才能消歧。对所有区域一视同仁,意味着在简单区浪费算力、在困难区却既给不够 refinement、也给不够 context。
核心矛盾:困难区域真正需要的是更多上下文。以往给上下文靠外部条件(depth map、文本、表示对齐 REPA),或靠 inpainting/编辑那样借用 ground-truth 的已知像素——但纯生成场景推理时没有任何 ground-truth 可借。
本文目标:让去噪过程自己产生上下文——不依赖外部信号、不依赖真值,靠模型内部把"已经比较确定的区域"提前推进,再用它们去引导更难的区域。
切入角度:作者基于 Diffusion Forcing(给序列每个元素独立噪声水平)和它在图像域的变体 SRM(Spatial Reasoning Models,先"解"简单格子再条件化解难格子),把这套机制下放到图像 patch 级。关键观察有三:① 上下文越多、验证 loss 越低;② 模型预测的不确定性与 patch 难度正相关;③ 给更多上下文能降低不确定性。
核心 idea:用 per-patch 时间步 + 学到的难度头,让简单 patch 先走、为困难 patch 提供自生成的上下文,从而在同样算力预算下把评估次数花在最需要的地方。
方法详解¶
整体框架¶
PF 建立在 Flow Matching 之上:插值 \(\mathbf{x}_t = t\mathbf{x}_1 + (1-t)\mathbf{x}_0\)(\(\mathbf{x}_0\) 是噪声、\(\mathbf{x}_1\) 是数据),模型 \(\mathbf{v}_\theta\) 回归速度场。与标准做法不同,PF 给每个 patch 一个独立时间步 \(\mathbf{t}\in\mathbb{R}^{(H/p)\times(W/p)}\),这只需把 DiT 里 AdaLN 广播标量时间步的机制扩展成支持空间变化的时间步即可,几乎不改架构。
整条 pipeline 分训练侧与推理侧:训练侧的关键是怎么采这堆 per-patch 时间步(朴素均匀采样会暴露推理时不会出现的"过度信息"状态),因此引入 LTG 采样器控制每个样本的最大信息量;同时多学一个难度头预测逐 patch 不确定性。推理侧则用这个难度信号驱动自适应采样器——把低不确定 patch 大步推进、用其更干净的状态作为上下文条件去精修高不确定 patch。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["图像/latent<br/>切成 patch"] --> B["LTG 时间步采样<br/>控制 t_max"]
B --> C["per-patch 速度场<br/>v_θ 训练"]
C --> D["Patch 难度头<br/>预测逐 patch 不确定性"]
D -->|推理时| E["自适应采样<br/>Dual-Loop / Look-Ahead"]
E --> F["生成图像"]
关键设计¶
1. LTG 时间步采样器:控制"最大信息量"而非"平均信息量"
朴素地给每个 patch 独立采 \(t_i\sim\mathcal{U}(0,1)\),会让每个样本的均值 \(\bar t\) 集中在 \(0.5\)(Bates 分布),等于训练时几乎总有大量干净信号、而推理却从纯噪声起步——这是 naive patch-based Diffusion Forcing 的核心 train-test gap。SRM 的修法是把均值 \(\bar t\) 采成均匀分布、再用递归分配生成 per-patch \(t_i\),但它只约束了平均信息量,单样本里最大时间步 \(t_{\max}\) 依然高概率贴近 \(t=1\)(图 3 左),意味着训练里几乎总有 patch 是(近乎)完全去噪的,仍泄露上下文。
PF 反其道而行,直接约束每个样本的最大信息量:先采一个 \(t_{\max}\),再从以 \(t_{\max}\) 为中心、截断的高斯下半部分条件采各 patch 的 \(t_i\),即 \(t_i\sim\text{truncate}(\mathcal{N}(t_{\max},\sigma^2))\),强制 \(t_i\in[0,t_{\max}]\)。这样即使没有任何信息可用,模型也训练得好,天然对齐"推理从纯噪声开始"。但若 \(t_{\max}\sim\mathcal{U}(0,1)\) 会把整体时间步分布偏向低 \(t\)(高噪声);于是再叠一层 Logit-Normal 采样 \(t_{\max}\sim\text{LogitNorm}(m,s)\) 来平衡。两者合起来就是 Logit-Normal Truncated Gaussian (LTG) 采样器,既铺开各 \(t_i\)、又控住 \(t_{\max}\),在所有时间步调度方案里拿到最优 FID。额外好处:截断高斯可并行采样,比 SRM 的递归分配显著更快。\(\sigma=0\) 时分布退化成 Dirac delta,PF 就还原成标准 Flow Matching
2. Patch 难度头:把方差预测重新诠释成"局部去噪难度"
要让简单 patch 先走,得先知道哪些 patch 简单。PF 加一个轻量的不确定性预测头(额外参数 <0.01%),把难度建模为预测的标准差 \(\sigma_\theta\),并最小化真值条件速度 \(\mathbf{v}_{\text{GT}}=x_1-x_0\) 的负对数似然 (NLL): $\(\mathcal{L}_{\text{total}}=\mathbb{E}\big[\|\mathbf{v}_{\text{GT}}-\mathbf{v}_\theta(\mathbf{x}_t,\mathbf{t})\|^2-\lambda\log\mathcal{N}(\mathbf{v}_{\text{GT}}\mid \mathbf{sg}(\mathbf{v}_\theta),\sigma_\theta^2\mathbf{I})\big]\)$ 其中 \(\mathbf{sg}\) 是 stop-gradient(让 NLL 项只更新方差、不污染速度回归),\(\lambda=0.01\)(沿用 SRM)。作者明确把这个分数重新诠释为局部 patch 难度而非传统的认知/偶然不确定性:值越高=区域越难、越需要更多算力与上下文(全文"uncertainty"与"patch difficulty"互换使用)。论文用三组证据验证该信号靠谱:预测不确定性与验证 loss 正相关(\(t=0.6\) 时 \(R=0.52\),去噪越往后越 diagnostic);用 Monte-Carlo 多次一步预测得到的经验方差与预测不确定性高度吻合;注入置信区域上下文后剩余区域不确定性直方图整体左移
3. 难度感知自适应采样器:让置信 patch 先走、给困难 patch 当"未来"上下文
有了难度图,推理时就能把算力动态投到最需要处。PF 提出两个采样器,都先用不确定性阈值挑出置信区域、再把它们前推为更难区域提供上下文。Dual-Loop:外层对低不确定 patch 走大步时间步更新,内层条件化它们更新后的状态、对高不确定 patch 走小步精修;两子集对齐到同一 \(t\) 后重新估计难度再循环,让 patch 难度随时间自适应变化。Look-Ahead:把置信区域的上下文表示按当前 \(t\) 成比例地前推到一个更"未来"的时间步(直到干净数据 \(t=1\)),这些更解析的表示再作为剩余不确定区域的上下文引导——对应"最优上下文量正比于 \(t\)"这一观察。
关键在于:这种上下文条件化是模型自生成的、与训练完全自洽,不引入 OOD 样本;而且与 guidance(CFG/SAG)正交——guidance 是对比预测来 steer 轨迹,PF 是把不确定 patch 暴露给一个局部更解析的表示。消融显示 patch 排序很重要:随机挑置信 patch 传上下文(PFT-random)反而比并行基线还差,证明必须靠不确定性来排优先级
损失函数 / 训练策略¶
总损失即上面的 \(\mathcal{L}_{\text{total}}\):速度回归 MSE + 权重 \(\lambda=0.01\) 的 NLL 难度项。骨干沿用 SiT/DiT 的 B/L/XL 变体、参数量保持不变,时间步条件走 AdaLN,仅把"标量时间步"换成"per-token 时间步嵌入"。ImageNet 实验固定架构与 NFE 做公平对比;T2I 实验用 1.2B PFT,文本编码器为 Qwen3-1.7B,在 COYO 的 120M 图文对子集(InternVL3-2B 重标注)上训练。
实验关键数据¶
主实验:ImageNet 256² 固定架构 & NFE¶
同一骨干、同样函数评估次数下,PFT 用标准 Euler 采样已优于 SiT,再叠自适应采样器进一步提升(FID-50k,越低越好):
| 模型 | 参数 | 采样 | FID ↓ |
|---|---|---|---|
| SiT-B/2 | 130M | Euler | 33.0 |
| PFT-B/2 | 130M | Euler | 27.9 |
| PFT-B/2 | 130M | + look-ahead | 24.2 |
| SiT-L/2 | 458M | Euler | 18.8 |
| PFT-L/2 | 458M | Euler | 14.7 |
| PFT-L/2 | 458M | + look-ahead | 13.0 |
| SiT-XL/2 | 675M | Euler | 17.2 |
| PFT-XL/2 | 675M | Euler | 12.9 |
| PFT-XL/2 | 675M | + look-ahead | 9.8 |
| SiT-XL/2 + REPA | 675M | — | 7.9 |
| PFT-XL/2 + look-ahead + REPA | 675M | — | 6.7 |
PF 与表示对齐 (REPA) 正交:XL/2 + REPA + look-ahead 把 7.9 进一步降到 6.7。
SOTA 对比(ImageNet 256²,含 CFG)¶
| 模型 | Epochs | FID↓ | sFID↓ | IS↑ | Pre.↑ | Rec.↑ |
|---|---|---|---|---|---|---|
| DiT-XL/2 | 1400 | 2.27 | 4.60 | 278.2 | 0.83 | 0.57 |
| SiT-XL/2 | 1400 | 2.06 | 4.50 | 270.3 | 0.82 | 0.59 |
| SiT-XL/2 + REPA | 200 | 1.96 | 4.49 | 264.0 | 0.82 | 0.60 |
| PFT-XL/2 + REPA + look-ahead | 200 | 2.00 | 4.32 | 284.1 | 0.81 | 0.61 |
只训 200 epoch 即与训了 1400 epoch 的 SiT/DiT 竞争,sFID 与 IS 上更优,确认与 CFG 正交。
消融与分析¶
| 配置 | 关键发现 | 说明 |
|---|---|---|
| LTG vs SRM Uniform-\(\bar t\) | LTG 取得最优 FID | SRM 只控均值、\(t_{\max}\) 仍贴近 1,留 train-test gap |
| 纯 Truncated Gaussian | 优于 SRM 但 \(t\) 质量塌向小值 | 控住 \(t_{\max}\) 却牺牲时间步多样性,故再叠 Logit-Normal |
| \(\beta\)-sharpness(SRM 调度) | \(\beta=1\)(最宽)最差 | 越接近并行采样越差,需高 sharpness 才超 SiT |
| PFT-random(随机挑置信 patch) | 比 PFT-parallel 还差 | 证明 patch 排序必须由不确定性驱动 |
| 增加 NFE | dual-loop / look-ahead 全程领先 | 同时超过 SiT 的 ODE 与 SDE 基线 |
关键发现¶
- look-ahead > dual-loop > 并行:把不确定 patch 暴露给低噪声上下文带来最大收益(XL/2 上 12.9 → 9.8)。
- 三大假设逐一证实:上下文降 loss(图 7)、不确定性≈难度(图 8,后期 \(R\) 更高)、上下文降不确定性(图 12 直方图左移)。
- 难度头几乎零成本(<0.01% 参数)却解锁全部自适应采样能力。
亮点与洞察¶
- "控最大信息量而非平均信息量"是点睛之笔:同样想缩小 train-test gap,SRM 控均值留了后门,PF 改控 \(t_{\max}\) 直击"训练里总有 patch 已干净"的泄露根源,而且采样还能并行、比递归分配更快——一个更简单的设计反而更对。
- 把"不确定性"重新诠释成"难度"并当调度信号用:同一个方差预测头,传统当作 epistemic/aleatoric uncertainty,这里直接拿来排 patch 优先级,思路可迁移到任何需要"先易后难"的空间/序列生成。
- 模型自生成上下文、与 guidance 正交:不借真值、不引 OOD,纯靠"让确定区域先走一步"造出上下文,且能叠加 REPA 与 CFG,工程上很友好。
- T2I 上文本渲染更清晰:相比同设置的标准 Flow Matching,PF 生成的小字更清楚——恰好印证"细小结构是困难 patch、值得多分算力"的核心直觉。
局限与展望¶
- 难度信号早期偏弱:\(t=0.2\) 时不确定性与验证 loss 的相关 \(R\) 仅 0.11,去噪早期难度图不够可靠,自适应采样的收益主要来自中后期。
- 自适应采样器有额外调度开销:dual-loop 的内外双循环、look-ahead 的前推都引入实现复杂度与阈值超参,论文主要靠固定 NFE 比公平性,但调度本身的 wall-clock 成本未充分展开。
- T2I 仅在 120M 子集上验证:1.2B PFT 规模与数据相比主流 T2I 仍偏小,"competitive"而非全面 SOTA,更大规模下的可扩展性待验证。
- 改进方向:难度头若能在早期 \(t\) 也给出更可靠的信号(如多步聚合或时序平滑),或把 PF 与推理缓存方法(RAS)组合,有望在更低 NFE 下进一步提速。
相关工作与启发¶
- vs SRM (Spatial Reasoning Models): 同源 Diffusion Forcing 的图像化,但 SRM 控均值 \(\bar t\) + 递归分配,PF 控 \(t_{\max}\) + 截断高斯并行采样;PF 更简单、更快、且更匹配"从纯噪声推理",FID 全面超 SRM。
- vs Diffusion Forcing: DF 给序列每帧独立噪声(时间维),PF 把异质时间步下放到图像空间 patch 维,并新增难度头与难度感知采样。
- vs guidance (CFG / SAG / PAG): 那些方法靠推理时对比预测 steer 轨迹,PF 靠模型自生成的局部上下文条件化不确定区域,二者正交、可叠加。
- vs REPA(表示对齐)/ 深度图等外部条件: 外部条件从模型外注入上下文,PF 让去噪过程内部产出上下文;实验证明与 REPA 正交,叠加后 FID 6.7。
- vs RAS(Region-Adaptive Sampling)等推理缓存: RAS 是推理时按注意力缓存稳定区域、重算显著区域,偏效率;PF 是训练时框架,带 per-patch 时间步与难度预测,可与这类缓存互补。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 把 Diffusion Forcing 下放到 patch 级、并用"控 \(t_{\max}\)"破解 train-test gap,视角新颖且自洽
- 实验充分度: ⭐⭐⭐⭐ B/L/XL 三尺度 + 与 REPA/CFG 正交性 + 三大假设逐一验证,扎实;T2I 规模偏小
- 写作质量: ⭐⭐⭐⭐⭐ "fast and slow"的比喻贯穿、图示清晰、机制讲得透
- 价值: ⭐⭐⭐⭐ 提供了 patch 级自适应去噪的可复用框架,与现有增强手段正交,落地友好