APP下载

基于MobileNet的轻量级网络构建及其超分辨率图像重建

2019-05-07张焯林曹飞龙

中国计量大学学报 2019年1期
关键词:残差分辨率卷积

张焯林,曹飞龙

(中国计量大学 理学院,浙江 杭州 310018)

自从AlexNet[1]赢得了ILSVRC 2012[2]冠军,卷积神经网络在计算机视觉任务当中的应用越来越普遍,在图像分类、目标检测和图像分割等任务中表现出了巨大的优越性。随着计算机硬件计算能力的提升,为了能够实现更高的准确率,人们尝试训练更深更复杂的网络。但是伴随着模型精度一起提升的是计算量、存储空间以及能耗方面的巨大开销。

在实际应用当中,设备的计算能力和存储空间往往是有限的,如移动、车载设备。过于复杂的神经网络对于这些设备来说都是难以接受的。为了能够让深度网络适应这些设备,先前很多模型小型化工作将焦点放在模型的尺寸上。2015年,Han等人[3]提出了深度压缩方法,该方法利用冗余卷积核剪枝,低精度浮点数保存权值和哈夫曼编码的方法降低网络的存储容量;2016年,Szegedy等人[4]提出Inception v3,尝试对卷积核进行分解,使用1×N和N×1的卷积核代替N×N的卷积核;2016年,Landola等人[5]提出SqueezeNet,采用1×1卷积核对上一层的特征图进行卷积,主要目的是减少特征图的维数。

后来,Sifre等人[6]在深入研究深度可分离卷积之后提出了小型化网络MobileNet[7]。该网络在保证计算精度不变的基础之上,进一步减少了网络的参数量和计算量。而深度可分离卷积的本质是使用深度卷积和逐点卷积将卷积操作分解为冗余信息更少的稀疏化表达。2018年,Howard等人尝试对MobileNet[7]进行改进,提出了MobileNet v2[8],主要利用了线性瓶颈层和颠倒残差对网络进行改进,明显地提升了网络的预测精度。

深度学习在图像超分辨率重建中同样被认为是十分有效的,一些传统方法[9]与之相比已经失去了优势。从超分辨率卷积神经网络(Super resolution convolutional neural network, SRCNN)[10]方法到非常深的卷积网络超分辨率(Very deep convolutional neural networks super-resolution, VDSR)[11]方法,再到增强的深度残差网络超分辨率(Enhanced deep residual networks super-resolution, EDSR)[12-15]方法,重建结果被不断地提高,网络也变得复杂化。也有网络专注于加快重建速度,如高效的亚像素卷积神经网络(Efficient sub-pixel convolutional neural network, ESPCN)[16]方法和快速超分辨率卷积神经网络(Fast super resolution convolutional neural network, FSRCNN)[17]方法,它们直接将未插值的低分辨率图片作为输入,减小特征图的尺寸。在网络的最后,将特征图放大重建成超分辨率图像,从而加快了图像的重建速度。本文中我们尝试将MobileNet[7]运用到ESPCN[16]图像重建当中去,构建一个小型化的卷积网络,以保证重建效果不变甚至有所提升的情况下,进一步减小网络的权值和计算量。同时,我们也尝试将其改进版本MobileNet v2[8]应用到该网络中与其进行对比,结果显示能够进一步提高重建效果。

1 相关工作

1.1 MobileNet

MobileNet[7]的核心层使用了一种称之为深度可分离卷积的操作来替代传统的标准卷积,减少了卷积核的冗余表达。深度可分离卷积[6]可以被分解为深度卷积和卷积核尺寸为1×1的逐点卷积组合。假设输入特征图和输出特征图的通道数量分别为M和N,图1展示了将标准卷积滤波器(a)分解为深度卷积滤波器(b)和逐点卷积滤波器(c)的构成。在计算量和参数数量明显下降之后,卷积网络可以应用在更多的移动端平台。

图1 标准卷积滤波器替换为深度可分离卷积的示意图Figure 1 Sketch map of depth-separable convolution replacing the standard convolution filter

