论文地址:CFSNet: Toward a Controllable Feature Space for Image Restoration
1、Motivation:
(1)大部分的深度学习方法都是针对特定任务和特定数据集的,缺乏灵活性。
(2)不同的人对同一幅图像质量的评价存在主观因素(有的人倾向于低失真,有的人倾向于高视觉效果),并且低失真(low distortion )与好的视觉效果(high visual quality)并不是一致的(由不同的损失函数控制)。
(3)在很多实际的应用中,很难去知道用户对图像的倾向(追求低失真还是好的视觉效果),与受污染图片的实际退化程度。
2、Contributions:
(1)提出了一种新颖的、可控的、交互式的、端到端的图像恢复框架。
(2)提出了一种耦合模块,和对耦合系数进行自适应学习的策略。
3、Architecture:
网络结构如下所示:整个网络首先是一个大的残差结构。
网络的输入是待恢复图像 和权衡参数 (low distortion 与 high visual quality)
从纵向看:整个网络框架大概分成三个部分,如上图做所示,第①个部分是针对权重 的全连接网络, 为标量,将其乘上一个512维的全1向量再输入到网络中。第②个部分是调节模块(tuning block),它的作用是让重建图像朝着高视觉效果(high visual quality)方向靠近。第③个部分是主模块(main block),它的作用是让重建图像朝着低失真(low distortion)方向靠近。
从横向看:输入标量 首先通过三个共享的全连接层,然后对于每一个耦合模块(main block + tuning block + coupling),分别再通过两个全连接层去学习最优的耦合系数。对于第 个耦合块的系数 ,
其中 代表共享全连接层, 代表那两个独立的全连接层。
输入 图像 通过一个 3x3 的卷积提取特征:,然后 通过主模块(main block)和 调节模块(tuning block),利用耦合系数 对这两个模块的输出进行耦合,即得到一个完整的耦合模块的输出:
其中, 为第 个耦合操作, 与 分别代表第 个主模块(main block)和第 个调节模块(tuning block)的输出(特征图), 与 分别代表第 个主模块(main block)和第 个调节模块(tuning block)的函数。
经过 个耦合模块后,再通过一个 3x3 的卷积层输出重建图像。针对超分(SR)问题,最右边是一个包含上才样的耦合模块,上才样方式为 sub-pixel 。
4、训练过程——分为两步
Step 1(distortion optimization):将控制变量 设为0(经过全连接层后,所有都为0),只训练主模块网络(main branch)(由下面的公式7可以知道,为0时,只有主模块起作用;为1时,只有调节模块起作用),损失函数为:, 为真实图像(标签), 为主模块网络(main branch)参数。这步主要是为了生成低失真(low distortion)的图像,即 通常为 MSE 或 MAE 等等。
Step 2(perceptual quality optimization):将控制变量 设为1(经过全连接层后,得到不同的),固定主模块网络参数,训练调节模块网络(tuning branch),损失函数为:, 为调节模块网络(tuning branch)参数, 为全连接层网络的参数。这步主要是为了在 step1 获得低失真图像的情况下,向高视觉效果(high visual quality)图像靠近,即 通常为 GAN loss 和 perceptual loss 。
step1相当于在重建图像空间中确定了一个点,这个点周围的图像都是低失真的,而step2则是从出发,沿着的方向移动(即朝着high visual quality)。移动后的结果为:
后面会看到这其实有一定的依据。
5、理论分析
假设存在一个高维空间,包含所有的自然图像。在这个空间里,图像的退化过程是连续的,则可以通过差值的方法,由已知退化程度图像的重建,去生成未知退化程度图像的重建(本文其实是在低失真重建图像(也就是)与高视觉效果重建图像(也就是)之间,利用插值获取介于两者之间的重建图像)。然而,不幸的是,自然图像分布在一个非线性的流形(manifold)中,进行简单的插值会带来伪影和其他噪声。因此本文的插值操作使用在特征空间(feature space),而不是在像素空间(pixel space)。
一些研究表明,数据流形(data manifold)可以通过神经网络的映射展开,展开的流形可以近似地认为是一个欧式空间。基于这个假设,我们就可以使用差值的方法来重建退化程度未知的图像。如下图所示:
上图表明,假设 、 是隐空间(latent space)中的两个端点,则未知点 可以用 、 来表示:
由于这个假设受到CNN网络的深度和宽度影响,因此我们无法知道在网络的不同层上、不同层的不同通道上数据展开的程度。因此 对不同层、不同通道来说都是不同的,因此本文的网络结构中有针对 设计的全连接层来自适应学习它的取值。以此来获得 在不同位置的最优取值。