原创文章,转载、引用请注明出处!
Closed-loop Matters: Dual Regression Networks for Single Image Super-Resolution
2020 cvpr
立意
文章提出,目前超分辨率算法存在两个明显的问题:
- 从LR图像到HR图像通常是一个ill-posed的反问题,存在无数可能的HR图像通过降采样得到同一张LR图像。解空间过大,从而很难去找到一个合适的解。
First, learning the mapping from LR to HR images is typ- ically an ill-posed problem since there exist infinitely many HR images that can be downscaled to obtain the same LR image [36]. Thus, the space of the possible functions that map LR to HR images becomes extremely large. As a result, the learning performance can be limited since learning a good solution in such a large space is very hard.
- 真实场景应用中,成对的LR-HR图像往往无法获得,因此对应图像降采样方式也往往未知。因此对于更普遍的情形,现有的SR模型经常会引起适应性问题,从而导致性能不佳。
Second, it is hard to obtain a promising SR model when the paired data are unavailable [43, 54]. Note that most SR methods rely on the paired training data, i.e., HR images with their Bicubic-degraded LR counterparts. However, the paired data may be unavailable and the unpaired data often dominate the real-world applications.
论文针对这两个主要的问题进行改进,提出了对偶回归策略,通过引入对LR图像额外的约束,从而减小解空间的大小。
也就是说,模型除了学习LR到HR图像的映射外,还学习了额外的对偶回归映射,用于估计下采样内核并重建LR图像,从而形成一个闭环以提供额外的监督。特别地是,由于对偶回归策略并不依赖HR图像,因此可以直接从LR图像中进行学习。因此,可以很好地使得SR模型适应真实世界图像。
作者的意思就是针对LR到HR解空间大的问题,作者通过设计一个反向的一个网络,实现HR到LR的映射,以此来制约和平衡主网络(也就是LR到HR映射的网络)的训练,怎么平衡的可以通过后面作者给的损失函数看出来。而为了解决HR和LR成对训练的依赖问题,作者通过在训练集中加入不成对的LR图像,那肯定有人要问了,那LR图像没有对应的HR图像那怎么训练呢?这个问题也是能通过后面作者给的损失函数来解决。
网络结构
网络的整体结构如下,分为P和D两部分。:
模型中黑色箭头所指部分,为DRN模型的Primary网络,而红色箭头所指部分,则对应Dual Regression 网络。Primary网络实现了从LR到HR映射,并且生成多尺度的SR图像:x1 SR,x2 SR。Dual Regression网络则是HR到LR映射,生成多尺度的LR图像:x2 LR,x1 LR。
D网络中优化的损失函数不止一个,通过上图可以发现对于最后结果为4x的图像,反向进行下采样可以下采样成2x和1x的。而作者在P网络的设计中一开始Input图像(LR通过插值上采样后的)在输入时也经历了两个阶段就是下采样成2x和1x的,所以这就和D网络对应了起来。P网络的2x和D网络的2x图像形成一对,并进行损失函数优化。1x图像也是如此。如果最后的结果是8x的图像,就多一个4x的P网络和D网络的成对优化。
成对数据
针对配对的训练数据,将SR问题公式化为涉及两个回归任务的对偶回归模型。损失函数如下图所示,包含两部分,一个是P网络的损失,一个是D网络的损失:
其中,lamda为对偶回归Loss的权重参数,推荐设置为0.1。每个loss均可以用L1或L2loss,本文中使用的是L1 loss。
不成对数据
对于没有成对数据集的情况下,DRN采用了半监督学习,引入部分的成对数据集用于训练,DRN损失函数为:
首先,为了保证SR的质量,这里需要添加一部分成对的合成数据(简单双三次三采样退化)。训练时选取m个无标签数据和n个合成数据。
其次,1sp表示数据为合成数据时取1,无标签数据时取0。通过这个参数来控制训练LR没有对应HR图像的情况下的训练损失函数,通过后面加上lamda权重的D网络损失函数,来平衡P网络的训练。
实验
有监督部分
有监督部分和目前大部分模型一样,使用的是常见的Data pair数据集DIV2K和Flick2K作为训练集,测试集为常见的SET5, SET14, BSDS100,URBAN100 和MANGA109。模型设置上,作者设置了两个不同参数量的模型,DRN-S(小模型)和DRN-L(大模型)。
半监督部分
半监督部分,data pair部分使用了DIV2K的训练集,而对于data unpiar部分,则划分成两个实验:
Comparison on Unpaired Synthetic Data
data unpair则是在ImageNet中随机选取了3K张图像,并对图片使用Nearest和BD两种不同的方式采样出LR图像,将LR用于半监督训练。
Comparison on Unpaired Real-world Data
data unpair则是来自于未知退化核的YouTube视频的3K张原始帧。由于没有GT,只能通过感性的方式进行不同方法的下恢复效果的观测。
消融实验
对偶回归学习是否有效?lamba设置为多少合适?
半监督学习中,data pair数据和unpair数据比例如何划分?
贡献
来自原文叙述的主要贡献:
We develop a dual regression scheme by introducing an additional constraint such that the mappings can form a closed-loop and LR images can be reconstructed to enhance the performance of SR models. Moreover, we also theoretically analyze the generalization ability of the proposed scheme, which further confirms its superiority to existing methods.
We study a
more general super-resolution case
where there is no corresponding HR data w.r.t. the real-world LR data. With the proposed dual regression scheme, deep models can beeasily adapted to real-world data
, e.g., raw video frames from YouTube.Extensive experiments on both the SR tasks with paired training data and unpaired real-world data demonstrate the effectiveness of the
proposed dual regression scheme
in image super-resolution.
其他
code:https://github.com/guoyongcs/DRN
感想
思路非常的新颖且实用。最大的亮点,在于利用对偶任务的特点,将真实LR的半监督引入,为目前SISR普遍存在的泛化性问题提供了一种新的解决思路。即当前更多的工作是如何去盲估计出一个未知的退化核,这种盲估计通常是非常难的。而这种半监督的学习,则需要将真实的LR接纳到模型中来进行学习,因此这种半监督的方式,在真实场景下可能更多需要Online learning。
推测这种学习范式对其他的low level vision tasks应该都是同样适用的。
对偶学习
Dual Learning for Machine Translation
NIPS 2016
https://www.msra.cn/zh-cn/news/features/dual-learning-20161207
立意
深度学习之所以能够取得巨大的成功,一个非常重要的因素就是大数据,特别是大规模的带标签的数据。但在很多任务中,没办法收集到大规模的标注数据。为了使深度学习能够取得更广泛的成功,需要降低其对大规模标注数据的依赖性。
为了解决这个问题,我们提出了一种新的学习范式,把它称作对偶学习。
做法
很多人工智能的应用涉及两个互为对偶的任务,例如机器翻译中从中文到英文翻译和从英文到中文的翻译互为对偶、语音处理中语音识别和语音合成互为对偶、图像理解中基于图像生成文本和基于文本生成图像互为对偶、问答系统中回答问题和生成问题互为对偶,以及在搜索引擎中给检索词查找相关的网页和给网页生成关键词互为对偶。这些互为对偶的人工智能任务可以形成一个闭环,使从没有标注的数据中进行学习成为可能。
对偶学习的最关键一点在于,给定一个原始任务模型,其对偶任务的模型可以给其提供反馈;同样的,给定一个对偶任务的模型,其原始任务的模型也可以给该对偶任务的模型提供反馈;从而这两个互为对偶的任务可以相互提供反馈,相互学习、相互提高。
考虑一个对偶翻译游戏,里面有两个玩家小明和爱丽丝。小明只能讲中文,爱丽丝只会讲英文,他们两个人一起希望能够提高英文到中文的翻译模型f和中文到英文的翻译模型g。给定一个英文的句子x,爱丽丝首先通过f把这个句子翻译成中文句子y1,然后把这个中文的句子发给小明。因为没有标注,所以小明不知道正确的翻译是什么,但是小明可以知道,这个中文的句子是不是语法正确、符不符合中文的语言模型,这些信息都能帮助小明大概判断翻译模型f是不是做的好。然后小明再把这个中文的句子y1通过翻译模型g翻译成一个新的英文句子x1,并发给爱丽丝。通过比较x和x1是不是相似,爱丽丝就能够知道翻译模型f和g是不是做得好,尽管x只是一个没有标注的句子。因此,通过这样一个对偶游戏的过程,我们能够从没有标注的数据上获得反馈,从而知道如何提高机器学习模型。
总结
认为对偶学习是一个全新的学习范式。
监督学习(supervised learning)只能从标注的数据进行学习,只涉及一个学习任务;而对偶学习涉及至少两个学习任务,可以从未标注的数据进行学习。
半监督学习(semi-supervised learning)尽管可以对未标注的样本生成伪标签,但无法知道这些伪标签的好坏,而对偶学习通过对偶游戏生成的反馈(例如对偶翻译中x和x1的相似性)能知道中间过程产生的伪标签(y1)的好坏,因而可以更有效地利用未标注的数据。我们甚至可以说,对偶学习在某种程度上是把未标注的数据当作带标签的数据来使用。
对偶学习和多任务学习(multi-task learning)也不相同。尽管多任务学习也是同时学习多个任务共的模型,但这些任务必须共享相同的输入空间,而对偶学习对输入空间没有要求,只要这些任务能形成一个闭环系统即可。
对偶学习和迁移学习(transfer learning)也很不一样。迁移学习用一个或多个相关的任务来辅助主要任务的学习,而在对偶学习中,多个任务是相互帮助、相互提高,并没有主次之分。