APP下载

基于生成对抗网络的面部修复

2020-10-27徐姝琪杨会成

平顶山学院学报 2020年5期
关键词:数字图像卷积损失

徐姝琪,杨会成,潘 玥,何 野

(1.安徽工程大学 电气工程学院,安徽 芜湖 241000)

0 引言

人工智能技术在以较快的速度不断发展,图像修复早已是电脑视觉方面的一项核心任务.在当今这个信息时代,全球经济获得了快速的发展并且科技得到了深层面的发展,人们对数字图像进行获取和存储等操作的时候均会更加简单,这样的话人们在生活中通过数字图像这一关键媒介实施相关数据的传送.不过其获取、贮存、传送等一系列相关流程内,很多因素会造成数字图像受损,就会造成数字图像中涵盖的数据产生丢失的情况[1].为确保数字图像在视觉方面比较优良并且确保其涵盖的数据比较完整,那么要求对受损的数字图像实施相应的修复处理.因此可以推断,对于怎样对受损数字图像实施更加有效的修复这方面做出的研究早已是一项非常至关重要的工作.图像修复是恢复损坏图像中缺失或损坏区域的任务,它在图像编辑,遮挡去除和旧照片还原中具有许多应用,例如: 影视制作、成像设备开发、医疗诊断等.如果想要对比较大的缺失区域进行修复或是对随意形状的缺失图像实施相应的修复,那么将较多用以深度学习为基础的方法,这主要是因为深度学习等技术不断发展,很多方法都能完成内容的感知填充,另外还能完成对图像的修复.近年来提出了很多关于数字图像的修复方法:例如,通过使用偏微分方程[2](Partial Differential Equations,PDE)对有关的几何模型进行处置,考虑到这类方法对图像局部数据的依赖度非常高,故而适合用来对非纹理的图像,还有尺寸比较小的受损图像实施相应的修复.如果要对面积比较大的缺失图像实施修复处理,那么会有非常显著的模糊现象[3].至于PM(patch match)算法[4],它使用图像中可用的部分搜寻出近似的补丁,考虑到它的品质与效率都比较高,故而变成了一种非常成功的修复方法,但是假如图像的纹理较为繁杂,想要找到匹配模块的难度要大很多.Pathak 等[5]指出上下文编码器(CE)属于一种开创性的语义修复方式.它通过给出1个缺失部分的掩码从而训练1个神经网络,对上下文信息实施相应的编码处理并且对受损部分实施相应的预估,然而如果是架构性非常强的细节方面的修复工作,那么时常造成模糊、伪影等一系列相关的情况.近年来,人脸表情识别方法大多采用 CNN 作为特征提取器,以获得具有鲁棒性的特征[6].至于生成对抗网络(Generative Adversarial Networks,GAN),它主要是以深度学习为基础完成对图像的修复,它对图像的修复功能比其他方法要更为完善一些.GAN 是目前这些年提出的较好的生成模型,它相当于避免了马尔科夫链式的学习机制,所以它能够更好地区别于传统的概率生成模型.对于传统概率的生成模型,通常情况下要求实施马尔科夫链式取样与相应的推测判定,至于GAN,它能够有效防止这种运算复杂度非常高的流程,从而直接实施相关的取样与推测判定,由此提升GAN 的使用效率,故而其真实的使用场景越来越普遍.其中一种方式就是深度卷积对抗网络(Deep Convolution Generative Adversarial Networks,DCGAN)[7].当前,以GAN为基础的图像修复技术依旧要面对需要妥善处理的问题:首先,GAN在网络训练里面缺乏稳定性而且收敛的难度相对更大;其次,编解码中的全连接层致使解码无法精确恢复有关信息,因此无法确保架构的连续性,另外也无法确保纹理的一致性.故而,我们应当对原有的GAN实施相应的改良,相关的试验流程重点如下:首先将缺失的图像输入改进的生成器G中,其次是将真实数据和生成器输出的图像放入改进了的判别器模型中,进行频谱归一化处理,然后将输出的图像进行损失函数的计算,然后重新带入生成器中再次进行修复.实验显示该方法修复的图像在图像结构和色彩一致性方面的表现更佳.

