本文出发点:
对于图像超分,目前主流方法有两种:
其一是已经非常完善的基于GAN的图像重建。生成器接受一个LR图像,并将其上采样为一个SR图像,鉴别器负责度量生成的图像和真实高分辨率图像的差异。这样的方法要求生成器既要提取并保留LR图像的结构信息,同时生成尽量真实的高分辨率texture信息,这对于生成器来说,尤其是在高放大倍数的任务中,是很难的,由此造成的问题包括但不限于:生成图像模糊,生成图像有着虚假的纹理信息。另一种最近新兴起的方法是探索GAN的逆变换(GAN Inversion)。给一个这类方法的经典图示(PLUSE模型)
首先预训练一个生成网络,之后对其固定参数,给定一个LR图像,模型试图探究一个latent code
z
z
z,这个
z
z
z应该可以被生成网络生成的HR图像降采样成LR图像,这个
z
z
z是一个随机初始化的。那么通过调整这个
z
z
z,使得生成的HR降采样得到的LR与真实的LR最接近,就可以近似的认为网络生成的是目标SR图像。相比于第一种模型,通过训练的生成网络可以生成更加丰富和逼真的纹理信息。这个方法听起来很美好,但是在高倍数超分时,仅仅通过code
z
z
z很难保留图像的结构信息,所以生成的图像通过会遭受Identity失真。同时在图像生成过程中,对于每生成一张SR图像,就要对其
z
z
z进行多次的迭代估计,这非常耗时,所以这种方法显然不能应用于实时任务中。
本文的实施方法:
本文通过结合这两种方法的优势,将图像的结构保留和纹理信息生成分开进行:首先通过一个编码器,将LR图像进一步降维,在降维的过程中,其高纬特征会尽可能的保留其结构特征。之后将最后一级结构特征通过一个全连接映射为一个矩阵,将这个矩阵按列(每一列可以看成一个特征向量,个人觉得这里有点别扭)输入到预训练的条件GAN中,作者称之为bank。文中用的是styleGAN,同时作者指出,其他如BIgGAN也是可以的。这里不仅是最后一级特征会被输入到bank中,前面的每一级特征也会通过跳跃链接的方式与bank的生成过程的对应级进行连接。这个过程可以通过
来理解:其中
f
i
f_i
fi是前面编码器提取的第
i
i
i级特征,
c
i
c_i
ci是前面最后一步通过全连接得到的特征矩阵的第
i
i
i列,
S
i
S_i
Si是给bank每一层添加的一个的融合层。这里需要注意,这个bank类似于之前提到的GAN Inversion方法中的生成模型,会一直利用预训练网络将高纬特征生成目标分辨率的图像,因此可以看到,后面有几组高纬特征是没有和
f
i
f_i
fi进行匹配的。之后作者并未将这个预训练GAN的输出直接输出,而是将其生成的后几组高纬特征与前面编码器得到的LR的结构信息通过一个解码器进一步进行融合,进而通过解码器输出最终的结果:
。于是,整个模型的结果就成了encode—bank—decode的流程。
Generative Latent Bank:
本文的灵魂之处就是添加的这个bank。其实这个bank可以看做一个提供高分辨率texture先验信息的字典,这种将额外先验信息引入,用来恢复降采样过程中被破坏的texture信息的方法,并不是本文的首创,以前的方法中也有,只是之前的方法中都使用的静态的纹理信息(e.g.,保存一个与目标LR相关的HR的数据集),在生成过程中,LR通过与数据集中的HR进行匹配,找到最合适的一个HR图像,之后通过提取这个HR图像的texture来复原LR图像,这种方法显然有着非常多的弊端:若数据较大,全局匹配HR图像势必非常消耗时间,若数据集较小,无法获得非常匹配的图像,这就会导致texture复原的多样性和真实性受限。本文通过一个预训练条件GAN,通过输入的结构高纬信息,可以保证生成的高分辨率图像和原LR图像匹配(当然这里还没有匹配到可以直接将其输出作为SR图像的地步,后面Ablation Studies会进行说明),此外通过这种动态的字典,模型在生成过程中可以得到近乎无限多样性的HR图像。并且这种动态生成的方式避免了图像匹配的过程,相比于传统字典超分,计算量大大降低。
bank首先通过在目标LR类别的数据集上进行预训练,保证其可以生成目标类别的逼真HR数据,在之后的超分辨率过程中,bank的参数是固定的,不参与训练。此外,令人惊喜的是,这个bank对于类别有着很好的鲁棒性,在面对预训练时没有见过的类别时,也能产生很好的效果(will be shown in latent ablation studies)。由此,decoder仅仅负责提起LR的结构信息,而其对应的texture信息由bank来生成,从而使得模型可以产生更好的效果。
实验结果分析:
1、首先来看本文与其他超分模型的结果对比:
这里要说的是,其中mGANprior(将LR转化为latent code)和PULSE是一开始所说的第二类超分方法, ESRGAN+是第一类方法。可以看到,GLEAN几乎在所有对比方法上效果都要更好。
2、鲁棒性测试
可以看到本文的bank即使是在正面face数据集上训练,在面对差异较大的目标类数据集时依然可以得到很好的效果,相比之下,PULSE则因为在图像生成的过程中丢失了结构信息而只能被动的生成训练时的HR分布信息,丢失了Identity,因此恢复失败。这一点table 1的cosine similarity也可以看出。
3、对于encoder的ablation studies
在encode的过程中生成了多级分辨率的高纬特征,而在bank的过程中,各级高纬特征都被通过跳跃连接输入到了bank中,这使得bank获得了丰富的结构信息。从下到上看,当我们将各级高纬特征一一移除时,可以看到生成的HR虽然依然有着丰富的texture,但是却逐渐丢失了原图像的结构信息。
4、对于bank的ablation studies:
bank可以依据输入各级高纬特征的类别,生成相应的texture信息,将这些各级texture信息输入到encoder中,就可以将其融合到上采样信息中,生成有着丰富的,且正确的texture的SR图像。当逐级去掉这些bank信息后,生成的SR图像将丢失许多texture细节,并且产生失真伪影。
5、对于decoder的ablation studies
本文将结构信息和texture信息分别生成,并且将其融合成最终的SR图像。尽管bank也有一定的信息融合功能,但是当去掉decoder,仅以bank的输出作为输出时,其效果还是略微差劲。