ESRGAN论文笔记

系列文章目录

文章目录

  • 系列文章目录
  • 一、主要贡献
  • 二、网络结构
  • 三、对抗损失
  • 四、感知损失
  • 五、实验


论文原文:https://arxiv.org/abs/1809.00219

一、主要贡献

这篇文章,作者主要从三个方面对SRGAN进行改进:网络结构、对抗损失、感知损失。
网络结构:引入了 Residual-in-Residual Dense Block (RRDB残差密集块)来代替SRGAN中的resblock;移除了网络单元的BN层(批归一化层);增加了residual scaling,来消除部分因移除BN层对深度网络训练稳定性的影响。
对抗损失:SRGAN的对抗损失的目的是为了让真实图像的判决概率更接近1,让生成图像的判决概率更接近0。而改进的ESRGAN的目标是,让生成图像和真实图像之间的距离保持尽可能大,这是引入了真实图像和生成图像间的相对距离(相对平均值Relativistic average GAN简称RaGAN),而不是SRGAN中的衡量0或1间的绝对距离。
感知损失:(基于特征空间的计算,而非像素空间)使用VGG网络激活层前的特征图,而不像SRGAN中使用激活层后的特征图。因为激活层后的特征图有更稀疏的特征,而激活前的特征图有更详细的细节,因此可以带来更强的监督。并且,通过使用激活后的特征图作为感知损失的计算,可以带来更加锐化的边缘和更好视觉体验。

二、网络结构

首先,作者参考 SRResNet 结构作为生成网络的网络结构,SRResNet 的基本结构如下:
ESRGAN论文笔记_第1张图片
生成网络的作用是输入一张低分辨率图片,生成高分辨率图片
网络共由几部分组成:
1.浅层特征抽取网络,提取浅层特征。低分辨率图像进入后会经过一个卷积+RELU函数,将输入通道数调整为64
2.RRDB(Residual in Residual Dense Block)网络结构,包含然N个RDB(Residual Dense Block)密集残差块和一个残差边,每个RDB都包含5个卷积+RELU
3.上采样网络,然后进入上采样部分,在经过两次上采样后,原图的高宽变为原来的4倍,并且实现分辨率的提升。

生成器:
ESRGAN论文笔记_第2张图片
去除批归一化层
相比较于SRGAN网络结构去掉BN层,BN层主要是在训练期间使用批次的均值和方差对特征进行归一化,在测试期间使用整个训练数据集的估计均值和方差。当训练和测试数据集的统计数据差异很大时,BN层往往引入不适的伪影,限制了泛化能力。
移除BN层的好处:1. 增加了网络的表现;2. 降低了以PSNR为导向的图像重建任务的计算复杂度,在一定程度上也节约了存储资源。
RRDB
RRDB(Residual in Residual Dense Block)采用了两层残差结构,是由一个大的残差结构构成,主干部分由3个 RDB(Residual Dense Block)密集残差块构成,将主干网络的输出与残差边叠加。
(RDB)Residual Dense Block结构相当于将Residual block (ResBlock)与Denseblock密集块相结合,通过密集连通卷积层提取丰富的局部特征,从先前RDB的状态直接连接到当前RDB的所有层,然后利用RDB的局部特征融合自适应地从先前和当前的局部特征中学习更有效的特征,使训练更加稳定。

三、对抗损失

判别器:
ESRGAN论文笔记_第3张图片
图中,C表示判别器的原始输出结果,fake表示生成图片SR,E[·]表示求期望,σ表示sigmoid函数。
标准的GAN网络的目的是为了让真实图像的判别结果的概率更趋近于1(真),让生成图像的判别结果的概率更趋近于0(假)。
改进后的Relativistic average Discriminator(DRa)可解释如下:
首先需要明确的是判别器对真实图像判决的原始值大于对生成图像判决的原始值。
考虑第一个等式,有C(REAL)-E[C(FAKE)]>0,且差值越大,表明二者距离越远,也就是该差值经过sigmoid后的值越接近于1。因此D的目的是使得该sigmoid值尽可能接近于1,这就将真实图片和生成图片很好的区分开来;
考虑第二个等式,有C(FAKE)-E[C(REAL)]<0,且差值越小(负的越多),表明二者距离越近,也就是该差值经过sigmoid后的值越接近于0。因此D的目的是使得该sigmoid值尽可能接近于0,这就将真实图片和生成图片很好的区分开来。

具体说来,ESRGAN目的是:让真实图像的判决分布减去生成图像的平均分布,再对上述结果做sigmoid处理,使得结果更接近于1;让生成图像的判决分布减去真实图像的平均分布,再对上述结果做sigmoid处理,使得结果更接近于0。
损失函数:
我们给出更新后的判别器DRa的数学表达式,通过上述分析,该优化函数便很好理解:
在这里插入图片描述
生成器的对应于判别器的对称目标函数如下:
在这里插入图片描述
xf = G(xi),xi表示LR图像,xf表示生成图像SR。
站在直观的角度上解释:
因为判别器是为了更好的区分真实图片和生成图片,而生成器是为了更难区分真实和生成。因为生成器的优化函数中同时涉及生成数据xf和真实数据xr,所以更有利于梯度的生成,可以更有利于生成图像中的边缘和细节信息。

四、感知损失

文章也提出了一个更有效的感知域损失,使用激活前的特征(VGG16 网络)。
感知域的损失当前是定义在一个预训练的深度网络的激活层,这一层中两个激活了的特征的距离会被最小化。
与此相反,文章使用的特征是激活前的特征,这样会克服两个缺点。第一,激活后的特征是非常稀疏的,特别是在很深的网络中。这种稀疏的激活提供的监督效果是很弱的,会造成性能低下;第二,使用激活后的特征会导致重建图像与 GT 的亮度不一致。
使用激活前与激活后的特征的比较:a. 亮度 b. 细节
ESRGAN论文笔记_第4张图片

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

五、实验

ESRGAN论文笔记_第5张图片
经过实验以后,作者得出结论:

  1. 去掉 BN:并没有降低网络的性能,而且节省了计算资源和内存占用。而且发现当网络变深变复杂时,带 BN 层的模型更倾向于产生影响视觉效果的伪影;
  2. 使用激活前的特征:得到的图像的亮度更准确,而且可以产生更尖锐的边缘和更丰富的细节;
  3. RaGAN:产生更尖锐的边缘和更丰富的细节;
  4. RDDB:更加提升恢复得到的纹理(因为深度模型具有强大的表示能力来捕获语义信息),而且可以去除噪声。

ESRGAN论文笔记_第6张图片
之前的网络大都以优化PSNR为导向,但这样会使生成的图像更光滑,而损失掉高频细节信息。自从SRGAN以来,网络开始使用残差块和以感知损失为导向,这样,虽然PSNR会降低,但人对图像的感受会变好。从而也可知PSNR指标并不可靠。而ESRGAN则对SRGAN的三个部分做进一步的改进,以进一步提升网络表现。
文章中提到了新的图像质量评估标准(无参照评估):
Ma’s score 和NIQE,计算公式为:perceptual index(即PI) = 1/2 ((10 − Ma) + NIQE),PI值越小,感知质量越好。
对于不同的评价标准而言,PSNR and SSIM越高越好,而RMSE and PI越低越好。可以看出,虽然EDSR and RCAN的RMSE很低,但PI却很高,说明感知质量并不好,ESRGAN则相反。

你可能感兴趣的:(超分辨,计算机视觉,深度学习,人工智能)