1 方法

此方法的重点思路为:先训练1个生成模型学习到真实图像的概率分布,另外经过改良后的GANs中的对抗学习这种样式去改良生成模型的学习效果.经过训练以后的生成模型依据等候修复的图像形成和其接近的完整图像,接着从获取图像中的对应切片实施相应的补全,然后将其输入判别器进行判别,从而确保等候修复的图像中缺失的内容得到最佳的修复.GAN 模型主要由两部分组成:其一,图像生成网络G(Generator),它经过导入1组随机性的噪声 z 以最大限度形成逼真度比较高的样品;第二部分是判别网络,其能够经过对生成网络产生的图像x进行判别并更新判别网络参数,以加强对网络的判别能力.生成器G、判别器 D 经过持续对抗训练,由此对对抗损失函数实施相应的优化.GAN 的目标函数是关于 D 与 G 的一个零和游戏,也是一个最小和最大化问题.先是从暗藏的空间获取 d 维噪声向量并且能够反馈至相关的G网络中.G能够把此向量转化成图像并且传送至D网络中实施相应的分类操作[8].D网络能够持续从实际数据集与经过G网络获取图像从而获得新的图像.它重点对真、假图像进行区分,所有的GAN构架遵循的设计规则是相同的,如图1所示.

1.1 生成模型

关于生成模型,重点是已知图像上被遮挡的内容并且依照其中正常显现的部分预估被遮挡的内容进而实施相应的修补.如果导入图像存在遮挡物,那么此模型能够把它预先处置成存在部分缺省的图像.至于待修复图像导入到编码器中一些编码数据,此流程能够当成是把这类图像实施层层抽象处理从而形成隐层表征[9].之后将其导入到解码器中从而形成预估图像.对于生成器而言,它运用接到的梯度数据对相关的模型参数进行更新处置并且能够形成相应的向量分布,故而它不但能够形成图像,另外还能够确定形成图像的品质,对网络的修复性产生了一定的影响.和一般的自动编码器在架构方面存在一定的差别,此次设计的模型在编、解码器的中间层换掉了全连接(channel-wised fully-connection)的样式,最终选用了逐信道全连接的样式.在生成模型里面为确保成功,增大模型深度,在编、解码环节分别运用卷积核 3×3并且步长是2的卷积、反卷积操控去替换掉池化操控,结果能够最大限度精简模型的实施流程,卷积层能够将图像特征抽取出来,至于卷积核的权重则能够进行相应的学习,故而在高层神经网络里面,卷积操控可以冲破传统层面的滤波器装置的各种制约,参照目标函数抽取得到所需的特征数据.在卷积层中通常会用到填充操作(padding),而填充操作分为0和1这两种比较常见的手段,该操作有两层功效:1)能够尽可能使用处置导入图像(或是导入数据)的边缘数据;2)配备适宜的卷积层参数,这样能够确保导出、导入具有一样的大小,防止在网络深度不断增大的过程中导入大小以较快的速度降低.另外为确保深层面滤除无用的特征数据且能够提升模型收敛的速度,在解码环节将卷积层的后方加放1个归一化层.这样的话,编码器能够涵盖2个卷积层和4个激活层,并且能够涵盖2个卷积层和1个归一化层.对于 G 里面的激活函数而言,第1层运用到Sigmoid函数,最终一层运用到tanh函数,余下的均用到了ReLU函数.生成器模型如图2所示.

Sigmoid函数(S型函数)是常用的一种非线性的激活函数,它的函数表达式如式(1)所示.

(1)

原始的GAN是由信息理论[10]而来的,我们先来回顾一下熵的概念,如式(2)所示.

(2)

式中:k表示一个正常数.在GAN里面,要求pi一直为有效值.至于Sigmoid激活函数则能够确保导入值符合pi的相关条件,不过此函数具备1个非常狭小的非饱和区块,0.25是此函数的导数最高值,在多层神经网络中实施参数乘积计算的时候,最终的结果势必呈现出指数级下降的态势,由此造成梯度消失的现象.故而,此文讲到1个改良过的Sigmoid激活函数,从而对那些不饱和区块进行相应的扩展,如式(3)所示.

