欢迎光临散文网 会员登陆 & 注册

AIGC: RePaint 笔记

2023-08-29 22:27 作者:刹那-Ksana-  | 我要投稿

无监督的扩散去噪模型是个好东西,但是我们需要让模型去适用于不同的任务,RePaint (2201.09865) 就是将现有的去噪模型用在图像修复任务上的一种方法。

Inpainting

Repaint 的整体思路很简单,假设我们有一个训练好的 DDPM 或 DDIM 模型。一个二进制遮罩(binary mask)用 m 来表示, 所以 m%5Codot%20x 代表图像中被遮罩的区域,而 (1-m)%5Codot%20x 就代表了未被遮罩的区域。

然后我们进行“逆向”过程——从噪音生成图片,然后,我们对遮罩和未遮罩的部分,分别以不同的方式计算下一步 x_%7Bt-1%7D.

对于遮罩的部分,我们直接利用正向过程来计算,即在原图像上面添加高斯噪声——x_%7Bt-1%7D%5E%5Ctext%7Bknown%7D%20%5Csim%20%5Cmathcal%7BN%7D(%5Csqrt%7B%5Cbar%7B%5Calpha%7D_t%7D%20x_0%2C%20(1-%5Cbar%7B%5Calpha%7D_t)%20%5Cmathbf%7BI%7D)

对于未遮罩的部分,我们利用 DDPM 的逆向过程来计算,x_%7Bt-1%7D%5E%5Ctext%7Bunknown%7D%20%5Csim%20%5Cmathcal%7BN%7D(%5Cmu_%7B%5Ctheta%7D(x_t%2C%20t)%2C%20%5CSigma_%7B%5Ctheta%7D(x_t%2C%20t))

所以现在,我们得到了两张图像 x_%7Bt-1%7D%5E%5Ctext%7Bunknown%7D 和 x_%7Bt-1%7D%5E%5Ctext%7Bknown%7D. 然后我们将两张图像合并起来,获得 t-1 步时的图像:

x_%7Bt-1%7D%20%3D%20m%20%5Codot%20x_%7Bt-1%7D%5E%5Ctext%7Bknown%7D%20%2B%20(1-m)%20%5Codot%20x_%7Bt-1%7D%5E%5Ctext%7Bunknown%7D

流程示意图,每一步的图像 x_t 只影响 x_unknown 部分的合成;x_known 的部分总是依靠原图像正向加噪获得

Resampling

以上的 inpainting 方法有一个缺点,就是生成的图片会缺失一些结构上的信息。为什么会出现这种现象?因为对于 x%5E%5Ctext%7Bknown%7D 我们是直接从原图像加噪而获得的,所以并没有考虑到  x%5E%5Ctext%7Bunknown%7D 所带来的影响。所以,为了把 x%5E%5Ctext%7Bunknown%7D 也考虑进去,我们使用一种叫做重新采样(resampling)的方法。

我们将获得的 x_%7Bt-1%7D 重新利用正向过程 x_t%20%5Csim%20%5Cmathcal%7BN%7D(%5Csqrt%7B1-%5Cbeta_t%7D%20x_%7Bt-1%7D%2C%20%5Cbeta_t%20%5Cmathbf%7BI%7D) 来获得,然后再做一次上述的逆向过程,获得 x_%7Bt-1%7D'. 我们当然还可以继续做正向过程获得 x_t'. 上述过程可以重复循环地做,其重复的次数,我们用 r 来表示(r%3D10 就代表我们重复10次上述颠来倒去的操作)

这里我们再引入一个跳跃步长(jump length)的概念,用 j 来表示。也就是说,我们连续做 j 步逆向过程获得 x_%7Bt-j%7D,然后再返回到 x_t.(很明显,上一小节里面 j%3D1

所以整个流程如下

j=10, r=10 时的示意图,横坐标是计算次数,纵坐标是时间点,即 x 的下标 t

完。

B站的公式编辑器经常挂,如果遇到 tex error 之类的问题时,刷新一下页面一般可以解决。

AIGC: RePaint 笔记的评论 (共 条)

分享到微博请遵守国家法律