深度学习课程论文精读——ESRGAN

目录

1.研究概述

2.论文创新

2.1 改进生成器的网络框架

2.2 改进判别器

2.3 改进感知损失

2.4 网络插值

3.实验

3.1 评价指标

3.2 训练细节

3.3 对比实验

3.4 消融实验

3.5 网络插值

4.总结

5.阅读参考


文章标题:《ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks》

发表年份及会议:ECCV2018

文章地址:ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks (arxiv.org)icon-default.png?t=N7T8https://arxiv.org/abs/1809.00219

代码地址:https://github.com/xinntao/ESRGANicon-default.png?t=N7T8https://github.com/xinntao/ESRGAN

1.研究概述

超分辨率生成对抗网络(SRGAN)能够生成逼真的纹理,但是不可避免地会出现伪影。作者为了提高生成图像的视觉质量,针对SRGAN中的组件和设计进行了改进,并提出ESRGAN。相比SRGAN而言作者提出的模型有更好的生成质量更自然的纹理,并在PIRM2018-SR Challenge中获得第一名

2.论文创新

作者在SRGAN上提出如下改进:

  • 改进生成器网络框架
  • 改进判别器 Discriminator
  • 改进感知损失 Perceptual Loss
  • 为了减少噪声,提出使用网络插值

2.1 改进生成器的网络框架

下图为SRGAN的框架图:

作者主要针对其中的basic block进行改进,移除了所有的BN层,并将RB模块替换成了RRDB模块

作者认为移除BN层能够减少计算复杂度,并提高模型性能。由于在验证时BN层的计算运用整个数据集的平均值和方差,而在训练时用了一个batch的平均值和方差,所以当训练集与测试集不同时BN的效果就会较差,模型的泛化能力受到了限制。RRDB模块采用了residual-in-residual结构,结合了多级残差网络和dense连接,提高了残差学习的层次,同时笔者认为RRDB模块能够使网络保持底层的特征,因此生成出的图像细节更丰富。

为了能够训练更深的网络,作者对网络做了两点小改进:

1)在dense block进入主路径前,作者加入了β残差缩放参数,保持训练的稳定性

2)让初始化参数时的方差较小,使得残差结构更容易训练

2.2 改进判别器

传统的鉴别器估计输入图像是否真实和自然的概率(绝对),而作者提出相对鉴别器Relativistic GAN,尝试预测真实图像x_{r}相对于假图像x_{f}更真实的概率(相对)

其中,σ为激活函数,C(x)为未转换的鉴别器的输出,E[·]表示对batch中所有假数据取平均值的操作。因此可以得出判别器的损失为:

对抗损失为:

判别器的改进能够学习到更清晰的边界和更细节的纹理

2.3 改进感知损失

在之前的研究中SRGAN,感知损失是定义在激活层后的,这使得激活的特征间距离达到了最小化,这种方式得到的特征十分稀疏,并且激活的神经元的平均百分比在经过激活层后会衰减,导致了较差的监督能力,并且运用激活后的特征会使得最终的结果亮度不一致

最终,生成器的损失为:

其中,L1为content loss,λ和η为超参数用于平衡不同的损失

随着网络的加深,大部分特征在激活后变得不活跃,而在激活前的特征包含有更多信息

2.4 网络插值

为了减少基于GAN方法产生的噪声同时维持较好的感知质量,作者提出使用网络插值的方法。首先训练一个PSNR为导向的网络GPSNR,然后微调得到基于GAN的网络GGAN,通过这两个网络相应元素间的插值得到插值模型GINTERP:

θ为各个参数。插值模型一方面对于任意可行α能够产生有用的结果同时不带来伪影,另一方面不用重新训练模型就能平衡感知质量与保真度

作者还探索了其他的插值方案,比如直接插值两个网络的输出图像,这种方式不能很好平衡噪声与模糊度,又比如微调λ和η,这种方式成本太昂贵

3.实验

3.1 评价指标

①传统的方法常用PSNR作为指标,但这种方法因为与人类的主观评估往往会输出过平滑的结果,缺少高频细节

②这个比赛还采用了另一个指标,perceptual index

perceptual index越低感知质量越来,作者提出的模型主要是在R3区域中

3.2 训练细节