(3)

其中:α代表1个超参数,经过对应的调参操作确保改良的Sigmoid函数在导数正数部分能够大概维持到1,故而能够改良梯度消失这种现象,另外在具体的试验中设置α=0.1.考虑到最后1层要求导出图像,故而运用到tanh函数,至于图像像素值则具备1个选值区间,比如 0~255.关于ReLU函数的导出也许非常大,不过tanh函数的导出则在-1~1这个区间,如果把tanh函数的导出实施加1操作之后再乘上127.5,这样能够获得0~255这个区间的像素值.通过运用tanh函数替换掉传统层面的ReLU函数,这样数据集的收敛速度会更高,另外能够得到更加清晰的图像.tanh(Hyperbolic tangent)实际上是双曲线函数之一,tanh()则是激活函数,能够使用在隐层神经元的导出中,与Sigmoid相比,它的输出均值是0,这使得它的收敛速度要比Sigmoid快.tanh函数如式(4)所示.

(4)

1.2 判别模型

判别模型与真实的生成图像之间存在一定的相关性.它们之间的关系仅由判别器一个接一个地运算,另外梯度数据能够传回至生成器,由它参照判别器传送的梯度数据去调节模型参数并且调节随机噪声的具体分布情况[11].

本文中的判别器D在场景不一样的情况下能够完成的功能同样具有差别.如果导入生成的图像,那么能够执行生成判别器这项操作,如果导入修复之后的图像,那么能够执行全局判别器这项操作.在 D中添加卷积核是 3×3、步长是 1 的卷积层,本文中的判别器总共有3个卷积层,在第1、3个卷积层中,卷积核是 4×4并且步长是2,另外同时为确保深层面筛查出无效的特征数据添加到激活层中,激活函数为LeakyReLU,斜率设置为0.2.另外为提升模型收敛的速度从而避免过拟合实施频谱归一化的处置,在第2个卷积层中需要添加归一化层.

判别器的具体结构如图3 所示,当中模型导入能够涵盖两个方面,G(z)代表G形成的图像,关于模型导出,它代表的是导入图像的真实度或虚假度.D能够把导出的概率数据回传至G,从而为G的更新供应相关的梯度数据.对于激活函数,它实际上用于加强网络的表述实力,它们能够在网络中引进非线性.此外在神经元里面的导入值inputs在实施加权操作、求和操作之后能生成激活函数[12].引进此函数重点是提升神经网络模型的非线性.假如并未用到激活函数,那么不管神经网络具备多少个层级,每层导出均会是上层导入的线性函数,其导出均是导入的线性组合,此类状况其实是最初的感知机(Perceptron).经过选用激活函数能在非线性因素中引入神经元,由此保证神经网络与所有的非线性函数可以任意逼近,这种情况下神经网络能够使用在诸多非线性模型里面.

1.3 损失函数

在网络训练和图像生成过程中重点就是对于优化形成网络中损失函数的设计.损失函数在深度特征学习中起着非常重要的作用:它是整个网络模型的“指挥棒”.它可以反向传播预测样本和实际样本标签所产生的误差,从而指导网络参数学习.此函数主要用来度量神经网络导出的预估值和真实值这两者间的差别.常见的损失函数包括:最小二乘损失函数、log对数损失函数、交叉熵损失函数等有关内容.

笔者把重建损失、TV 损失联合起来当作训练网络的总损失,用来提升网络的平稳性还有修复的最终效果.关于联合损失函数,相应的定义参见式(5).

L=λrecLrec+λTVLTV.

(5)

其中,λrec、λTV依次代表相应损失项的权重.

经过重建损失[13],Lrec可以得到缺失区块的总体架构并且可以得到它的上下文的一致性,当作是重点损失函数的优化形成网络.此处,经过选用模拟缺失图像的保留区块和生成图像的对应区块的差的L2范数当作重建损失,参见式(6).

(6)

x——导入的实际图像;

G——生成网络;

M——二进制掩码,值是 1、0 的部分分别为保留区块、缺失区块.

经过TV 损失[14],LTV可以对图像强度的平滑性实施一定程度的制约,结果导出图像能够更加平滑,这样的话可以妥善处理生成图像的修复区块和残缺图像在进行叠加时周围出现的伪影现象,其具体的定义如式(7)所示.

|Gi,j+1(M⊙x)-Gi,j(M⊙x)|.

(7)

其中,i和j表示像素点的坐标.

2 实验结果与分析

笔者在CelebA人脸数据集中对于指出的算法具备的有效性实施了相关的测试,结果证实本文中改良的图像修复法具备有效性.实验平台是python 3.6的编程环境.生成器G 选用在[-1,1]的匀称分布中以随机方式形成的 100 维向量,经过相关的反向卷积操作从而形成64×64×3的图像,本文用到的数据集CelebA,其涵盖10 177个名人身份的202 599张图像,并且都做好了特征标记.测试集共 1 000 张图片,其中男性和女性各 500 张,它们包含了不同的表情.在网络中,输入图像的尺寸是 96×96的图像,提前将这些图片裁剪为64×64大小,如图4所示.

将数据集里所选的多个训练模型和之前使用相同的预处理步骤,同样进行上述试验,截取第10 000次迭代的图片为最终修复结果,我们能得到如图6所示的结果图.

关于图像修复的效果进行的评定属于相对主观的流程,不同的人对于相同的结果具有不一样的看法[15].所以,我们需要把本文算法与Auto-encoder和DCGAN从PSNR和SSIM两方面实施相关的对比实验,从而证实提出的算法是有效的.经过定量分析能够合理补充视觉定性评测,使用2个尺度针对CelebA数据集里面的试验结果实施相应的定量评测.峰值信噪比(Peak Signal to Noise Ratio,PSNR)作为第1个尺度,它是以偏差敏感为基础的图像品质评价.通常情况下,假如PSNR值偏大,则表明修复之后的图像和初始图像更加逼近.第2个尺度则是结构相似性(Structural Similarity Index,SSIM),用来评测2张图像在总体上的近似性,它能够从亮度、对比度、架构这些方面去度量图像的近似性.至于SSIM 的选值区间为[0,1],如果数据比较大,那么表明图像的近似性比较高.经过应用PSNR和SSIM从而对于模型不一样的图像修复结果实施相应的对比剖析,如果它们的分值比较大,那么表明图像修复的效果比较优良.

通过对不同算法的修复效果进行比较,得出质量评价评分表如表1 所示,本文的峰值信噪比和结构相似性值都比Auto-encoder和DCGAN略高一些,可以看出本文中改良的模型对图像破损区域较大的图像修复效果比另外两种算法更加优良.本文的算法以DCGAN为基础模型,将原Sigmoid函数进行了改进使其扩大了不饱和的区域,并且和增加的tanh函数相互作用使得梯度易消失的问题得到改善,以及改进的损失函数也使图像的修复效果更加接近原始图像.经过试验数据进行验证,发现运用改良之后的模型确实能够获得更优的效果.

表1 不同算法的PSNR和SSIM

3 结论

以深度学习为基础的数字图像修复技术提出的时间并不长,但是发展的速度非常快.由于研究持续深入,大面积被损坏与语义数据被损坏的图像实施修复的效果得到了持续的改良,其中修复网络的繁杂度具有一定程度的提升.虽然数字图像修复技术已有较佳的成效,不过依然需要面对多方的挑战.笔者指出改良后的相关算法用于人脸图像的修复工作中,先经过编-解码器的架构改良后的卷积神经网络作为生成模型,经过运用改良的激活函数以及加入tanh函数解决了其他算法不同程度的修复结构失真问题,同时,引进 TV 损失、重建损失对于生成网络进行相应的改良,由此提升细节图像实施修复的实力.笔者在CelebA数据集里面实施定性方面与定量方面的比对试验,从而证实本文中提出的算法具备一定的有效性.

猜你喜欢

数字图像卷积损失
改进压缩感知的舰船数字图像水印算法
基于Blob算法的多特征联合数字图像转换仿真
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
两败俱伤
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
《数字图像处理》课程的驱动教学实践
菜烧好了应该尽量马上吃
损失