前置

RePaint

RePaint 的核心思想是在每个逆向时间步内多次执行「条件去噪 - 掩码混合 - 重新加噪」,让未知区域有更多机会与已知区域协调。这里默认逆向模型显式感知 inpainting 条件:掩码和已知区域会作为额外输入参与每一次去噪。

给定原始数据 和掩码 ,其中掩码值为 的位置表示已知区域,值为 的位置表示未知区域。算法流程如下:

首先,对原始数据执行前向扩散并取出已知区域,得到每个时间步的带噪状态 。然后从终点先验 初始化未知区域,并将已知区域替换为 。每一次逆向去噪都以 和已知区域作为条件;去噪后,再通过掩码混合把已知区域恢复为对应时间步的带噪状态:

如果当前 repainting 轮次还没有结束,则再将混合后的样本从 重新加噪到 ,继续进行下一轮条件去噪与局部修正。

算法

完整流程如下:

RePaint inpainting 采样算法

输入:原始数据 ,已知区域掩码 ,显式条件化的逆向采样器 ,前向扩散算子,终点先验 ,总时间步数 ,repainting 次数

输出:修复后的数据

  1. 预计算已知区域在各时间步的前向扩散状态:

  2. 未知区域从终点先验开始,已知区域使用第 步带噪状态:

  3. 执行逆向去噪。对每个 ,再对 执行 repainting:

    ,则重新加噪:

  4. 返回

注意事项

  • 掩码必须与数据形状一致;如果原始掩码只在较粗粒度上定义,需要先广播到每个被扩散的分量。
  • 逆向模型每一步都接收掩码和已知区域条件。 可以取干净条件 ;如果模型按当前噪声尺度组织条件,也可以取对应的
  • 已知区域在中间时间步不应恢复为干净的 ,而应恢复为对应时间步的
  • 对连续时间 SDE/ODE 扩散模型,可以把 理解为数值求解器选定的离散时间网格。
  • repainting 次数 控制局部协调强度。较大的 通常能改善已知区域和未知区域的衔接,但会线性增加采样开销。
  • 如果数据在训练前做了归一化、中心化、裁剪或坐标变换,inpainting 采样时必须使用同一套预处理和反变换。