论文笔记 xUnit: Learning a Spatial Activation Function for Efficient Image Restoration

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27022241/article/details/86018889

                                            论文笔记

xUnit: Learning a Spatial Activation Function for Efficient Image Restoration

论文信息和代码

Abstract

    近些年来,deep neural networks (DNNs)在许多低级视觉任务上达到了史无前例的性能,但是,深网络使得参数量巨大。为了使DNNs可以在资源受限的平台上实现,我们必须削弱性能和效益之间的相关性。

    本文提出一个新的激活单元xUnit,其在图像复原问题上表现较好。不同于目前较流行的逐像素激活单元(per-pixel activation units),例如,ReLU,ELU和 sigmoid,xUnit结合空间相关性实现了一个可学习的非线性函数。 这也使得网络可以获得更多复杂特征,从而可以在保证相同性能的同时,减少网络深度。

    本文通过在一些较流行的用于去噪、去雨和超分辨率(denoising, de-raining, and super resolution)的网络上进行实验来验证xUnit的有效性。

1. Introduction

    网络性能和网络深度之间的强相关性(即只有利用较多计算资源,花费较长的运行时间才能取得较好的性能)使得一些需要在实时、低功率和资源有限的平台(移动设备)上运行的应用不能充分利用CNN的潜能。

    本文提出一种特殊的机制来提高CNN性能,即使得非线性激活函数更有效而不是增加网络深度。

    图1表明本文提出的xUnit使得网络在参数量相同时的PSNR值明显提高。

2. Related Work

    2012年之前,主要的算法依赖于基于最大后验估计(maximum aposterori (MAP) estimation)的生成图像模型(generative image models)。模型一般是手工设计或者从图像中学习得到,包括:priors on derivatives , wavelet coefficients , filter responses , image patches等。

    近几年来,主要基于CNN的生成方法逐渐超过判别式方法,生成方法的网络结构直接学习从退化图像到复原图像的映射,在许多图像复原任务上取得了优异的成果,例如:去噪、去模糊、超分辨率、去雾和去雨。

    一个提高CNN模型性能的典型方法是增加网络深度,该方法同样被应用于低级视觉任务上:

(一)去噪(denoising)

    (1)第一个利用训练深网络CNN去噪,取得了最好的效果。网络参数约有0.5M。

  

     (2)提出了一个比[48]大两倍的网络,通过格式化残差图像来保持结构信息而不是学习干净和含噪图像之间的不同。

    (3)还有一些类似的网络,参数量也很大。

    (4)最近,提出了一个基于残差学习的非常深的网络,其网络深度超过60层,参数量约17M。

   

(二)超分辨率(super-resolution)

    (1)SRCNN:仅有3个卷积层,参数约57K。

    (2)VDSR:20层,参数量660K。

    (3)SRResNet:参数量1.5M。

    (4)EDSR:参数量43M。

降低内存消耗和运行时间的方法:

(一)二值化网络(binarized neural network)

(二) 深度卷积(depth-wise convolution)

3. xUnit 

一、xUnit原理

    尽管存在多种CNN网络结构,但是它们的组成模块类似,即主要由卷积层(convolutional layer)和像素级线性激活单元(per-pixel activation unit)组成。网络第(k+1)层的特征xk+1可以用以下公式计算:

    其中,x0表示网络输入;Wk表示卷积操作;bk是偏差项;zk是卷积层输出;f(.)表示像素级别的非线性激活函数。

    典型的非线性激活函数包括:ReLU,leaky ReLU,ELU,tanh和sigmoid函数。

    注意到在公式(1)中有一个明显分支:卷积操作负责空间处理(spatial processing),激活单元负责非线性(nonlinearity)。那么,对此会有一个疑问:这样分支是否就是在低级视觉任务中实现所需的复杂函数最有效的方式呢?换句话说,为什么不能在激活函数中也实现空间处理呢?

    像素级激活可以看做非线性门函数(nonlinear gating function),特别地,假设所有受欢迎的激活满足f(0)=0,则公式(1)可写为:

    其中,。表示像素级别的Hadamard product;gk是一个多通道的加权映射(weight map):

    其中,0/0认为等于0。

    对于公式(3),当加权图gk与ReLU函数f(.)相关时,gk是一个二值映射(见Figure 2 (a)),表示为:

    本文提出xUnit,使得gk中的每一个元素也依赖于zk对应元素的空间相邻元素。xUnit表示为:

    其中,Hk表示深度卷积(depth-wise convolution)。

    xUint引进三个idea:

    (1)非线性(nonlinearity):ReLU

    (2)空间处理(spatial processing):深度卷积(depth-wise convolution)

        深度卷积对于每个输入通道应用一个滤波器,与常用的多通道卷积相比,更节省内存和计算量。注意到Hk在网络训练中是需要学习的。

    (3)在[0,1]范围内重建门映射:Gaussian

    为了训练稳定,我们在网络中的ReLU层之前和指数(Gaussian)层之前都添加了BN层,详见Figure2 (b)

