什么是亚像素
亚像素(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所示:
- 形状为 [B, C, N, N] 的输入图像
- 第一层:具有 64 个过滤器和 5×5 内核大小的卷积层,然后是一个 tanh 激活层。
- 第二层:具有 32 个过滤器和 3×3 内核大小的卷积层,后面是一个 tanh 激活层。
- 第三层:卷积层,输出通道数固定为C×r×r,核大小为3×3。
- 应用子像素混洗函数,使输出 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) 表示所有可学习的偏差。
作者:stardsd
文章来源:博客园
推荐阅读
更多芯擎AI开发板干货请关注芯擎AI开发板专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。