当前位置:   article > 正文

论文笔记——Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data_real-esrgan训练时间

real-esrgan训练时间

基本信息

标题:Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data
简称:Real-ESRGAN
时间:17 Aug 2021, International Conference on Computer Vision Workshops (ICCVW) 2021
作者:Xintao Wang, Liangbin Xie, Chao Dong, Ying Shan;Applied Research Center (ARC), Tencent PCG, Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Shanghai AI Laboratory
论文:https://arxiv.org/abs/2107.10833
代码:https://github.com/xinntao/Real-ESRGAN

主题内容

方法:

Real-ESRGAN是基于ESRGAN做出一系列的改进得到的,主要为了解决现实世界中更为复杂的低质图像超分问题。主要改进有以下几点:

(1)相比传统的一阶降质方法,论文提出了一个新颖的二阶降质方法,能够模拟现实世界中更为复杂的降质操作。另外使用sinc滤波器来模拟比较普遍的ringing和overshoot artifacts。

(2)网络结构方面,生成网络沿用了ESRGAN的主体结构,只是在采样因子为1和2时(默认为4),在最开始加了一个pixel_unshuffle操作,来降低输入数据的尺寸。在判别器方面,论文采用了更为新颖的结构——带谱归一化(spectral normalization,SN)的U-Net,能够增大网络容量同时稳定训练过程。

(3)Real-ESRGAN的训练数据对均为采用降质方法合成的数据,能够在很大程度上模拟现实世界中更为复杂的低质图像,同时达到很好的视觉效果。

降质方法:

(1)经典的一阶降质方法

在这里插入图片描述
D表示整个降质过程,将gound-truth y 首先与blur kernel k卷积,然后使用采样因子为r的下采样操作,得到低分辨率图x后再加一个noise n,最后采用JPEG压缩处理。

Blur:

加模糊。模糊操作通常被表示成使用一个线性blur滤波器卷积,常用的有各向同性(isotropic)和各向异性(anisotropic)高斯滤波器。对于一个核大小为2t+1的高斯blur核k,其元素值是从高斯分布采样得到:
在这里插入图片描述
其中 ∑ \sum 是协方差矩阵,C是空间坐标,N是正则化常数。协方差矩阵可被表示为:
在这里插入图片描述

其中 σ 1 \sigma_1 σ1 σ 2 \sigma_2 σ2是沿着两个主轴的标准差, θ \theta θ是旋转角。
σ 1 = σ 2 \sigma_1= \sigma_2 σ1=σ2时k是各向同性高斯blur核,否则k是各向异性核。

进一步讨论,上述高斯blur核无法很好地模拟相机blur,为了引入更多不同的核形状,论文使用了泛化高斯blur核和一个高原形状分布(plateau-shaped distribution)。它们的概率密度函数( probability density function, pdf)分别是
在这里插入图片描述

在这里插入图片描述
,其中 β \beta β是形状参数。实验发现这些blur核对少数真实样本能够产生更sharper的结果。

在这里插入图片描述
在这里插入图片描述

Noise:

加噪。两个广泛使用的噪声类型是加性高斯噪声(additive Gaussian noise)和泊松噪声(Poisson noise)。加性高斯噪声的pdf等于高斯分布,噪声强度由高斯分布的标准差控制。当RGB图像的每个通道单独作用噪声时,合成的噪声是彩色噪声(color noise),当三个通道应用相同的噪声采样时,论文同时采用了彩色噪声和灰度噪声(grey noise)。

泊松噪声服从泊松分布,通常被用于模拟由于statistical quantum fluctuations造成的传感器噪声,泊松噪声强度与图像强度成比例,不同像素的噪声是相互独立的。

在这里插入图片描述

Resize(Downsampling):

降采样。对于SR领域合成低分辨率图像来说降采样是一个非常基本的操作。通常情况下,降采样和上采样会被同时使用,也就是resize操作。常用的几种采样算法有 nearest-neighbor interpolation,area resize,bilinear interpolation,bicubic interpolation。不同的采样操作会带来不同的效果,有些会产生模糊的结果,有些会产生带 overshoot artifacts的 over-sharp结果。 nearest-neighbor interpolation会导致结果 misalignment,所有论文只随机采用了另外三种。

在这里插入图片描述

JPEG compression:

JPEG压缩。也是一个常用的降质操作,会引入一些unpleasing block artifacts。压缩质量由一个因素 q ∈ [ 0 , 100 ] q\in[0, 100] q[0,100]控制,更低的q表示更高的压缩比和更差的质量。论文使用了PyTorch实现库——DiffJPEG。
在这里插入图片描述

(2)高阶降质模型

采用传统的一阶降质模型虽然可以解决一些常见的问题,但是对于真实世界更复杂的降质操作无法很好的模拟,特别是一些位置的noises和复杂的artifacts。论文在一阶降质模型的基础上提出高阶(二阶)降质模型来模拟更实际的降质操作。
在这里插入图片描述
在这里插入图片描述

整体的方法大致是原先的一阶模型重复两次,两次降质在细节上有一些不一样,例如blur的标准差等,详情可以见论文的实验章节的Degradation details部分和实现代码。另外第二阶段的JPEG压缩部分加了一次2D sinc滤波(论文提到sinc和JPEG前后顺序随机)。

基于效果和速度考虑,论文采用了二阶降质模型,能够更多的模拟真实世界的降质操作。同时论文也提出对于某些case该二阶降质模型也无法完全cover。

