合成的高分辨率(HR)和低分辨率(LR)被广泛应用于现有的分辨率方法中,为了避免合成图像和测试图像之间的域差距,以往的大多数方法都试图通过确定性模型自适应地学习合成(退化)过程。然而,在真实场景中的一些退化是随机的,不能由图像的内容来决定,这些确定性模型可能无法建模退化的随机因素和内容无关的部分,这将限制以下SR模型的性能。在本文中,我们提出了一个概率退化模型(PDM),研究退化D作为一个随机变量,并通过对从先验随机变量z到D的映射进行建模学习其分布。与以往的确定性退化模型相比,PDM可以随机建模更多样化的退化,生成的HR-LR对可以更好的覆盖测试图像的各种退化,从而防止SR模型对特定图像的过拟合。大量的实验表明,我们的退化模型可以帮助SR模型在不同的数据集上获得更好的性能。
超分辨旨在从低分辨率图像(LR)中重建出高分辨率图像(HR), 近年来,基于学习的SR方法取得了显著的效果,这些方法经常需要HR-LR图像对作为训练集。然而,在真实场景下获取成对的图像时非常困难的,作为一种替代,合成的HR-LR图像对被广泛应用于现存的超分辨方法,他们通过使用预定义的设计降解HR图像,如双边缘降采样, 模糊核卷积,或者添加一定范围的噪声,但是在盲超分辨中,测试图像的退化是未知的, 预定义的退化设置可能与测试图像不同,这个差距将在很大程度上破坏这些方法在实际场景中的性能。
为了避免域上的差距,一些工作尝试自适应的学习退化设置,如图一所示,退化模型通过对抗进行监督,并鼓励产生与测试图像相同领域的LR图像, 在KernelGAN中,退化模型被设计为线性卷积层,在CycleSR中,在CycleGAN框架中学习了一个非线性退化模型,这些学习到的退化模型可以产生与测试用例有较小差距的HR-LR对,因此可以用于测试一个更好的SR模型。
然而,大部分之前退化学习的方法有一个共同的缺点:它们的退化模型是确定性的,每个HR图像只能退化为一个特定的LR图像,它暗示了一个假设:退化完全依赖于图像的内容,然而,这在大多数情况下可能并不成立。一些退化是内容独立和随机的,如随机抖动引起的随机噪声或模糊,这些随机的因素和退化的内容独立不能通过这些确定的模型进行模拟,一个更好的假设是,退化受到一个分布的影响,这可以用一个概率模型更好地建模。
在此基础上,我们提出了一种概率退化模型(PDM),该模型可以学习盲图像超分辨的退化分布,具体地说,我们用两个随机变量参数化退化,即模糊核k和随机噪声n, 通过将退化过程表述为一个线性函数:
x表示HR图像,* 表示卷积操作, s _s s表示下采样和尺度因子,因此,D的分布可以表示为k和n的联合分布,这可以通过学习先验随机变量z到k和n的映射来建模。然后在对抗框架中训练PDM,在训练过程中自动学习D的分布,这样,PDM就可以对退化过程中的随机因素进行建模,更好地将退化与图像内容解耦,这在实际场景中可能是一种更实际的近似方法,因此,PDM可能更容易覆盖所有的测试图像的不同退化,并防止SR模型过拟合特定的图像,PDM可以作为一个数据生成器,并可以很容易地与现有的SR模型集成,以帮助它们提高应用程序中的性能。
我们的贡献可以总结如下:
1、 据我们所知,我们是第一个研究盲SR作为一个随机变量的退化,并试图通过一个概率模型来学习其分布,它允许我们建模更多样化的退化,并合成更接近测试图像领域的训练样本。
2、我们提出了一种概率退化模型(PDM),该模型可以对退化过程中的随机因素进行建模,更好地将退化与图像内容解耦,从而使盲SR的退化分布更容易学习。
3、我们仔细地重新实现和研究了不同的基于退化学习的SR方法,并提供了全面的比较
4、 在概率退化模型的基础上,我们进一步提出了一个统一的盲SR框架,它在主流基准数据集上实现了最先进的性能。
早期的SR方法通常是合成具有预定义退化的HR-LR样本,最广泛的设置是双边降采样,然而,一些研究然就人员开始意识到,这种合成数据与真实的测试图像存在域差距,当这些方法应用于实际应用时,这一差距将导致性能的显著下降。因此,研究人员开始合成更复杂设置的样本,包括不同水平的多个模糊核(各向同性和各向异性)和随机噪声(加性的高斯白噪声),更大的退化空间使这些模型具有更好的泛化能力,但与实际场景中巨大的退化空间相比,预定义退化的多样性仍然有限,这些方法在大多数应用中仍然失败。
最近,进一步增加了预定义设置的重复退化,这在很大程度上扩大了它们的应用场景,然而,为了牺牲更好的泛化能力,它们也可能倾向于产生过于平滑的结果,我们将在实验部分(第4.2节)中进一步讨论它
确定性退化模型
为了生成更接近真实测试图像域的LR图像,一些方法选择了自适应的学习退化, 使用了一个具有线性卷积层的神经网络来建模模糊过程,该网络通过对抗性损失进行训练,这鼓励其输出图像更像测试图像,这样,该网络就可以学习到测试图像的模糊核;为了在退化图像中更好的保存内容,在CycleGAN框架中进一步训练非线性神经网络模型。
由于它们的退化是自适应学习的,这些方法可以为不同的测试图像定制一个SR模型,并且在真实场景中通常比基于预定义的基于退化方法性能更好,然而, 它们的退化模型是确定性的,而且它们可能无法模拟退化过程中的随机因素,这可能会限制它们的SR模型的性能。
退化池
JI等人将退化模型建模为一个包含从测试图像中学习到模糊核和噪声的池, 然后利用退化池合成训练样本来训练SR模型,该方法与我们的PDM有相似的想法,并在NTIRE2020中取得了巨大的性能,然而,我们分别学习了模糊核和噪声,这涉及到 两个不同的任务,构建这样一个退化池是很困难和耗时的,而在我们的PDM中,模糊核和噪声是通经对抗性训练自动学习的,这要容易得多。
概率退化模型
为了模拟退化过程中的随机因子,在之前,HR图像在被神经网络退化之前与随机向量连接起来,虽然他们的模型考虑了随机因素,但它们不能很好地将退化与图像内容解耦,也没有提供退化的明确公式。随机向量和退化之间的关系尚不清楚,我们也不知道模型会学习到什么样的退化。因此,很难根据不同的场景来调整模型的设置,相反,在我们的PDM中,我们用模拟核k和随机噪声n来参数化退化,显式公式使我们能够灵活地调整模型,还将在第3.3节中进一步讨论。
公式1中的退化过程实际上包含两个线性步骤:
从直观上看,这两步是相互独立的,因为模糊核主要依赖于相机镜头的特性,而噪声主要与传感器的特性有关,因此,退化分布可以建模为:
p D ( D ) = p k , n ( k , n ) = p k ( k ) p n ( n ) p_D(D)= p_{k,n}(k,n) = p_k(k)p_n(n) pD(D)=pk,n(k,n)=pk(k)pn(n)
这样,k和n的分布就可以独立地建模来表示D的分布。
为了建模模糊核k的分布,我们定义了一个先验随机变量 z k z_k zk, 它是一个多维的正态分布,然后我们使用一个生成模块来学习从 z k z_k zk到k的映射:
k = n e t K ( z k ) , z k ∼ N ( 0 , 1 ) k = netK(z_k), z_k \sim N(0, 1) k=netK(zk),zk∼N(0,1)
其中,netK是由卷积神经网络表示的生成模块
不失一般性,我们首先考虑空间变化的模糊核,即x的每个像素的模糊核都是不同的,在这种情况下,我们有
z k ∈ R f k ∗ h ∗ w z_k \in R^{f_k*h*w} zk∈Rfk∗h∗w k ∈ R ( k ∗ k ) ∗ h ∗ w k \in R^{(k*k)*h*w} k∈R(k∗k)∗h∗w
f k f_k fk是正态分布 z k z_k zk的维度,k是模糊核的尺度,h和w是x的高度和宽度,我们在最后添加了一个softmax层,以保证k的所有元素的和为1, netK中卷积权值的大小一般设置为3x3,它说明学习到的模糊核是空间相关的,否则,如果将卷积权值的空间大小设置为1x1,则将独立学习每个像素的模糊核。
模糊核的空间差异通常是由镜头畸变引起的,它主要存在于图像的角落周围,在大多数情况下,模糊核可以近似为一个空间不变的模糊核,这是具有h=w=1的空间异变模糊核的一种特殊情况,而我们也有:
z k ∈ R f k ∗ 1 ∗ 1 z_k \in R^{f_k*1*1} zk∈Rfk∗1∗1 k ∈ R ( k ∗ k ) ∗ 1 ∗ 1 k \in R^{(k*k)*1*1} k∈R(k∗k)∗1∗1
第4.2节的实验结果表明,这种近似对于大多数数据局已经足够好了
退化的第二步为在向模糊和下采样的图像 y c l e a n y^{clean} yclean上添加噪声,以往的退化模型只考虑加性高斯白噪声,它与 y c l e a n y^{clean} yclean的内容无关。在这种情况下,n的分布也可以用一个普通的生成模型来表示:
n = n e t N ( z n ) n = netN(z_n) n=netN(zn) z n ∼ N ( 0 , 1 ) z_n \sim N(0, 1) zn∼N(0,1)
其中netN是一个卷积神经网络,我们将y的高度、宽度和通道数分别表示为h, w, c, 在噪声域:
z n ∈ R f n ∗ h ∗ w z_n \in R^{f_n*h*w} zn∈Rfn∗h∗w n ∈ R h ∗ w ∗ c n \in R^{h*w*c} n∈Rh∗w∗c
f n f_n fn是正态分布 z n z_n zn的维度,在其他方法中,原始空间 n r a w n_{raw} nraw中的噪声被建模为散粒噪声和读取噪声的组合,并且 n r a w n_{raw} nraw可以用异方差高斯分布来近似
n r a w ∼ N ( 0 , σ r e a d + σ s h o t y c l e a n ) n_{raw} \sim N(0, \sigma_{read}+\sigma_{shot}y^{clean}) nraw∼N(0,σread+σshotyclean)
其中, σ r e a d \sigma_{read} σread和 σ s h o t \sigma_{shot} σshot是由相机传感器的模拟和数字增益决定。由于n来源于 n r a w n_{raw} nraw,这说明n与图像内容有关,n的分布应该用一个条件生成模块表示为:
n = n e t N ( z n , y c l e a n ) n = netN(z_n, y^{clean}) n=netN(zn,yclean) z n ∼ N ( 0 , 1 ) z_n \sim N(0, 1) zn∼N(0,1)
因此,我们也可以调整netN中的卷积权值的大小,以确定噪声是否存在空间相关性。
上面讨论的核模块和噪声模块共同形成了我们的概率退化模型(PDM), 如图2 所示,PDM用于合成HR-LR图像对
x r e f x_{ref} xref是参考的高分辨图像, { x r e f , y r e f } \{x_{ref}, y_{ref}\} {xref,yref}为SR模型形成一个成对的训练样本
我们的PDM通过对抗性训练进行了优化,这鼓励 y r e f y_{ref} yref与所有测试的测试图像相似。此外,我们假设噪声n的均值为0, 因此,除了对抗性损失 l a d v l_{adv} ladv之外,我们还增加了一个关于噪声n的额外正则化:
l r e g = ∣ ∣ n ∣ ∣ 2 2 l_{reg} = ||n||^2_2 lreg=∣∣n∣∣22
退化模型总的损失为:
l t o t a l = l a d v + λ l r e g l_{total} = l_{adv}+ \lambda l_{reg} ltotal=ladv+λlreg
其中, λ \lambda λ是正则化项的权重,在我们所有的实验中,我们设置了 λ = 100 \lambda=100 λ=100来平衡这两个损失的大小
与以往的退化模型相比,PDM有三个优势:
首先,PDM能够模拟更多样化的退化,它允许一个HR图像退化为多个LR图像,因此,在相同数量的HR图像中,PDM可以生成更多样化的LR图像,为SR模型提供更多的训练样本,这可以更好地覆盖测试图像的退化,因此,PDM可以弥合训练数据集和测试数据集之间的差距,并帮助SR模型在测试图像上表现得更好
其次,关于退化的先验知识可以很容易地融入到PDM中,这可能会鼓励它更好的学习退化,例如,如果我们观察到单个图像之间的模糊几乎是一致的,那么我们就可以调整 z k z_k zk和k的形状,以便值学习空间不变的模糊核,这种先验知识有助于减少PDM的学习空间,并可能鼓励使其更容易被训练
最后,PDM将退化过程定义为一个线性函数,学习到的退化只能对图像内容施加有限的影响,这样,它可以更好的将退化与图像内容解耦,并可以专注于学习退化,在以前的大多数方法中,为了确保 y r e f y_{ref} yref与 x r e f x_{ref} xref具有一致的内容,它通常由 x r e f x_{ref} xref的双三次下采样来引导,然而,这种指导可能是不合适的,特别是当测试图像严重模糊时, 相反,在我们的PDM中,由于约束良好的模糊核和噪声, y r e f y_{ref} yref的内容本质上与 x r e f x_{ref} xref一致,因此,PDM可以避免额外指导的限制,并专注于学习退化
在之前,退化模型个SR模型的训练时分开的, 即它们首先训练一个退化模型,然后使用训练后的退化模型来帮助训练SR模型,这种两步训练方法很耗时,但对于其方法来说是必要的,因为它们的高度非线性退化模型会在训练开始时产生不良的结果,这可能会误导SR模型的优化,然而,在我们的方法中,由于PDM具有更好的约束性和更容易的训练性,因此它可以很好地同时训练PDM和SR模型,这样,PDM可以与任何SR模型集成,形成一个统一的盲SR框架,称为PDM-SR(如果SR模型的训练中也采用对抗性损失和感知损失,则称为PDM-SRGAN)
数据集
在本文中,我们主要研究没有配对的样本的情况,因此,对于每个数据集,我们只使用HR图像的前半部分和LR图像的后半部分进行训练,对于2020Track1和Track2,由于它们提供的训练样本是未配对的,所以直接使用所有图像进行训练
实验细节
对于不同的数据集设置不同的PDM, 对于所有的数据集,核模型的设置是相同的, z k z_k zk的维度 f k f_k fk设置为64, 模糊核的大小设置为21x21, 为简单起见,我们假设数据集中的模糊核是空间不变的,对于2017年的track2,由于测试图像时干净的,几乎没有噪声,所以我们省略了PDM中的噪声模块,其他三个数据集中的 z n z_n zn的维度设置为 f n = 3 f_n=3 fn=3, 卷积核的大小设置为3x3, 我们使用patchGAN判别器作为对抗性训练的判别器
训练
我们将高分辨率图像裁剪为128x128, 将低分辨率图像裁剪为32x32, batch设置为32, 所有的模型都在2080TiGPU上训练 2 × 1 0 5 2\times10^5 2×105, 使用Adam作为优化器,初始学习率设置为 2 × 1 0 − 4 2\times10^{-4} 2×10−4, 每5000steps减少为原来的一半
的模型都在2080TiGPU上训练 2 × 1 0 5 2\times10^5 2×105, 使用Adam作为优化器,初始学习率设置为 2 × 1 0 − 4 2\times10^{-4} 2×10−4, 每5000steps减少为原来的一半