基于多尺度网络的运动模糊图像复原算法

2022-09-25 08:42魏海云郑茜颖俞金玲
计算机应用 2022年9期
关键词:卷积复原尺度

魏海云,郑茜颖,俞金玲

(福州大学物理与信息工程学院,福州 350108)

0 引言

使用相机或手机拍摄照片时,由于技术限制,得到的不会是单一时间的即时图像,表现出来的应该是一段时间内的场景,所以在相机曝光的这段时间里,如果该场景中的人或物体产生了移动或者相机发生了抖动或者景深产生了变化等,都会导致之前采集到的像素点发生变化,也就是说在得到的图片中,任何沿着相机相对方向运动的物体将会看起来模糊或被晃动,这就是运动模糊,也称为动态模糊。这种情况在生活中经常会碰到,例如跟拍奔跑中的运动员、在高速运行的动车上拍摄窗外景物等都很可能获得运动模糊的图像,因此,模糊图像的复原被广泛用于生产生活、工业制造、天文观测、医学影像等领域,对运动模糊图像复原的研究具有重要价值。

模糊图像复原根据模糊核是否已知分为盲去模糊和非盲去模糊。非盲去模糊的早期复原方法[1-8]通过应用各种约束条件,引入图像先验知识来表征图像模糊,但是实际中非均匀运动模糊情况大都是无法预估的,因此这些方法在实际应用中的效果并不好。

由于深度学习能够提取图像特征,被广泛应用到计算机视觉领域,并取得很好的结果。Sun 等[9]利用卷积神经网络(Convolutional Neural Network,CNN)估计模糊核;Schuler等[10]以由粗到细的方式堆叠多个CNN 以模拟迭代优化来预测频域中的反卷积核。这类方法虽然在实验中得到恢复的清晰图像,但是因为简化了实际情况中复杂的模糊情况,且没有真实的模糊-清晰图像对用于监督学习,因此实际应用效果并不好。通常使用自定义的、由清晰图像卷积模糊核而生成的图像来进行训练,导致得到的模型仅能处理空间均匀或几种特定类型的模糊,限制了模型处理真实模糊图像的能力。

Nah 等[11]提出一种多尺度卷积网络方法用于动态场景去模糊;Kupyn 等[12]使用基于生成对抗网 络(Generative Adversarial Network,GAN)和内容损失的方法复原运动模糊图像,可以有效去除单幅图像运动模糊。除此之外,很多改进的网络[13-16]不需要估计模糊核,采用端到端的结构,直接得到清晰图像,从而简化了模糊复原任务的工作。虽然这些方法都能在一定程度上对非均匀运动模糊图像进行复原,但是这些方法的网络结构比较复杂、参数量多,因此计算量较大、网络训练耗时长,且实际情况下的复原图像在细节方面并不理想。

为了解决这些问题,本文提出一种基于残差注意力模块[17]和卷积门控循环模块(Convolution Gated Recurrent Unit,ConvGRU)的多尺度网络模糊图像复原算法。本文主要工作如下:

1)使用融合了注意力机制的残差块作为基本单元,编码端使用引入了注意力机制的残差块,放大了卷积神经网络结构的优点,提高了网络收敛速度,产生了很大的感受野。

2)在编码解码中间加入ConvGRU 模块,通过对编码部分提取的特征图进行处理,获取图像空间信息,把有用的隐藏历史信息给提取出来,从而利用图像空间的连续性来进行模糊图像复原。

3)感知损失[18]和L2 范数损失组成的混合损失函数训练的网络让输出更接近真实结果,可以进一步提升网络性能。

1 本文方法及模型

本文采用的是由粗到细多尺度网络来对非均匀运动模糊图像进行复原,网络一共包括3 个尺度,除了输入图片的尺寸大小不同外,每个尺度的网络结构都一样,如图1 所示,在每一个尺度上都使用了相同的非对称编解码网络,从第一级输入开始,编码端有4 个卷积模块,每个模块中包含了3 个步长为2、卷积核为5 的卷积层。解码端将得到的输出再进行上采样作为下一级网络的输入。因为多尺度网络结构大,会增加训练难度,使用跨尺度共享权重来减少参数量,且在编码端输出也增加了空间金字塔池化层(Spatial Pyramid Pooling layer,SPP)[19],使得网络的训练速度大幅提高。

图1 非对称编解码网络Fig.1 Asymmetric encoder-decoder network

1.1 非对称的编解码网络

常规的编解码网络包括编码部分和解码部分,网络基本都是对称式结构,编码部分的主要任务是通过下采样从模糊图像中提取主要特征,解码部分再通过上采样得到输出的结果。

