前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【超分辨率】SRCNN | 开启超分的大深度学习时代

【超分辨率】SRCNN | 开启超分的大深度学习时代

作者头像
AIWalker
发布2021-07-29 11:57:06
2.7K0
发布2021-07-29 11:57:06
举报
文章被收录于专栏:AIWalker

简介

论文链接: https://arxiv.org/pdf/1501.00092v3.pdf 代码链接: https://github.com/CVHuber/Super-Resolution/blob/main/SRCNN.py

背景

图像超分辨率(Super-Resolution,SR)是计算机视觉领域一个经典的问题,研究的是如何将低分辨率图像(Low Resolution,LR)转化为高分辨率图像(High Resolution,HR)。对比传统SR算法,本文介绍的基于CNN的超分辨率算法—SRCNN模型结构简单、推理速度快以及重建质量高。

与传统方法对比

上图展示了SRCNN与传统方法的性能对比。可以发现SRCNN在峰值信噪比(Peak Signal to Noise Ratio,PSNR)指标以及重建图像质量均优于双三次插值(Bicubic)与稀疏编码(Sparse Coding,SC)。

方法

SRCNN结构图

如上图所示,SRCNN计算过程主要分为三步:区域特征的提取与表示、非线性映射以及重建。此外,本文将SRCNN的损失函数作为方法的第四步进行简单介绍。值得注意的是,LR先通过双三次插值扩展至HR的尺寸,再作为网络的输入。

区域特征的提取与表示

F_{1}(\mathbf{Y})=\max \left(0, W_{1} * \mathbf{Y}+B_{1}\right)

通过一个常规卷积与ReLU激活函数对输入图像的区域特征的进行编码,其中f1(卷积核大小)为9,n1(卷积核数量)为64。

非线性映射

F_{2}(\mathbf{Y})=\max \left(0, W_{2} * \mathbf{F_{1}(\mathbf{Y})}+B_{2}\right)

利用常规卷积+ReLU激活函数对第一层卷积的输出进行非线性映射,其中卷积核大小为1×1,n2为32。在这里1×1卷积的作用是压缩特征通道并减少神经元连接数量,有效低降低网络的复杂度,相应地也提升了网络的运行速度。

重建

F(\mathbf{Y})=\max \left(0, W_{3} * \mathbf{F_{2}(\mathbf{Y})}+B_{3}\right)

最后对特征图进行常规卷积操作,完成LR到HR的重建。其中f3为5。

损失函数

SRCNN使用均方误差(Mean Square Error,MSE)作为损失函数来评估网络输出与真实标签之间的差异。

SRCNN提出了利用常规卷积搭配激活函数来模拟传统SR方法的特征编码过程,从特征的提取到最后的重建使用的都利用卷积操作进行的,非常的简洁且高效。

实现

代码语言:javascript
复制
class SRCNN(nn.Module):
    def __init__(self, num_channels=1):
        super(SRCNN, self).__init__()
        self.conv1 = nn.Conv2d(num_channels, 64, kernel_size=9, padding=9 // 2)
        self.conv2 = nn.Conv2d(64, 32, kernel_size=5, padding=5 // 2)
        self.conv3 = nn.Conv2d(32, num_channels, kernel_size=5, padding=5 // 2)
        self.relu = nn.ReLU(inplace=True)

    def forward(self, x):
        x = self.relu(self.conv1(x))
        x = self.relu(self.conv2(x))
        x = self.conv3(x)
        return x

实验结果

作者通过大量的对比实验来验证SRCNN的有效性,主要包括:模型在不同数据集的表现、卷积核尺度对模型性能的影响、不同层特征的可视化分析以及与传统SR方法的比较。

不同数据集的性能表现

作者分别在91images和ImageNet两个数据集上进行了对比实验,随着迭代次数的增加,SRCNN在ImageNet上获得了更高的PSNR,这表明数据量的增加能提高网络的性能。

不同卷积核尺度的性能表现

上图展示了多种不同尺度的卷积核组合对网络性能的影响,可以发现通过搭配更大尺度的卷积核,网络能获得更高的PSNR,这表明了更大尺度的卷积核能增强模型的拟合能力。

不同层特征的可视化分析

上图展示了不同层特征的可视化结果,第一层特征表现出结构的不同,第二层则是强度的不同。

与传统方法的比较

SRCNN与传统SR方法在Set5数据集的对比实验。随着迭代次数的增加,SRCNN的性能超越了所有的传统SR方法。

上图展示的是所有方法在Set5数据集中的蝴蝶图像样本对比结果,SRCNN获得最高的PSNR值并且重建的高分辨率蝴蝶图像也更接近真实标签。

总结

SRCNN首次提出利用一系列的常规卷积搭配激活函数来模拟传统SR方法的特征编码过程。对比传统SR方法,SRCNN是一种结构简洁的端对端学习方法,无论是网络性能还是推理速度均表现更优。随着SRCNN的出现,超分辨率领域正式进入大深度学习时代。

如果觉得有用,就请分享到朋友圈吧!

△点击卡片关注AIWalker,获取最新CV爽文

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AIWalker 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 背景
  • 方法
    • 区域特征的提取与表示
      • 非线性映射
        • 重建
          • 损失函数
          • 实现
          • 实验结果
            • 不同数据集的性能表现
              • 不同卷积核尺度的性能表现
                • 不同层特征的可视化分析
                  • 与传统方法的比较
                  • 总结
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档