加速超分辨率卷积神经网络
摘要:超分辨率卷积神经网络(SRCNN)[1,2]作为一种成功应用于图像超分辨率(SR)的深度模型,无论在速度还是恢复质量上都优于以往的手工模型。然而,较高的计算代价仍然阻碍了它投入要求实时性能(24fps(帧每秒))的实际应用。本文,我们的目标是加速当前的SRCNN,并提出了一种紧凑的沙漏形CNN(卷积神经网络)结构,以实现更快、更好的SR。我们主要从三个方面对SRCNN结构进行了重新设计。首先在网络的末端引入反卷积层,然后直接从原始的低分辨率图像(不需要插值)学习到高分辨率图像的映射。其次,我们通过在映射之前收缩输入特征维数并在映射之后扩展来重新构造映射层。第三,我们采用较小的过滤器尺寸,但更多的映射层。该模型在恢复速度提高40倍以上的同时,具有较好的恢复质量。此外,我们还提供了可以在通用CPU上实现实时性能同时仍保持良好性能的参数设置。最后,提出了相应的传输策略,用于跨不同尺度因子的快速训练和测试。
1介绍
单幅图像超分辨率(SR)旨在从给定的低分辨率(LR)图像中恢复出高分辨率(HR)图像。最近的SR算法大多是基于学习(或基于补丁)的方法[1-8],其学习LR和HR图像空间之间的映射。其中,超分辨率卷积神经网络(SRCNN)[1,2]因其结构简单、恢复质量好而受到广泛关注。虽然SRCNN算法已经比以往大多数基于学习的方法快,但对大图像的处理速度仍然不能令人满意。例如,对240×240图像进行扩大因子为3的上采样操作,原始SRCNN[1]的速度约为1.32fps,这与实时(24fps)相差甚远。为了接近实时,我们应该将SRCNN加速至少17倍,同时保持先前的性能。乍一看,这听起来难以置信,因为仅仅通过降低参数来加速将严重影响性能。然而,当我们深入研究网络结构时,我们发现有两个内在的限制限制了它的运行速度。
首先,作为预处理步骤,需要使用双三次插值将原始LR图像上采样到期望大小以形成输入。然后,SRCNN的计算复杂度随HR图像的空间尺寸(而不是原始的LR图像的空间大小)的平方增长。对于放大因子n,插值LR图像卷积的计算成本将是原始LR图像卷积的倍。这也是大多数基于学习的SR方法的限制[10,3-5,7,8]。如果直接从原始LR图像学习网络,则加速将会很显著,即快了
倍。
第二个限制在于昂贵的非线性映射步骤。在SRCNN中,输入图像块被投影到高维LR特征空间上,然后通过一个复杂映射将其映射到另一高维HR特征空间。Dong等人[2]表明,采用更广泛的映射层可以显著提高映射精度,但代价是运行时间。例如,大型SRCNN(SRCN-Ex)[2]有57184个参数,比SRCNN(8032参数)大6倍。那么问题是如何缩小网络规模,同时仍然保持原有的精度。
根据上述观察,我们研究了一种更简洁、更有效的网络结构,以实现快速、准确的图像SR。为了解决第一个问题,我们采用反卷积层来代替双边插值。为了进一步减轻计算负担,我们将反卷积层放置在网络的末端,这样计算复杂度仅与原始LR图像的空间尺寸成正比。值得注意的是,反卷积层不等价于像FCN[13]或“解池+卷积”[14]的传统插值核的简单替代。相反,它由各种自动学习的上采样内核(见图3)组成,这些内核共同工作以生成最终的HR输出,并且用均匀内插核替换这些反卷积滤波器将导致PSNR显著的下降(例如,对于×3,Set5数据集[15]上至少0.9dB)。
对于第二个问题,我们在映射层的开头和结尾分别增加了一个收缩层和一个扩展层,以限制在低维特征空间中的映射。此外,我们将单个宽的映射层分解成多个具有大小为3×3的固定滤波器的映射层。新结构的总体形状看起来像一个整体对称,两端厚,中间薄的沙漏,该模型被命名为快速超分辨率卷积神经网络(FSRCNN)。实验结果表明,其速度比SRCNN-Ex模型提高了40倍以上,且性能优于SRCNN-Ex模型。我们还提出了一个小型FSRCNN网络(FSRCNN-s),其恢复质量与SRCNN网络相似,但速度是SRCNN网络的17.36倍,并且可以使用通用CPU实时(24fps)运行。如图1所示,FSRCNN网络比现代SR模型的速度快得多,但仍获得了卓越的性能。
除了速度上的显著提高外,FSRCNN还具有另一项引人注目的特性,可促进跨不同升级因素的快速训练和测试。具体地,在FSRCNN中,所有卷积层(除了解卷积层)可以由具有不同升级因子的网络共享。在训练过程中,对于一个经过良好训练的网络,我们只需要对另一个放大因子的反卷积层进行微调,而几乎不会损失映射精度。在测试过程中,我们只需要进行一次卷积运算,然后使用相应的反卷积层对图像上采样到不同的尺度。
我们的贡献有三个方面:1)我们设计了一个紧凑的沙漏形CNN结构,以实现快速的图像超分辨率。在一组反卷积滤波器的协作下,网络可以学习原始LR和HR图像之间的端到端映射,而无需预处理。2)所提出的模型比SRCNN-Ex[2]的速度提高至少40倍,同时仍保持其优异的性能。其中一个小尺寸版本可以在通用CPU上实时运行(>24fps),恢复质量比SRCNN[1]更好。3)我们转移所提出的网络的卷积层,以便跨不同的扩展因子进行快速训练和测试而不会损失修复质量。
2相关工作
SR的深度学习:最近,深度学习技术在SR上得到了成功的应用,Dong等人提出的先驱工作被称为超分辨率卷积神经网络(SRCNN)。在SRCNN的加持下,一些问题如面部幻觉[16]和深度图超分辨率[17]已经取得了最先进的结果。在[18]和[19]中还探索了更深的结构。与传统的基于学习的方法不同,SRCNN直接学习LR和HR图像之间的端到端映射,从而导致快速准确的推理。SRCNN与稀疏编码方法之间的内在联系保证了其良好的性能。基于同样的假设,Wang等人[8]进一步用一组稀疏编码子网络代替映射层,提出了一种基于稀疏编码的网络(SCN)。利用传统的基于稀疏编码的方法的领域专业知识,它在模型尺寸较小的情况下性能优于的SRCNN。但由于它严格模仿稀疏编码求解器,很难在不损失映射精度的情况下缩小稀疏编码子网络。此外,所有这些网络[8,18,19]需要处理经过双三次插值放大后的LR图像。所提出的FSRCNN不仅能对原始LR图像进行处理,而且具有更简单、更高效的映射层。此外,先前的方法必须针对特定的放大因子训练设计一个完全不同的网络,而FSRCNN仅需要不同的反卷积层。这也为我们提供了一种将图像放大到几种不同尺寸大小的更快方法。
CNNs加速:许多研究已经调查了CNN的加速能力。Denton等人[20]首先研究为目标检测设计的CNN内的冗余。然后Zhang等人[21]尝试加速用于图像分类的非常深的CNN。它们还考虑了非线性单元,并通过非对称结构减小累积误差。我们的模型也旨在加速CNN,但以不同的方式。首先,他们专注于接近现有的经过良好训练的模型,而我们重新制定了先前的模型并获得了更好的性能。其次,上述方法都是针对高层次的视觉问题(如图像分类和目标检测)而设计的,而我们的方法是针对低层次的视觉任务而设计的。由于SR的深度模型包含不完全连通的层,所以卷积滤波器的近似将严重影响性能。
3 CNN提供的快速超分辨率
首先简要介绍了SRCNN[1,2]的网络结构,然后详细介绍了如何逐层重构网络。FSRCNN和SRCNN之间的差异将在本节末尾给出。
3.1SRCNN
SRCNN旨在学习双三次插值后的LR图像Y和HR图像X之间的点对点映射函数F。该网络包含所有卷积层,因此,输出图像的大小与输入图像的大小相同。如图2所示,总体结构由三个部分组成,这三个部分与基于稀疏编码的方法[10]的主要步骤类似。模块提取和表示为第一层,其从输入中提取块并将每个块表示为高维特征向量。非线性映射部分是指中间层,其将特征向量非线性地映射到另一组特征向量,即HR特征。最后的重建部分聚集这些特征以形成最终的输出图像。
网络结构的计算复杂度表示如下:
其中和
分别为三层的过滤器大小和过滤器数。是HR图像的大小。我们观察到,复杂度与HR图像的大小成正比,而中间层对网络参数的贡献最大。在下一节中,我们将通过特别关注这两个方面来介绍FSRCNN。
3.2 FSRCNN
如图2所示,FSRCNN可以分解为五个部分--特征提取、收缩、映射、扩张和反卷积。前四部分是卷积,而最后一个层是反卷积层。为了更好地理解,我们表示卷积层为和反卷积层
,其中
表示滤波器大小,滤波器的数量和信道的数量。由于整个网络包含数十个变量(即
),我们不可能对每个变量进行研究。因此,我们预先给不敏感变量分配一个合理的值,而不设置敏感变量。当变量的轻微变化可以显著影响性能时,我们称该变量为敏感变量。这些敏感变量总是代表SR中的一些重要影响因素,这些因素将在下面的描述中显示。
特征提取:这一部分与SRCNN的第一部分相似,但在输入图像上有所不同。FSRCNN在不进行插值的情况下对原始LR图像执行特征提取。为了区别于SRCNN,我们将小的LR输入表示为Ys。通过与第一组滤波器进行卷积,输入的每个块(1像素重叠)被表示为高维特征向量。
我们参考SRCNN关于参数的选择。在SRCNN中,第一层的过滤器大小被设置为9。请注意,这些过滤器是在升级后的图像Y上执行的。由于Y中的大部分像素都是从Ys中插值的,所以Ys中的5×5块几乎可以覆盖Y中的9×9块的所有信息。因此,我们可以采用信息损失较小,尺寸较小的滤波器f1=5。对于通道的数量,我们遵循SRCNN来设置c1=1。然后我们只需要确定滤波器数n1。从另一个角度看,n1可以看作是LR特征维数,记为d—第一个敏感变量。最后,第一层可以表示为Conv(5,d,1)。
收缩:在SRCNN网络中,映射步骤通常跟随特征提取步骤,然后将高维LR特征直接映射到HR特征空间。然而,LR特征维数d通常很大,所以映射步骤的计算复杂度相当高。在一些高级视觉任务的深度模型中也观察到这种现象。[22]中的作者采用1×1层来节省计算成本。
在相同的考虑下,我们在特征提取层之后增加收缩层以减小LR特征维数d。我们将滤波器大小固定为f2=1,然后滤波器在LR特征中执行类似线性组合的操作。通过采用较小的滤波器数n2=s<<d,LR特征维数从d减少到s。s是确定收缩水平的第二敏感变量,第二层可以表示为Conv(1,s,d),该策略大大减少了参数的个数(详细计算见第3.3节)。
非线性映射:非线性映射步骤是影响SR性能的最重要部分,最主要的影响的因素是映射层的宽度(即:层中过滤器的数量)和映射层的深度(即层的数量)。如SRCNN[2]所示,5×5层比1×1层获得更好的结果。但是他们缺乏在非常深的网络上进行的实验。
上述经验有助于我们为FSRCNN制定更有效的映射层。首先,为了在性能和网络规模之间进行权衡,我们采用中等过滤器大小f3=3。然后,为了保持与SRCNN相同的良好性能,我们使用多个3×3层来替换单个宽层。映射层数是另一个敏感变量(表示为m),它决定了映射精度和复杂性。为了一致,所有映射层包含相同数目的滤波器n3=s。那么非线性映射部分可以表示为m×Conv(3,s,s)。
展开:展开层的作用类似于收缩层的逆过程。为了提高计算效率,收缩操作减少了LR特征维数。然而,如果直接从这些低维特征生成HR图像,则最终的恢复质量将较差。因此,我们在映射部分后面增加了一个扩展层来扩展HR特征的维度。为了保持与收缩层的一致性,我们还采用了1×1滤波器,其数量与LR特征提取层相同。与收缩层Conv(1,s,d)相反,扩展层为Conv(1,d,s)。实验表明,在没有扩展层的情况下,在Set5测试集[15]上,性能下降了0.3dB。
反卷积:最后一部分是反卷积层,它用一组反卷积滤波器对先前的特征进行上采样和聚集。反卷积可以看作是卷积的逆运算。对于卷积,滤波器与步幅k的图像进行卷积,输出是输入的1/k倍。相反,如果我们交换输入和输出的位置,输出将是输入的k倍,如图4所示。我们利用这个属性来设置步幅k=n,这是期望的上升因子。然后输出是直接重建的HR图像。
当我们确定反卷积滤波器的滤波器大小时,我们可以从另一个角度来看网络。有趣的是,反向网络就像是一个接收HR图像并输出LR图像的降阶操作。然后反卷积层变成步长为n的卷积层。在提取HR图像的特征时,应采用与SRCNN第一层一致的9×9滤波器。类似地,如果我们反转回来,反卷积滤波器也应该具有f5=9的空间大小。实验也证明了这一假设。图3示出了学习的反卷积滤波器,其模式非常类似于SRCNN中的第一层滤波器的模式。最后,我们可以将反卷积层表示为DeConv(9,1,d)。
与在网络中插入传统插值核(例如双三次或双线性)[13]或具有“解池+卷积”[14]不同,反卷积层学习输入特征映射的一组上采样核。如图3所示,这些内核是多样且有意义的。如果我们强制这些内核是相同的,则参数将被低效地使用(等于将输入特征映射相加为一个),并且在Set5上性能将下降至少0.9dB。
PReLU:对于每个卷积层之后的激活函数,我们建议使用参数校正线性单元(PReLU)[23]代替常用的校正线性单元(ReLU),它们在负值部分的系数是不同的。对于ReLU和PReLU,我们可以定义一般的激活函数为,其中,
是第i个通道上的激活函数f的输入信号,
是负值部分的系数。对于ReLU固定参数
为零,但是对于PReLU是可学习的。我们选择PReLU主要是为了避免在ReLU中由零梯度导致的“死特征”[11]。然后我们可以充分利用所有参数来测试不同网络设计的最大容量。实验表明,PReLU激活的网络性能更稳定,可以看作是ReLU激活的网络性能的上界。
总体结构:将以上五部分连接起来,形成一个完整的FSRCNN网络,即Conu(5,d,1)-PReLU-Conu(1,s,d)-PReLU-m×Conv(3,s,s)-PReLU-Conu(1,d,s)-PReLU-DeConv(9,1,d)总体上,存在控制性能和速度的三个敏感变量(即,LR特征维数d、收缩滤波器的数目s和映射深度m)。为了简单起见,我们将FSRCNN网络表示为FSRCNN(d,s,m)。计算复杂度计算如下:
我们排除了PReLU的参数,这引入了可忽略的计算代价。有趣的是,这个新的结构看起来像一个整体上是对称的,两端厚,中间很薄的沙漏。这三个敏感变量只是沙漏外观的控制参数。实验表明,这种沙漏设计对图像的超分辨率非常有效。
成本函数:在SRCNN之后,我们采用均方误差(MSE)作为成本函数。将优化目标表示为
其中,和
是训练数据中的第i个LR和HR子图像对,F(
;θ)是参数为θ的
的网络输出。所有参数均采用随机梯度下降和标准反向传播的方法进行优化。
3.3与SRCNN的差异:从SRCNN到FSRCNN
为了更好地理解我们是如何加速SRCNN的,我们在三个步骤内将SRCNN-Ex转换为另一个FSRCNN(56,12,4),并显示每一步获得了多少加速度和PSNR增益。我们使用一个有代表性的上升因子n=3。SRCNN、FSRCNN和两种过渡态的网络配置如表1所示。我们还展示了他们在91个图像数据集[10]上训练的性能(集合5上的平均PSNR)。
首先,我们将SRCNN-Ex的最后一个卷积层替换为反卷积层,然后将整个网络对原始LR图像进行处理,计算复杂度与成正比,而不是
。这一步将扩大网络规模,但可实现加速8.7倍(即,57184/58976×
)。由于学习的反卷积核优于单个双三次核,性能大约提高了0.12dB。第二,用收缩层、4个映射层和扩张层的组合来代替单个映射层。总的来说,多了5个层,但参数从58,976减少到17,088。在这步之后,速度显著增加了30.1倍。人们普遍认为,深度是影响性能的关键因素。这里,我们使用四个“窄”层来代替单个“宽”层,从而以更少的参数获得更好的结果(33.01dB)。最后,我们采用较小的滤波器尺寸和较少的滤波器(例如从Conv(9,64,1)到Conv(5,56,1)),并获得41.3倍的速度的提升。该网络被更有效地训练并且实现了另外0.05dB的改进。
值得注意的是,这种加速并不是以性能下降为代价的。相反,FSRCNN(56,12,4)的性能大大优于SRCNN-Ex(例如,在Set5数据集上为0.23dB)。以上分析给出了高性能的主要原因。这是我们的方法与其他CNN加速方法[20,21]的主要区别。然而,在保证良好性能的情况下,更容易与其他加速方法协作,以获得更快的模型。
3.4针对不同升级因素的SR
FSRCNN相对于之前基于学习的方法的另一个优势是FSRCNN可以在不同的扩展因子之间实现快速的训练和测试。具体而言,我们发现所有卷积层在总体上都像是LR图像的一个复杂特征提取器,只有最后一个反卷积层包含了放大因子的信息。实验也证明了这一点,其中对于不同的放大因子,卷积滤波器几乎相同。利用这一性质,我们可以转移卷积滤波器进行快速训练和测试。
在实践中,我们预先训练一个升级因子的模型。然后在训练过程中,我们只对另一个升级因子的反卷积层进行微调,并保持卷积层不变。微调速度快,性能和从头开始训练一样好(见4.4节),在测试过程中,我们执行了一次卷积操作,以及利用对应的反卷积层将图像上采样到不同尺寸。如果我们需要同时应用几个升级因子,这个属性可以实现更快的测试(如图4所示)。
4实验
4.1实验细节
训练数据集:在基于学习的SR方法中,91图像数据集被广泛用作训练集[10,5,1]。由于深度模型通常会从大数据中获益,研究发现91张图像不足以将深度模型推向最佳性能。Yang等人[24]和Schulter等人[7]使用BSD500数据集[25]。但是,BSD500中的图像采用JPEG格式,这对于SR任务来说不是最佳的。因此,我们提供了一个新的General-100数据集,其中包含100个bmp格式的图像(无压缩)。新引入的100个图像的大小范围从710×704(大)到131×112(小)。它们都具有良好的质量,具有清晰的边缘但是较少的平滑区域(例如,天空和海洋),因此非常适合于SR训练。在接下来的实验中,除了使用91图像数据集进行训练之外,我们还将评估General-100数据集和91图像数据集的联合集对训练我们的网络的适用性。为了充分利用数据集,我们还采用了[8]中的数据扩充。我们通过两种方式来扩充数据。1)缩放:每幅图像的缩放倍数分别为0.9、0.8、0.7和0.6。2)旋转:每幅图像的旋转倍数分别为90、180和270。然后我们将有5×4-1=19倍的图像用于训练。
测试和验证数据集:在SRCNN和SCN之后,我们使用Set5[15]、Set14[9]和BSD200[25]数据集进行测试。从BSD500数据集的验证集中选择另外20张图像进行验证。
培训样本:为了准备训练数据,我们首先用所需的比例因子n对原始训练图像进行降采样,形成LR图像。然后将LR训练图像裁剪成一组步幅为k的像素的子图像。相应的HR子图像(大小
)也从真实图像中裁剪出来。这些LR/HR子图像对是主要的训练数据。
对于填充的问题,我们根据经验发现,填充输入或输出映射对最终性能的影响很小。因此,我们根据过滤器的大小,在所有层中采用零填充。这样,就不需要针对不同网络设计改变子图像大小了。另一个影响子图像大小的问题是反卷积层。当我们用Caffe包[27]训练我们的模型时,它的反卷积滤波器将生成大小为的输出,而不是大小为
。因此,我们也在HR子图像上裁剪一个(n−1)像素的边界。最后,对于×2、×3和×4,我们将LR/HR子图像的大小分别设置为
、
和
培训策略:为了与最先进的技术进行公平的比较。(Sec.4.5),我们采用91张图像的数据集进行训练。此外,我们还探讨了一个两步训练策略。首先,我们用91个图像的数据集从头开始训练一个网络。然后,当训练饱和时,我们添加通用100数据集进行微调。使用这种策略,训练比从一开始就使用两个数据集的训练收敛得早得多。
当使用91幅图像数据集进行训练时,卷积层的学习速率设置为,反卷积层的学习速率设置为
。然后在微调期间,各层的学习率都降低了一半。对于初始化,采用[23]中为PReLU设计的方法初始化卷积滤波器的权值。由于我们在最后没有激活函数,反卷积滤波器的初始化方法与SRCNN中相同(即,从一个均值为零、标准差为0.001的高斯分布中随机抽取)。
4.2对不同设置的调查
为了检验FSRCNN结构的性质,我们设计了一组具有不同值的三个敏感变量的控制实验——LR特征维数d、收缩滤波器的数量s和映射深度m。具体来说,我们选择了d=48,56,s=12,16和m=2,3,4,因此我们共进行了2×2×3=12次实验。
在Set5数据集上进行实验的平均PSNR值如表2所示。我们在表中从水平和垂直两个方向分析结果。首先,我们固定d,s并测试m的影响。显然,m=4比m=2和m=3的效果更好。从图5(a)所示的收敛曲线中也可以观察到这一趋势。其次,我们固定m,并测试d和s的影响。一般来说,一个更好的结果通常需要更多的参数(例如,一个更大的d或s),但更多的参数并不总是保证一个更好的结果。这一趋势也反映在图5(b)中,在图5(b)我们可以看到三个最大的网络汇聚在一起。从所有的结果中,我们发现性能和参数之间的最佳权衡——FSRCNN(56,12,4),它在中等参数数量下获得了最高的结果之一。
值得注意的是,最小的网络FSRCNN(48,12,2)的平均PSNR为32.87 dB,已经高于[2]中报道的SRCNN-Ex(32.75dB)。FSRCNN(48,12,2)仅包含8,832个参数,与SRCNN-Ex相比,加速度为57184/8832×9=58.3倍。
4.3使用FSRCNN的实时SR
现在我们想找到一个更简洁的FSRCNN网络,可以实现实时SR,同时仍然保持良好的性能。首先,我们计算有多少参数可以满足实时实现的最低要求(24 fps)。如引言中提到的,SRCNN将图像上采样到760×760的速度为1.32帧/秒。上升因子为3,SRCNN有8032个参数。然后根据公式1和公式2,所需的FSRCNN网络最多应该有8032×1.32/24×3976个参数。为了实现这个目标,我们找到了一个合适的配置——包含3937个参数的FSRCNN(32,5,1)。使用我们的C++测试代码,FSRCNN(32,5,1)的速度达到24.7fps,满足实时要求。此外,FSRCNN(32,5,1)甚至优于SRCNN(9-1-5)[1](见表3和表4)。
4.4对不同尺寸因子进行实验
与需要从头开始针对不同的缩放因子训练网络的现有的方法[1,2]不同,提出的FSRCNN通过转移卷积滤波器具有跨升级因子学习和测试的灵活性(Sec.3.4)。我们将在本节中演示这种灵活性。我们选择FSRCNN(56,12,4)作为默认网络。由于我们在升级因子3下得到了一个训练良好的模型(在第4.2节中),然后我们在×3的基础上对×2的网络进行训练。具体来说,训练良好的模型中所有卷积滤波器的参数传递到×2的网络中。在训练过程中,我们只对×2的91张图像和一般-100个数据集上的反卷积层进行了微调。为了进行比较,我们也为×2训练了另一个网络,但要从头开始。这两个网络的收敛曲线如图6所示。显然,通过传输的参数,网络收敛得非常快(只有几个小时),具有与训练形式相同的良好性能。在接下来的实验中,我们只对×3从头开始训练网络,并对×2和×4的相应的反卷积层进行微调。
4.5与最先进的技术的比较
使用相同的训练集进行比较:首先,我们将我们的方法与四种依赖于外部数据库的最先进的基于学习的SR算法进行了比较,即超分辨率森林(SRF)[7]、SRCNN[1]、SRCNN-Ex[2]和基于稀疏编码的网络(SCN)[8]。这些方法的实现都是基于它们发布的源代码。由于它们是用不同的编程语言编写的,因此对它们的测试时间进行比较可能不公平,但仍然反映了主流趋势。为了在恢复质量上有一个公平的比较,所有的模型都是在增强的91图像数据集上训练的,因此结果与相应的论文中的结果略有不同。我们选择了两个有代表性的FSRCNN网络-FSRCNN(简称FSRCNN(56,12,4))和FSRCNN-s(简称FSRCNN(32,5,1))。在Intel i7 CPU 4.0 GHz上使用C++实现对推理时间进行了测试。表3列出了不同升级因子的定量结果(PSNR和测试时间)。我们首先查看了测试时间,这是我们工作的主要焦点。所提出的FSRCNN无疑是最快的方法,其比SRCNN-Ex、SRF和SCN(具有放大因子3)快至少40倍,而最快的FSRCNN-s可以在几乎所有测试图像上实现实时性能(>24fps)。此外,FSRCNN在PSNR值方面仍然优于以前的方法,特别是对于×2和×3。我们还注意到,FSRCNN在因子4上获得的PSNR略低于SCN。这主要是因为SCN采用了两种×2模型,通过×4在图像上进行采样。我们也尝试了这一策略,并取得了类似的结果。然而,随着我们越来越关注速度,我们仍然呈现出一个单一网络的结果。
使用不同的训练集进行比较(参考文献):对于参考文献,我们还比较了相应论文中展示的最佳PSNR结果,如表4所示。我们还添加了另外两种竞争性方法-KK[28]和A+[5]进行比较。注意,这些结果是使用不同的数据集获得的,并且我们的模型是在91图像和General-100数据集上训练的。从表4中,我们可以看到所提出的FSRCNN在大多数上尺寸因子和数据集上仍然优于其他方法。FSRCNN的重建图像(如图7所示,更多示例可在项目页面上找到)也比其他结果更清晰。在另一方面,小模型(FSRCNN-s和SRCNN)的恢复质量略差于大模型(SRCNN-Ex、SCN和FSRCNN)。在图7中,我们可以在FSRCNN-s和SRCNN的结果中观察到一些“锯齿”或振铃效应。我们还在PSNR、SSIM和IFC[29]方面与更多的SR算法进行了全面比较,这些可以在补充文件中找到。
5结论
在观察当前基于深度学习的SR模型的局限性时,我们探索了一种更有效的网络结构,以在不损失恢复质量的情况下实现高运行速度。我们通过重新设计SRCNN结构来实现这个目标,并实现了超过40倍的最终加速。大量的实验表明,该方法具有令人满意的SR性能,但在运行时间方面更优越。该模型可用于实时视频SR,并为其他低层次视觉任务的快速深度模型。