(3) ringing 和 overshoot artifacts

Ringing artifacts(振铃瑕疵)通常出现在图像中边缘过度处,视觉表现上通常为真实边缘的鬼影。 Overshoot artifacts(过冲瑕疵)通常伴随振铃瑕疵出现,表现为边缘过度上的突增。
在这里插入图片描述
造成这些瑕疵的原因主要是这是一个没有高频的带限信号,通常由锐化算法和JPEG压缩等引入。

论文提出采用sinc滤波器截断高频部分来模拟 ringing and overshoot artifacts。
在这里插入图片描述
在这里插入图片描述

网络结构:

生成器部分:

在这里插入图片描述
回顾一下ESRGAN论文中的网络结构图以及重要的RRDB模块:
在这里插入图片描述
在这里插入图片描述
Real-ESRGAN沿用了ESRGAN的主体生成网络结构,只是在采样因子为1和2时(默认为4),在最开始加了一个pixel_unshuffle操作,来降低输入数据的尺寸。

判别器部分:

在这里插入图片描述

论文提到首先尝试了ESRGAN中使用的VGG结构的判别器,但是效果不是很好。主要原始还是因为采用了更为复杂的降质操作,原始的简单结构无法提供很好的局部细节信息,导致生成器生成结果在细节上做得不够好。于是论文尝试采用U-Net结构的判别器,能够为生成器提供像素级别的梯度反馈。另一方面,采用了SN来稳定训练过程,同时观察到SN对减轻训练过程中引入的过度锐化和部分噪声有帮助。

损失函数设计:

(1)将标准判别器替换为带SN结构的U-Net。

(2)感知损失 Perceptual Loss
仍使用和ESRGAN一致的感知损失。
在这里插入图片描述

(3)总损失函数
训练被分为两个阶段,第一阶段先用L1 loss训练一个PSNR导向的模型,得到的模型命名为Real-ESRNet。

第二阶段使用得到的 Real-ESRNet模型作为初始化的生成器,使用L1 loss,perceptual loss和GAN loss的组合来训练Real-ESRGAN。
L G = L 1 + λ L p e r c e p + γ L G L_G = L_1 + λL_{percep} + γL_G LG=L1+λLpercep+γLG,其中 λ = 1 λ=1 λ=1 γ = 0.1 γ=0.1 γ=0.1
其中感知损失 L p e r c e p L_{percep} Lpercep采用预训练的VGG19模型的conv1到conv5激活前特征图(和ESRNet一致)计算得到,每层的权重为 {0.1, 0.1, 1, 1, 1}。

训练细节:

(1) 与ESRGAN一样,训练数据集采用DIV2K数据集、Flickr2K数据集、 OutdoorSceneTraining (OST)数据集。训练HR块尺寸设为256。在4张V100上训练,batch size设为48。采用Adam优化器。

(2)训练分为两个阶段,第一阶段先用L1 loss训练一个PSNR导向的模型(为了快速收敛,直接从ESRGAN微调得到),学习率初始化为2e-4,迭代1000k次得到的模型命名为Real-ESRNet。第二阶段使用得到的 Real-ESRNet模型作为初始化的生成器,使用L1 loss,perceptual loss和GAN loss的组合来训练Real-ESRGAN,学习率初始化为1e-4,迭代 400K。采用 exponential moving average(EMA)使得训练更稳定结果更好。

(3)工程实现基于 BasicSR 库。

降质细节:

在这里插入图片描述

评估标准:

(1)定量评价:NIQE
在这里插入图片描述
(2)定性评价
在这里插入图片描述
在这里插入图片描述

亮点:

(1)提出高阶降质模型

(2)引入sinc滤波器模拟常见的ringing和overshoot artifacts

(3)采用了带谱归一化的U-Net作为判别器,能够增大判别器容量同时稳定训练过程

(4) Real-ESRGAN通过使用上述方式在合成数据对上进行训练,能够对真实世界大多数图片进行细节增强的同时移除 annoying artifacts。

应用场景:

代码链接中的内容可以看到,目前Real-ESRGAN可以有效应用在动画图片和视频的SR,对于更通用的自然场景可能结果会有一些奇怪的问题,一般需要在对应数据集上进一步微调。
在这里插入图片描述

不足:

(1)在某些真实图片上效果不好,特别是建筑物和室内场景,可能会产生twisted lines。

(2)在GAN训练过程中在某些样本上会引入一些 unpleasant artifacts。

(3)无法解决降质模型能力外的真实样本,更有甚者可能会放大这些瑕疵。
在这里插入图片描述
未来需要解决上述问题,让模型能够更实用。

其他补充:

(1)工程上的优化: Training pair pool。为了增加同一个batch中数据的降质多样性,论文提出一个缓冲数据池,将不同降质操作的数据放入池中,每一个mini-batch随机从池中捞取。且所有的降质操作都基于PyTorch实现,达到了数据预处理生成的on the fly。

(2)Trick:在GroundTruth上做USM锐化,能够得到比较好的视觉结果。

版权说明

本文为原创文章,独家发布在blog.csdn.net/TracelessLe。未经个人允许不得转载。如需帮助请email至tracelessle@163.com
在这里插入图片描述

参考资料

[1] 论文《Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data》
[2] 代码 Real-ESRGAN

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/166327
推荐阅读
相关标签
  

闽ICP备14008679号