当前位置:   article > 正文

图像/视频超分之BackProjection

backprojection算法

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

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

起源

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

BackProjection

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

  1. MATLAB工具包|IBP.

  2. BasicSR|BackProjection.核心代码如下所示。

  1. function [im_h] = backprojection(im_h, im_l, maxIter)
  2. [row_l, col_l,~] = size(im_l);
  3. [row_h, col_h,~] = size(im_h);
  4. p = fspecial('gaussian'51);
  5. p = p.^2;
  6. p = p./sum(p(:));
  7. im_l = double(im_l);
  8. im_h = double(im_h);
  9. for ii = 1:maxIter
  10.     im_l_s = imresize(im_h, [row_l, col_l], 'bicubic');
  11.     im_diff = im_l - im_l_s;
  12.     im_diff = imresize(im_diff, [row_h, col_h], 'bicubic');
  13.     im_h(:,:,1) = im_h(:,:,1) + conv2(im_diff(:,:,1), p, 'same');
  14.     im_h(:,:,2) = im_h(:,:,2) + conv2(im_diff(:,:,2), p, 'same');
  15.     im_h(:,:,3) = im_h(:,:,3) + conv2(im_diff(:,:,3), p, 'same');
  16. 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

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

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

  1. class UpBlock(torch.nn.Module):
  2.     def __init__(self, num_filter, kernel_size=8, stride=4, padding=2, bias=True, activation='prelu'):
  3.         super(UpBlock, self).__init__()
  4.         self.up_conv1 = DeconvBlock(num_filter, num_filter, kernel_size, stride, padding, activation)
  5.         self.up_conv2 = ConvBlock(num_filter, num_filter, kernel_size, stride, padding, activation)
  6.         self.up_conv3 = DeconvBlock(num_filter, num_filter, kernel_size, stride, padding, activation)
  7.     def forward(self, x):
  8.         h0 = self.up_conv1(x)
  9.         l0 = self.up_conv2(h0)
  10.         h1 = self.up_conv3(l0 - x)
  11.         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.

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

觉得有用,麻烦给个赞和在看~  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/693758
推荐阅读
相关标签
  

闽ICP备14008679号