【Super Resolution】超分辨率——ESRGAN

      • 1、ESRGAN的简单了解
      • 2、ESRGAN的网络结构
      • 3、ESRGAN中的判别器
      • 4、ESRGAN中的感知损失
      • 5、ESRGAN中的网络插值
      • 6、最后的Conclusion

在上一篇文章【Super Resolution】超分辨率——SRGAN中,我们详细的介绍了SRGAN,那么是否SRGAN可以再进行改进呢?这就是ESRGAN,这篇论文主要探讨的问题就是如何在SRGAN上做改进,是网络在超分问题上有更好的表现。这篇论文在PIRM 2018-SR Challenge1中拿了第一名,然后论文发表于CVPR。
Paper:ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks
Code:xinntao/BasicSR


1、ESRGAN的简单了解

SRGAN是第一个将GAN应用在SR问题上的,在单张图像超分辨率的问题上可以生成具有真实感纹理。SRGAN主要的三个关键组成部分是:SRGAN的网络结构(RB,残差模块)、对抗网络(判别器)和感知损失(Perceptual Loss)。
ESRGAN对于SRGAN的每个关键组成部分都进行了深刻的讨论,发现SRGAN的每个部分都可以再进行适当的改进。SRGAN发现SR图像与HR图像相比缺少的是高频信息,而ESRGAN发现不仅缺少的是高频信息,而且在细节信息上存在伪影, 主要的工作:

  • 将SRGAN的RB网络结构替换成了密集残差块RRDB的结构,并且不进行BN;
  • 对抗网络的判别器由标准二分类的分类器改为相对分类器(RaGAN),让判别器预测相对真实性而不是绝对值;
  • 感知损失改用激活前的特征,为亮度一致性和纹理恢复提供有效的更强的约束;

2、ESRGAN的网络结构

【Super Resolution】超分辨率——ESRGAN_第1张图片
我们来看一下生成器从LR图像生成SR图像的网络结构,这种网络结构作者是参照SRResNet提出的,Basic Block是可以选不同的模块,比如说RB、DB和RRDB等等,已获得网络更好的性能。其中,RB模块指的是残差模块(Residual Block),DB模块指的是密集模块(Dense Block),RRDB指的是Residual-in-Residual Dense Block(这个实在不知道怎么翻译了,哭QAQ)。

在ESRGAN中,对网络结构最大的改动是将原来的RB模块换成了RRDB的模块。 可以从下图中看出在大的残差结构中套入了残差结构的module,并且将残差结构中换成Dense block,block中有Conv层和LRelu层。

【Super Resolution】超分辨率——ESRGAN_第2张图片
其中,还比较值得一提的是,在模块中移除了BN层。 对于不同的基于PSNR的任务中(包括超分辨率和去模糊)来说,去掉BN层已经被证明会提高模型的效果和减小计算的复杂度,因为BN 层在训练时,使用一个 batch 的数据的均值和方差对该 batch 特征进行归一化,在测试时,使用在整个测试集上的数据预测的均值和方差。当训练集和测试集的统计量有很大不同的时候,BN 层就会倾向于生成不好的伪影,并且限制模型的泛化能力。 所以为了模型的稳定性、一致性和泛化性,作者在模型中去掉了BN层,以减少计算复杂度和内存占用。

在这网络结构这一部分中,作者也使用了一些技巧去训练深层网络:
1)Residual scaling,残差信息的scaling,将残差乘以一个(0,1)中的数值,防止不稳定;
2)更小的初始化,作者发现如果初始参数的方差变小的话残差结构将会更容易训练;

3、ESRGAN中的判别器

普通的或者说是标准的GAN网络的判别器是判别是真还是假(即Real or Fake?),而在ESRGAN中判别的是谁更像真的,谁更像假的,也就是说RaGAN的判别器判别的是尝试估计real图像相对于fake图像更逼真的概率。

【Super Resolution】超分辨率——ESRGAN_第3张图片
具体来说,对应的判别器的损失函数和生成器的对抗损失可以定义为:

【Super Resolution】超分辨率——ESRGAN_第4张图片

4、ESRGAN中的感知损失

在SRGAN中,使用的是激活后的特征(即在VGG16网络输出的Feature Map),在ESRGAN中将激活后的特征改为激活前的特征。使用激活前的特征,可以克服两个缺点:第一,激活后的特征是非常稀疏的,特别是在很深的网络中。这种稀疏的激活提供的监督效果是很弱的,会造成性能低下;第二,使用激活后的特征会导致重建图像与 GT 的亮度不一致。
对于生成器,它的损失函数为:
在这里插入图片描述
在PIRM-SR挑战中,文章中使用了感知损失的一种变体,提出了之中可变的感知损失,为SR-MINC的损失,有一定的增益。所以作者认为在超分领域上关注纹理 问题比关注物体更加具有效果。

5、ESRGAN中的网络插值

为了移除在GAN-based methods带来的令人不愉快的噪声,并且同时获得一个很好的感知质量,作者在稳重提出了一种灵活有效的方法——网络插值。先用PSNR的方法训练网络 G P S N R G_{PSNR} GPSNR,在GAN网络上进行微调。对这两个网络参数进行插值得到网络 G I N T E R P G_{INTERP} GINTERP,可以通过 α \alpha α来调整超分的效果。
【Super Resolution】超分辨率——ESRGAN_第5张图片

6、最后的Conclusion

【Super Resolution】超分辨率——ESRGAN_第6张图片
以消融实验的部分图像来对比不同网络的超分效果,那来总结一下ESRGAN:

  • 去掉BN: 没有降低网络的性能,而且节省了计算资源的内存占用;
  • RRDB: 提高超分的效果,更加有利于恢复纹理,去除噪声;
  • RaGAN: 更改了GAN的判别器,改为相对判别器,判别哪张图像更像真的;
  • 使用激活前的特征: 在图像亮度上更加准确,可以产生更加尖锐的边缘和细节;

其实对于一个比较具有意义的网络被提出后,我们应该去关注一些更加本质的问题,从SRGAN到ESRGAN,我们可以发现创新的点大多来源于生成图像和真实图像的对比得出来的,在SRGAN中发现生成图像中缺少的是高频信息,所以加入了感知损失;在ESRGAN中发现生成图像中有伪影,所以对于SRGAN中的每个部分都做了改进。

你可能感兴趣的:(超分辨率,对抗生成GAN)