-
文中网络由从粗到精三个尺度的编解码网络构成,每个尺度共享同一套网络参数,如图1所示。输入的模糊图像缩放为64×64、128×128和256×256三种尺寸,分别输入到对应尺度的网络中。每个尺度的输出图像经过上采样后,直接与下一个尺度的模糊图像拼接作为输入。每个尺度下使用三个编码网络块(Encode Block)提取特征和三个解码网络块(Decode Block)恢复图像,其中,建立了两个跳跃连接,避免训练过程中的梯度消失,便于梯度的反向传播,加快训练过程,每个尺度的去模糊过程可以用公式(2)表示:
式中:
$ i $ 为尺度编号,大值对应小尺度;$ I_{ge}^i $ 和$ {h^i} $ 分别为第$ i $ 尺度下的生成图像和循环网络隐藏层输出;$ I_B^i $ 为当前尺度输入的模糊图像;$ G( \cdot ) $ 为单尺度网络的函数表达式。在循环网络的结构中,三个尺度被视为三个时序,通过颈部的长短期记忆(Long-short Term Memory, LSTM)模块连接。大尺度网络中的特征选择性地包含了小尺度网络的特征信息,形成了一种具有记忆能力的网络结构。 -
每个尺度的编码模块包含了一个卷积层、一个线性整流函数(Rectified Linear Unit,ReLU)和一个密集型残差注意力网络块(Residual Dense Attention Block,RDA Block),如图2所示。解码模块与编码模块结构类似,最末端的解码模块中取消了ReLU层。每个编、解码模块的尺寸参数如图1所示。非特殊标注,网络中所有卷积层使用的卷积核均为5×5,使其在不显著增加网络参数的前提下尽可能扩大感受野。
Figure 2. Encode,decode block. (a) Encode block; (b) Decode block; (c) End decode block; (d) Residual dense attention block
编、解码网络块中使用深度可分离卷积[14]替代常规卷积,先对每个通道分别执行卷积,再通过逐点卷积将其混合输出。若用
$ a $ 表示卷积核边长,单层卷积操作的参数量将降低为常规卷积的约$ 1/{a^2} $ 。深度可分离卷积层更加侧重于提取空间特征。在运动模糊去除任务中,图像空间特征之间是高度相关的,而对于通道特征而言则相对独立,因此,使用深度可分离卷积将减少参数数量,降低计算量,同时避免了特征的大量丢失。在图像去模糊任务中,一张图像的不同区域可能存在不同程度的模糊,在网络中嵌入注意力机制能有效地将计算资源更多地倾向于模糊区域,减少在其他区域的消耗。文中在每个编、解码模块中嵌入了改进的卷积注意力模块(Convolutional Block Attention Module, CBAM)[15]。CBAM由通道注意力模块(Channel Attention Module)和空间注意力模块(Spatial Attention Module)两个子模块拼接而成。通道注意力旨在建模出不同通道之间的相关性,通过网络学习自动获取每个通道的重要程度并分别赋予各自的权重,从而强化重要的特征。空间注意力旨在提升关键区域的特征表达,将原始图片中的空间信息通过空间转换模块,变换到另一个空间中并保留关键信息,为每个位置生成权重掩膜并加权输出,从而增强感兴趣的特定目标区域,同时弱化不相关的背景区域。通道注意力将一个通道内的信息直接进行全局处理,容易忽略空间上的信息交互。空间注意力模块将每个通道内的特征做同等处理,忽略了通道间的信息交互。
参考文献[15]中提出的注意力子模块如图3(a)、(b)所示。通道注意力子模块将输入特征沿W、H方向上分别通过最大池化(Max Pooling)和平均池化(AveragePooling)进行尺度压缩,共享一个多层感知机(Multi-layer perceptron, MLP)后相加,经过sigmoid激活函数后输出一个
$ 1 \times 1 \times C $ 的向量,即代表了每个通道对应的权值。空间注意力子模块沿通道方向对输入特征分别执行最大池化和平均池化,并在通道维度拼接特征,通过一个7×7卷积操作和sigmoid激活函数输出一个$ W \times H \times 1 $ 的二维空间权值矩阵。Figure 3. (a), (b) Convolutional block attention submodule[15]; (c) Improved CBAM (CBAM-J)
参考文献[15]中提出了3种拼接方式:两子模块先后串联和并联,如图4所示。在实验中发现其对于去模糊模型性能的提升非常有限,甚至可能抑制模型自身性能。根据图像降质公式(1),图像运动模糊的产生是空间上的像素点与卷积核进行卷积后产生的结果,而在不同的RGB通道之间并未产生相互影响,所以,原始图像的空间特征相比于通道特征会更加重要。因此,在每个注意力模块中将原始特征优先输入空间注意力子模块中,并将空间注意力子模块的输出跳跃连接至通道注意力模块后以增强其表达。改进的CBAM模块(用CBAM-J表示)如图3(c)所示,在空间子模块和通道子模块串联的基础上将空间子模块输出直接跳跃连接至注意力模块整体的末端。经过实验,CBAM-J注意力模块能在图像去模糊任务中取得最大的提升效果。
Figure 4. CBAM connection modes in literature[15]
表1所示为参考文献[15]中3种子模块连接方式和文中提出的CBAM-J。
$ x $ 为输入特征,$ y $ 为整体输出,$ S( \cdot ) $ 和$ C( \cdot ) $ 分别为空间注意力子模块和通道注意力子模块的函数表达式。可以发现:CBAM-J是在“Spatial+Channel”的基础上增加了一个跳跃连接$ x \cdot S(x) $ ,反映了加强空间注意力表达的意图。考虑到在特征隐藏层中通道和空间的关系更加复杂,不适合将空间和通道注意力完全分离,所以与“Spatial// Channel”相比,CBAM-J中通道注意力子模块的输入为$ x \cdot S(x) $ ,未直接使用原始特征$ x $ 。CBAM connections Output (y) Proposed(CBAM-J) $ x \cdot S(x) \cdot \left( {1+C\left( {x \cdot S(x)} \right)} \right) $ Channel+Spatial $ x \cdot C(x) \cdot S\left( {x \cdot C(x)} \right) $ Spatial+Channel $ x \cdot S(x) \cdot C\left( {x \cdot S(x)} \right) $ Spatial // Channel $ x \cdot S(x)+x \cdot C(x) $ Table 1. Connection modes of CBAM
此文对参考文献[16]提出的残差块进行了改进:包含了1个注意力模块、3个密集型连接的卷积层和1个1×1的卷积层,如图2(d)所示。不同于通过简单的加深网络层数或拓展单层网络的宽度,密集型残差注意力网络通过特征重用来提高参数的利用率。每个密集连接的卷积层的输入特征都直接由前几层卷积的输出直接拼接而成。如果用
$ x $ 、$ y $ 表示输入输出,密集型残差注意力模块可以表示为:式中:
$ Att( \cdot ) $ 表示CBAM-J;$ conv1\_1( \cdot ) $ 为最后一个$ 1 \times 1 $ 卷积层,用于密集型特征的降维;$ F $ 是密集型残差块的输出,若使用$ \oplus $ 表示特征张量的拼接,$ F $ 可以表示为:在一定的范围内,密集型连接卷积层的数量越多,特征提取的效果往往越好,但过多的密集型连接会导致残差块中特征通道数和网络参数数量快速上升,网络训练将消耗更大的算力,同时整个网络的运行速度将大幅降低。为了平衡网络能力和运行速度,在密集型残差块中使用3个密集型连接的卷积层。
在每一个编、解码模块中使用密集型残差块可以最大程度地利用同一维度下每一个卷积层的特征信息,缓解了梯度消失,增强了特征的传播,相对于3个卷积层的直接连接,在不显著增加参数量的情况下,提高了特征的利用效率,提升了网络的性能。
-
文中方法使用的损失函数表达式如下所示:
式中:
$ {L_c} $ 为内容损失;$ {L_p} $ 为感知损失;$ \alpha $ 为常数系数。经过实验测试,$ \alpha $ 取值为0.05时,整体损失函数对于训练的优化效果最佳。内容损失
$ {L_c} $ 对网络每一个尺度的清晰图像和生成图像计算像素平均欧氏距离并进行多尺度间的累加,在像素层面的相似程度上对于网络进行优化,表达式如下:式中:
$ N $ 为尺度总数;$ {W_i} $ 、$ {H_i} $ 为第$ i $ 尺度的维度;$ I_{gt}^i $ 和$ I_{ge}^i $ 分别为第$ i $ 尺度下的真实清晰图像和生成图像。文中尝试将图像对输入ImageNet数据集预训练好的VGG-19网络,取第七层的输出特征图计算欧式距离作为内容损失的补充项,实验发现对于网络的训练基本无提升,因此,仅使用公式(7)用于计算内容损失。图像去模糊任务的一个定性指标为生成的图像具有清晰的边缘。公式(7)表示的内容损失不会对图像边缘锐化进行特别处理。借鉴Qi等人[13]的思想,文中在尺度256×256下,将生成图像和真实清晰图像转化为灰度图,再利用Sobel算子分别计算两张图像水平和垂直方向上的导数,构成的损失函数表达式如下:
式中:
$ W $ 和$ H $ 为尺度256×256的图像维度;$ {\nabla _x} $ 、$ {\nabla _y} $ 为水平和垂直方向上的图像梯度算子。使用内容损失和边缘感知损失的线性组合作为文中网络的损失函数可以在优化图像像素相似度的基础上,进一步生成清晰的边缘,提升图像模糊去除的效果。 -
在图像运动模糊去除领域最常用的3个数据集是:GoPro数据集[8]、Lai数据集[17]和Köhler数据集[18]。GoPro数据集包含了3214对分辨率为1280×720的“模糊——清晰”图像。它对采集帧率为240FPS的一系列连续图像每7~13帧进行叠加平均,并与中间帧对应形成图像对。GoPro数据集包含一个训练集和一个测试集,分别有2103对和1111对图像,测试集和训练集的场景不重复、不重叠。Lai数据集有100张图片记录了真实的运动模糊,可以用于衡量去模糊算法在真实图像上的作用效果。Lai等人用4种模糊核对于25张真实清晰图片进行处理,生成100张模糊图像。Köhler数据集在六自由度下记录相机的轨迹构建12个模糊核,分别施加在4张清晰图像上,是评价图像盲去模糊的基准数据集。
由于GoPro数据集包含丰富的场景,且较为真实地模拟出模糊的产生过程,其被广泛应用于去模糊网络的“端到端”训练和测试中。文中采用GoPro训练集进行训练,使用GoPro测试集、Lai数据集和Köhler数据集进行测试和指标评价。
-
文中网络是在运行环境为Ubuntu 18.04操作系统和TensorFlow框架上搭建的。实验所用台式机使用了1块AMD(R)Ryzen5 3600x 6-core 3.80 GHz CPU和1块NVIDIA GeForce RTX 3070 8G GPU。网络将图像对随机裁剪为256×256大小输入网络,训练中使用Adam优化器,其超参数设定值
$ {\;\beta _1} = 0.9 $ ,$ {\;\beta _2} = 0.999 $ ,初始学习率为$ 1 \times {10^{ - 4}} $ ,线性下降至0,Batch size取为4,共训练2000个epoch大约192小时至收敛。 -
对于网络生成的去模糊图像,需要将其与对应的清晰图像进行对比,定量评价模糊去除方法的效果。结构相似性(Structural Similarity,SSIM)是基于两张图像的亮度、对比度和结构衡量。两张图像相似程度越高,SSIM值越接近1。峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)是一个与两张图像像素的均方误差有关的评价指标,其值越大表示在像素层面上两张图片越相似。若给定
$ W \times H $ 的清晰图像$ {I_{{\rm{gt}}}} $ 和去模糊图像$ {I_{{\rm{ge}}}} $ ,$ MAX $ 为可能的最大像素值(8 bit图像为255),PSNR可以表示为:文中将使用SSIM和PSNR衡量测试集生成的去模糊图像与对应清晰图像的相似程度,进而定量评价网络的去模糊效果。
-
为了验证文中方法的有效性和鲁棒性,文中以网络在GoPro测试集、Lai数据集和Köhler数据集的平均SSIM和平均PSNR作为定量评价指标,与模糊去除的典型方法DeblurGAN[9]、DeblurGAN-v2[11]和SRNdeblur net[10]进行定量比较。其中DeblurGAN-v2使用了其官方提供的两种主干网络:Inception和MobileNet,分别代表其最佳的去模糊效果和最快的网络运行时间,实验结果如表2所示。
Method GoPro Lai Köhler SSIM PSNR/dB SSIM PSNR/dB SSIM PSNR/dB Proposed method 0.9185 29.0284 0.6674 16.5491 0.7625 19.9943 DeblurGAN 0.8474 25.0200 0.6425 15.8905 0.7447 19.7570 DeblurGAN-v2(Inception) 0.9141 28.2701 0.6514 16.1121 0.7469 19.4994 DeblurGAN-v2(MobileNet) 0.8731 25.9644 0.6598 16.4073 0.7556 19.7882 SRN deblur net 0.9331 30.1513 0.6494 16.1000 0.7505 19.5238 Table 2. Deblurring evaluation results on three datasets
从表中数据可知,文中方法在Lai数据集和Köhler数据集上取得了最佳的SSIM和PSNR,较原网络SRN deblur net分别提升约0.0180、0.4491 dB和0.012、0.4705 dB,在GoPro测试集上接近SRN deblur net,但仍然有0.0146和1.1229 dB的差距。网络训练使用GoPro训练集,而文中方法在其他数据集上取得更佳结果,证明文中方法具有良好的鲁棒性和泛化性能。图4中,(a)为输入的模糊图像,(b)~(f)为各方法对GoPro测试集中的图像进行模糊去除的结果。基于GAN的DeblurGAN对于模糊图像的复原效果十分有限,其改进的DeblurGAN-v2在使用MobileNet作为主干网络时图像存在较大的失真,图像边缘不能很好的恢复。在使用Inception作为主干网络时,DeblurGAN-v2能取得较好的去模糊效果,但仍然存在边缘粘连的情况。从直观角度来看,文中方法与原网络SRN deblur net对模糊车牌的复原效果较接近,都在一定程度上消除了竖直方向上的模糊,恢复出了较为清晰的边缘。
为了测试文中方法在真实运动模糊场景下的泛化性能,文中用Lai数据集中的100张真实模糊进行了测试,并与几种典型方法进行了对比。图5中,(a)为输入的模糊图像,(b)~(f)代表各典型方法的去模糊效果。如图5所示,在真实模糊数据集中,几种典型方法都有一定的去模糊效果,但存在振铃现象(图5(c))、边缘模糊(图5(e))等问题。如图6所示,文中方法生成的图像较其他方法具有较为清晰的边缘,验证了边缘损失函数对于网络性能的优化作用。
图像运动模糊去除方法不仅要求其有良好的复原效果,而且需要算法具有较好的实时性。文中在GoPro测试集上对运动模糊去除算法的复杂度、模型文件大小和平均单帧运行时间进行了测算,结果如表3所示。为了控制变量,其他典型方法的运行设备均与文中方法一致。
Method FLOPs/G Size/MB Time/s Proposed method 261.19 12.3 0.206 DeblurGAN 678.29 45.6 0.694 DeblurGAN-v2(Inception) 411.34 244.7 0.212 DeblurGAN-v2(MobileNet) 43.75 13.6 0.068 SRN deblur net 1434.82 78.7 0.501 Table 3. Number of parameters & execution time per frame
由于将常规卷积层替换为深度可分离卷积,文中网络的参数数量较原网络大幅下降。与其他方法比较,文中的模型文件最小,由于3个尺度共享参数,浮点运算数(Floating point operations, FLOPs)和单帧运行时间较运行最快的DebluGAN-v2 (MobileNet)略多。文中方法单帧运行时间相比于同类方法SRN deblur net缩减了近60%。结合表1中的去模糊评价指标,由于在不同尺度的网络中进行参数共享和强调特征的重用,加之使用注意力模块进行计算资源的合理分配,实验结果证明:文中方法使用最少的参数,取得了几种典型方法中的最佳去模糊效果,同时,运行时间相比同类方法缩减明显。
Multi-scale recurrent attention network for image motion deblurring
doi: 10.3788/IRLA20210605
- Received Date: 2021-08-10
- Rev Recd Date: 2021-10-15
- Publish Date: 2022-07-05
-
Key words:
- multi-scale recurrent network /
- attention mechanism /
- residual dense block /
- edge loss
Abstract: In image acquisition process, the image blur caused by the moving subject or the camera itself will have a negative impact on the subsequent high-level vision tasks. Aiming at the problem that the current deep learning image deblurring method cannot balance the deblurring effect and efficiency, a multi-scale recurrent attention network was proposed, which used separable convolution to reduce the amount of parameters, and improved the attention module to allocate computing resources reasonably. Layers were used for dense connection to improve parameter utilization efficiency, and edge loss was introduced to improve the edge detail information in the generated image. Experiments prove that the proposed method has good generalization performance and robustness. Compared with the typical methods in recent years, the SSIM and PSNR have increased by about 1.15%, 0.86% and 0.91%, 1.04% on the Lai dataset and Köhler dataset, respectively. The average single frame running speed on the GoPro dataset is nearly 2.5 times faster than similar methods.