赞
踩
本文为ESRGAN的扩展,提出一个能够完全在合成数据上训练的面向真实场景的超分模型——Real-ESRGAN。
本文的模型生成器采用ESRGAN为骨干结构,而判别器却采用U-Net的结构,更好地提取图像中各部分的纹理特征。
本文使用复杂的退化模型来模拟真实场景的退化,所谓复杂,其实是复杂退化上又套了层复杂。
Github项目网址:https://github.com/xinntao/Real-ESRGAN/
#1.介绍
传统退化模型包括模糊、下采样、加噪声和JPEG压缩。真实场景下,相机的模糊、传感器噪声、JPEG压缩和网络传说等等可能会导致获得到图像有着复杂的退化方式。这也就是为啥本文要用更加复杂的“high-order"退化模型来模拟真实场景的退化。
模拟真实场景的退化带来的一个问题就是退化的空间变得非常大,这对于网络学习是一个非常大的挑战。为了应对这个挑战,作者采用类似U-Net结构的判别器和SN(谱归一化层)。
根据原文总的来说,本文有三个贡献:
传统模型将退化方式建模为下面这个式子:
这个其实很好理解,先对y做的卷积(卷积核为k)就是模拟模糊的过程,下箭头r代表下采样的过程,加了n代表添加噪声的过程,最后JPEG是压缩的过程,这个过程其实也就是为了模拟振铃和过冲伪影。
以上就是传统的退化模型,他们可以被称为first-order。而本文提到的high-order,其实就是first-order的多次重复使用。
这部分原文篇幅不小,但其实感觉没啥太多内容,上一个图和一个公式就很清晰了。
这个公式就是实际的退化模型,他实际就是把3.1的内容重复了n次,就称作high-order。这样多次的重复退化(ps:套娃行为)会让合成的数据更加符合真实的退化数据。本文在实际操作时,发现second-order也就是重复两次的效果是最好的。
对于这两个伪影我了解的不多,但是它们基本上就是由于JPEG压缩导致的,你经常看到的那种模糊就是这两个伪影,如下图:
为了模仿这两个伪影的产生,作者用了这样一个sinc过滤核,如下:
其中的J1就是first-order的函数,用这样一个核就会产生下面这样的结果:
这就很好地模拟了振铃和过冲伪影。
网络结构中生成器和ESRGAN没啥区别,如下:
判别器采用了更加复杂并且性能更好的结构,如下:
U-Net让判别器不仅仅关注图像的整体,还关注每个部分的特征,SN可以缓和由于复杂数据集和复杂网络带来的训练不稳定的问题,SN的具体做法是在每一次更新权值W之后都除以W最大的奇异值,具体的内容可以参考知乎文章:Spectral Normalization 谱归一化
训练分两个阶段,首先训练生成器,使用L1损失,然后训练判别器,使用GAN损失和感知损失。
在训练的时候,文中还提到一个小的trick,就是用到了一种图像预处理的方法,使用USM锐化训练集的groundtruth图像,会有更好的效果。训练的结果如下:
个人感觉,本文只是在ESRGAN的基础上增加许多许多个训练和数据处理的trick(当然ESRGAN也是本文作者提出的),但是值得学习的是,每一个文中出现的trick,作者都有非常强大的理论支持,每一部分写的都有理有据。Respect!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。