Feedback Network for Image Super-Resolution(CVPR-2019)

论文地址

论文代码

1. 创新点:

  • 反馈机制(feedback mechanism)
  • 课程学习 (curriculum learning)

2. 摘要:

在这篇论文中,作者提出了一种图片超分辨率反馈网络(SRFBN),从而通过高层信息来细化低层信息。具体这种反馈机制,是用具有约束的RNN中的隐状态来实现这种反馈机制。这种反馈机制能够产生非常强的高层表征能力。

3.预备知识:

3. 1 feedback mechanism:

反馈机制能够允许该网络携带当前的输出去纠正之前的一些状态。
针对图片超分辨率中的feedback mechanism,有两个必要条件:
1)迭代 ;见下图【Fig.1(b)
2)重新路由(rerouting)系统的输出,以纠正(correct)每个循环中的输入, 在本文提出的网络结构中,实施feedback mechanism,有三个必不可少的部分:
1)在每一次迭代过程中都绑定loss;
2)使用循环结构(实现迭代的过程);
3)在每一次迭代过程中提供低分辨率图片的输入。
上面三个部分缺一不可。

3.2 curriculum learning:略

4. 网络结构

4.1 整体结构

见图【Fig.2】我们提出的SRFBN可以被展开为T个迭代,迭代的顺序是从1到t,为了使得中间的状态能够携带一些输出信息,我们在每一次的迭代后面都会绑定一个loss值。
Feedback Network for Image Super-Resolution(CVPR-2019)_第1张图片网络结构被分为三个模块:很好理解,数学公式就暂时不放了,很好理解。

  • LRFB (Low Resolution Feature Extractor Block)
  • FB (Feedback Block)
  • RB (Reconstruction Block)
    公式如下:
    Feedback Network for Image Super-Resolution(CVPR-2019)_第2张图片

4.2 Feedback Block (后面补充)

见下图【Fig.3Feedback Network for Image Super-Resolution(CVPR-2019)_第3张图片 公式如下:
Feedback Network for Image Super-Resolution(CVPR-2019)_第4张图片

5. 实验

5.1 实验设置

  • 数据集: DIV2K数据集 和 Flickr2K 数据集
  • batchsize: 16
  • patchsize:如下表
scale factor x2 x3 x3
input patch size 60x60 50x50 40x40
  • learning rate: 初始设置为0.0001,每200个epoch降低一半
  • loss: L1 loss
  • optimizer: Adam

5.2 消融实验(略)

5.3 实验结果

  • 参数对比:

    • SRFBN(T=4,G=6,feats=64)
    • SRFBN-S(T=4,G=3,feats=32)
      Feedback Network for Image Super-Resolution(CVPR-2019)_第5张图片
  • BI

  • BD 和DN

6.代码解析

— 论文中FB实现前向传播:

  • 其中lr_featureshr_features是将num_groups组的结果每一次进行保存,后面 concat 后用1×1卷积进行降维。
  • 其中uptranBlocksdowntranBlocks实现Dense连接,然后降维。
   for idx in range(self.num_groups):
        LD_L = torch.cat(tuple(lr_features), 1)    # idx == 0, lr_features == [x]
        if idx > 0:
            LD_L = self.uptranBlocks[idx-1](LD_L)
        LD_H = self.upBlocks[idx](LD_L)

        hr_features.append(LD_H)

        LD_H = torch.cat(tuple(hr_features), 1)
        if idx > 0:
            LD_H = self.downtranBlocks[idx-1](LD_H)
        LD_L = self.downBlocks[idx](LD_H)

        lr_features.append(LD_L)

7.总结

论文是从参数少的基础上去进行比较的,但是参数少,并不意味这计算量少,经过计算,输入100×100的图片后计算的结果为:

Total params: 3,631,478
Total memory: 1029.17MB
Total MAdd: 97.69GMAdd
Total Flops: 30.69GFlops
Total MemR+W: 2.35GB

这个是ECCV2018论文CARN中的计算结果:

Total params: 1,148,827
Total memory: 195.05MB
Total MAdd: 23.22GMAdd
Total Flops: 11.65GFlops
Total MemR+W: 408.21MB

这个是ECCV2018论文MSRN中的计算结果:

Total params: 6,336,515
Total memory: 260.62MB
Total MAdd: 127.16GMAdd
Total Flops: 63.64GFlops
Total MemR+W: 543.7MB

这个是自己论文的结果:

Total params: 4,689,078
Total memory: 429.08MB
Total MAdd: 102.91GMAdd
Total Flops: 51.52GFlops
Total MemR+W: 835.26MB

你可能感兴趣的:(超分辨率)