-
CVPR2024的残差去噪模型。把diffusion 模型的加噪过程分解为残差diffusion和noise diffusion,其中残差diffusion模拟从target image到degraded image的过程,而noise diffusion则是原来的diffusion过程,即从图片到高斯噪声的加噪过程。前者可以看作是对应restoration,后者对应generation。通过这一设计,仅用一个Unet,bs为1,用L1 Loss即可train一个sota的restoration模型。
-
现有的diffusion image restoration模型通常是把LQ作为diffusion的condition,而diffusion仍然是从噪声开始的,作者认为这是没有必要的,可以直接从LQ开始而没必要从噪声开始。
-
把DDPM中diffusion的终点 I T = ϵ I_T=\epsilon IT=ϵ 改成 I T = ϵ + I i n I_T=\epsilon+I_{in} IT=ϵ+Iin,把forward的过程中加的0均值高斯噪声改成以scale后的残差为均值的高斯噪声,残差即input image - target image,具体如下:
-
通过调整beta 和 alpha的大小,可以控制generation的力度和restoration的力度。
-
那么reverse的过程,用一个 I r e s θ ( I t , t , I i n ) I^\theta_{res}(I_t, t, I_{in}) Iresθ(It,t,Iin) 网络和一个 I ϵ θ ( I t , t , I i n ) I^\theta_{\epsilon}(I_t, t, I_{in}) Iϵθ(It,t,Iin) 网络分别预测残差 I r e s θ I^\theta_{res} Iresθ和噪声 ϵ θ \epsilon^\theta ϵθ,可以从上面的公式7推出对 I 0 I_0 I0的预测:
则reverse的过程是:
-
最终推导出的损失函数倒是很简单,采样 ϵ \epsilon ϵ和 t t t计算 I t I_t It,再送进网络对预测的残差和噪声算L2损失即可:
-
方法差不多就到这里,接下来的内容基本是对一些超参数作用的探究,包括这里的两个lambda,以及alpha 和 beta的设定上。lambda没什么好说其实,就是消融证明了其中一个lambda为0都不能顾全fid和psnr,只有两个都不为零才能有好结果,并且可以设计一个自动算法来设定这些值。其中一个为0时表示对应的网络不生效,也就是说,当 λ ϵ \lambda_\epsilon λϵ为0时,reverse过程不用网络来预测 ϵ \epsilon ϵ,直接用下面的公式推就行,反之亦然:
-
alpha 和 beta的设定,即可以按DDIM的alpha来计算(意思是,如果是用下面这个表达式,并且残差为0,那么本模型其实和DDIM是等价的),也可以另外设计schedules:
- 实验证明,随着t降低alpha增加beta是最好的,解释是这样的,当t很大的时候,图像噪声严重,因此beta应该大一点,去噪嘛,而alpha应该小一点,因为对residual估计不准确,当t比较小的时候,噪声已经去得差不多了,beta就应该小一点,alpha则可以估计得准确了,应该大一点,加快restoration的速度。
- 文章同时还涉及了一个Partially Path-independent Generation Process。这个的意思是这样的,原先DDPM和DDIM,如果在某个alpha的schedule上train,就固定只能用这个schedule测试,如果用其它的schedule就会失败。但是文章想要改变generation process使得schedule可以改。怎么改,首先把DDIM的schedule改成上面的等价的等式17,也就是加了个beta进来。此时和DDIM还是等价的。然后把alpha的schedule从原先的linear改成P曲线,如下所示
- 这样改之后,alpha和beta分别表示denoise的强度和restoration的强度,还需要再改一步,就是把alpha和beta作为网络的输入,这样网络才能根据输入的alpha和beta,自适应地进行denoise和restoration,如下:
- 文章其实还提了一点,说是用两个网络分别来预测残差和噪声,但我想这不是必然的吗,一般不会想用同一个网络来预测两个东西吧。。。反正这样改了之后网络就可以使用不同的schedule了,不过我也不知道这样有什么用,为什么不老实使用训练时候的schedule呢。。
- 文章还做了其它的探究实验,比如先remove residual再remove noise,会导致前面remove residual不准确从而图像语义发生变化,先remove noise再remove residual导致过渡平滑失去细节,有点平均预测的现象,体现在人脸任务上对不同的人脸都预测了平均脸。
实验结果
- 文章声称仅用一个UNet,并且没有过度调参就达到了SOTA: