残差分离卷积神经网络的图像去运动模糊技术∗
2020-10-14刘传才张佳洛
刘 平 刘传才,2 张佳洛
(1.南京理工大学计算机科学与工程学院 南京 210042)
(2.闽江学院物联网技术与智能系统协同创新中心 福州 350108)
1 引言
图像去模糊一直以来都是计算机视觉和图像处理领域内的一个重要问题。去模糊的目的,是将一张因运动或失焦而模糊(由相机摇晃、失焦或目标快速移动而造成)的图像,恢复成具有清晰的边缘结构和丰富真实的细节的图像。
根据点扩散函数(point spread function,PSF,模糊核)是否已知,图像去模糊分为两类:非盲图像去模糊和盲图像去模糊。经典的非盲图像去模糊算法有频率域算法维纳滤波和空间域算法R-L(Richardson-Lucy)去卷积,但是这些算法对噪声十分敏感并会产生较为严重的振铃效应。盲图像去模糊算法是在模糊核未知的条件下对退化图像进行复原。由于缺乏先验知识,相比非盲图像去模糊算法具有更高的病态性,即根据观测图像无法确定唯一的原始清晰图像和模糊核,其解不具有唯一性。
2006 年,Fergus 等[1]成功通过执行反卷积操作来估算模糊核,过去十年来已经开发了许多方法[2~5],这些方法各有很大的局限。过去几年,卷积神经网络(Convlutional Neural Networks,CNN)被应用到各种计算机视觉问题中,并获得了各种优秀的成果,模糊图像复原问题也包含其中。Xu[6]提出一种图像去卷积的CNN 将深度学习应用到模糊图像的非盲去模糊问题上,不依赖于任何预处理,利用卷积神经网络学习反卷积过程,开启了深度学习在图像去模糊研究领域的新篇章,但这个神经网络需要针对不同模糊核进行训练。Sun等[7]提出一个按次序的去模糊方法,先使用CNN 估计模糊内核,再通过传统解卷积算法获得去模糊图像。这些方案都需要先估计精确的模糊核再来做模糊图像复原工作。估计每个像素的模糊核的过程计算复杂,占用大量计算资源和内存,且估计过程对噪声敏感,估计错误会直接导致复原图像的质量,产生振铃现象[8]。
近年来,生成对抗网络(Generative Adversarial Network,GAN)在图像超分辨率和图像修复中取得很好的效果,它能够保存高纹理细节,使得创建的图像与真实图像“真假难辨”。Kupyn等[9]采用生成对抗网络来处理图像中的运动模糊,以连续帧的运动模糊图片为训练数据,学习去运动模糊模型,以端到端的方式,由输入的一幅模糊图像直接获得复原图像,但图像去模糊结果的边缘特征并不明显,仍然存在图像运动模糊,且模型过大,无法直接运用到实际应用中。本文在此基础上,提出了将深度可分离卷积[10~11](Depthwise Separable Convolution)、残差模块[12]以及生成对抗网络相结合的思路,舍弃了生成网络中的批准被化(BatchNormalization),在保持模型精度的同时,大大降低了训练参数,减小了模型大小。
2 相关理论
2.1 图像退化模型
运动模糊产生的主要原因是在曝光时间内相机发生了相对移动,在曝光时间内成像系统与目标物体之间产生了相对移动,对此一般有两种解决方案,一是减少曝光时间,降低成像系统移动概率或者移动距离,但图像的信噪比会相应降低,且曝光时间不可能一直减少;二是通过建立数学模型来拟合图像的梯度分布,根据退化模型进行反向操作,从而恢复出期望的清晰图像。研究学者将图像退化的过程模拟为原图像与点扩散函数的卷积操作,非均匀模糊模型的通用公式如下:
其中IB表示模糊图像;k(M)表示由运动场M确定的未知模糊核;IS表示清晰的图像,⊗表示卷积,N 表示加性噪声处理。通常模糊函数都是未知的,并且盲去模糊算法需要估计模糊核k(M)和清晰图像IS。
2.2 GAN
Goodfellow 等[13]提出生成对抗网络的概念,生成对抗网络在两个竞争网络模型之间定义一个游戏:生成模型(Generative model,G)和判别模型(Discriminative model,D)。如图1 所示,生成网络G 从给定符合某简单分布的随机噪声z 中(一般指均匀分布或者正态分布)产生与真实图像X 尺寸一致的合成数据G(z),利用真实样本存在的分布关系来生成符合这一分布的新的样本。判别模型D 是其实就是一个二分类器,用于判断分辨输入时生成网络的输出G(z)和真实样本数据x 的概率,当输入真实样本x时,期望输出概率值趋向1,当输入生成网络合成的数据G(z)时,尽可能输出低概率;而生成网络G 则是要尽可能地生成和真实样本类似的数据,这样才可以“欺骗”判别模型,使伪造的样本被判别网络D 判别而输出的概率也尽可能地接近于1,这就形成了双方之间的博弈游戏。
图1 生成对抗网络结构
在实际训练的过程中,会固定两个网络中的任意一方,然后利用一方网络的输出来更新另一方网络的参数,两者不断交替迭代,形成了螺旋式上升,导致两个模型的能力都不断进步,直至最后两个网都收敛了,也就是说生成器可以伪造“真实”的数据,而判别器无法判断数据的真实性,判断概率为1/2。生成式对抗网络的目标函数描述如下:
其中,Pdata是真实样本分布,PG是由生成器产生的样本分布。在(近似)最优判别器下,最小化上述目标函数等价于最小化GAN 中的值函数等价转化为真实样本Pdata和生成分布PG之间的JS 散度,Arjovsky等[14]讨论了JS散度近似引起的GAN 训练的困难状况,并提出使用Wassertein 距离作为优化方式训练GAN,即Wasserstein GAN,简称WGAN,在原 始GAN 的基础上,加入了Wasserstein 距离。使得生成对抗网络中的生成器损失函数变为式(3)、判别器损失函数变为式(4):
2.3 深度可分离卷积
深度可分离卷积(Depthwise Separable Convolution)将传统的卷积分解为一个深度卷积(Depthwise Convolution)和一个逐点卷积(Pointwise Convolution),如图2所示。
图2 标准卷积与深度可分离卷积
概言之,就是将原来一个卷积层分成两个卷积层,其中深度卷积层的每个滤波器都只跟输入的每个通道进行卷积;逐点卷积就是利用一个1×1 的卷积层,将上一层卷积的结果进行合并。普通卷积需要同时考虑通道和区域的改变,而深度可分离卷积只需先单独考虑区域,再考虑通道,从而实现了通道和区域的分离,大幅度降低参数量和计算量,提升了运算效率。
3 网络模型
3.1 模块设计
He[12]提出的深度残差网络(ResNet)是深度学习模型中一个重要里程碑,其主要思想就是在标准的网络结构中,加入跳跃连接,残差块由多个卷积层堆叠形成,网络期望输出是网络预测加上与输入张量残差。残差模块(residual block)与基本模块的对比如图3所示。
如图3 右图所示,当输入x 通过卷积-ReLU 加权运算操作后,产生的结果为F(x),与原始输入x相加,就有H(x)=F(x)+x。与基础莫酷啊输出H(x)=F(x)+x 相比,残差网络是将卷积输出F(x)与输入x相加,相当于对输入x计算了一个微小变化,这样得到的输出H(x)就是x 与变化的叠加。经过梯度传播后,现在传到前一层的梯度就多了一个x的梯度,残差结构人为制造了恒等映射,让整个结构朝着恒等映射的方向去收敛,确保最终的错误率不会因为深度的变大而越来越差。残差网络有效地缓解了深层神经网络的退化问题,提高了网络性能。
图3 基本模块(左)和残差模块(右)
本文将残差模块与深度可分离卷积相结合,设计了三层深度卷积核为3×3 的残差可分离卷积,如图4 所示,其中,DesConv3×3 表示一个卷积核为3×3深度卷积核一个卷积核为1×1的逐点卷积,如图4虚框中所示。每两DesConv3×3 层之间增加一个ReLU 激活函数和一个Dropout 层,ReLU 激活函数将非线性因素引入模型,Dropout 层是一种常用的正则化方法,在每次训练时,以一定的概率使得一部分节点的输出值变为0,它能够有效地防止过拟合,提升网络的准确率。当输入图像与输出图像尺寸不匹配时,在跳跃连接中对输入执行一个1×1 卷积核并调整步长大小来匹配输入输出维度。最后,去除了最外层的ReLU层。这种结构极大地降低了网络复杂度,同时避免了网络过深导致的退化问题。
图4 本文设计的残差可分离卷积模块
同时,在本文设计的残差可分离卷积模块中,去除了原本残差结构中的BatchNormalization(BN)层。BN 层的计算量和一个卷积层几乎持平,移除后训练时可以节约很大的空间。残差网络的提出是为了解决high-level 问题,而不能直接套用到超分辨和图像去模糊这种low-level视觉问题上,结果也证明去除BN层,在图像去模糊问题上,能够保证精度稳定的情况下,大大提高了训练速度。
3.2 网络结构
本文基于Wasserstein 生成对抗网络模型和残差可分离模块,提出了本文的去运动模糊网络模型结构DeepDeblur。主要由一个生成网络G 和判别网络D 组成。其中,生成网络CNN 架构如图5 所示,其中Input 表示输入层、Conv1×1 表示卷积核为1×1 的卷积层、Conv7×7 表示卷积核为7×7 的卷积层、DesConv3×3表示深度卷积核为3×3的深度可分离卷积模块、ReLU表示修正线性单元激活函数层、BilinearUpsampling 表示双线性插值上采样层、Dropout表示随机丢弃层、Output表示输出层。
图5 DeepDeblur生成网络结构设计
DeepDeblur判别网络卷积神经网络架构如表1所示,其中Conv4×4 表示卷积核为4×4 的卷积层,s表示步长为2,IN表示实例规范层(Instance Normalization),LReLU 表示泄露修正线性单元(LeakyRe-LU)层。这是一个类似VGG结构的二分类器,用于估计一个图像来自于训练数据集(非生成数据)的概率。如果生成器生成的图像“骗过”判别器,则最终获得一个标签。全连接层比较容易过拟合,影响整个模型的泛化能力,因此本文加入全局池化,即对每个特征图一整张图片进行全局均值池化操作,这样每张特征图都可以对应一个输出。这种采用均值池化的操作,大大减少了网络参数,避免了过拟合。LeakyReLU层参数为0.2。
表1 判别网络结构与输出尺寸
3.3 损失函数
为了优化本文的生成对抗网络,本文将损失函数表示为内容和对抗性损失的组合:
其中,LGAN表示对抗损失,LX表示内容损失,λ 取100。式(5)为参数更新提供了梯度,同时也决定了生成网络模型收敛的方向。对去运动模糊任务而言,模糊图像对应的生成图像与清晰图像内容、轮廓接近,对抗损失控制大体内容的差距,内容损失控制细节内容的差距。其中,对抗损失定义如下所示:
通过加入Wasserstein距离将对抗损失变成:
内容损失函数选择的是感知损失[15],其两个经典选择是原始像素上的L1 或MAE 损失,L2 或MSE损失。由于像素空间中可能的解决方案的像素平均值,使用这些函数作为唯一的优化目标导致生成的图像上的模糊伪像[16]。而感知损失是一种基于真实图片卷积得到的特征图与生成图片卷积得到的特征图作比较的L2 损失,使得高层信息(内容和全局结构)接近,也就是感知的意思。它定义如下:
其中φ函数是将真实图片IS和模糊图像IB经过生成器生成后的图片G(IB)一起输入到预先训练好的VGG19网络模型中,φi,j是在VGG19网络内的第i个最大化层之前通过第j个卷积(激活之后)获得的特征 图 ,在ImageNet[17]上 预 训 练 ,Wi,j和Hi,j是 特 征图。本文实验中使用来自VGG3,3卷积层的激活。更深层次的激活代表了更高抽象的特征[16,18]。感知损失侧重于恢复一般内容[16,19],而对抗性损失则侧重于恢复纹理细节。在没有感知损失或像素上使用简单MSE 训练实验不会收敛到有意义的状态。
4 实验
本实验环境包括硬件环境和软件环境。实验的硬件环境是一台Intel Xeon 服务器,CPU 型号E5-2637 v4,搭 配 两 块NVIDIA Quadro P5000 的GPU,每块显存16G,共32G;实验软件环境,平台是64位Ubuntu 16.04.1操作系统,Tensorflow 1.4,CUDA 8.0,Python3.5。
4.1 实验与结果
使用keras2.2.2 深度学习框架实现算法模型,在在Intel Xeon服务器单块GPU上进行训练。遵循Arjovsky 等[14]的方法,在判别网络D 上执行五个梯度下降步骤,然后在生成网络G 上执行一步,再经过多次实验调参选优确定了各超参数值,接着使用RMSProp 优化策略,初始学习率设置为1×10-4,当经过150 个epoch 之后,在后面的150 个epoch 中将学习率线性的衰减到0。为了获得更好的图片复原效果,batchsieze 设置为1。训练阶段,训练一个本文算法模型需要六天。经过多次实验验证,本章去运动模糊实验的模型在训练集训练6×105次后,达到收敛状态。
本文实验采用Nah 等[20]公开的Gopro 数据集,该数据集包含来自多个街景的人工模糊图像。根据场景的不同,该数据集在不同子文件夹中分类。实验中,将Gopro 数据集分为模糊图片和清晰图片,各自拥有训练集2103张720p质量的训练图片,和1111 张测试图片,每张图尺寸为1280×720。训练时的输入图像缩小两倍到640×360,模型训练输入是在此尺寸上随机截取256×256尺寸大小。
4.2 评价指标
本文采用被广泛应用在图像处理评价的峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)和结构相似性(Structural SIMilarity,SSIM),作为运动模糊图像去模糊后的图像质量的参考评价指标。
本文以WGAN 为基础结构复现了目前最好的由Kupyn 等[9]提出的去运动模糊算法的模型,表2给出了Kupyn 等和本文的DeepDeblur 两种模型算法在1111 张测试集上去运动模糊的平均PSNR 和平均SSIM 的对比,以及各自的单图运行时间。本文设计的模型在各项参数上都表现出更优异的结果。
表2 评价指标对比
在实际应用中,用户的需求一般都是实时的或者接近实时的,这就要求算法能够快速的求解。同时,运算设备的性能也会成为模型的瓶颈,为了能够适应更多的设备,也需要对算法的模型进行简化。Kupyn 的模型的生成网络训练参数量高达1.137×107,模型大小达到了45.7MB,这就大大降低了实际使用性,而本文模型生成网络训练参数量仅有2.35×106,计算量缩小了5 倍,且模型9.8MB,减少了近3/4,更符合了实际应用中限制模型大小的要求。
图6 测试图对比
为验证各算法的处理效果,显示实验结果的客观合理,选取三幅有代表性的图进行对比。实验结果如图6 所示。图中图像从左到右依次为清晰图像、模糊图像、Kupyn 的算法复原图像以及本文所提模型DeepDeblur 的复原图像。从去运动模糊的结果来看,本文实验的去模糊图像与Kupyn去运动模糊效果相接近。而本文所提出的模型在保证图像保真度的同时,有效约束了图像的边缘,保证了图像的复原质量。同时由于模型规模的大大缩减,对于运算设备而言,负担大大减小,同时训练时间也有所减小,更贴近实时需求。
5 结语
针对摄像机在成像时产生的运动模糊图像,本文提出了一种较为可行的解决方案,利用生成对抗网络实现了去运动模糊图像的端到端的盲图像复原方法。为了将模型更贴合实际应用中,本文算法加入了残差可分离卷积,去除了生成器中的批标准化,开发了一种改进去运动模糊模型的新思路。通过实验分析对比,本文算法有效地复原出了一幅较为清晰的运动模糊图像,且模型缩放了4.7倍。