Real-ESRGAN:Training Real-World Blind Super-Resolution with Pure Synthetic Data

https://github.com/NightmareAI/Real-ESRGAN/tree/masterhttps://github.com/NightmareAI/Real-ESRGAN/tree/master从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程 - 知乎超分辨率技术(Super-Resolution, SR)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备、卫星图像和医学影像等领域都有重要的应用价值。 本文针对端到端的基于深度学习的单张图像超分辨率方法(Si…https://zhuanlan.zhihu.com/p/31664818Real-ESRGAN超分辨网络 - 知乎对超分有兴趣的同学们可直接关注微信公众号,这个号的定位就是针对图像超分辨的,会不断更新最新的超分算法解读。 正文开始论文: Real-ESRGAN: TrainingReal-World Blind Super-Resolution with Pure Synthetic D…https://zhuanlan.zhihu.com/p/393350811一.esrgan

srcnn->srgan->esrgan->realesrgan

esrgan主要是从3个方面对srgan进行改进,网络结构,对抗损失,感知损失。

a.网络结构:

1.移除了BN层,BN很多时候是伪影产生的原因,因为训练时是批数的均值方差,但是推理是全数据集的均值方差;2.将原始的resblock替换为residual-in-residual dense block.

b.对抗损失:

第一张图是sigmoid,第二张图是esrgan的relativistic discriminator,segma是sigmoid,标准的Gan是为了让真是图像的判别结果的概率更趋近于1,生成图像的判别结果概率更趋向于0,改进后的relativistic average discriminator,判别器对真实数据判别的原始值大于对生成数据判别的原始值,则第一个等式左侧,有C(REAL)-E(C(FAKE))>0,C是判别器结果,E是均值期望,且差值越大,表明两者距离越远,也就是该值经过sigmoid后的值越接近1,因此D的目的就是该值越接近1,real和fake直接的差距足够大,这就能将真实图片和生成图片很好的区分开。第二个等式,C(FAKE)-E(C(REAL))<0,差值越小,负值越多,表明两者距离越远,经过sigmoid后值越接近0。

生成器的目标函数如下:

判别器是为了更好的区分真实和生成,生成器是为了更难区分真实和生成。

c.Perceptual loss

提出了一种再vgg激活层钱获取感知损失(通过计算sr和hr的特征图之间的距离),而非传统srgan在激活层后计算感知损失,再激活层后计算感知损失有2个缺点,

1.激活层后的特征是已经稀疏化的,越深的网络越明显,稀疏的特征会导致更弱的监督,从而导致网络性能变差。

2. 使用激活层后的特征图计算感知损失会使得重建图像的亮度和gt不一致。

二、real-esrgan

real-esrgan和esrgan是同一个作者,esrgan提出的方法和思路被后续的很多论文借鉴。real-esrgan提出了四点对esrgan的改进,1.新的数据集构建方法,增强降阶图像的复杂度,2.构造数据集时引入sinc filter,解决了图像中的伪影,3.替换esrgan中的vgg-discriminator,使用unet-discriminator,4.引入spectral normalization以稳定复杂数据集和unet-discriminator带来的训练不稳定。

a.数据集构建

造成图像模糊的原因,包括,拍摄的手机,传感器噪声,相机模糊,图像编辑,图像在网络中的传输,JPEG压缩以及各种各样的噪声。

First-order:

first-order降级模型其实就是常规的降级模型,x表示降级后的图像,D表示降级函数,y代表原始图像,k代表模糊核,r代表缩小比例,n代表加入的噪声,JPEG代表进行压缩,每一种降级方法有多重方案可以选择

high-order由于使用相对简单的降级方法,很难模仿真实世界中的图像低分辨率情况,high-order是为了使用更复杂的降级方法 

上式就是对first-order进行多次重复操作,也就是每一个D都是执行一次完整的first-order降级,作者通过实验得出,当执行2次first-order时生成的数据集效果最好,因此上图就是high-order的流程图。

为了解决超分图像中的ring和overshoot现象,在构建降级模型时引入了sinc filter,

上图表示实际中的振铃和折冲伪影现象,下图表示通过sinc filter设置不同的因子人工模仿的振铃和折冲现象,sinc filter在两个位置进行设置,一是每一阶的模糊核k的处理中,也就是在高斯模糊之后,设置sinc filter,二是在最后一阶JEPG压缩时,设置sinc filter。

b.网络结构

生成器还是esrgan,对于x1和x2的超分时先进性pixel-unshuffle(pixel-shuffle的反操作,pixel-shuffle可理解为通过图像的通道而对图像尺寸进行放大),以降低图像分辨率为前提,对图像通道数进行扩充,然后对处理后的图像输入网络进行超分重建,对于一幅图像,若只想x2放大变清晰,需先通过pixel-unshuffle进行2被缩小,通过网络进行4倍放大。

c.unet-dscriminator

 将vgg换成了unet,并且加入了谱归一化。

d.训练

1.先通过l1 loss,训练以PSRN为导向的网络,获得模型成为real-esrnet,

2.以real-esrnet的网络进行网络初始化,损失函数设置为l1 loss,perceptual loss和gan loss,训练得到real-esrgan.

三、install

basicsr==1.4.2

python setup.py develop

猜你喜欢

转载自blog.csdn.net/u012193416/article/details/130600652
今日推荐