【论文精读】DifFace: Blind Face Restoration with Diffused Error Contraction

文章目录

0.前言

这篇文章是被 2024 TPAMI接收的关于人脸修复(face restoration)方向的论文,作者是南洋理工大学Chen Change Loy 课题组的。这个课题组很经典,在图像Low Level 方向发表了多篇经典论文,例如视频超分辨率的BasicVSR++,人脸修复的CodeFormer。

实际上,这篇文章并不算很新,早在2022年就被挂在了 arXiv,但是并没有激起像同任务中的CodeFormer一样大的水花,可能是恢复效果并不是很惊艳的原因吧。整体思想我觉得还是挺有趣的,设计中间转移过程,将低质量图像LQ转到中间态,然后利用预训练扩散模型的反向过程恢复到清晰的图像。

以下是论文链接和代码链接[paper] [code]

更多关于face restoration方向的论文可以查看这个仓库[Face_Restoration_Ref],整理了挺多经典论文。

1.当前问题

文章指出当前face restoration 两个局限性:

1、当遇到训练数据外的复杂退化,恢复效果会劣化。
2、有许多loss要设计、要平衡,例如保真、感知、对抗损失,这需要大量的人力成本去调这些超参。

2.怎么解决问题

这个文章的做法就是建立LQ到HQ的后验分布,就是设计一个中间过渡分布状态。

LQ->中间态->HQ ,中间态到HQ是采用预先训练的扩散模型(充分利用扩散模型的能力)。这样的优势在于:

1、LQ->中间态的监督只需要使用L1损失函数,省掉了大量的人力成本
2、中间的过渡分布可以收缩恢复模型的偏差,让整个算法更加鲁棒(遇到复杂退化也不怕)。

3.具体做法(Method)

明确优化目标,给定LQ图像恢复到HQ图像即 y 0 y_{0} y0 -> x 0 x_{0} x0 ,所以整体的目标是设计 p ( x 0 ∣ y 0 ) {p(x_{0}|y_{0})} p(x0∣y0)的合理后验分布。

3.1 受什么的启发?(Motivation)

考虑一个具有 T 个离散步骤的扩散模型,它提供了从 x t x_t xt 到 x t − 1 x_{t-1} xt−1 的转换函数。借助这种转变,可以构造后验分布 p ( x 0 ∣ y 0 ) {p(x_{0}|y_{0})} p(x0∣y0) 如下:
p ( x 0 ∣ y 0 ) = ∫ p ( x N ∣ y 0 ) ∏ t = 1 N p θ ( x t − 1 ∣ x t ) d ⁡ x 1 : N {p(x_{0}|y_{0})}=\int p(\mathbf{\mathit{x}}{N}|\mathbf{\mathit{y}}{0})\prod_{t=1}^{N}p_{\theta}(\mathbf{\mathit{x}}{t-1}|\mathbf{\mathit{x}}{t}){\operatorname{d}}x_{1:N} p(x0∣y0)=∫p(xN∣y0)t=1∏Npθ(xt−1∣xt)dx1:N

N在1和T之间,就是中间状态,从N到x0的步骤可以使用预训练的扩散模型来获得,整个算法的设计目标就变成了设计 p ( x N ∣ y 0 ) {p(x_{N}|y_{0})} p(xN∣y0)。

作者发现到如果将 p ( x N ∣ y 0 ) {p(x_{N}|y_{0})} p(xN∣y0)替换成 q ( x N ∣ x 0 ) {q(x_{N}|x_{0})} q(xN∣x0) ,那么整个求解目标就变成的扩散+重建过程。
x N ∼ q ( x N ∣ x 0 ) ⏟ D i f f u s i o n , x t − 1 ∣ x t ∼ p θ ( x t − 1 ∣ x t ) ⏟ R e c o n s t u c i i o \underbrace{x_{N}\sim q(x_{N}|x_{0})}{\mathrm{Diffusion}},\quad\underbrace{x{t-1}|x_{t}\sim p_{\theta}(x_{t-1}|x_{t})}_{\mathrm{Reconstuciio}} Diffusion xN∼q(xN∣x0),Reconstuciio xt−1∣xt∼pθ(xt−1∣xt)

因此这个N的取值就很有意思了,如果N取的太大,扩散的太严重,相当于是从噪声恢复回来,那就会失真,所以N需要取小一点,文中提出需要<500,才能恢复比较正确的人脸。

N的取值和恢复效果示意图可以见下图:

