https://github.com/cszn/SRMD
https://github.com/2wins/SRMD-pytorch
创新点:
1. 设计了一个非盲单一 CNN 网络SRMD,针对多个退化模型, 模型的输入除了LR图,还有 degration map(blur kernel, noise level)
2. 提出了维度伸展策略,使LR图像、blur kernel、noise level 维度匹配
3. 网络SRMDNF, 在SRMD的基础上用没有noise的图像 fine-tunning
思路:
1. 训练数据的合成 (模糊核:isotropic Gaussian & anisotropic Gaussian;噪声:AWGN;双三次插值)
isotropic Gaussian:kernel withdh ranges are set to [0.2, 2], [0.2, 3], [0.2, 4] for scale factors 2, 3, 4; 步长为0.1;kernel size为15x15
anisotropic Gaussian: rotation angel [0, pi], scaling of eigenvalues is set from 0.5 to 6.8 and 10 for scale factors 2, 3, 4
noise level : [0, 75]
2. input image、blur kernel 、noise level 的融合策略:
模糊核首先通过PCA 降为 t 维
然后 concatenate 一个 噪声 level v 变为 t+1维
将这t+1维 拉伸成 WxHx(t+1),得到 degration maps 就可以与输入图像 concatennate 了
3. 网络的设计
1) 网络的输入为 WxHx(c+t+1) 维
2) convolutional layers: 每一层包括 Conv(3x3) + Relu + BN 除了最后一层
3)最后使用 sub-pixel convolutionl layer 上采样
试验中convolutional layers的数量为12,number of feature maps 是128
没有使用 residual learning 和 bicubicly LR image 的原因是:1) 在使用Relu + BN 和Adam训练时,没有residual learning strategy 也是easy to train 的;2) 由于噪声的加入,bicubicly LR image 可能会恶化噪声的复杂度,反过来会增加训练的困难度
4. 训练过程:
1)t=15 M=N=40, 对应的HR图像的size分别为 80x80, 120x120, 160x160
2) 数据集:400 BSD, 800 DIV2K,4744 WED dataset
5. 在通常用的 bicubic degration 上的实验
SRMDNF取得了最好的效果, 解释原因: 可能的原因是,在MAP框架中,Multiple degrations的SRMDNF具有相同的先验,有利于隐式先验学习,从而有利于PSNR的改进。这也可以解释为什么vdsr with multiple scales可以提高性能。(我认为原因也可能是SRMD使用了更多的数据集)
6. 在 general degrations 上的实验
(NCSR 和 IRCNN 是 two-model-based方法,DnCNN是一个去噪算法)SRMD在更宽的kernel width上的优势还挺明显的
NCSR和IRCNN的视觉效果比VDSR好,SRMD和SRMDNF的结果在边缘处更sharp
7. 在 spatially variant degradation 上的实验
8. 在 real images 上的实验
1) 只提供了视觉上的对比
2) 采用网格搜索策略选择kernel width 和 noise level : (kernel size 在0.1到2.4之间,步长为0.1均匀采样;noise level 在0到75之间,步长为5均匀采样) --(这个方法有点笨笨的)
含有压缩伪影的LR image
含有重复性结构的图片
(SelfEx是一个self-similarity based的方法)
综上 SRMD 去掉了伪影和噪声而且更sharp
一些想法:
1. 模糊和噪声过于单一(看来考虑运动模糊还是挑战)
2. 没有模糊和噪声的估计过程,均为手工输入 (这个问题好像在IKC中得到了解决)