传统的卷积层以一组尺寸为DF×DF×M的特征图F作为输入,产生一组尺寸为DG×DG×N的特征图G作为输出。这里的DF是一张输入方形特征图的宽和高,M是输入通道的数量,DG是方形输出特征图的宽和高,N是输出特征通道的数量。卷积层中的卷积核K包含DK×DK×M×N个参数,这里的DK表示一个方形卷积核的边长。一层步长为1,包含加边的卷积输出可由下式计算:

(1)

其计算量为

DK·DK·M·N·DF·DF。

(2)

标准卷积操作有基于卷积核滤波产生特征图和组合特征图产生新的特征表示的效果。通过使用深度可分离卷积可以将产生和组合步骤被分为两步,分别用深度卷积和逐点卷积代替,从而大大减少计算开销。

其中,每一个输入通道一个滤波器的深度卷积操作可以被写为

(3)

DK×DK×M×DF×DF。

(4)

相对于标准卷积来说深度卷积特别高效,但是它仅仅是对输入通道进行滤波,而没有组合他们产生新的特征。因此,为了产生新的特征,需要使用卷积核尺寸为1×1的卷积层来对深度卷积的输出进行线性组合。深度可分离卷积总的计算开销是

DK×DK×M×DF×DF+N×M×DF×DF。

(5)

通过将卷积操作分解为滤波和组合两步过程,我们可以将计算量减少为

(6)

MobileNet[7]使用滤波器尺寸为3×3的深度可分离卷积,该操作能将卷积的运算量减少8~9倍,同时使预测精度仅有略微的下降。

图2是标准卷积层和深度可分离卷积层的结构示意图,从图中可以看出,MobileNet[7]模型的核心就是将原本标准的卷积操作分解成一个深度卷积和一个逐点卷积操作,从而减少参数量。深度卷积和后面的逐点卷积被当成了两个独立的模块,都在输出结果的部分加入了归一化操作(Batch normalization, BN)[18]和非线性激活单元ReLU[19]函数。这样的组合方式代替传统卷积不仅在理论上会更高效,而且由于大量使用卷积核尺寸为1×1的卷积操作,可以直接使用高度优化的函数库来完成,进一步加快计算速度。

图2 标准卷积层和深度可分离卷积层的结构示意图Figure 2 Sketch map of standard convolutional layer and depth separable convolutional layer

1.2 MobileNet v2[8]

MobileNet v2[8]是在MobileNet[7]的结构之上进行改进,在其中加入了两种基本结构,一种是线性瓶颈层;另外一种是颠倒残差结构。

1.2.1 线性瓶颈

如果将尺寸为w×h×c的一组特征图理解成特征空间上有c个分量的一个特征向量,对于我们的任务有用的特征需要分布在这c维特征空间或其子空间中。显然,要获得更高的精度,这些信息随着网络传播需尽可能保留。

易知,如果一个层变换ReLU(Bx)的结果中有一个非零量S,对于S内部的一个点来自于对输入进行线性变换B,这表明输入空间对应于全维度输出的映射可用线性变换表示。另一方面,采用ReLU激活函数不可避免地导致输入特征信息的流逝。但是当我们有很多维特征,某一特征经过ReLU函数作用之后丢失了,相同的特征可能保留在其他维度。

图3是一个将低维流形嵌入到高维度空间后使用ReLU进行变换操作的例子,最左边的输入二维数据x,相当于有用的信息。首先,通过一个随机矩阵T将其映射到不同的高维空间以后,使用Y=ReLU(wx+b)变换操作,再利用T-1变回到2维空间,右边的图像展示变换后的结果。从中可以看出,映射到维度越高的特征变换后保留的信息就越多。

图3 将低维流形嵌入到高维度空间后使用激活函数ReLU进行变换操作的例子Figure 3 Examples of ReLU transformations of low-dimensional manifolds embedded in higher-dimensional spaces

因此,如果输入当中的有用特征可以被嵌入到激活空间当中非常低维的子空间中,那么ReLU变换能够基本保留有用信息,但是会引入必要的计算复杂度。于是得出如下两个结论。

1)如果有用的流形数据经过激活层以后剩下非零量,ReLU相当于对非零量做了一次非线性变换。

2)只有当有用的特征落在输入空间中的低维子空间时,ReLU函数才能够将输入中有用的特征完整保留。

