赞
踩
标题: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的训练数据对均为采用降质方法合成的数据,能够在很大程度上模拟现实世界中更为复杂的低质图像,同时达到很好的视觉效果。
D表示整个降质过程,将gound-truth y 首先与blur kernel k卷积,然后使用采样因子为r的下采样操作,得到低分辨率图x后再加一个noise n,最后采用JPEG压缩处理。
加模糊。模糊操作通常被表示成使用一个线性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的结果。
加噪。两个广泛使用的噪声类型是加性高斯噪声(additive Gaussian noise)和泊松噪声(Poisson noise)。加性高斯噪声的pdf等于高斯分布,噪声强度由高斯分布的标准差控制。当RGB图像的每个通道单独作用噪声时,合成的噪声是彩色噪声(color noise),当三个通道应用相同的噪声采样时,论文同时采用了彩色噪声和灰度噪声(grey noise)。
泊松噪声服从泊松分布,通常被用于模拟由于statistical quantum fluctuations造成的传感器噪声,泊松噪声强度与图像强度成比例,不同像素的噪声是相互独立的。
降采样。对于SR领域合成低分辨率图像来说降采样是一个非常基本的操作。通常情况下,降采样和上采样会被同时使用,也就是resize操作。常用的几种采样算法有 nearest-neighbor interpolation,area resize,bilinear interpolation,bicubic interpolation。不同的采样操作会带来不同的效果,有些会产生模糊的结果,有些会产生带 overshoot artifacts的 over-sharp结果。 nearest-neighbor interpolation会导致结果 misalignment,所有论文只随机采用了另外三种。
JPEG压缩。也是一个常用的降质操作,会引入一些unpleasing block artifacts。压缩质量由一个因素
q
∈
[
0
,
100
]
q\in[0, 100]
q∈[0,100]控制,更低的q表示更高的压缩比和更差的质量。论文使用了PyTorch实现库——DiffJPEG。
采用传统的一阶降质模型虽然可以解决一些常见的问题,但是对于真实世界更复杂的降质操作无法很好的模拟,特别是一些位置的noises和复杂的artifacts。论文在一阶降质模型的基础上提出高阶(二阶)降质模型来模拟更实际的降质操作。
整体的方法大致是原先的一阶模型重复两次,两次降质在细节上有一些不一样,例如blur的标准差等,详情可以见论文的实验章节的Degradation details部分和实现代码。另外第二阶段的JPEG压缩部分加了一次2D sinc滤波(论文提到sinc和JPEG前后顺序随机)。
基于效果和速度考虑,论文采用了二阶降质模型,能够更多的模拟真实世界的降质操作。同时论文也提出对于某些case该二阶降质模型也无法完全cover。
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。