李小薪
重读ZSSR [CVPR-2018]
2021-12-21 00:30
阅读:2391

ZSSR 可以看做是将 SingleImageSR  [ICCV-2009] 中的方法用深度学习方法重演了一遍。

重点关注ZSSR的多尺度训练过程,以及如何利用多尺度数据,from coarse to fine,进行逐步训练的。论文中的描述非常不清晰,阅读了代码,才算清楚其具体的训练过程。

从一幅 LR 图像出发,按照如下的尺度序列(Scale Factors, SFs)进行SR: [[1.0, 1.5], [1.5, 1.0], [1.5, 1.5], [1.5, 2.0], [2.0, 1.5], [2.0, 2.0]]。(1) 按照第1个 SF = [1.0, 1.5],训练网络,对 LR 图像按列插值,将 LR 的宽度放大至1.5倍;(2) 按照第2个SF = [1.5, 1.0],继续训练网络,对 LR 图像按行插值,将 LR 的高度放大至1.5倍;(3) 按照第3个SF = [1.5, 1.5],继续训练网络,对 LR 图像的宽度和高度同时放大1.5倍;…… 直至最后一个SF = [2.0, 2.0],训练后的网络能够将 LR 图像的宽度和高度同时放大至 2 倍。

注意:

  1. 在上面训练的过程中,为了增广训练样本,会将每一个阶段所产生的 LR 图像的 SR结果也作为训练样本,继续在针对下一个 SF 训练网络模型的过程中发挥作用。

  2. 针对每一个 SF 进行训练时,并非直接训练从 “LR 的 SF 倍下采样” 到 “LR 图像” 的映射,而是从“LR 图像” 中随机截取一块图像作为HR目标端(HR-father),再由此生成 LR 图像(LR-son)。在 ZSSR 中,将用于训练网络的 LR-HR Pair 称为:Father-Son Pair。

  3. 在生成 LR-son 时(详见 father_to_son 函数),加入了高斯噪声,作者解释,这样做的作用是:teaches the network to ignore uncorrelated crosss-cale information (the noise), while learning to increase the resolution of correlated information (the signal details)。然而,可能真正的理由并非如此,加入噪声会使得网络面对一个更困难的任务(相当于构建了一个更困难的损失函数),从而在面对实际不含噪声的SR任务时,变得更加轻松。这一点在构建损失函数时,常常用到,例如,SphereFace通过将 Softmax 损失转变为 Cosine 损失,从而可以加入调整边界损失的超参数 m。

  4. 在实际执行SR时,还使用了 Geometric Self-Ensemble(EDSR首次使用此方法)和 Back Projection 技术,将两者结合起来计算输入图像的多个SR结果,取 median image。

  5. 在调整学习率时,使用了重构误差的线性拟合(使用 numpy.polyfit 来实现),将线性拟合的斜率与重构误差的标准差对比,两者之差达到一定程度时,学习率下降10:We periodically take a linear fit of the reconstruction error and if the standard deviation is greater by a factor than the slope of the linear fit we divide the learning rate by 10.


转载本文请联系原作者获取授权,同时请注明本文来自李小薪科学网博客。

链接地址:https://wap.sciencenet.cn/blog-1338462-1317442.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?