论文背景
这是CVPR 2020的一篇超分工作。
最开始的超分技术,基于的都是固定的下采样制造的训练数据集(比如双三次),不适于在真实场景下的超分辨。对此,目前主要有以下两种解决思路:
blind SR methods:用一些随机的模糊核去构造LR图像,但是这些退化形式还是有一些限制性的假设。
GAN-based unpaired SR methods:直接利用GAN来学一个LR->HR的映射,不对退化过程做任何假设。
GAN-based的方法主要有以下两种:
直接法
generator网络用于把LR放大为一个“假的”HR图像,从而欺骗discriminator网络。在这种方法中,discriminator网络的职责是辨别其是否是真的HR图像
缺点:训练generator时,无法使用像素级的损失函数。(我的理解:比如SRGAN的数值指标不好)而这种像素损失不仅在以失真为导向(distortion-oriented)、以感知为导向(perception-oriented)的方法中都起着重要作用。
间接法
- generator网络用于把HR缩小为一个“假的”LR图像来欺骗discriminator网络。然后这个“假的”LR图像就可以以paired方式来训练一个SR网络。
- 缺点:生成的LR图像的分布与真实的LR分布之间有偏差,会导致在测试集上的性能低下。
作者基于Cycle-GAN提出了一种新的方法。这里简要了解了一下Cycle-GAN
#### Cycle-GAN
cycle-GAN是ICCV17的工作,是在条件图像生成领域,实现两个域(domain)的的图片的转化。传统的GAN是单向生成,而CycleGAN是互相生成,网络是个环形,所以命名为Cycle。并且CycleGAN一个非常实用的地方就是输入的两张图片可以是任意的两张图片,也就是可以是unpaired的。
X→Y的判别器损失为: \[ L_{GAN}(G,D_Y,X,Y)=\mathbb{E}_{y\sim p_{data}(y)}[\log{D_Y(y)}]+\mathbb{E}_{x\sim p_{data}(x)}[\log{(1-D_Y(G(x)))}] \] Y→X的判别器损失为: \[ L_{GAN}(F,D_X,Y,X)=\mathbb{E}_{x\sim p_{data}(x)}[\log{D_X(x)}]+\mathbb{E}_{y\sim p_{data}(y)}[\log{(1-D_X(F(y)))}] \] 而两个生成器的loss加起来表示为: \[ L_{cyc}(G,F) = \mathbb{E}_{x \sim p_{data}(x)}[||F(G(x))-x||_1]+\mathbb{E}_{y \sim p_{data}(y)}[||G(F(y))-y||_1] \] 最终网络的所有损失加起来为: \[ L(G,F,D_X,D_Y)=L_{GAN}(G,D_Y,X,Y)+L_{GAN}(F,D_X,Y,X)+L_{cyc}(G,F) \]
#### motivation
既然cycle-GAN可以在unpair的条件下学习一个domain到另一个domain的映射,那么作者想到基于cycle-GAN引入一个correction network用来实现true LR domain ↔︎ clean LR domain 的转化。所谓Clean LR是作者提出的一个新概念,意思是对HR图像使用预先设定的降采样操作得到的LR图像;而true LR就是真实的自然场景下的LR图像。在这种意义下,由于先前的SR网络能在clean LR得到好的效果,那么利用这个cycle-GAN,把整个SR过程就变成true LR->clean LR->HR。
### 主要方法
LR图像的域转换(domain transfer):
如上文所述,要实现true LR与clean LR的域转换,也利用就是cycle-GAN的思想,设置两个Generator网络,分别完成true LR->clean LR与clean LR->true LR任务。分别在clean LR、true LR两个域设置两个Discriminator网络,用来辨别其分布是否真实。同时,在clean LR->true LR->pseudo-clean LR上保证循环的一致性(起点和终点尽可能相同)。
LR到HR的映射:
当我们有一个HR图像时,可以首先利用特定的降采样方式,得到一张clean LR,再通过Cycle-GAN转一圈得到pseudo-clean LR。这时,设置一个网络U,学习一个pseudo-clean LR到原HR图像的映射。
使用HR Discriminator进行调整:
尽管在训练网络U时,是使用pseudo-clean LR来作为输入训练的(即图中的绿色实线),但是在测试过程中,是通过图中的黑色实线生成最终的SR图片的。因此,再增加了一个HR Discriminator,用于判断是不是“黑线”的分布。值得注意的是,这个HR Discriminator的对抗损失只用于更新两个Generator的参数,而SR网络U的参数被固定。
#### 损失函数
用于优化2个Generator和3个Discriminator的损失函数如下:
对抗损失(Adversarial loss):
每个Discriminator即对应了一个对抗损失,损失函数就是GAN的经典形式:
循环一致性损失(Cycle consistency loss):
经典的Cycle-GAN本来需要两个循环一致损失的,但本文放松了这个约束,只用了其中一个:
恒等映射损失(Identity mapping loss):
在原始的Cycle-GAN中,对生成器进行正则化以接近恒等映射。这里同理,给true LR->clean LR的网络也添加一个类似的正则项:
几何整体损失(Geometric ensemble loss):
引入了一个简单的几何集合损失,它要求翻转和旋转输入图像不改变结果:
最后把上述loss线性组合一下:
而对于SR网络U,它是独立于Generator和Discriminator的,他的loss很简单,即重构损失,使用的是普通的L1 loss:
#### 网络结构
该篇的重点不在于其网络内部结构,因此简述
- 对于SR网络U、true LR->clean LR网络,都用的是RCAN的结构
- 而 clean LR->true LR网络,用的5x5卷积的ResBlock,用的LeakyReLU激活,加了BN层。值得一提的是,为了加入一些随机的扰动,给原始的RGB通道增加了一些高斯分布N(0, 1)的通道
- 对于三个Discriminator网络,五层卷积层+LeakyReLU+BN
### 实验结果
#### 自然场景下的图片
#### 人脸
#### 航空图像
### 总结与思考
- 以往SR问题中,我们都在思考,如何对每一个HR图像,构造更贴近自然场景的LR图像,从而生成更好的<HR, LR>的paired数据集(比如使用退化模型,对核进行各种估计,或是生成更自然的核等等)。既然普通SR网络,在“人造”的LR图像上表现良好,本文则提出了一个很新颖的思路,把重点放在如何把“自然“的LR图像,转换为”固定退化方式”的LR图像,进而得到更好的SR效果;
- 作者开创性的把Cycle-GAN用到了SR领域。在unpaired数据集上,用于“自然“的LR图像域与”固定退化方式”的LR图像域的转换;
- 这样做的好处是,不仅摈弃了对退化模式估计过程中的各种限制性的假设,也能对直接对SR结果做像素级别的限制。