这两个结论提供了优化神经网络的线索,假设有用的特征是低维的,我们可以尝试在深度卷积后插入线性瓶颈层压缩信息后,仍然能捕获完整信息。原文实验证明使用线性层是关键,因为它能防止非线性化破坏太多的信息。

1.2.2 颠倒残差

这里的颠倒残差也是一种残差结构,通常残差块的结构是用瓶颈层将特征图通道缩减。但这里的颠倒残差模型是使用瓶颈层将特征通道扩增;然后,使用深度卷积层对特征进行变换;最后,再用瓶颈层对特征进行压缩。在颠倒残差中,深度卷积层仅仅是用来完成特征非线性变换,所以残差连接被添加在两个瓶颈层之间。但总体上,该结构当中残差连接的作用仍然和残差块相同,用来加快收敛、防止退化问题。

如果输入特征的通道维度是c,包含了所有有用的信息。该结构首先将特征拓展成t·c个维度(t大于等于1),有用的特征将分布在t·c维空间的子空间当中;然后,通过ReLU激活函数能够保留有用特征;最后,为了防止信息损失,去掉了最后的激活函数,只用线性瓶颈层对特征进行压缩。整体结构如图4。

图4 MobileNet v2结构示意图Figure 4 Sketch map of the MobileNet v2

基本的应用结构可以用表1进行解释。对于一个尺寸为h×w的特征,扩展因子为t,核尺寸为k,输入通道为d1,输出通道为d2。总的计算量为

h·w·d1·t(d1+k2+d2)。

(7)

表1 输入通道为k,输出通道为k′,步长为s,扩展影因子为t的瓶颈残差块的结构

Table 1 Bottleneck residual block transforming fromktok′ channels, with stridek′, and expansion factort

输入操作输出h×w×k1×1卷积,RELUh×w×(tk)h×w×tk3×3深度卷积,RELUhs×ws×(tk)hs×ws×tkLinear,1×1卷积hs×ws×k′

1.3 ESPCN[16]

该超分辨率重建网络直接使用未经插值的低分辨率图像作为输入,在网络的最后对特征图进行扩大形成输出图像。网络前面三层使用了普通的卷积层,在网络的最后使用了亚像素卷积层对特征图像素进行重组后得到重建后的超分辨率图像。如果扩大因子为r,第三层卷积输出的特征图数量为r2,可以通过最后的亚像素卷积层将特征图重组为超分辨率图像。最后的亚像素卷积层可以表示为

ISR=f(ILR)=PS(TL)。

(8)

式(8)中,PS(TL)的本质是一个像素周期性重组操作,将H×W×C·r2的张量重组成rH×rW×C的张量,整个效果图如图5。这个操作可以被如下数学公式描述:

PS(T)x,y,c=T⎣x/r」,⎣y/r」,c·r·mod(y,r)+c·mod(x,r)。

(9)

图5 高效的亚像素卷积神经网络算法流程图Figure 5 Framework of image super resolution using efficient sub-pixel convolutional neural network

2 提出的方法

单图像超分辨率重建的目标是通过一张从高分辨率图像IHR下采样得到的低分辨率图像ILR估计超分辨率图像ISR,这里的下采样操作包括使用高斯滤波器对高分辨率图像IHR进行滤波,然后对卷积后的图像进行比例为r的下采样。文章ESPCN[16]当中,使用了3层卷积神经网络,在网络的最后通过亚像素卷积层重置特征图像素的位置形成最终的超分辨率图像。我们尝试将MobileNet[7]引入到网络中,第一层保持卷积操作不变,将后两层的卷积操作替换为深度可分离卷积操作,但是为了适应图像重建任务,我们将BN[18]略去。深度卷积用如下公式表示:

Tl+1=Wl+1∘Tl=(w1*t1,w2*t2,…,wnl+1*tnl)。

(10)

这里的Wl=(w1,w2,…,wnl)和Tl=(t1,t2,…,tnl)分别表示第l层的卷积核和特征图。于是我们的整个神经网络可用如下公式描述:

f1(ILR;W1,b1)=φ(W1*ILR+b1);

(11)

(12)

