赞
踩
尽管当前有很多在超分领域的工作,但是应用的效果并不好,比如ESRGAN。本文提出Real-ESRGAN,使用一个高阶的模拟退化以及带有SN正则的U-NET判别器,能够更好的模拟真实世界复杂的图像退化过程。通过大量的实验也表明,它的视觉效果比以前的方法在各种数据集上表现的都好。
单图像超分(SR):其目的是从低分辨率(LR)重建一个高分辨率(HR)图像。SRCNN开创了深度学习在SR领域的发展,但是之后的所有工作都是通过一个双边降采样核获得LR数据后进行学习,现实生活图像的退化无法用简单的双边采样模拟重建的。(cv2.resize((),bicubic))
REAL-ESRGAN目标是通过生成更接近现实生活中的LR图像去重建HR图像,从而获得更好的泛化性能。
真正的复杂退化通常来自于不同退化过程的复杂组合,如照相机成像系统、图像编辑和互联网传输。例如,当我们用手机拍照时,照片可能会有几个退化情况,如相机模糊、传感器噪声、锐化伪影和JPEG压缩。
比如:用户A用手机拍照,将照片上传到一个社交媒体应用程序,图片会进行压缩和噪音的添加;之后用户B进行图片下载,又会进行压缩和添加噪音;用户B将图片转发给用户C,在互联网传输的过程之中图像进一步退化。真实情况只会更加复杂。
这促使经典的“一阶”退化模型扩展到现实世界退化的“高阶”退化模型。
Real-ESRGAN使用二阶退化模型,二阶即简单又有效,并且在退化过程中加入了sinc滤波器来模拟常见的振铃伪影。`
artifacts(振铃伪影):图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。振铃伪影通常出现在图像的锐利边缘附近以伪边缘形式出现。如图:
很明显看到,在梯度变化剧烈,比如第一幅图的黑色出现的地方,周围出现白色的一圈,这就是振铃伪影。
图像的退化过程变得复杂,就要求判别器能够拥有更强大的能力。
使用U-Net代替VGG,因为需要梯度反馈提供更加强大的局部细节信息来判断fake和real图像,而U-Net输入输出是一样的大小,结合U-Net的网络结构,能够提供更多的信息。
但是U-Net的结构和复杂的退化也增加了训练的不稳定性。所以Real-ESRGAN使用SN正则和EMA帮助稳定训练。
spectral normalization (SN) regularization:(简单做介绍)我们知道损失函数缺什么就加什么样的正则项。SN正则的目的就是让模型具备更好的泛化性能,让模型朝着目标点附近平坦的地方前进。
EMA(指数移动平均):【炼丹技巧】指数移动平均(EMA)的原理及PyTorch实现 - 知乎 (zhihu.com)可以看这篇文章的解释
这部分主要讲了SR领域,显式建模、隐式建模的方法以及退化模型。
退化模型
这一部分讲了退化模型的各个部件,以及实现。
主要讲了高阶退化模型如何实现,以及sinc的实现(看退化模型图就够了)
Real-ESRGAN的generator
generator和ESRGAN基本一致,只在输入提供多个尺度。首先使用pixel-unshuffle来减小空间大小和扩大信道大小,之后进行输入,对应的最开始的网络input_channel也需要进行相应的改变(这部分train的时候没搞懂是怎么train的,论文实验部分也有说每个batch训练必须固定一个scale,所以使用一个training pair pool帮助多样性训练,还是不太懂,回头看源码)。
使用带有SN的U-Net的原因这里不再赘述。
首先,训练了一个具有L1损失的面向PSNR的模型(ESRNet)。所得到的模型用Real-ESRNet进行命名。然后,使用训练过的面向PSNR的模型作为generator的初始化,并结合L1损失、感知损失和GAN损失来训练Real-ESRGAN。(和ESRGAN一致,感知损失使用VGG五层特征图的加权做损失)
这部分讲了输入部分-退化模型的参数设置,比如高斯核什么的,还有上面说的感知损失使用了VGG五层的加权,以及training pair pool的设置。还有通过实验发现可以使用锐化过的图像作为gt,能够实现更好的锐度平衡和伪影抑制—Real-ESRGAN+。
实验部分还有很多细节,这里就不说了,可以结合代码看看,毕竟Real-ESRGAN的效果要比ESRGAN以及之前的所有工作都要好太多。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。