超分数据制作方案 - yubo105139/paper GitHub Wiki
超分数据制作方案
内容主要涉及2021年超分辨率的论文以及部分其他部分经典论文,如要涉及如下:
kernelGAN、realSR、ESRGAN、BSRGAN、Real_ESRGAN、ADDSR、ClassSR、MANet等论文
制作数据(主要介绍通过代码制作数据的方案)
I_{HR}
$获得$I_{LR}
$)
一、退化模型:(根据$核心思路
围绕以下公式:
$ I_{LR}=({I_{HR}}⊗B)↓S+N
$
围绕上述退化模型的3个因子:B为模糊核,S为下采样倍数,N为噪声。
模糊核可以采用 各向同性高斯模糊核、各向异性的高斯模糊核、**自设定模糊核(kennelgan、MANet)**等;
降采样可以采用 双线性插值、最近邻插值、双三次插值等方法;其中cv2.resize()底层也是前三种方式
噪声可以采用 高斯模糊、JPEG压缩噪声、传感器噪声、采集噪声
二、各篇论文的方式方法
1、kernelGAN
Kernel的生成器是一种线性模型且不含任何激活层;
采样核获取 制作的kernel 想满足的标准 1)kernel总和需要为1; 2)kernel的几何中心必须在正中央位置(确保图像不会几何变形); 3)kernel需要有稀疏性,不至于过度平滑; 4)kernel希望越接近边界越接近零,不希望非零值靠近边界。
噪声获取
噪声收集代码中的滑动窗口预设值为128,灰度图方差最大值为32,灰度图方差最小值为0.001,如若截取图像灰度图方差在二值之间,则减均值收集为噪声。
数据制作
获取数据时,首先减除原始图像部分边缘(eg:长宽各减20,上下左右各10),再次裁剪图像获得图A(确保图像尺寸能够被比例因子scale_factor整除);以避免代码错误
最后从图A中获取64*64的图像块;通过裁剪图A经过双三次下采样下降scale_factor倍,再通过最近邻插值上采样scale_factor倍 得到26*26的图B(26由生成器计算模型output_size得来)。图B添加了自身噪声(crop_im += np.random.randn(*crop_im.shape) / 255.0)。
训练结果保存内容
hr_image表示去噪后的高分图;
lr_image_xn表示n倍低分叠加噪声图;
kernel_xn表示n倍降质核;
noise_patch表示噪声子图块;
noise表示噪声子图减去其均值后的噪声分布;
optimal_kernel_x2表示GAN判别器loss最接近0.5,并且GAN生成器loss最小时候的对应的Kernel, 而kernel_xn为迭代次数终止时候的Kernel
结论
KernelGAN适用于空间不变核估计,对小图像块无法进行有效核估计
2、RealSR
思路:统计 模糊核 与真实噪声 分布 用于 制作训练对
采样核和噪声是从原图(非HR图)中获得的,采样核可通过kernelgan获得,噪声是通过滑动计算方差和均值获得。HR图通过原图无噪声下采样获得。
下采样方式采用bicubic。
原噪声收集代码中滑动窗口大小预设是256,灰度图均值预设是50,灰度图方差预设是20,噪声判定条件为滑动窗口灰度图方差小于20且均值大于50,则定为噪声。
实验设置:
由于从浙江档案网站上获取的图片普遍较小,故将滑动窗口大小、灰度图均值、灰度图方差分别设置为64、60和30,判定条件不变;
HR图的制作只与采样核和下采样倍数有关,通过原图经过无噪声下采样获取,LR在HR的基础上进行二次下采样获取,噪声在代码运行过程中添加给LR图。
3、ESRGAN
论文详情见地址
4、BSRGAN
作者认为退化模型的影响因素和一些前提:
1)模糊、下采样、噪声会真实影响图像的退化;
2)HR和LR图均存在噪声和模糊;
3)传统退化模型的模糊核空间随尺度变化,利用小尺度的模糊核的分析计算设计大尺度因子;
在退化模型中加入随机置换策略,即随机执行模糊、噪声和下采样来获得退化的LR图像
作者训练数据方面采用DIV2K、Flickr2K、WED以及源自FFHD的2000人脸图像,图像块采用72*72
KAIR具体实验代码(只与数据处理有关)
数据预处理位置:./data/dataset_blindsr.py
需要设定参数:patch_size(图像尺寸),lq_patchsize(小图图像尺寸),默认256(64×4)和64
注意事项:
1、若传入HR图尺寸小于patch_size,则将随机生成纯色图作为原HR图,LR图在此基础上获得。
2、数据处理中会原图切割成正方形图,另根据照片是否有人脸将图像分别进行旋转、翻转等数据增强操作
图退化模型位置:./utils/utils_blindsr.py
需要设定参数:lq_patchsize(小图图像尺寸),默认64,可传参;scale2_prob,默认0.25;sf缩放倍数,默认4;
注意事项:
1、首先从整图上随机截取sf的整数倍作为原HR图,截取尺寸为lq_patchsize×sf;
2、当sf=4且随机值小于scale2_prob时,采用执行cv2.resize()随机采样核获取两倍下采样图,或采用双三次下采样获得两倍下采样图,并将sf置为2,此处操作等价于数据增强;
3、确保downsample3 在downsample2 之后运行,此处是上采样和下采样联合操作;
4、在随机置换过程中的下采样四分之三执行cv2.resize()随机采样核进行下采样,剩下四分之一高斯核卷积模糊,并使用最近邻下采样
论文详情见地址
两步训练法
5、Real_ESRGAN
优点:
Real-ESRGAN 在去除伪像和恢复纹理细节方面都优于以前的方法。
增加振铃和过冲伪像的处理;(像像素点左右摇摆留下的虚影)我觉得这种模糊对图片上有文字、或者有线条的图片处理比较明显。
论文中的数据处理流程为:
Blur->Resize->Noise->JPEG->Blur->Resize->Noise->JPEG+2D sinc sfilter Blur包括高斯模糊和sinc滤波 Resize采样方式包括双三次和双线性; Noise包括高斯噪声、泊松噪声、颜色噪声和灰噪声 JPEG是JPEG压缩 2D sinc sfilter表示 使用 sinc滤波器 模拟 振铃和过冲伪像
详细参数设置见论文介绍
两步训练法
6、classSR
未对数据有什么特别改动,主要着重于网络模型
论文详情见地址
7、ADDSR
未对数据有什么特别改动,主要着重于网络模型
主要是对ADDNet网络在超分辨率上的实现,适用于特定的CPU处理器,故不过多介绍。详情见地址
8、DASR
训练数据采用的DIV2K和Flickr2K,着重于网络模型
LR图在训练过程中获取,不保存LR图,数据退化过程比较简洁:下采样:bicubic、模糊:高斯;退化详情见代码/utils/util.py
特点是退化过程采用torch、np、math仓直接对数据图像操作,基本都有重写代码,感觉代码作者思维比较清晰
论文详情见地址
9、D2C-SR
未对数据有什么特别改动,主要着重于网络模型,论文详情见地址
10、MANet
未完待续