ISR=PS(f3)。

(13)

(14)

最后,我们利用Adam[20]算法来优化(14)式中的损失函数。具体的过程如下:假设t时刻,目标函数对于参数的一阶导数是gt,那么我们可以先计算一阶矩和二阶矩估计:

mt=β1mt-1+(1+β1)gt,

(15)

(16)

接下来对两个估计进行矫正计算:

(17)

(18)

最后得到了权值θt的更新方法:

(19)

其中,η为学习速率,β1为一阶矩估计的指数衰减率,β2为二阶矩估计的指数衰减率,ε是非常小的数,其作用是为了防止分母为0。

下文使用MobileNet v2[8]对网络进行进一步改进。因为不同卷积层的特征图数量不一样,无法在瓶颈层之间进行残差连接,所以我们将残差连接移除。同样,我们保留第一层卷积操作不变,仅仅对后面两层进行改进,整个神经网络可用如下公式描述:

f1(ILR;W1,b1)=φ(W1*ILR+b1);

(20)

(21)

ISR=PS(f3)。

(22)

注:为了叙述方便,下文将使用MobileNet[7]进行改进后的网络模型称为MobileNet1,使用MobileNet v2[8]改进后的网络模型称为MobileNet2。

两个网络模型的结构如图6。

图6 提出的图像超分辨率重建算法流程图Figure 6 Framework of our proposal image super resolution

3 实 验

3.1 实验描述

本实验算法在ESPCN[16]的基础上面进行改进,我们将所提的基于MobileNet[7]的亚像素卷积神经网络与ESPCN[16]和三层的超分辨率重建深度网络SRCNN[10]算法进行比较。

本文的图像超分辨率实验都是在Matlab2016a和Python3.6.5下操作,所用处理器为Intel(R)Xeon(R)W-2123 CPU、64GB内存,Tensorflow框架[21]下实现,显卡配置为NVIDIA GeForce GTX 1080。

3.1.1 训练集

3.1.2 测试集

我们使用3个数据集作为测试集,“Set5”和“Set14”是在很多论文中用来测试的数据集,分别包含5张和14张图片,最早由杨建超等人[22]用在ScSr当中。“B100”数据集也被使用,该数据集包含了100张自然图像,最早,由Timoft等人[23]和Yang[24]用在Berkerly语义分割当中。

3.1.3 训练参数

我们把训练低分辨率图像分割成大小为17×17像素的图像补丁,步长为9,高分辨率图像补丁根据扩大因子计算确定。以32个图像补丁对为一组使用Adam[20]进行训练。Adam[20]算法的参数使用默认值(β1=0.9,β2=0.999,ε=10-8),学习速率大小固定为0.000 1。卷积核的大小与ESPCN[16]当中的一样,在MobileNet1中,特征图数量的组合为(64-64-32-32-r),卷积核的大小组合为(5-3-1-3-1)。在MobileNet2当中,特征图数量的组合为(64-64-64-32-64-64-r),卷积核的大小组合为(5-1-3-1-1-3-1),其中r为扩大因子。训练一个模型使用50 000个周期,单个模型训练花费时间1~2 d。

3.2 实验结果

3.2.1 对比实验

ESPCN[16]本身使用的是均方误差(Mean square error, MSE)作为损失函数进行训练,而我们的方法使用了平均绝对值误差(Mean absolute error, MAE)作为损失函数,分别可用l2和l1范代替。为了证明l1范确实对重建效果有提升,我们对比了l1和l2范在测试集“Set5”和“Set14”上面的重建效果。我们对这两者做了对比实验,比较的指标使用峰值信噪比(Peak signal-to-noise ratio, PSNR),重建结果如表2。

表2 两种损失函数的重建结果对比

Table 2 Comparison of the reconstruction results of the two loss functions

MobileNet1_l2MobileNet2_l1MobileNet2_l2MobileNet1_l1Set5×236.5736.7036.5736.77×332.7232.8132.7932.96×430.3330.4330.4730.66Set14×232.3432.4432.3832.50×329.1529.2029.2029.28×427.2027.2627.2827.41

