DRN(CVPR)——SISR超分辨

时间:2024-04-10 21:55:58

DRN: [ Closed-loop Matters: Dual Regression Networks for Single Image Super-Resolution ]DRN文论链接

SISR两个潜在的局限

  1. 学习LR到HR的隐射是一个病态问题,因为从HR下采样到LR,可以有无限个HR与LR对应。所以解空间太大,很难找到很好的解。
  2. 应用程序中可能无法获得成对的LR-HR数据,而且底层的退化方法通常是未知的。

所以为了很好解决上面问题,使得模型得到更好适用性。文章提出对偶回归(对称回归?感觉特别像反投影,只是这里的投影和反投影的操作不对称,但是本文章好像是受到CycleGANd 启发)。
通过在LR数据上引入额外的约束来减少可能函数的空间,我们提出了一个双重回归方案。,除了LR到HR图像的映射之外,我们还学习了一个额外的对偶回归映射,它可以估计下采样核并重构LR图像,从而形成一个闭环,提供额外的监督。(LR->HR->LR)。
在这种模型下,我们可以不依赖HR,直接从LR中学习,所以也能将这个模型用在现实数据中。
DRN(CVPR2020)——SISR超分辨

论文三点贡献:

  1. 通过引入额外的约束,我们提出了一个双重回归方案,这样映射可以形成一个闭环,LR图像可以重建来提高SR模型的性能。此外,我们还从理论上分析了该方法的泛化能力,进一步证明了该方法相对于现有方法的优越性。
  2. 我们研究了一个更一般情况下的超分辨率,对于现实世界中的LR数据没有相应的HR数据(就是数据不成对的情况)。通过提出的双重回归方案,深层模型可以很容易地适应现实世界的数据,例如YouTube的原始视频帧。
  3. 通过对训练数据和非配对真实数据的大量实验,证明了二元回归方法在图像超分辨方面的有效性。

Dual learning(对偶学习,对称学习?)

它包含一个原始模型(传统SISR的LR->HR映射)和一个对偶模型(逆模型),可以同时学习两个相对的映射,提高语言翻译的性能。最近,该方案也被用于不需要对训练数据的图像变换,例如CycleGAN, DualGAN。具体地说,提出了循环一致性损失以避免GAN方法的模式崩溃问题并帮助最小化分布发散。这些方法不能直接用到SISR中,在此基础上,我们利用闭环来缩小SR的可能解空间,并考虑学习非对称映射,为使用循环的合理性和必要性提供了理论保证。

文章方法

Dual Regression Scheme for Paired Data(配对数据的双重回归方案)

除了像传统SISR那样用<LR,HR>学习映射,我们还学习了从HR到LR图像的逆/对偶映射。(这篇论文就是缩小解空间,像极了迭代反投影,DBPN前期网络
假设X是LR,Y是HR。同时学习原始映射P( H R 1 = P ( L R ) HR_1=P(LR) HR1=P(LR)使得 H R 1 ≈ H R HR_1\approx HR HR1HR),和逆映射D( L R 1 = D ( H R 1 ) LR_1=D(HR_1) LR1=DHR1,使得 L R 1 ≈ L R LR_1\approx LR LR1LR),两者形成闭环。
DRN(CVPR2020)——SISR超分辨
注意,逆映射可以看作是对底层下采样核的估计。形式上,我们将SR问题表示为包含两个回归任务的对偶回归方案。
为了共同学习这两个映射,我们提出一个超分辨训练模型(就是损失函数),给N个配对的数据,损失函数为:
DRN(CVPR2020)——SISR超分辨
其中 L D L_D LD L p L_p Lp使用 L 1 L_1 L1范数, λ \lambda λ是逆映射的权重。
实际上,我们还可以在HR域上添加一个约束,即通过下采样和上采样来重构原始HR图像(像不像迭代反投影),但是会增加计算量而且效果有限。在实践中,我们只在LR数据上增加了双重回归损失,这极大地提高了性能,同时保留了与原始SR模型(SISR的传统映射)大致相同的代价。

Dual Regression for Unpaired Data(非配对的双重回归方案)

这里是针对一般情况,就是数据不配对的情况。用下面的算法(Algorithm1)
DRN(CVPR2020)——SISR超分辨

逆回归映射学习的是底层退化模型(一个下采样模型),并且这不一定依赖HR。因此,我们可以使用它直接从未配对的真实LR数据中学习,让模型有更好的适应性。为了保证HR图像的重建性能,我们还结合了成对数据的信息(比如用Bicubic来生成成对的数据。
m个不成对,n个成对的数据,目标函数为:
DRN(CVPR2020)——SISR超分辨

其中 1 S p ( x i ) 1_{S_p}(x_i) 1Sp(xi)函数指示函数, S P S_P SP是成对数据集 ( x i , y i ) i = 1 N {(x_i,y_i)}^N_{i=1} (xi,yi)i=1N,若 x i ∈ S P x_i\in S_P xiSP,则 1 S p ( x i ) = 1 1_{S_p}(x_i)=1 1Sp(xi)=1,或者 1 S p ( x i ) = 0 1_{S_p}(x_i)=0 1Sp(xi)=0

Training Method(训练方式)

Training method on paired data.(有成对数据的训练)

就是最小化公式1

Training method on unpaired data.(非成对数据的训练)

参照算法1(Algorithm1),在每次迭代中,我们m个非成对,n个成对数据,然后最小化等式2。比较好的比例是用 ρ = m / ( m + n ) \rho=m/(m+n) ρ=m/(m+n) 这个公式,当 ρ = 30 \rho=30% ρ=30 的时候,得到的结果最好。(这是作者实验结果

Differences from CycleGAN based SR Methods(和CycleGAN方法的区别)

  1. CycelGAN在解决欠约束图片转移问题,使用循环一致性损失(cycle consistency loss)来解决模型崩溃问题。本文为了提高性能,增加了约束,该约束通过将SR图像映射回相应的LR图像来减少可能的函数空间,这样提高我们的超分辨模型。
  2. CycleGAN是不要成对数据,DRN是用了成对和没有成对的(人工合成就是HR下采样到LR,真实世界数据就是看到啥就是啥。

Architecture Design of DRN (DRN细节)

U形网络,两个部分:原始映射网络(比如传统SISR,LR->HR)和逆映射网络(HR->LR)
DRN(CVPR2020)——SISR超分辨
原始网络:遵循下采样,再上采样的U形设计。每个包含一个log2(s)的块,s是尺度因子。这意味着,放大4倍,需要2个块,8倍就要3个块。与原始U形设计(就是改进)不同,我们使用B剩余通道注意块(RCAB)来构建每个基本块,以提高模型容量。在此之后我们添加额外的输出来生成相应比例的图像(即1×、2×、4×图像),并将所提出的损失应用于这些图像来训练模型。在输入网络之前,图片用Bicubic放大对应尺寸。
文章设计逆映射网络,就是为了从HR中学到一个下采样模型,它比原始映射简单,用了2个卷积,一个ReLU**函数。

Theoretical Analysis

其他的还是看论文附录吧,怕公式推导翻译不太准确
论文:https://arxiv.org/pdf/2003.07018.pdf
代码:https://github.com/guoyongcs/DRN