深度学习用于图像超分辨率重建之ESPCN——超分辨率(七)

Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network

论文链接: Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network, CVPR2016)

作者提到,像SRCNN那样的方法,由于需要将低分辨率图像通过上采样插值得到与高分辨率图像相同大小的尺寸,再输入到网络中,这意味着要在较高的分辨率上进行卷积操作,从而增加了计算复杂度。本文提出了一种直接在低分辨率图像尺寸上提取特征,计算得到高分辨率图像的高效方法。ESPCN网络结构如下图所示。
在这里插入图片描述

摘要

近年来,基于深度神经网络的几种模型在单幅图像超分辨率重建精度和计算性能方面都取得了很大的成功。在这些方法中,通常在重建之前,使用单个滤波器(通常为双三次插值)将低分辨率(LR)输入图像放大到高分辨率(HR)空间。这意味着在HR空间中执行超分辨率(SR)操作。我们证明,这是次优的,并且增加了计算复杂度。在本文中,我们提出了第一种能够在单个K2 GPU上实时1080p视频SR的卷积神经网络(CNN)。为此,我们提出了一种新的CNN体系结构,在LR空间中提取特征映射。此外,我们引入了一个有效的亚像素卷积层,它学习一组尺度扩展滤波器,以便将最终的LR特征映射放大到HR输出中。通过这样做,我们有效地将SR传递途径中的手工双三次滤波器替换为针对每个特征图专门训练的更复杂的放大滤波器,同时还降低了整个SR操作的计算复杂度。我们使用来自公开可用的数据集的图像和视频来评估所提出的方法,并显示出其性能明显更好(+0.15dB用于图像,+0.39dB用于视频),并且比先前基于CNN的方法快一个数量级。

介绍

从它低分辨率(LR)对应部分恢复高分辨率(HR)图像或视频是数字图像处理领域非常感兴趣的课题。这项被称为超分辨率(SR)的任务在许多领域有直接的应用,如HDTV[15]、医学成像[28,33]、卫星成像[38]、人脸识别[17]和监视[53]。全局SR问题假设LR数据是HR数据的低通滤波(模糊)、下采样和噪声版本。由于不可逆低通滤波和子采样过程中出现的高频信息丢失,这是一个高度不适定(病态)的问题。此外,SR操作实际上是从LR到HR空间的一对多映射,该映射可以有多个解,其中确定正确的解是困难的(重要的)。许多SR技术的基础的一个关键假设是许多高频数据是冗余的,因此可以从低频分量中精确地重构。因此,SR是一个推理问题,因此依赖于我们所讨论的图像的统计模型。
许多方法假设多个图像可用作具有不同视角的同一场景的LR实例,即具有独特的先验仿射变换。这些可归类为多图像SR方法,并通过用附加信息约束不适定问题并尝试反转下采样过程来利用显式冗余。然而,这些方法通常需要计算复杂的图像配准和融合阶段,其精度直接影响结果的质量。另一种方法是单图像超分辨率(SISR)技术。这些技术试图学习自然数据中存在的隐式冗余,以便从单个LR实例中恢复丢失的HR信息。这通常以图像的局部空间相关性和视频中的附加时间相关性的形式出现。在这种情况,需要重构约束形式的先验信息来限制重构的解空间。

方法

SISR的任务是从给定一张由相应原始HR图像 I H R I^{H R} IHR的缩放得到的LR图像 I L R I^{L R} ILR来估计HR图像 I S R I^{S R} ISR。下采样操作是确定性的且是已知的:为了从 I H R I^{H R} IHR产生 I L R I^{L R} ILR,我们首先使用高斯滤波器卷积 I H R I^{H R} IHR,从而模拟相机的点扩展函数,然后将图像下采样r倍。一般来说, I L R I^{L R} ILR I H R I^{H R} IHR都有C个颜色通道,因此它们分别表示为大小为H×W×C和rH×rW×C的真值张量。