二、xUnit的优越性

    若仅仅简单使用xUint替换ReLU会导致测试阶段内存和运行时间增加,因为RELU无学习参数,而xUint主要是因为含有卷积操作(指数层可以使用一个查找表来实现look-up table)。更详细地说,若一个xUint输入通道数d,输入通道数d,滤波器大小r*r,则会增加参数量为(r*r+4)*d (深度卷积参数:r*r*d,每个BN层参数:2*d)。但是,相比于每个r*r*d*d的卷积层的参数量r^2*d^2来说,参数量已经较少了。并且,xUint还可以明显提高性能。

(一)xUint在图像去噪中的影响

    Fig.3 表明了xUint在图像去噪中的影响。在此,训练2个简单的网络结构用于去高斯噪声(标准差=25),第1个网络是一个传统的卷积网络(ConvNet),由一系列的Conv+BN+ReLU层组成,第2个网络(xNet)有一系列Conv+xUint层组成。

    两个网络中,普通的卷积层(不包括xUint中的卷积)由64个通道,3*3的滤波器组成。对于xNet,我们试验了不同尺寸(从1*1到9*9)的深度滤波器。利用BSD数据集和残差学习训练网络。

    从Fig.3中可以看出,当xNet深度滤波器大小为1*1时,PSNR值仅比ConvNet略好一点。因为此时,xUints 不是空间上的。当滤波器尺寸增大时,PSNR值明显高于ConvNet的PSNR。例如:一个深度滤波器大小为9*9的Net性能优于9层的ConvNet,并且参数量少于ConvNet的三分之一。

    为了进一步理解使用空间激活时的性能--计算量权衡,在Fig.4中展现了Fig.3中参数量为99,136时的垂直剖面图(vertical cross section)。在传统的ConvNet中,激活参数量为0,性能最差。当激活参数量占比达到22%后,性能趋于稳定,且最优。实际上,当占比达到15%之后,滤波器的提升性能作用就不明显了。

   

(二)xNet性能优越的原理

    Fig.5中展示了输入同一张含噪图片时,ConvNet和xNet第4层的特征图z4,加权(激活)映射g4和它们的乘积x5。

    有趣的是,可以发现xNet的激活映射比ConvNet更接近于1(白色)。因此,在去噪过程中,xNet有更多通道参与进来。而且,可以看到,xNet的加权图是一些复杂的特征函数,而ConvNet是简单的RELU的二值函数。

(三)供选择的xUint设计方案比较

    从Fig.6中可以看出:

   (1)本文提出的设计方案:Batch Norm. (BN),ReLU (RL),Conv. Depth-wise (CD) 和 Gaussian (GS)取得了最好的效果。

    (2)所有的设计方案性能都优于ConvNet,其中CD贡献最大。

    (3)BN+RL+CD的组合方案允许加权映射包含负值,在网络层数较小时性能和本文方法相当,但当层数增大到一定层数时,训练时会出现梯度爆炸。该现象强调了GS的重要性,其可以在训练时保证权值在[0,1]内。

4. Experiments and Applications

4.1 Image Denosing

    使用的基准去噪网络:DnCNN。

    将所有的ReLU层替换为xUint,将层数从19降至7。其余卷积层不变,得到网络xDnCNN,参数量约为DnCNN的54%(xDnCNN:303K;DnCNN:555K)。Table1为试验比较结果。

    

4.2和4.3略

5. Conclusion

    本文证明了CNN可以通过将可学习的空间关系加入到激活单元中来提高性能,虽然这引进了额外的学习参数,但在参数量保持一致的情况下,使用xUint的网络性能优于传统的网络。

猜你喜欢

转载自blog.csdn.net/qq_27022241/article/details/86018889