ESRGAN(Enhanced Super-Resolution Generative Adversarial Networks)主要是对SRGAN进行改进,发表于2018年,可以说是超分辨率领域很强的一个模型。
主要改进点
- 引入了Residual-in-Residu Dense Block(RRDB)结构。
- 改进了网络结构和损失函数。
- 使用激活前的VGG特征来改善感知损失。
RRDB结构详解
这个结构主要是针对RB结构中的BN层进行改进,由于作者任务SRGAN中产生伪影的原因是因为使用了BN层,所以作者去除了BN层;接着作者使用了dense connections的方法对feature map进行密集连接。
损失函数的改进
在SRGAN中,判别器判别的是输入图片是否是“真的”高清图像还是“假的”高清图像,在ESRGAN中,作者提出了一种新的思考模式(借鉴了relativistic GAN的想法),使用判别器是来估计真实图像相对来说比fake图像更逼真的概率。
其中,判别器的损失为:
生成器的损失为:
其中 x f x_f xf是生成器生成的图片, x r x_r xr是原始的输入LR图片。
改善感知损失
右上图可知,使用激活前的特征,这样可以为亮度一致性和纹理恢复提供更强的监督。
感知域的损失在SRGAN中是定义在一个预训练的深度网络的激活层,这一层中两个激活了的特征的距离会被最小化。与此相反,作者使用的特征是激活前的特征,这样就可以克服两个缺点:
- 激活后的特征是非常稀疏的,特别实在很深的网络中。这种稀疏的激活提供的监督效果是很弱的,会造成性能低下。
- 使用激活后的特征会导致重建图像与GT的亮度不一致。
作者也提出了一种更适合于超分辨率的感知域损失,这个损失基于一个用于材料是别的VGG16网络(MINCNet),这个网络更聚焦于纹理而不是物体。尽管这样带来的增益很小,但作者依然相信,探索关注纹理的感知域损失对超分辨率至关重要。
网络插值
为了平衡感知质量和PSNR等评价值,作者提出了一个灵活并且有效的方法——网络插值。具体而言,作者首先基于PSNR方法训练得到网络G_PSNR,然后再用基于GAN的网络G_GAN进行微调。
然后,对这两个网络相应的网络参数进行插值得到一个插值后的网络G_INTERP: