目录

ComfyUI 里的 Differential Diffusion(差异扩散)是干什么的?

1、介绍

Differential Diffusion(差异扩散)是 Stable Diffusion 社区提出的一种特殊推理方法,目标是:

  • 让生成结果尽可能接近原图,但只改变你想要修改的部分,并保持其他部分几乎不变。
  • 简单来说,它是一种“更聪明的 inpainting / 图像微调”方式。

2、该节点思想

普通的 img2img / inpaint 有两个问题:

  1. 噪声引入过多 → 即使只想改局部,其他地方也会被重绘,结果整体变动很大。
  2. 细节丢失 → 细节和风格可能偏离原始图像。

差异扩散 的思路是:

  • 对原图做一次扩散过程,得到“原图的噪声轨迹”。
  • 对目标生成也做扩散,但在每一步把生成结果和原图的噪声轨迹做差异约束,保证尽量不改动没必要修改的区域。

3、在 ComfyUI 的应用

在 ComfyUI 里,Differential Diffusion 节点通常用于:

  • 局部精修:比如只调整角色表情、衣服、光照,而背景完全不动。
  • 迭代优化:可以多次微调图像,而不会越改越崩。
  • 风格统一:生成多张图片时,保持角色一致、场景一致。

它比普通 inpainting 更适合 精细调整,特别是在你想保留大部分原始图像时。

4、使用场景

  • 人脸修复:只微调五官,不影响背景。
  • 插画改色:只改衣服颜色,保持线条一致。
  • 大图拼接:只补缝隙部分,保证拼接无痕。
  • 动画帧一致性:保持角色形象稳定,只做细微变化。

5、普通扩散与差异扩散流程对比

普通扩散:

1.加噪声:把原图加上随机噪声

2.去噪循环:一步步预测噪声 → 得到干净图像

3.最终输出:解码成图片

这种方式,每一步只要跑一次 UNet 推理。

差异扩散:

差异扩散在上面的基础上,加了这些额外操作:

1.预先对原图做一次扩散 → 得到原图的噪声轨迹(也就是“原图在每一步该长什么样”)

2.在每一步去噪时:

  • 不只预测当前噪声
  • 还要和原图的噪声轨迹做对比
  • 再按权重合并两者,让生成结果“靠近原图”

也就是说,每一步都要多做一次对比和插值运算,有时甚至要多跑一遍 UNet 来获取参考噪声。


注意:

1.显存占用更高:因为要同时计算原图和新图的噪声轨迹。

2.生成速度更慢:多了一步差异计算。

3.参数敏感:差异权重太高,几乎没变化;太低,效果和普通 img2img 差不多。