所以整个的目标就又进一步明确了,需要设计一种方法,让 p ( x N ∣ y 0 ) {p(x_{N}|y_{0})} p(xN∣y0)进一步的贴近 q ( x N ∣ x 0 ) {q(x_{N}|x_{0})} q(xN∣x0),这样就可以更好利用扩散模型的能力了!

3.2具体的模型设计(Design)

上面提到了整体的目标变成了设计一种方案,让 p ( x N ∣ y 0 ) {p(x_{N}|y_{0})} p(xN∣y0)贴近 q ( x N ∣ x 0 ) {q(x_{N}|x_{0})} q(xN∣x0)的分布,然而,我们知道的是 q ( x N ∣ x 0 ) {q(x_{N}|x_{0})} q(xN∣x0)是正向扩散过程,也就是不断叠加高斯噪声的过程,是可以被知道的分布。因此,整体的分布就可以近似为下式:
p ( x N ∣ y 0 ) = N ( x N ; α N f ( y 0 ; w ) , ( 1 − α N ) I ) p(x_{N}|y_{0})=\mathcal{N}\left(x_{N};\sqrt{\alpha_{N}}f(y_{0};w),(1-\alpha_{N})I\right) p(xN∣y0)=N(xN;αN f(y0;w),(1−αN)I)

也就是通过一个神经网络 f ( ⋅ ; w ) f(\cdot;w) f(⋅;w),来预测从 x 0 x_0 x0到 x N x_N xN的噪声参数,所以对作者来说,这只能称为一个扩散的预测器(diffused estimator)。

至于损失函数,就是 p ( x N ∣ y 0 ) {p(x_{N}|y_{0})} p(xN∣y0)和 q ( x N ∣ x 0 ) {q(x_{N}|x_{0})} q(xN∣x0)之间的KL散度了。
D KL ⁡ [ p ( x N ∣ y 0 ) ∥ q ( x N ∣ x 0 ) ] = 1 2 κ N ∥ e ∥ 2 2 D_{\operatorname{KL}}\left[p(x_{N}|y_{0})\|q(x_{N}|x_{0})\right]=\frac{1}{2}\kappa_{N}\|e\|_{2}^{2} DKL[p(xN∣y0)∥q(xN∣x0)]=21κN∥e∥22

3.3 整体算法

通过上述的近似计算,加上扩散的逆过程,就可以实现完整LQ-HQ的重建过程,整体流程图如下:

1、首先输入LQ图像和时间步N,

2、利用扩散预测器(SwinIR)预测当前步骤的噪声参数

3、从N反向扩散直至到清晰图像X0

整体算法和其他deep learning的方式的差别就是引入了中间状态,如下图所示:

作者提醒到,从N-1到0的反向扩散过程中随机性太强,会引入和HQ有偏差的信息,因此在计算 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_{t}) pθ(xt−1∣xt) 采样时利用配置 η = 0.5 的 DDIM 采样器,该策略在一定程度上有效地消除了采样过程中固有的随机性,提高了重构HQ图像的保真度,同时做了相关的消融实验证明η设置的依据。

4.实验效果

模拟退化数据CelebA-Test数据和真实场景数据LFW, WebPhoto, and WIDER 上效果都不错,挑出来的图效果都很好。

4.1 Synthetic(CelebA-Test)

4.2 Real World (LFW, WebPhoto, and WIDER)

如果有帮助到你,帮忙点个赞呗

相关推荐
张彦峰ZYF14 分钟前
从检索到生成:RAG 如何重构大模型的知识边界?
人工智能·ai·aigc
刘海东刘海东15 分钟前
结构型智能科技的关键可行性——信息型智能向结构型智能的转变(修改提纲)
人工智能·算法·机器学习
**梯度已爆炸**37 分钟前
NLP文本预处理
人工智能·深度学习·nlp
uncle_ll41 分钟前
李宏毅NLP-8-语音模型
人工智能·自然语言处理·语音识别·语音模型·lm
Liudef0641 分钟前
FLUX.1-Kontext 高效训练 LoRA:释放大语言模型定制化潜能的完整指南
人工智能·语言模型·自然语言处理·ai作画·aigc
静心问道43 分钟前
大型语言模型中的自动化思维链提示
人工智能·语言模型·大模型
众链网络1 小时前
你的Prompt还有很大提升
人工智能·prompt·ai写作·ai工具·ai智能体
汀沿河1 小时前
2 大模型高效参数微调;prompt tunning
人工智能·深度学习·prompt
路溪非溪1 小时前
机器学习之线性回归
人工智能·机器学习·线性回归
搞笑的秀儿3 小时前
信息新技术
大数据·人工智能·物联网·云计算·区块链