Deep Unfolding Network for Image Super-Resolution本文是2020年较早的一篇关于单图像超分的文章。本文针对于non-blind情况,即已知LR图像,下采样方法,模糊核,噪声的情况下,求对应的HR图像。不同于传统的方法,本文提出了一种model-based和learning-based相结合的方法,对解决超分辨率问题开辟了一个新的途径。
文章切入点:
当前的退化图像还原方法主要分为两种,一种是model-based方法,就是通过将问题公式化,然后通过不断迭代结果,最终得到一个令人较为满意的解。作者提出这种方法虽然有着一定的灵活性(可以将不同的下采样倍数,模糊核,噪声强度带入公式),但是却不能对生成结果进行直观的评判,也就是经典的感知损失不能集合进去,这使得模型没法进行end-to-end的进行优化。此外,对于经典的双三次下采样方法,通过model-based方法计算其上采样异常复杂,并且计算量非常巨大,这也是制约这类方法在图像超分领域发展的一个重要原因。另外一种方法是learning-based方法,也就是我们常说的深度学习的方法。众所周知,深度学习是一个黑盒子,特别是针对这种ill-posed问题,其黑盒子特征更为明显。即使这样,我们不能否认这种方法在近些年的图像超分领域取得的成就,其可以引入各种感知损失,通过end-to-end的训练方法,得到令人满意的模型。并且针对各种复杂的下采样方法,learning-based方法可以很容易的进行拟合。然而作者也指出,由于模型训练时的限定,这种方法的拓展性往往不尽人意。
通过上面的分析,我们可以看出,两者方法互有优劣,并且两者是可以互补的,因此作者提出,如果将两者的优点集于一身,岂不美哉。
文章创新点:
为了实现上面这个目的,本文提出了一种深度展开网络: deep unfolding super-resolution network,这种网络就像一个桥梁,联通了这两类方法。它既可以像model-based方法一样在应对不同的下采样倍数、模糊核、噪声时,将其当做参数与LR一同输入到模型中,有着良好的应用范围,同时也可以像learning-based方法一样,引入各种损失函数,进行端到端的训练,这使得模型可以最大限度的减少人为干预,实现精度最大化。
具体实现:
本文的方法如果用一句话来总结,就是:(1)、将问题公式化,用HQS(alf-quadratic splitting)法将其分为两个可迭代的公式化子问题,(2)、将两个公式化的子问题用神经网络求解。接下来我们来看看具体实现方法。
首先作者提出了超分辨率类问题的公式描述(这是一种model-based描述,并且以后的论文中被多次引用):
k
b
i
c
u
b
i
c
×
s
=
a
r
g
m
i
n
k
∣
∣
(
x
⊗
k
)
↓
s
−
y
∣
∣
k^{×s}_{bicubic} = argmin_k ||(x ⊗ k)↓_s −y||
kbicubic×s=argmink∣∣(x⊗k)↓s−y∣∣这里描述的是HR图像
x
x
x经过模糊核
k
k
k和
s
s
s倍的双三次下采样后,和对应的LR图像
y
y
y的重建误差。之后,作者又引入了一个额外的先验知识 噪声强度,这个先验知识通过最大后验概率推断(MAP)加入进来,共同构成了本文的一个重要表达式:
E
(
x
)
=
1
2
σ
2
∣
∣
y
−
(
x
⊗
k
)
↓
s
∣
∣
2
+
λ
Φ
(
x
)
E(x) =\frac{1}{2σ^2}||y − (x ⊗ k)↓_s||^2 + λΦ(x)
E(x)=2σ21∣∣y−(x⊗k)↓s∣∣2+λΦ(x)这种表达最早在Image Restoration: From Sparse and Low-Rank Priors to Deep Priors这篇文章中被提出,当时只用于图像去噪和去模糊,第一项为保真项,第二项则为惩罚项。在本文中,作者将第一项称之为数据项(data term),称第二项为先验项(prior term),
λ
\lambda
λ是平衡两者的一个超参。很明显,这两项都是正的,所以要想使得生成的结果最优,就要使得第一项和第二项都达到最小。接着作者使用HQS,引入了一个辅助变量
z
z
z,将上式转化为:
E
μ
(
x
,
z
)
=
1
2
σ
2
∣
∣
y
−
(
z
⊗
k
)
↓
s
∣
∣
2
+
λ
Φ
(
x
)
+
μ
2
∣
∣
z
−
x
∣
∣
2
E_\mu (x,z) =\frac{1}{2σ^2}||y−(z⊗k)↓_s||^2 +λΦ(x)+\frac{\mu}{2}||z−x||^2
Eμ(x,z)=2σ21∣∣y−(z⊗k)↓s∣∣2+λΦ(x)+2μ∣∣z−x∣∣2
μ
\mu
μ是一个惩罚参数,个人理解是控制最后
z
z
z和
x
x
x差距的。
之后我们发现,上式的第一项不受
x
x
x影响,第二项不受
z
z
z影响,而第三项则和二者都有关,因此可以将其转化为两个子问题的迭代:
这样做的还有一个目的,就是将数据项和先验项解耦和,这种解耦和的思想使得模型可以任意匹配噪声和下采样,从而有了learning-based方法没有的泛化性。到这里,就有了本文的大致框架了,通过model-based方法引入了一种迭代求解的方法,接下来如何对这个迭代进行求解,就要用到神经网络的方法了。
让我们先看看第一部分是如何求解的:
这里用到了快速傅里叶变换和其复共轭变换。通过(7)式,我们可以将
z
k
z_k
zk和
x
k
−
1
x_{k-1}
xk−1建立联系,从而实现
z
k
z_k
zk的迭代更新。这里注意一下,在(7)式中,
k
,
s
,
α
k
k,s,\alpha_k
k,s,αk都可以看做输入的超参,因此对于(7)式本身并没有进行迭代更新(因为7式本身没有参数)。我们可以通过简易形式将其表示:
z
k
=
D
(
x
k
−
1
,
s
,
k
,
y
,
α
k
)
.
z_k = D(x_{k−1} ,s,k,y,α_k ).
zk=D(xk−1,s,k,y,αk).接下来就是本文的重点,对于(6)式的求解。对于(6)式,从贝叶斯的角度来看,它实际上可以看做一个去噪问题,其噪声等级为:
β
k
=
λ
μ
k
β_k =\sqrt{\frac{\lambda}{\mu_k}}
βk=μkλ为了进行去噪,作者提出了一个神经网络去噪器ResUNet,其实这个去噪器并不复杂,就是一个添加了残差项的U-Net。这个网络将上式的噪声等级和
z
k
z_k
zk进行concat后作为输入,并输出一个干净图片。我们可以将其表示为:
x
k
=
P
(
z
k
,
β
k
)
x_k = P(z_k ,β_k )
xk=P(zk,βk)这样这个去噪模型就可以根据输入的噪声等级,去噪各种噪声。
最后就是一个权重生成器,来控制数据项和先验项的权重
α
k
,
β
k
\alpha_k,\beta_k
αk,βk。作者也指出,虽然权重可以预先给定,但是为了提高模型的泛化能力,作者还是使用神经网络来自适应的生成,神经网络的输入就是下采样倍数
s
s
s和噪声等级
σ
\sigma
σ(这里为什么不需要模糊核,个人有点不解),输入就是
α
=
[
α
1
,
.
.
.
,
α
K
]
\alpha=[\alpha_1,...,\alpha_K]
α=[α1,...,αK]和
β
=
[
β
1
,
.
.
.
,
β
K
]
\beta=[\beta_1,...,\beta_K]
β=[β1,...,βK]。表示为:
[
α
,
β
]
=
H
(
σ
,
s
)
.
[α,β] = H(σ,s).
[α,β]=H(σ,s).
到现在为止,模型三大部件介绍完了,接下来就是拼插在一起,进行end-to-end训练了。