为了使提取的特征更加精确,本文采用不完全对称的多尺度编解码网络。在编码部分使用引入了注意力机制的残差块(Residual Attention Block,RAB)[20],如图2 所示,在RAB模块中包含了通道注意力和空间注意力模块,这两个模块的排列有级联或者并行两种方式,因为已经有实验测试表明级联排列的网络训练得到的结果会更好,且通道注意力模块在前的结果会略优。对于RAB 模块,给定F作为输入的特征图,就可以依次计算得到一维通道注意力图MC和二维空间注意力图MS,计算过程如下所示:

图2 残差注意力模块Fig.2 Residual attention block

其中:⊗表示矩阵中对应的元素相乘,F″表示最终精细的输出特征图。除了引入注意力机制来增强对输入图像特征的提取之外,本文对残差模块也进行了修剪和优化,去除了归一化层和最后一层激活层,这样可以让网络在训练过程中提高收敛速度。为了优化特征提取,增加感受野,在编码端特征提取后还增加了SPP 层,这样不仅能提高任务精度,还可以加快网络收敛。

1.2 卷积门控循环模块

图像在空间上具有连续性,即使是已经发生变形的模糊图像,其每个点的像素分布与周围像素点之间也是有着连续性的关系,因此可以通过获取图像空间信息来对模糊图像进行恢复。门控循环单元(Gated Recurrent Unit,GRU)是对循环神经网络(Rerrent Neural Network,RNN)的改进,解决其在反向传播期间可能会梯度消失的问题,将卷积神经网络与GRU 相结合,希望通过将能够抽取空间特征的卷积操作加入能够抽取时序特征的GRU 网络中,在编码端和解码端之间插入ConvGRU 模块,通过该模块对编码部分提取的特征图进行处理,获取图像空间信息,把有用的隐藏历史信息给提取出来。本文采用多尺度架构,每一层都具有相同的网络结构,整个网络ConvGRU 之间的连接方式如图3 所示。

图3 ConvGRU模块连接方式Fig.3 Connection mode of ConvGRU modules

图3 中s1、s2、s3 分别表示由粗到细3 个不同尺度的网络,相邻两个尺度之间差0.5 倍,一个ConvGRU 块包括输入xt、输出yt,从上一个ConvGRU 块得到ht-1和当前块隐藏状态ht。该模块的网络状态表示为:

其中:↑表示往上一层网络输出;t表示尺度规模,t=1 代表最粗的尺度,表示从第t到第t+1 级网络的比例调整;隐藏状态ht可能包含有关中间结果和模糊模式的有用信息。这些信息被传递到下一个尺度,有利于精细尺度问题。

1.3 损失函数

为了更好地训练网络,采用由L2 损失和感知损失共同组成的损失函数,因为L2 损失鲁棒性更好,L2 损失可以表示为:

感知损失与一般使用的损失函数不同,是利用从预训练的深度神经网络提取多尺度特征来量化估计图像和真实图像之间的视觉差异。在本文中,使用在ImageNet 上预先训练的VGG16 作为损失网络,并从前3 个阶段的最后一层提取特征,感知损失定义为:

总的损失函数是结合了L2 损失和感知损失得到的,表示为:

其中:α是为了调整损失函数相对权重的参数,本文设置为0.05。

2 实验结果及分析

为了更好地验证本文所提算法的效果,使用了两组数据集来进行训练,包括在非均匀运动模糊复原中最常用的GoPro 模糊数据集,以及用各种手持设备,包括手机、相机等拍摄的视频,并通过积累一些短曝光来综合创建的Blur 数据集[21],在多次训练得到理想的实验结果后,还进行了一系列对比测试,选择的评价指标有峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)、结构相似性(Structural SIMilarity,SSIM)和复原时间,PSNR 和SSIM 的值越高,表明复原效果越好。此外为了验证所提算法对真实模糊图像是否也具有很好的复原效果,还使用手机拍摄了一系列模糊图像,用于进行定性分析。

2.1 实验参数设置

实验是在配有Nvidia GeForce GTX1080Ti GPU,16 GB 内存,CPU为Inter Core i5,操作系统为Ubuntu16.04的PC上进行的,使用的是基于pytorch的深度学习框架来训练和测试,为了结果的公平性,所有实验都是在相同训练配置环境的同一数据集上进行。因为内存限制,训练过程中的批大小设置为4,学习率初始值设置为1 × 10-4,每200 个epoch 降低一半,使用Adam优化器,总的训练周期为1 000,网络收敛结果较好。

这个网络是端到端可训练的,不需要对子模块进行预训练。训练过程中首先将输入图像随机裁剪为256×256,并且随机进行90°、180°或270°旋转,以防止网络会过拟合。该网络包含了3 个尺度的编解码网络,由粗到细每个尺度输入图像尺寸分别为64×64、128×128、256×256,最终输出复原后的图像尺寸与输入保持一致,训练和测试采用的图片分辨率都是1 280×720。

