这是一篇译文,原文Review:FSRCNN(Super Resolution)

本文主要用来概述一篇实时超分辨率的实现FSRCNN,全称Fast Super-Resolution Convolutional Neural Network,FSRCNN 发表于2016年的ECCV,目前为止有近300次的引用。 FSRCNN有着一个相对浅的网络结构,浅网络层让我们比较好理解每一个网络层的用途。与SRCNN相比,它重建后的图像质量更高。

对比SRCNN,FSRCNN-s(FSRCNN小模型版本),FSRCNN-s 有着更好的PSNR(图像质量),更快的处理时长。 对比 SRCNN-Ex(SRCNN优质版本)和 FSRCNN,FSRCNN的结果PSNR更好,处理速度更快。 所以,来看下FSRCNN是如何达到质量和速度双优的

下文包含如下内容:

  • SRCNN 简述
  • FSRCNN 网络架构
  • 如何利用 1x1 卷积对网络进行压缩和扩大
  • 如何利用多个 3X3 卷积实现非线性映射
  • 对比实验
  • 结论

Network Architecture: SRCNN (Top) and FSRCNN (Bottom)

上图是 SRCNN 和 FSRCNN 的网络架构图。其中 Conv(f,n,c)表示该卷积: 卷积大小为fxf, 有n个过滤器以及c个输入通道。

1. SRCNN简述

SRCNN 的处理过程如下:

  1. 对输入图片利用双立方采样做上采样,使得其分辨率为目标分辨率
  2. 然后分别利用 9x9, 1x1, 5x5 的卷积来提高图片质量。其中 1x1 卷积是用来把低分辨率(LR)图像向量非线性映射为高分辨率 (HR) 图像向量.

计算复杂度为:

计算复杂度和HR图像大小成线性比例,SHR。HR图像越大,复杂度越高。

2. FSRCNN 网络结构

FSRCNN 包含如下五个主要处理步骤:

  1. 特征提取:利用一个 5x5 卷积代替 SRCNN 中的双立方差值
  2. 压缩:利用 1x1 卷积把特征层从 d 压缩为 s,其中 s 小于 d
  3. 非线性映射:多个 3x3 网络层代替单个的宽网络层
  4. 扩大: 1x1 卷积把特征层从 s 扩大为 d
  5. 反卷积: 利用 9x9 过滤器重建 HR 图像

以上结构就是 FSRCNN(d,s,m). 其计算复杂度如下:

可见复杂度和 LR 图像大小成线性比例,SLR,所以它的复杂度小于 SRCNN

网络中激活函数是 PReLU. PReLU意为带参数的ReLu,目的是比 ReLU 更好。(更多关于 PReLu 的内容, 请参照

代价函数是均方误差(MSE):

3. 如何利用 1x1 卷积对网络进行压缩和扩大

假设我们在不使用 1x1 卷积的情况下运行 5x5 卷积,如下所示:

5x5 卷积

计算次数 = (14x14x48)x(5x5x480) = 112.9M

如果使用 1x1 卷积:

1x1 卷积

1x1 卷积计算次数 = (14x14x16)x(1x1x480) = 1.5M 5x5 卷积计算此时 = (14x14x48)x(5x5x16) = 3.8M 两者总共计算次数 = 1.5M + 3.8M = 5.3M,比只使用 5x5 足足少了 112.9M 次计算。

论文Network-In-Netwrok建议使用 1x1 卷积引入更多的非线性并改善性能,而GoogleNet建议 1x1 卷积有助于在保证效果的同时减小模型大小。(GoogleNet简述)。

因此在两个卷积层之前使用 1x1 卷积来减少连接(参数)。通过减少参数,我们只需要更少的乘法和加法运算,最终加速网络。这就是 FSRCNN 比 SRCNN 快的原因。

4. 如何利用多个 3x3 卷积实现非线性映射

两个 3x3 滤波器可以包含一个 5x5 的滤波器区域

如上图所示通过使用2层 3x3 滤波器来覆盖 5x5 滤波器的区域,让参数数量变少。

1层 5x5 滤波器的参数数量 = 5x5 = 25 2层 3x3 滤波器的参数数量 = 3x3+3x3 = 18 参数量减少了28%。而更少的参数意味着网络在训练的时候可以更快的收敛,并减少过拟合问题。

5. 对比实验

对比实验

  • SCRCNN-Ex: SRCNN 的优质版本,拥有 57184 个参数
  • Transition State 1: 使用反卷机,有 58976 个参数,获得更高的PSNR
  • FSRCNN (56,12,4): 更小的滤波器,更少的滤波器,有 12464 个参数,更高的PSNR。更重要的参数更少,相对容易收敛。

下表为每个组件的贡献值:

m,sd

对比各种参数的结果,选取 m=4, d=56, s=12时,可以兼顾HR图像质量(33.16dB)和模型复杂度(12464参数)。

最终我们选用 FSRCNN:FSRCNN (56,12,4),FSRCNN-s:FSRCNN (32,5,1)

结论

  • 利用91张放大3倍的图片从头开始训练网络,然后利用利用放大2倍和4倍的100张图反卷积微调网络。
  • 数据增强部分,缩放:0.9,0.8,0.7,旋转::90,180,270

所有网络在91张训练集的结果

FSRCNN和FSRCNN在91张训练集上的结果

从上述结果可以得出:FSRCNN和FSRCNN-s在放大2倍,3倍效果好。当放大4倍的效果比SCN差一点点。

放大3倍的效果

通过论文中的浅层网络,我们可以了解每种组件的效果,例如1×1卷积和多个3×3卷积。