从表2中可以看出,无论MobileNet1还是MobileNet2,使用l1范数作为损失函数的结果在各个数据集上面的表现都要好于l2范数。特别是对于MobileNet2的提升要更为明显,提升幅度基本超过了0.1 dB,在数据集Set5的扩大因子为×2时甚至能够达到0.2 dB。可见我们选择平均绝对值误差作为损失函数是合理的。

3.2.2 与其他方法进行比较

我们比较的方法主要包括SRCNN[10]、ESPCN[16],评价指标为PSNR和结构相似性(Structual similartiy, SSIM)。在表3中,我们列出了在数据集“Set5”、“Set14”和“B100”上面的表现结果。其中,ESPCN[16]算法的结果是使用作者提供的源程序,在91张训练集上重新训练得到模型,然后在测试集上面测试的结果。结果数值均为对应数据集上面各张图片评价指标计算结果的平均值。其中字体加粗代表所有方法中最好的结果,加下划线代表第二好的结果。与表2的结果进行比较可以看出,同样l2是以范数作为损失函数,除了×2的情况下我们的MobileNet1模型比ESPCN[16]重建结果稍差,其他的扩大因子下重建结果都要好于ESPCN[16],特别是在×3的情形下我们的模型要远远好于ESPCN[16]。从表3中我们能够比较得出使用了l1范数作为损失函数以后,MobileNet1的重建效果在各个数据集上面都要好于ESPCN[16]的重建效果。在指标PSNR上面,将模型改进得到的MobileNet2能比MobileNet1提高0.05~0.23 dB。同时,其效果在各个数据集上面也都超过了其他所有对比方法的重建结果。

表3 不同的超分辨率重建算法在数据集上的表现

另外,我们计算出了使用尺寸为240×240的输入图像进行超分辨率重建后,所有对比算法模型的参数数量和计算量,如表4。表4表明MobileNet1的参数数量和计算量都是最少的,且明显少于其他的网络。从参数数量和重建效果对比,在同时使用l2范的情况下,MobileNet1在参数和计算量远远少于SRCNN[10]和ESPCN[16]的情况下,在×3、×4扩大因子下重建效果都要更好,在×2下超过了SRCNN[10]并接近ESPCN[16]。而MobileNet2在增加一定量的参数和计算量但计算量仍然少于ESPCN[16]和SRCNN[10]后能够使重建效果进一步提升。

表4 不同网络的参数数量和计算量比较

为了能够直观地比较各个方法重建图像的效果,我们从每一个测试集当中选择一张图片,将其扩大因子×3的重建效果展示在图7当中。从图像(a),(b)当中来看,我们的两个模型重建的图像相比于SRCNN[10]和ESPCN[16]图案更加地清晰,内部没有多余的黑色斑点。图像(c)当中各个方法的重建结果纹理都出现了融合现象,但是我们提出的方法重建图像的融合程度相比于ESPCN[16]方法要更弱一些。可见,我们的方法不仅在定量的评价标准上面超出了其他的方法,在视觉上面也有一定的优势。

图7 图像超分辨率重建算法视觉对比图Figure 7 Comparison of visual images for image super-resolution reconstruction

4 结 论

本文中,我们在超分辨率重建算法ESPCN[16]中引入MobileNet[6]的网络结构。提出的网络模型MobileNet1大大减少了卷积所需的参数数量和计算量,达到了原来的1/4左右。从实验结果中来看,该算法除了在×2这个扩增因子当中会使重建效果有所下降以外,在其他的尺度上面都能使重建效果有所提升,并且使用l1范之后能使效果更好。当使用MobileNet2改进MobileNet1时,能够在参数量提升不多的情况下,使重建效果进一步提升。在三个数据集上面超过了比较的方法,提升最多能够达到0.23 dB。从视觉效果上来看,我们的方法能够使图案更清晰,有较明显的优势。

猜你喜欢

残差分辨率卷积
基于生成对抗网络的无监督图像超分辨率算法
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于残差学习的自适应无人机目标跟踪算法
卷积神经网络的分析与设计
基于深度卷积的残差三生网络研究与应用
从滤波器理解卷积
原生VS最大那些混淆视听的“分辨率”概念
基于傅里叶域卷积表示的目标跟踪算法