赞
踩
点击上方“计算机视觉工坊”,选择“星标”
干货第一时间送达
该文是图像/视频超分“反思”之旅的第二站:BackProjection,本文对图像/视频超分中的BackProjection进行了汇总,从源头到其在AI中的应用进行了介绍。
BackProjection最早是由Michal Irani与Shmuel Peleg于1991年提出用于图像超分,该方法就是传统图像超分领域知名的IBP。下图给出了BackProjection示意图,BackProjection的本质思想在于:一个好的SR结果对应的LR应当与原始的LR尽可能的相近。
对IBP感兴趣的同学建议去查看原文,这里就不再过多进行介绍,仅提供两个版本的Matlab实现参考:
MATLAB工具包|IBP.
BasicSR|BackProjection.核心代码如下所示。
- 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。
尽管深度学习方法主导了诸多CV领域的SOTA,但传统的很多思想都是非常有价值的,还可以继续在AI时代继续“发光发热”。BackProjection就是其中一例,它继续在图像超分领域取得了一些列的SOTA结果。
AI+BackProjection最早由Muhammad Hari等于DBPN一文提出,所提方法取得了X8超分的SOTA结果。DBPN的网络结构见下图,它包含多次连续的上采样-下采样操作。
它里面的Upsample与Downsample就是BackProjection在AI中的一个直接应用,下图给出了两个模块的示意图。
它的上采样单元可以描述如下:
它的下采样单元与上述过程比较类似,这里就不再赘述。各位同学可以对比一下前述的MATLAB代码与这里的公式,可以发现:residual就是BackProjection思想的直接应用。下面给出了上采样单元的实现code,更详细代码详见:DBPN。
- 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部分的code,红框表示各个阶段的同尺度特征融合与下采样模块;绿框表示同尺度特征融合与上采样模块;而在RDN网络中,仅在最后进行一次特征融合。
考虑到DBPN中采用简单的Concat方式进行特征融合,ABPN(见上图)对此进行了优化改进提出了非局部注意力机制的融合模式:它在每个模块中都添加了一个非局部注意力融合模块,见下图两种非局部注意力模块,对非局部注意力了解的同学可以很轻松的理解下面两个图,不再赘述。
除了特征融合部分的代码外,ABPN还在重建部分引入了BackProjection思想以进一步提升重建质量。
除了在图像超分领域大放光彩外,BackProjection在视频超分领域还有所应用,如RBPN,见下图。RBPN是DBPN的作者将BackProjection在视频超分中的应用。
RBPN中的BackProjection体现在两个方面:(1) 特征提取部分,与图像超分基本相同;(2)特征融合部分,也就是Projection模块,见下图Projection模块的Encoder示意图。很明显,这里也是BackProjection的一个直接应用。
当然,除了上述DBPN、ABPN以及RBPN外,还有其他AI+BackProjection的方法。比如ABPN的前身HBPN,MGBPv1与v2(见下图)。但这些方法都是对DBPN的改进(多阶段、多尺度、Attention等),所以就不再赘述,对BackProjection类方法感兴趣的同学可以看一下文末的参考。
除了AI+BackProjection外,BackProjection在图像增强也有应用,比如PhotoShop中知名的非锐化掩模(USM)不也是BackProjection的一种应用吗。
传统图像处理中有不少非常经典的idea是值得各位同学思考的,针对性的将其与CNN相结合很有可能会取得“意想不到的”效果。谈到这里了,就稍微多的提几点:
SAN一文其实可以理解为双边滤波与CNN的结合,各位同学可以尝试从双边滤波的角度去理解一下该文;
3DLUT一文不就是传统的LUT与AI的结合在图像增强领域的应用吗?
PANet不就是非局部均值与AI的结合在图像超分中的应用吗?
NSR不就是稀疏表达与AI的结合在图像超分中的应用吗?
...
[1991]IBP: Improving Resolution by Image Registration
[2016]Seven ways to improve example-based single image super resolution
[2018] Deep Back-Projection Networks for Super Resolution
[2018] MGBPv1: Multi-Grid Back projection Super Resolution and Deep Filter Visualization
[2019] Recurrent Back-Projection Network for Video Super Resolution
[2019] Hierarchical Back Projection Network for Image Super Resolution
[2019] MGBPv2: Scaling Up Multi-Grid Back-Projection Networks
[2019] Image Super Resolution via Attention based Back Projection Networks
[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视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。