为了解决SISR问题,提出的SRCNN从 I L R I^{L R} ILR的放大和内插版本中恢复,而不是从 I L R I^{L R} ILR中恢复。为了恢复 I S R I^{S R} ISR,使用了3层卷积网络。在本节中,我们提出了一种新颖的网络体系结构,如图1所示,以避免在将 I L R I^{L R} ILR馈入网络之前对其进行升级。在我们的体系结构中,我们首先将l层卷积神经网络直接应用于LR图像,然后将亚像素卷积层应用于LR特征映射的放大以产生 I S R I^{S R} ISR
对于一个有L层组成的网络,首先L-1层可以如下描述:
f 1 ( I L R ; W 1 , b 1 ) = ϕ ( W 1 ∗ I L R + b 1 ) f l ( I L R ; W 1 : l , b 1 : l ) = ϕ ( W l ∗ f l − 1 ( I L R ) + b l ) \begin{aligned} f^{1}\left(\mathbf{I}^{L R} ; W_{1}, b_{1}\right) &=\phi\left(W_{1} * \mathbf{I}^{L R}+b_{1}\right) \\ f^{l}\left(\mathbf{I}^{L R} ; W_{1 : l}, b_{1 : l}\right) &=\phi\left(W_{l} * f^{l-1}\left(\mathbf{I}^{L R}\right)+b_{l}\right) \end{aligned} f1(ILR;W1,b1)fl(ILR;W1:l,b1:l)=ϕ(W1ILR+b1)=ϕ(Wlfl1(ILR)+bl)
其中 W l , b l , l ∈ ( 1 , L − 1 ) W_l , b_l , l\in(1, L − 1) Wl,bl,l(1,L1)分别是学习网络的权值和偏差, W l W_l Wl是一个大小为 n l − 1 × n l × k l × k l n_{l-1}\times n_{l}\times k_{l}\times k_{l} nl1×nl×kl×kl的2D卷积张量,其中 n l n_l nl l l l层的特征数量, n 0 = C , k l n_0=C,k_l n0=Ckl l l l层的卷积大小。 b l b_l bl是长度为 n l n_l nl的向量偏置。非线性函数(或激活函数) ϕ \phi ϕ应用为智能元素并且固定。最后一层 f l f^l fl将LR特征图转换为HR图像 I S R I_{SR} ISR

反卷积层

添加反卷积层是从最大值池化max-pooling 和其他图像下采样down-sampling层恢复分辨率的常用选择。这种方法已经成功地用于可视化层激活以及使用来自网络的高级特征生成语义分割。要证明SRCNN中使用的双三次插值是反卷积层的特殊情况,这一点并不重要。反卷积层可以看作是每个输入像素乘以滤波器元素与步幅r的乘法,并且在得到的输出窗口上求和,也称为向后卷积。

高效的亚像素卷积层

因为第一次接触亚像素这个概念,先介绍一下亚像素概念,如有不对望指出:
在相机成像的过程中,获得的图像数据是将图像进行了离散化的处理,由于感光元件本身的能力限制,到成像面上每个像素只代表附近的颜色。例如两个感官原件上的像素之间有4.5um的间距,宏观上它们是连在一起的,微观上它们之间还有无数微小的东西存在,这些存在于两个实际物理像素之间的像素,就被称为“亚像素”。亚像素实际上应该是存在的,只是缺少更小的传感器将其检测出来而已,因此只能在软件上将其近似计算出来。
   亚像素可以表示为如下图所示,每四个红色点围成的矩形区域为实际原件上的像素点,黑色点为亚像素点:
在这里插入图片描述

根据相邻两像素之间插值情况的不同,可以调整亚像素的精度,例如四分之一,就是将每个像素从横向和纵向上当做四个像素点。也就是上面图里的红色点之间有三个黑色点。这样通过亚像素插值的方法可以实现从小矩形到大矩形的映射,从而提高分辨率。
   正因为这样的操作,所以在图像超分辨的任务里使用pixel shuffle的方式获得高分辨图像(例如ESPCN)。在一般的反卷积里会存在大量补0的区域,这可能对结果有害。因此pixel shuffle通过亚像素卷积的方式,实现从低分辨图到高分辨图的重构,具体如下所示,通过将多通道feature上的单个像素组合成一个feature上的单位即可,每个feature上的像素就相当于新的feature上的亚像素了。
在这里插入图片描述

亚像素卷积层包含两个过程,一个普通的卷积层和后面的排列像素的步骤。就是说,最后一层卷积层输出的特征个数需要设置成固定值,即放大倍数r的平方,这样总的像素个数就与要得到的高分辨率图像一致,将像素进行重新排列就能得到高分辨率图。

在ESPCN网络中,图像尺寸放大过程的插值函数被隐含地包含在前面的卷积层中,可以自动学习到。由于卷积运算都是在低分辨率图像尺寸大小上进行,因此效率会较高。

训练时,可以将输入的训练数据,预处理成重新排列操作前的格式,比如将21×21的单通道图,预处理成9个通道,7×7的图,这样在训练时,就不需要做重新排列的操作。另外,ESPCN激活函数采用tanh替代了ReLU。损失函数为均方误差。

实验结果

[外链图片转存失败(img-KrNVC8w6-1563846580935)(assets/markdown-img-paste-20190718154904471.png)]
在这里插入图片描述

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cpp编程小茶馆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值