2.2 数据集设置

深度学习需要大量数据用于训练网络,在模糊复原领域,则需要大量模糊-清晰图像对来进行训练,但是在现实生活中很难获取到成对的模糊和清晰图像,早期数据集获取方式主要是通过将清晰图像与模糊核进行卷积来合成模糊图像,这样虽然可以获得足够大的数据集,但是因为模糊核单一,训练的网络只能对特定类型的模糊图像进行恢复,不能很好地对真实模糊图像进行复原,因此,数据集的选择非常重要。

为了得到更准确的结果,本文使用了两组数据集来对网络进行训练和测试:一个是常用的GoPro 数据集,该数据集的模糊图像是通过GoPro 摄像机从若干张清晰帧图像中求平均得到的,每一张模糊图像对应的清晰图像为中间帧,共包含了3 214 对模糊-清晰图像对,其中2 103 对用作训练集,另外1 111 对用作测试集;另外一组Blur数据集是利用各种手持设备,包括手机、相机等拍摄的71 个视频,并通过积累一些短曝光来综合创建的,以近似更长的曝光,共包含6 708 个图像对,其中4 472 对用作训练集,另外2 236 对用于测试集。

2.3 实验结果

2.3.1 注意力机制对实验结果的影响

融合了注意力机制的残差块是所提算法的基本单元,为了验证注意力机制对实验结果的影响,设计了两组对比实验来进行验证,一组是本文算法,另外一组是去除了残差块中注意力机制的算法。两组实验都在同样环境下进行训练,实验参数设置都一样,且使用的数据集都是GoPro,实验结果对比采用的指标是PSNR 和SSIM,结果如表1 所示。

表1 注意力机制对实验结果的影响Tab.1 Influence of attention mechanism on experimental results

从结果中可以看出,本文算法的PSNR 和SSIM 比无注意力机制的算法分别高3.24 dB 和0.029 3,这是因为RAB 模块中使用的空间注意力和通道注意力对于图片特征提取的效果会更好,卷积操作在每一层获得的感受野十分有限,通过引入注意力机制可以增大感受野。

2.3.2 ConvGRU模块对实验结果的影响

ConvGRU 位于编码端和解码端中间,编码端输出的特征进入到该模块中,可以通过获取特征的隐藏历史信息来对模糊图像进行复原,然后再将结果输入到解码端进行处理;而且该模块优化了网络结构,参数量更少,加快了训练速度。为了验证ConvGRU 对实验结果的影响,也进行了两组对比实验:一组是本文算法,另外一组是无ConvGRU 的算法,使用了基本模块RAB 代替了ConvGRU,两组实验都在同样环境下进行训练,实验参数设置都是一样的,且使用的数据集都是GoPro,实验结果对比采用的指标是参数量、复原时间、PSNR 和SSIM,结果如表2 所示。

表2 ConvGRU模块对实验结果的影响Tab.2 Influence of ConvGRU module on experimental results

从表2 中可以看出,本文算法参数量更少,PSNR 和SSIM比无ConvGRU 的算法分别高1.96 dB 和0.013 9,复原时间少0.118 1 s,由此可见,该模块对于网络性能的提升效果较好。

2.3.3 感知损失对实验结果的影响

感知损失是将真实图片卷积得到的特征图与生成图片卷积得到的特征图作比较,使得全局结构更接近。感知损失函数可以增强图片细节,因为感知损失的权重会影响图片复原质量。

为了验证感知损失函数对实验结果的影响,本文进行了对比实验,包括只有L2 损失函数,以及L2 损失函数和感知损失函数共同组成的混合损失函数,两组实验都在相同硬件环境下进行训练,实验参数设置都一样,且使用的数据集都是GoPro,训练轮次都为1 000,图4、5 分别表示只有L2 损失函数的训练过程和混合损失函数的训练过程。

图4 L2损失函数的训练过程Fig.4 Training process of L2 loss function

从图4、5 中可以看出,虽然图5(a)中的均方误差(Mean Square Error,MSE)一开始下降速度没有图4(a)的快,但最终得到的值更小;PSNR 类似,一开始上升速度稍慢,但最终稳定后,得到的值更大。这表明,感知损失的加入使得训练结果更加精细,得到的图像也与原图更加接近。

图5 混合损失函数的训练过程Fig.5 Training process of mixed loss function

2.3.4 本文算法与主流算法对比

