ESRGAN阅读笔记

  • 从三个地方入手修改了SRGAN:
    • 网络结构
    • adversarial loss
    • perceptual loss
  • 网络结构主要是引入了RRDB的结构,并且去掉了BN层,使用residual scaling和smaller initialization,就是residual在加的时候乘一个小于1的系数,在w初始化的时候用更小的varience
  • adversarial loss是把discriminator 修改为Relativistic average GAN:ESRGAN阅读笔记公式是这样的:DRa(xr,xf)=σ(C(xr)Exf[C(xf)])D_{Ra}(x_r, x_f ) = σ(C(x_r) − E_{x_f} [C(x_f )])ExfE_{x_f}是指在一个minibatch的fake data里面取均值,σ()σ(·)是一个sigmoid function,所以对discriminator和generator来说,loss分别是ESRGAN阅读笔记
  • perceptual loss是把原先比较activation function后的feature map改为比较activation层之前的feature map,而且探索了把VGG从分类任务的pretrained变成recognition任务的pretrained,认为这样的VGG更注重纹理,虽然只获得了微小的margin
  • BN层去掉是因为如果test和train有不同的分布,会引入不合理的纹理,去掉效果更好,一般SR和debluring都会去掉
  • 最终的loss是这样的LG=Lpercep+λLGRa+ηL1L_G = L_{percep} + λL^{Ra}_G + ηL_1其中L1=ExiG(xi)y1L_1=E_{x_i}||G(x_i) − y||_1,是SR和GT差的L1norm
  • 提出一种network interpolate的方法,即先用PSNR-orentied的loss训练出来一个generator,在此基础上再用上本论文提出的ESRGAN的模型去finetune它得到另一个状态下的参数,并对这两个generator参数进行插值可以得到一系列的网络参数,分别对应从平滑到sharp的SR模型参数。其实还有另外两种方法来获得这个效果,一个是对两个模型生成的图片直接进行插值,但是结果有噪声和模糊,另一个是对loss函数的超参数值进行插值,但是这样太costly