图像/视频超分之BackProjection

2020-11-03 10:50:13 浏览数 (3)

该文是图像/视频超分“反思”之旅的第二站:BackProjection,本文对图像/视频超分中的BackProjection进行了汇总,从源头到其在AI中的应用进行了介绍。

起源

BackProjection最早是由Michal Irani与Shmuel Peleg于1991年提出用于图像超分,该方法就是传统图像超分领域知名的IBP。下图给出了BackProjection示意图,BackProjection的本质思想在于:一个好的SR结果对应的LR应当与原始的LR尽可能的相近。

BackProjection

对IBP感兴趣的同学建议去查看原文,这里就不再过多进行介绍,仅提供两个版本的Matlab实现参考:

  1. MATLAB工具包|IBP.
  2. BasicSR|BackProjection.核心代码如下所示。
代码语言:javascript复制
function [im_h] = backprojection(im_h, im_l, maxIter)

[row_l, col_l,~] = size(im_l);
[row_h, col_h,~] = size(im_h);

p = fspecial('gaussian', 5, 1);
p = p.^2;
p = p./sum(p(:));

im_l = double(im_l);
im_h = double(im_h);

for ii = 1:maxIter
    im_l_s = imresize(im_h, [row_l, col_l], 'bicubic');
    im_diff = im_l - im_l_s;
    im_diff = imresize(im_diff, [row_h, col_h], 'bicubic');
    im_h(:,:,1) = im_h(:,:,1)   conv2(im_diff(:,:,1), p, 'same');
    im_h(:,:,2) = im_h(:,:,2)   conv2(im_diff(:,:,2), p, 'same');
    im_h(:,:,3) = im_h(:,:,3)   conv2(im_diff(:,:,3), p, 'same');
end

尽管BackProjection提出非常久远,但其在目前的图像超分中仍有不少可参考价值。“SevenWay”一文中提出BackProjection一种有效的提升重建图像PSNR指标的方法。不同图像超分方法的性能提升见下表,最高提升可达0.59dB。

AI 时代

尽管深度学习方法主导了诸多CV领域的SOTA,但传统的很多思想都是非常有价值的,还可以继续在AI时代继续“发光发热”。BackProjection就是其中一例,它继续在图像超分领域取得了一些列的SOTA结果。

DBPN

AI BackProjection最早由Muhammad Hari等于DBPN一文提出,所提方法取得了X8超分的SOTA结果。DBPN的网络结构见下图,它包含多次连续的上采样-下采样操作。

DBPN

它里面的Upsample与Downsample就是BackProjection在AI中的一个直接应用,下图给出了两个模块的示意图。

Up/Down Projection Unit

它的上采样单元可以描述如下:

text{scale up}: H_0^t = (L^{t-1} * p_t) uparrow_s \ text{scale down}: L_0^t = (H_0^t * g_t) downarrow_s \ residual: e_t^l = L_0^t - L^{t-1} \ text{scale residual up}: H_1^t = (e_t^l * q_t) uparrow_s \ output: H_t = H_0^t H_1^t

它的下采样单元与上述过程比较类似,这里就不再赘述。各位同学可以对比一下前述的MATLAB代码与这里的公式,可以发现:residual就是BackProjection思想的直接应用。下面给出了上采样单元的实现code,更详细代码详见:DBPN。

代码语言:javascript复制
class UpBlock(torch.nn.Module):
    def __init__(self, num_filter, kernel_size=8, stride=4, padding=2, bias=True, activation='prelu'):
        super(UpBlock, self).__init__()
        self.up_conv1 = DeconvBlock(num_filter, num_filter, kernel_size, stride, padding, activation)
        self.up_conv2 = ConvBlock(num_filter, num_filter, kernel_size, stride, padding, activation)
        self.up_conv3 = DeconvBlock(num_filter, num_filter, kernel_size, stride, padding, activation)

    def forward(self, x):
        h0 = self.up_conv1(x)
        l0 = self.up_conv2(h0)
        h1 = self.up_conv3(l0 - x)
        return h1   h0

在全局网路结构方面,DBPN为了更充分的利用多尺度特征,还采用了类似RDN的思想,在每个模块内将已有的同尺度特征通过Concat方式进行融合。参考代码如下:

DBPN forward

注:上述为DBPN的forward部分的code,红框表示各个阶段的同尺度特征融合与下采样模块;绿框表示同尺度特征融合与上采样模块;而在RDN网络中,仅在最后进行一次特征融合。

ABPN

ABPN

考虑到DBPN中采用简单的Concat方式进行特征融合,ABPN(见上图)对此进行了优化改进提出了非局部注意力机制的融合模式:它在每个模块中都添加了一个非局部注意力融合模块,见下图两种非局部注意力模块,对非局部注意力了解的同学可以很轻松的理解下面两个图,不再赘述。

NonLocalAttention

除了特征融合部分的代码外,ABPN还在重建部分引入了BackProjection思想以进一步提升重建质量。

RBPN

除了在图像超分领域大放光彩外,BackProjection在视频超分领域还有所应用,如RBPN,见下图。RBPN是DBPN的作者将BackProjection在视频超分中的应用。

RBPN

RBPN中的BackProjection体现在两个方面:(1) 特征提取部分,与图像超分基本相同;(2)特征融合部分,也就是Projection模块,见下图Projection模块的Encoder示意图。很明显,这里也是BackProjection的一个直接应用。

Encoder

小结

当然,除了上述DBPN、ABPN以及RBPN外,还有其他AI BackProjection的方法。比如ABPN的前身HBPN,MGBPv1与v2(见下图)。但这些方法都是对DBPN的改进(多阶段、多尺度、Attention等),所以就不再赘述,对BackProjection类方法感兴趣的同学可以看一下文末的参考。

MGBPv2

除了AI BackProjection外,BackProjection在图像增强也有应用,比如PhotoShop中知名的非锐化掩模(USM)不也是BackProjection的一种应用吗。

传统图像处理中有不少非常经典的idea是值得各位同学思考的,针对性的将其与CNN相结合很有可能会取得“意想不到的”效果。谈到这里了,就稍微多的提几点:

  1. SAN一文其实可以理解为双边滤波与CNN的结合,各位同学可以尝试从双边滤波的角度去理解一下该文;
  2. 3DLUT一文不就是传统的LUT与AI的结合在图像增强领域的应用吗?
  3. PANet不就是非局部均值与AI的结合在图像超分中的应用吗?
  4. NSR不就是稀疏表达与AI的结合在图像超分中的应用吗?
  5. ...

参考

  1. [1991]IBP: Improving Resolution by Image Registration
  2. [2016]Seven ways to improve example-based single image super resolution
  3. [2018] Deep Back-Projection Networks for Super Resolution
  4. [2018] MGBPv1: Multi-Grid Back projection Super Resolution and Deep Filter Visualization
  5. [2019] Recurrent Back-Projection Network for Video Super Resolution
  6. [2019] Hierarchical Back Projection Network for Image Super Resolution
  7. [2019] MGBPv2: Scaling Up Multi-Grid Back-Projection Networks
  8. [2019] Image Super Resolution via Attention based Back Projection Networks
  9. [2020] Sub-Pixel Back-Projection Network for Lightweight Single Image Super Resolution.

0 人点赞