为了测试实验结果,对所提算法进行全面的比较和性能评估。选择的对比方法包括:Gupta 等[22]提出的传统盲去模糊算法[22]、Sun 等[9]提出的非均匀运动模糊去除卷积神经网络(CNN)、去模糊效果很好的尺度递归网络(Scale-Recurrent Network,SRN)[23]和用于图像去模糊的深度层次化多patch网 络(Deep Stacked Hierarchical Multi-patch Network,DMPHN)[24]。图6 为在GoPro 数据集上测试的结果。从图6中可以明显看出传统算法盲去模糊效果并不是很好,这是因为在非均匀动态场景中的模糊核很复杂,传统算法在反卷积时利用的是施加各种约束条件所得到的模糊核,因此这样并不能得到效果很好的模糊复原图像。深度学习算法因为采用端到端的网络,且经过了大量数据的训练,所以都在一定程度上达到了去模糊效果。从图6 中可以看出,本文算法跟其他几种算法相比,对模糊图像的细节复原效果更好。

图6 几种算法在GoPro数据集上的测试结果对比Fig.6 Test results comparison of several algorithms on GoPro dataset

图7 为在Blur 数据集上测试结果,传统算法对于非均匀运动模糊图像的复原效果依旧不好。对于深度学习算法,在第一行的图片中,可以看出SRN 算法对于非均匀运动模糊图像复原的高频部分效果不好,出现了明显振铃现象,甚至恢复出原来并不存在的线条,而本文算法复原的图像没有明显的模糊边缘,纹理也很清晰。

图7 几种算法在Blur数据集的上测试结果对比Fig.7 Test results comparison of several algorithms on Blur dataset

实验中使用GoPro 数据集图像是将从高速摄像机获取的图像合成得到的,而Blur 数据集也是通过积累短曝光手持设备所拍摄的视频来综合创建的,因此都与实际模糊图像有一些差别。为了验证本文算法对于真实模糊图像复原效果,使用手机拍摄了一组模糊图像,通过在按动快门的同时把手机向各个方向快速移动得到;然后对这组模糊图像进行复原效果测试,选择SRN 算法进行对比,因为该算法对真实模糊图像复原效果很好。

测试对比结果如图8 所示,在图8(a)第1 张图片中,可以发现帽子上的字母显示模糊,在图8(b)SRN 复原和图8(c)本文算法复原的结果图中,都能明显看出字母为“NEAS”,但是对于键盘旁边的“铅笔”,第3 张图中笔的亮度更高,轮廓也更加清晰一些,可以看出本文算法对于模糊图像边缘与细节纹理方面的复原效果更好。

图8 真实模糊图像复原结果对比Fig.8 Restoration results comparison of real blurred image

在GoPro 数据集和Blur 数据集上对这几种方法在相同的硬件环境下进行定量比较,选择的评价指标包括PSNR、SSIM 和复原时间,测试结果如表3 所示。

表3 所提算法与其他算法的对比结果Tab.3 Comparison results of the proposed algorithm and other algorithms

定量测试结果表明,相较于目前去模糊效果良好的算法,本文方法有一定提升,尤其是在与真实图像更接近的GoPro 数据集上,与较新的DMPHN 算法相比,PSNR 提升了1.22 dB,SSIM 提升了0.018 6,复原时间缩短了0.221 0 s,而在利用模糊核生成的Blur 数据集上的表现就没有那么好,可能是因为利用网络模拟生成的模糊图像丢失了一部分细节信息,导致在图像复原中无法提取出更精细的特征。

3 结语

针对非均匀运动模糊的模糊源多样性,以及边缘和细节方面不足的问题,本文提出一种基于多尺度端到端的运动模糊图像复原算法。首先,在每一尺度采用相同的非对称编码解码网络,在编码端使用引入了注意力机制的残差块,会放大卷积神经网络结构的优点,增加感受野,加快网络收敛;编码解码端中间加入ConvGRU 模块,可以通过对编码部分提取的特征图进行处理,获取图像空间信息,把有用的隐藏历史信息给提取出来,从而利用图像空间的连续性来进行模糊图像复原。其次,还采用跨尺度共享网络权重,减少了网络中可训练的参数量,提高了训练速度。

通过一系列实验可以看出,本文算法能有效复原非均匀运动模糊图像,在PSNR 和SSIM 指标对比中都比对比算法更优,复原时间也更短。无论是对于合成的数据集,还是实际模糊图像,本文算法都有较好的复原效果,能够恢复出清晰的图像边缘和一些细节的图像纹理信息。

猜你喜欢
卷积复原尺度
基于全卷积神经网络的猪背膘厚快速准确测定
复原力是一笔人生财富
基于图像处理与卷积神经网络的零件识别
一起来做颈椎操吧
基于深度卷积网络与空洞卷积融合的人群计数
发掘及复原恐龙化石
尺度
卷积神经网络概述
以长时间尺度看世界
9