LR由HR通过matlab的bicubic退化4倍所得。HR分辨率是128×128,LR的分辨率则是32×32,mini-batch=16。

训练过程分为两步骤:

1)先通过重建损失训练一个base模型,论文中使用的重建损失是L1。

2) 训练好base模型加入gan loss 和perceptual loss进行微调。

这样训练的好处是base模型:

1)可以给gan模型一个更好的初始化,毕竟gan的训练比较动荡

2)判别器一开始接受的SR的输入不会太差,这样可以让判别器更加关注到纹理的判别上,而不是还需要判别结构等信息。

在ESRGAN中使用的RRDB的个数是23。

3.3 对比实验

LR图像从HR图像下采样得到,作者还运用了图像翻转旋转的数据增强方式。其中,Bicubic为下采样结果,SRCNN、EDSR、RCAN为RSNR导向的方法,EnhanceNet、SRGAN、ESRGAN为基于GAN的方法

分析可知,ESRGAN有更清晰和更细节的特征。PSNR导向的方法容易产生模糊的结果,而之前基于GAN的方法会有不自然和噪声的出现,并且偶尔会有伪影

3.4 消融实验

通过对结果的分析可知:

①在移除BN层后并没有减弱模型性能,同时还维持了计算资源和内存占用。作者还进一步进行了实验表明当网络加深后,带有BN层可能会产生伪影

②使用激活前的特征会使结果的亮度更精准。直方图的结果表明运用激活后的特征会使颜色分布向左偏离,导致图像更昏暗,而使用激活前的特征更接近真实值。同时图(b)表明使用激活后的特征能得到更清晰的边缘和更丰富的纹理

③相对的鉴别器能够学习到更清晰的边界和更多细节纹理

④更深层的网络有更强的表达能力从而捕捉更多的语义信息,能够提高图像的纹理并减少噪声。同时由于RRDB模块没有携带BN层使得深层网络也能很好训练

⑤作者还发现当数据集更大时生成器能产生更自然的结果

3.5 网络插值

作者比较了网络插值和图像插值策略,单纯基于GAN的方法能产生更清晰的边缘和更丰富的纹理,但会有一些伪影;而单纯PSNR导向的方法会输出较模糊的图像,通过采用插值,能在这两者之间达到平衡

4.总结

作者提出了一种有更好感知质量的ESRGAN模型,其中包含多个不携带BN层的RDDB模块,还使用了残差缩放较小初始化等技术来促进深度模型的训练。作者引入了相对GAN作为鉴别器,学习判断一个图像是否比另一个图像更真实,引导生成器恢复更细节的纹理,并通过使用在激活之前的特征来增强感知损失,提供更强的监督,从而得到更准确的亮度和逼真的纹理

5.阅读参考

文献阅读: ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks_perceptual index-CSDN博客

超分辨率论文阅读—ESRGAN(2018ECCV) - 知乎 (zhihu.com)

相关推荐

  1. 精读深度学习 - 函数式之美》

    2024-05-13 15:06:02       53 阅读
  2. 深度学习-双精度

    2024-05-13 15:06:02       57 阅读
  3. 深度学习本科课程 实验3 网络优化

    2024-05-13 15:06:02       45 阅读
  4. 刘二大人《PyTorch深度学习实践》—课程代码

    2024-05-13 15:06:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 15:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 15:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 15:06:02       87 阅读
  4. Python语言-面向对象

    2024-05-13 15:06:02       96 阅读

热门阅读

  1. ShapeableImageView圆角效果不对

    2024-05-13 15:06:02       34 阅读
  2. APK签名

    APK签名

    2024-05-13 15:06:02      43 阅读
  3. 基于springboot的校园闲置物品交易系统

    2024-05-13 15:06:02       38 阅读
  4. uniapp引用第三方组件样式无法穿透

    2024-05-13 15:06:02       41 阅读
  5. 安徽省环境保护工程专业技术资格评审标准条件

    2024-05-13 15:06:02       39 阅读
  6. Redis缓存的基本概念和使用

    2024-05-13 15:06:02       28 阅读
  7. QT作业5

    QT作业5

    2024-05-13 15:06:02      29 阅读
  8. C语言笔记13

    2024-05-13 15:06:02       34 阅读