ESPCN:亚像素卷积神经网络

什么是亚像素

亚像素(Sub Pixel):

面阵摄像机的成像面以像素为最小单位,像素中心之间的距离有几个至十几个微米不等。为了最大限度利用图像信息来提高分辨率,有人提出了亚像素概念。意思是说,在两个物理像素之间还有像素,称之为亚像素,它完全是通过计算方法得出来的。

例如某CMOS摄像芯片,其像素间距为5.2微米。摄像机拍摄时,将物理世界中连续的图像进行了离散化处理。到成像面上每一个像素点只代表其附近的颜色。

两个像素之间有5.2微米的距离,在宏观上可以看作是连在一起的。但是在微观上,它们之间还有无限的更小的东西存在。这个更小的东西我们称它为“亚像素”。

1. CNN 方法与 ESPCN 的区别

基于卷积神经网络的方法,如 SRCNN、FSRCNN 和 VDSR,有一些缺点。首先,CNN 方法需要使用插值方法对 LR 图像进行上采样,例如双三次插值。其次,它增加了网络第一层之前或第一层的分辨率。换句话说,CNN方法将卷积神经网络直接应用于上采样的LR图像,这将增加计算复杂度和内存成本。

为了解决这些问题,ESPCN 被提出来在 CNN 网络中添加一个高效的亚像素卷积层。ESPCN 提高了网络末端的分辨率。在 ESPCN 中,放大步骤由最后一层处理,这意味着较小尺寸的 LR 图像直接馈送到网络。因此,无需使用插值方法。与馈入网络之前的插值滤波器升级相比,网络能够学习更好的 LR 到 HR 映射。由于输入图像尺寸减小,可以使用较小的滤波器尺寸来提取特征。降低了计算复杂度和内存成本,从而大大提高了效率。这就是为什么 ESPCN 成为实时超分辨率高清视频的理想选择。

2. 网络结构

在这里插入图片描述
图 2:ESPCN 网络结构

基本上,SR 模型假设输入数据是 LR 模糊且有噪声的图像。可以通过对来自数据集的 HR 图像执行下采样过程来创建 LR 图像。输出将是具有指定放大因子的重建 SR 图像。

ESPCN的网络结构如图2所示。假设网络有L层,前L-1层是卷积层,获取输入LR图像的特征图。最后一层是有效的子像素卷积层,用于恢复具有指定放大因子的输出图像大小。

通常,网络有3层,如图3所示:

  1. 形状为 [B, C, N, N] 的输入图像
  2. 第一层:具有 64 个过滤器和 5×5 内核大小的卷积层,然后是一个 tanh 激活层。
  3. 第二层:具有 32 个过滤器和 3×3 内核大小的卷积层,后面是一个 tanh 激活层。
  4. 第三层:卷积层,输出通道数固定为C×r×r,核大小为3×3。
  5. 应用子像素混洗函数,使输出 SR 图像具有 [B, C, r × N, r × N] 的形状,后跟一个 sigmoid 激活层。
    在这里插入图片描述

图 3:ESPCN 模型

3. 亚像素卷积

论文作者提出的最重要的概念之一是亚像素卷积,也称为像素洗牌。在了解亚像素卷积之前,有必要先熟悉一下亚像素的概念。在相机成像系统中,通过一种离散化处理方法对相机获取的图像数据进行了处理。由于光传感器的限制,图像受限于原始像素分辨率,换句话说,图像上的每个像素代表现实世界中一小块颜色区域。在我们看到的数字图像中,像素与像素是连在一起的,而在微观世界中,两个物理像素之间存在着许多微小的像素。那些微小的像素称为子像素。
在这里插入图片描述
图 4:子像素的可视化

如图4所示,每个被四个红色小方块包围的正方形区域是相机成像平面中的像素,黑色的点是子像素。可以根据相邻像素之间的插值来调整子像素的精度。这样就可以通过亚像素插值实现小方块到大方块的映射。

基于这一理论,可以在SR模型中使用亚像素卷积方法来获得高分辨率图像。在一般的反卷积操作中,我们用零填充图像然后进行卷积,这可能对结果不利。而在网络的最后一层进行pixel shuffle恢复LR图像不需要padding操作。如图 5 所示,将多通道特征图上的每个像素组合成输出图像中的一个 r × r 方形区域。因此,特征图上的每个像素相当于生成的输出图像上的子像素。
在这里插入图片描述
图5:pixel shuffle的操作

亚像素卷积涉及两个基本过程:一般的卷积运算,然后是像素的重新排列。最后一层的输出通道必须是 C × r × r ,这样总像素数与要得到的 HR 图像一致。在 ESPCN 网络中,插值方法隐含在卷积层中,可以由网络自动学习。由于卷积运算是在较小尺寸的 LR 图像上实现的,因此效率要高得多。

4.损失函数

根据该论文,输入 LR 图像是通过对数据集中的 HR 图像进行下采样生成的。在训练过程中,原始 HR 图像将是 ground truth 数据。均方误差 (MSE) 用于衡量生成的 SR 图像与地面真值 HR 图像之间的差异。网络的像素级 MSE 损失函数为:
在这里插入图片描述
图 6:ESPCN 的损失函数

这里 I(HR) 代表数据集中的每一张原始图像;I(LR)表示每张下采样的LR图像;r 表示放大因子;H代表图像的高度值;W 表示图像的宽度值,W(1:L) 表示所有可学习的网络权重,b(1:L) 表示所有可学习的偏差。

原文链接:https://medium.com/@zhuocen93/an-overview-of-espcn-an-efficient-sub-pixel-convolutional-neural-network-b76d0a6c875e#:~:text=Sub-pixel%20convolution%20involves%20two,HR%20image%20to%20be%20obtained

作者:stardsd
文章来源:博客园

推荐阅读

更多芯擎AI开发板干货请关注芯擎AI开发板专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

使用卷积神经网络(Convolutional Neural Network,CNN)可以改进字典超分辨率方法,以提高图像恢复的质量和效果。下面是一些使用CNN改进字典超分辨率的方法: 1. 数据准备:与字典超分辨率类似,需要收集一组低分辨率图像与对应的高分辨率图像作为训练数据。确保每个低分辨率图像都有其对应的高分辨率版本。 2. 构建CNN模型:设计一个适合于超分辨率任务的CNN模型。可以使用深度学习框架(如TensorFlow、PyTorch等)来构建和训练模型。常用的超分辨率CNN模型包括SRCNN、VDSR、ESPCN等。 3. 数据预处理:将训练数据进行预处理,例如对图像进行裁剪、缩放、旋转等操作,以增加训练数据的多样性。 4. 训练模型:使用训练数据来训练CNN模型。训练过程中,可以使用像素级的损失函数(如均方误差)来度量重建图像与真实高分辨率图像之间的差异,并通过反向传播算法来更新模型参数。 5. 图像恢复:对于给定的低分辨率图像,将其输入到训练好的CNN模型中,通过前向传播得到对应的高分辨率图像预测结果。 6. 后处理:对于生成的高分辨率图像进行后处理,例如去噪、锐化、色彩校正等,以进一步提升图像质量。 通过使用CNN模型,可以从输入的低分辨率图像中学习更丰富的特征表示,并更好地捕捉图像中的细节信息。这样可以提高图像恢复的准确性和保真度,使得恢复的高分辨率图像更加清晰和真实。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值