李 硕, 刘 斌, 刘昱萌, 张娟娟
(陕西科技大学 电子信息与人工智能学院, 陕西 西安 710021)
图像修复作为计算机视觉领域和图像处理领域的一个重要研究分支,目前广泛应用于老照片修复、生物医学影像、航空航天、军事科学等多个领域[1].
传统方法[2-4]例如基于偏微分方程、基于纹理合成的图像修复方法无法对存在大面积缺损区域的缺损图像进行有效还原.随着卷积神经网络[5](CNNs)和生成对抗网络[6](GANs)的飞速发展,使得解决复杂图像复原和存在大面积缺损区域的图像复原问题成为了可能.
基于生成对抗网络的图像修复算法是近年图像处理领域的研究热点.Raymond等[7]于2017年提出一种语义图像修复算法,该算法以DCGAN网络作为基础并通过内容和感知损失寻找最优生成图,进而完成图像修复工作.Pathak等[8]于2016年提出一种上下文编码器(Context Encoders,CE)算法,该算法通过构建一个编-解码器完成缺损图像的编解码工作并添加判别损失完成图像的精细修复;Iizuka等[9]于2017年提出一种添加局部判别器的双判别器模型,利用局部判别器判别局部缺损区域信息,从全局和局部两个角度约束生成器,进而完成更精细的图像修复工作;刘波宁等[10]于2018年提出一种结合双判别器模型和相似块搜索算法改进双判别器模型;Wang等[11]于2019年提出一种多尺度上下文注意力模型,使得模型在图像修复过程中可以更好地利用背景信息提高修复精度;Yan等[12]于2018年提出一种Shift-Net模型,该模型主体为GAN网络,结合基于CNN的图像合成方法的优点提升了图像修复准确率;Nazeri等[13]于2019年提出一种Edge-Connection模型,通过设计额外的辅助网络,从而利用缺损区域边缘信息辅助图像修复过程;Liu等[14]于2018年提出使用部分卷积替代基础卷积提升图像修复效果,部分卷积只在图像有效区域进行卷积操作;Yu等[15]于2019年提出Gated卷积层替代传统卷积层,解决传统卷积层将图像所有像素视为有效像素的缺点;Yu等[16]于2018年提出一种语境注意力图像修复模型,该模型分为粗修复和精修复两部分.
上述方法虽取得了优异的图像修复效果,但从修复结果图可以看到,图像的部分精细特征无法被还原,模型不存在更多的指示性函数指导生成器生成内容、细节等属性特征更接近于原始图像的修复结果图.同时,不同通道的特征包含不同的加权信息且图像上的各个像素的关联关系不同,若平等对图像的各个特征赋予相同的权重,便会导致模型在恢复过程中无法有效利用重要特征,进而影响模型的修复性能.为此,本文提出对双判别器模型引入通道、像素注意力机制,保证模型可以自适应学习图像的特征权重;再者,通过增设Vgg16特征提取模型向原始生成器损失函数中添加内容、风格损失项,进而共同协助生成器完成更优的图像修复效果.
生成对抗网络[17]是一种引入对抗训练的生成模型,由生成器和判别器组成,如图1所示.
图1 GANs模型结构示意图
生成器以随机向量作为输入,通过对随机向量层层解码,输出生成样本.判别器以生成样本和真实样本作为输入,对真实样本和生成样本进行层层编码,输出真(1)假(0)之间的概率值.每次迭代完成,使用公式(1)计算模型的输出损失值,将模型输出的损失值回传用于生成器和判别器的各层网络层的参数更新.GANs的目标函数如式(1)所示:
Ez-pz(z)[log(1-D(G(z)))]
(1)
式(1)中:E表示期望,pz(z)表示一组随机向量集合,pdata(x)表示一组真实样本集合.
本文模型以带有二进制掩模的缺损图像作为输入.缺损图由二进制掩模与原始真实图像进行一系列矩阵乘法构造而成.二进制掩模M由公式(2)所示:
(2)
式(2)中:xij为原始像素值,σ为图像的缺损区域,Mij为掩码值.缺损图像xw的构造过程如图2和公式(3)所示.
图2 缺损图像构造过程
xw=xeM+(1-M)×255
(3)
式(3)中:e为Hadamard积.
本文提出一种融合通道、像素注意力机制和Vgg16特征提取模型的MLAGAN(Multi-Loss and Attention GAN)图像修复模型.MLAGAN模型由生成器模块、双判别器模块和Vgg16特征提取模型模块三部分组成.MLAGAN模型如图3所示.
图3 MLAGAN模型结构
2.2.1 生成器
生成器为编-解码器结构,以缺损图像作为输入、输出修复结果图.生成器分别由卷积块、空洞卷积块、反卷积块、通道注意力块(Channel Attention Block,CAB)和像素注意力块(Pixel Attention Block,PAB)构成.卷积块负责缺损图像的特征提取过程,由卷积层、归一化层和Relu激活层构成,共12块设计;空洞卷积块用于扩大卷积层提取图像特征过程中的感受野范围,捕获图像上的多尺度信息,由空洞卷积层、归一化层和Relu激活层构成,共4块设计;反卷积块的原理和卷积块是相反的,用于将卷积层输出的特征图进行还原,将特征向量还原至原始尺寸,由反卷积层、归一化层和Leaky_Relu激活层构成,共2块设计;通道、像素注意力块如2.2.3和2.2.4节所述.同时,对编码过程和解码过程中输出特征图尺寸相同的卷积块和反卷积块进行跳跃连接,完成解码过程与编码过程中的多尺度信息融合,以提升最终的修复效果.使用L2损失、风格损失、内容损失和判别损失完成生成器的参数更新工作.其中L2损失如公式(4)所示:
(4)
式(4)中:O表示原始图像,C表示修复结果图,L2损失用于衡量修复结果图与真实图像的差值平方和.
2.2.2 判别器
判别器为编码器结构,用于判别真实样本和生成样本的真假程度.真实样本和生成样本作为一组数据对输入至全局判别器中,局部真实样本和局部生成样本作为一组数据对输入至局部判别器中,将全局判别器在全连接层的输出和局部判别器在全连接层的输出进行拼接进而得到输入图像的真假判别分数.判别器由卷积块和全连接层构成,卷积块由卷积层、归一化层和Leaky_Relu激活层构成.
全局判别输入图像尺寸为64*64,局部判别器输入尺寸为32*32,全局判别器由4块卷积块和全连接层构成,局部判别器由3块卷积块和全连接层构成.在模型训练过程中,判别器输出的判别损失值作为梯度信息来更新判别器和生成器的各层网络层的参数矩阵和偏置项.
2.2.3 通道注意力块
在图像恢复过程中,与缺损区域关联性较大的像素或特征信息往往是需要关注的重点,这些像素信息与特征信息和缺损区域类似,有助于提升模型的恢复效果.注意力机制的主要工作在于提取图像特征时,对不同的图像特征给予不同的权重,增大关联性强的特征的辅助作用,抑制关联性弱的特征对图像修复的影响,进而扩展了普通卷积层的能力,是普通卷积的补充[18].
通道注意力块的主要工作在于辅助网络重点关注高关联的通道信息,也就是与缺损区域关联性强的高频特征,同时抑制低关联的通道信息对图像修复的影响.首先使用全局平均池化将前层网络层输出的特征图的全局空间信息转化为通道描述块,也就是将特征图的维度从H×W×C转换为1×1×C,由式(5)所示:
(5)
CAl=S(Conv(Relu(Conv(gl))))
(6)
最后,将未经处理的前层网络输出的特征图与经过通道注意力处理后输出按元素进行乘积,由式(7)所示:
COl=CAl⊗Fl
(7)
式(7)中:COl为经过通道注意力的输出.通道注意力块的模型结构如图4所示.其中k1s1表示卷积层卷积核的尺寸为1×1,步长为1.
图4 通道注意力块
2.2.4 像素注意力块
像素注意力机制是基于像素级别的,未缺损区域的各个位置的像素信息与缺损区域的像素信息的关联强弱不同,关联性强的像素信息对于图像的恢复过程贡献程度高,因此需要给予其更大的权重.像素注意力机制的主要工作在于使得网络更加关注关联性强的未缺损区域的信息特征,比如与缺损区域相似的高频区域.像素注意力块的输入为通道注意力块的输出,首先将通道注意力块的输出经由两层卷积提取特征,并使用Relu和Sigmoid函数激活,此时特征图尺寸从H×W×C转化为H×W×1,该过程如公式(8)所示:
PAl=S(Conv(Relu(Conv(COl))))
(8)
最后,将通道注意力块的输出与经过像素注意力块处理后输出按元素进行乘积,由式(9)所示:
POl=PAl⊗COl
(9)
式(9)中:POl为经由像素注意力块的输出.像素注意力块的模型结构如图5所示.其中k1s1表示卷积层卷积核的尺寸为1×1,步长为1.
图5 像素注意力块
2.2.5 Vgg16特征提取模型
Vgg16特征提取模型用于协助生成器生成内容、风格和细节属性更贴近于真实样本的图像.Vgg16特征提取模型由卷积层、Relu激活层、池化层和全连接层构成.Vgg16特征提取模型如图6所示.其中,Conv3_64表示卷积层卷积核尺寸为3*3,输出通道数为64.其中Conv1_1代表标号为1_1的卷积层.
图6 Vgg16特征提取模型
在模型训练过程中,Vgg16特征提取模型参数不再更新,直接将Vgg16模型与生成器网络进行拼接,实现生成器提取图像内容特征和风格特征的能力.将修复结果图和真实图像输入至Vgg16特征提取模型中,获得两者在Conv1_2卷积层所输出的特征图,通过对比两者特征图间的相似度可以得到该次训练的内容损失值.内容损失函数如公式(10)所示:
(10)
式(10)中:O为原始图像,C为修复结果图.
通过求取图像经由某一个卷积层所获得的所有特征图间的Gram矩阵,可以大致获得该张图像的整体风格信息,主要体现在图像的颜色、亮度等细节属性上[19].Gram矩阵上每一个位置值都表示了两个特征间的相关性.为此,通过比较两幅图像在某一卷积层所获得的Gram矩阵,便可以求取两幅图像的风格差异.Gram矩阵的计算公式如式(11)所示:
(11)
(12)
式(12)中:Ol,Cl分别表示原始图像和修复结果图在第l卷积层输出的特征图.
2.2.6 生成器总损失函数
为了保证生成器可以输出从内容、风格和真实感等角度更接近于原始图像的修复结果图,将初始生成器目标函数修改为由L2损失、内容损失、风格损失和判别损失的多损失融合函数,由公式(13)所示:
Lall=λ1L2+λ2Lcontent+λ3Lstyle+λ4Ladv
(13)
式(13)中:Lall为生成器总损失目标函数,λ1、λ2、λ3、λ4为平衡不同损失的超参数.
为了验证本文算法的有效性,所采用的实验数据主要为CelebA人脸数据集和SVHN(Street View House Number)[20]街景门牌号码数据集,同时与DCGAN、CE(Context Encoders)和双判别器算法DD(Dual Discriminator)进行比较.CelebA数据集包含202 599张尺寸为178*218的三通道人脸图像,每张图像都做好了特征标记,随机挑选50 000张用作训练集,1 000张用作测试集.由于本次实验的主要目的是恢复人脸特征,因此去除CelebA人脸数据集中影响恢复效果的背景信息,使用PIL库和OpenCV库对图像进行尺寸调整,调整为模型要求尺寸64*64.SVHN官网中的格式1数据集中的各个图像尺寸不相同,每张图像存在大量背景信息,无法满足模型只恢复数字特征的要求.因此,本文对数据集进行了预处理工作,共处理34 000张图像用作训练集,1 000张用作测试集.具体调整过程如图7所示.
图7 图像预处理
对CelebA人脸数据集和SVHN数据集的调整结果使用二进制掩模进行破坏处理,作为算法要求的缺损图,进而训练本次实验所使用的4种算法.对于本文的提出的MLAGAN模型,在模型训练阶段,对于生成器的多损失目标函数的各个参数设置不同的参数值验证模型性能,最终设置λ1=25、λ2=0.05、λ3=100、λ4=0.3,因为从测试结果看,此时模型的修复准确率较高,修复效果最好.同时,对于DCGAN、CE、DD和本文算法在CelebA人脸数据集上的训练参数设置表如表1所示.
表1 算法参数设置表
在SVHN数据集的训练参数设置上,各个算法除了批样本数设置为75外,其余参数与训练CelebA时设置的参数相同.最后,使用Adam随机梯度下降法求取各个模型的最优解.需要注意的是,DCGAN模型存在两个阶段,模型预训练和图像修复.模型预训练如上述所示,对于图像修复阶段,通过最小化感知损失和内容损失寻找模型最优输出结果,设置训练次数为1 500且利用Adam函数寻找最优生成图.使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和结构相似性(Structural Similarity,SSIM)定量评估四种模型的修复结果.其中PSNR常用于评估重建图像的质量,PSNR值越大,就代表图像的失真越少,可以用于评估模型的修复结果图与真实图像对应像素点间的误差.PSNR的公式定义如式(14)所示:
(14)
式(14)中:MSE为均方值误差(Mean Squared Error).对于一对修复结果图和真实图像,如果修复结果图是真实图像的近似,那么两者间的像素差异可以用MSE衡量,MSE定义公式如式(15)所示:
(15)
式(15)中:m,n表示尺寸为m×n的图像,O和C分别代表原始图像和修复结果图.i,j分别代表图像上第i行第j列像素.
其中SSIM用于衡量修复结果图与真实图像是否在亮度、对比度和结构上相似,是一种衡量两幅图像相似度的指标.SSIM定义公式如式(16)所示:
(16)
式(16)中:u和σ分别代表均值和标准差,c1和c2代表常数.SSIM指标值越大,代表两幅图像的差距越小,即修复结果图质量越好.
本次实验的设备条件为一台装有Nvidia GeForce RTX2080 Ti GPU,显存为20GB的工作站.使用深度学习工具包TensorFlow实现4种模型的搭建,Python版本为3.6.6,并使用Numpy、PIL和OpenCV等工具库处理数据.
为了验证模型的有效性,将本文提出的算法与DCGAN、CE和DD在CelebA数据集上进行修复效果对比.图8给出了各种算法的修复效果.同时表2给出了不同算法的定量指标值.
图8 不同算法在CelebA上修复效果对比
从图8可以看到,DCGAN模型由于预训练阶段生成效果较不理想,导致模型修复阶段的修复结果较差,部分细节和纹理信息无法被还原,部分特征与原始图像不一致;CE算法整体存在模糊问题,如图8(c)第3张,虽然恢复出眼镜特征,但修复区域较为模糊;DD算法对图像的整体内容信息还原效果较为不错,但其修复结果存在模糊且部分图像的结构和细节信息无法被还原,如图8(d)的第1张图像中的眼镜细节、图8(d)的第3张图像的眼镜细节;本文提出的算法从整体上对图像的内容和细节进行了还原,从图8(e)的第1、3张图像中可以看出,图像的细节信息如眼镜细节信息被有效还原.虽然修复结果图仍然存在部分噪点,但图像不存在模糊问题,本文算法从整体和细节上均优于其余三种算法.
表2 不同算法在CelebA上修复效果对比
在SVHN数据集上验证4种算法的修复效果.图9给出了4种算法在SVHN数据集上的修复结果.同时,表3给出了4种算法在SVHN数据集上的修复效果的定量表示.
图9 不同算法在SVHN上修复效果对比
从图9可以看到,DCGAN算法修复效果较差,部分图像如图9(b)第3张图像出现错误结果,其余图像存在伪影等问题;CE算法的修复结果从整体上表征出原始图像的内容,但存在图像模糊问题,部分图像出现错误信息,如图9(c)第3张图像;DD算法的修复结果从整体上表征出原始图像的内容信息,整体修复结果不存在错误,但修复结果存在模糊问题;本文提出算法对缺损图信息进行了有效还原,虽然也存在部分细节信息还原不充分,但从整体的修复效果上看优于其余三种算法,与原始图像更为接近.
表3 不同算法在SVHN上修复效果对比
为在CelebA数据集上验证注意力机制的有效性,本文设计不添加通道、像素注意力块的模型No_A(No Attention),只添加通道注意力块的模型CAM(Channel Attention Model),只添加像素注意力块的模型PAM(Pixel Attention Model)和添加通道、像素注意力块的模型Add_A(Add Attention)四种模型.四种模型除注意力模块的添加不同外,其余参数设置与3.1节相同,使用50000张图像作为模型训练数据,每个模型训练200个epoch后保存模型参数.注意力机制实验设置表如表4所示.
表4 注意力机制实验设置表
图10给出了四种模型的修复效果对比.可以看到,No_A模型出现部分特征还原错误问题,如图10(b)第1、3张图像,图像的眼镜特征没有被正确还原,如图10(b)第4、5张图像,图像的细节特征还原较差,原因是模型无法获取缺损区域像素与未缺损区域像素的关联强弱,未有效使用关联性强的未缺损区域像素;CAM模型与PAM模型修复效果优于模型No_A,较于模型No_A,对于图像部分特征进行了有效还原,如图10(c)第1、3张图像,人脸上的部分眼镜特征被正确还原,但也存在部分特征还原不足问题;模型Add_A修复效果优于上述三种模型,对受损图的大部分细节进行了有效还原,原因在于通道注意力机制用于获取每个通道特征图的权重,而像素注意力机制用于获取通道特征图上的像素权重,两种注意力机制从不同层面为卷积层输出的特征图打分,以获取未缺损区域上关联性最强的像素信息,进而完成图像修复工作.
图10 注意力机制修复效果对比
同时,表5给出了四种模型在CelebA数据集上的修复效果的定量表示.
表5 注意力机制修复效果对比
针对基于生成式对抗网络的图像修复模型存在的图像修复结果还原性较差问题,提出一种融合通道、像素注意力机制的多损失生成对抗网络.向生成器添加注意力机制以提升生成捕获图像上相距较远特征间的信息相关能力,并向生成器的损失函数中添加内容和风格损失项以多损失融合的方式协助生成器的修复结果在内容和风格属性上更接近于原始图像.通过与三种主流算法进行比较,本文算法从整体上还原出缺损图像的内容信息,有效提升了修复准确率,在修复效果上优于其余三种算法.