Deep Back-Projection Networks For Super-Resolution
paper: Deep Back-Projection Networks For Super-Resolution
PyTorch: alterzero/DBPN-Pytorch
Caffe:alterzero/DBPN-caffe
导读:
这篇文章是CVPR 2018年的文章,相较同时录用的《Residual Dense Network for Image Super-Resolution》而言,个人觉得本文创意非常不错。文章很好的利用了传统算法 IBP(迭代反投影),并通过深度网络实现出来的结构。
摘要
- 近年来提出的超分辨网络多为前馈结构,学习HR和LR的非线性映射。然而,这些方法不能解决LR和HR的相互依赖关系(address the mutual dependencies of low- and high-resolution images)。
- 之前的研究表明,人类的视觉系统可能使用反馈连接来简单地指导任务,最近的超分辨网络可能就是由于缺乏这种反馈,所以才不能很好地表达。
- 作者提出了一种不断迭代地进行增采样和降采样的网络,为每个阶段的映射错误提供错误反馈机制。思想很像传统的迭代反投影算法。作者构建了相互连接的上采样和下采样阶段,每个阶段代表不同类型的图像退化和HR分量。网络命名为DBPN(Deep Back-Projection Networks),以及扩展版本D-DBPN(Dense Deep Back-Projection Networks)。实验表明其超分辨尤其在*8尺度中达到了state-of-the-art。
相关工作
现在的超分辨网络分成四种类型:
区别于前几年的三种典型网络:
1) Predefined upsampling。事先把图像增采样到需要的尺寸。这可能会引入新的噪声。
这种算法需要进行预插值来使得输入及输出的size 统一。
这也起源于SRCNN (Dong et.al),Dong 认为将输入输出的feature maps 的size 设置成一致,将有利于进行非线性映射。否则的stride需要设置为分数stride,这将为带来很多不便之处。
先将LR进行bicubic插值到desired size,然后在投入到网络中,这样就可避免stride为分数的情况。但往往会引入大量的计算量。
2)Single upsampling。在最后一步增采样。这种方法可能无法学习到复杂的映射。
观测到第一种将插值后的LR 输入到网络会带来大量的计算,该类方法直接对LR 图像进行feature extracting,这样大大减少了计算量。典型算法:FSRCNN(deconvolution layer), ESPCN(sub-pixel conv)
3)Progressive upsampling。逐步增采样,例如LapSRN。
这类网络结构能够逐渐放大,然后在大的upsampling factor上取得比较好的成绩(x4,x8)
作者把自己的网络归为第四种:
4)Iterative up and downsampling. 通过学习各种增采样与降采样的操作,该架构允许网络保留HR的内容。
这种结构有一种直观的好处,也就是有效挖掘 dependencies of low- and high- resolution images的先验信息。
通过不断的上下采样,进行error feedback来矫正reconstruction error。
模型
1)、Projection units
整个DBPN里面的主要block是投影单元(projection unit),为了学习HR到LR的投影和LR到HR的投影。两种投影单元的网络和数学描述如下:
up-projection unit
对比一下Iterative Back-projection
Assume X为高分辨率图像, Y为低分辨率图像,D为降采样算子, H为模糊算子
X = argmin ||DHX-Y||^2
X(t+1) = X(t) - FTDT(DFX-Y)
在传统算法中,迭代反投影算法往往需要对H模糊算子进行估计。
上面两种算法基本一致。
- 这些投影单元可以理解为是一种self-correcting过程,它将投影误差提供给采样层,并通过反馈投影误差来迭代地改变解。
- 在投影单元中,卷积核的尺寸非常大(例如8*8,12*12),这在过去的网络中不常使用,因为会减低收敛速度,或陷入局部最小值。但是投影单元的迭代利用使网络能够避免这种限制,得到更好的表现。
- 这是DBPN的一种扩展:D-DBPN,其中每个单元的输入都是之前所有单元的输出的堆叠。例如增采样投影单元中,输入尺寸是LR,所以输入是所有降采样投影单元的输出的堆叠(因为它们输出的尺寸都是LR)。反之亦然。另外在进入投影单元时,用一个1*1卷积来降低通道数。
网络全貌
- 整体网络如下所示。我们可以把网络分成三个部分:Initial feature extraction、Back-projection stages、Reconstruction。
实验设置
- 对于不同尺度的超分辨任务,作者设置的卷积核参数也不一样:
- 对*2的任务,卷积核6*6,stride 2,padding 2。
- 对*4的任务,卷积核8*8,stride 4,padding 2。
- 对*8的任务,卷积核12*12,stride 8,padding 2。
- 以上的理论依据是卷积的尺寸公式H=H−F+2PS+1H=H−F+2PS+1 ,以*2为例,卷积后的输出为H=H−6+2∗22+1=H2H=H−6+2∗22+1=H2,正好等于降采样了两倍。
- 训练集采用了DIV2K,Flickr和Imagenet,和之前的291image相比大了不少。LR的尺寸为32*32,batch大小为20。
实验结果
作者:马小啸
链接:https://www.zhihu.com/question/268488873/answer/345427528
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。