基于生成对抗网络的图像修复算法
2020-08-31王可新
王可新, 王 力
(贵州大学 大数据与信息工程学院, 贵阳550000)
0 引 言
随着人工智能技术的快速发展,图像作为携带信息的主要载体之一,其作用不言而喻。 然而现实生活中,时常会出现图像不完整的现象,比如年代久远造成文物破损、图像传递过程中隐藏内容等,都会导致一定程度的图像中所携带的信息丢失,因此如何对这些受损进行图像修复成为计算机视觉中的一个重要问题。
在计算机的图形学中,图像的修复有3 种方法:一种是传统的基于结构的方法,这种方法可以合成比较合理的静态纹理特征,但仅适用于受损区域较小的图像;第二种是基于纹理合成的图像修复,此方法可以从图像中其他完整区域选择与缺失区域纹理相同的样本块。 但当涉及语义图像损失时,此方法在缺失区域的细节方面恢复的很差,因此需要1 个额外的部件提供合理的想象力,比如来自机器的幻觉,即第三种方法,基于深度学习的图像修复。
本文提出的图像修复算法则是基于深度学习生成对抗网络[1]。 与以往图像修复算法不同,该算法包含2 个判别器网络模型,即全局判别器和局部判别器。 模型的网络结构都是采用卷积神经网络来实现。
1 相关工作
以前已经提出过多种用于图像修复的方法,传统的基于结构的图像修复方法采用扩散原理,将可见区域的信息传播到缺失区域。 其主要采用高阶偏微分方程模型算法(PDE 算法)。 PDE 算法又命名为BSCB 修补模型,模型原理是沿着等照度线方向扩散到待修复区域,但未顾及图像的细节部分,修复效果较差[2]。 随后出现了全变分模型(TV 模型),然而只对填充小的破损区域或者去除杂散的噪声是有用的。
与基于结构的方法相比,纹理合成的方法可以修 复 大 一 些 的 破 损 区 域[4-6]。 比 如 典 型 的PatchMatch 方法,此方法在图像的可用部分搜索类似的纹理结构,其高质量和高效率迅速成为当时最成功的修复方法[7]。 但是这种方法假设可以在其他地方找到修复区域的纹理,这种假设并不是一直会成立,如果缺失区域很大,则很难修复。
用来进行图像修复的第一种深度学习方法Context Encoder,使用编码器-解码器结构[8]。 编码器将缺失区域的图像映射到低维度特征空间,解码器用它来构造输出图像。 但是该方法存在修复边缘处不连续的问题,修补痕迹明显,视觉效果较差。 上述方法采用监督学习的方式,2014 年GAN 由Ian Goodfellow 首次提出,GAN 采用的是一种无监督的学习方式训练。 针对Context Encoder 的问题,Iizuka等人使用两个判别器使得缺失区域和整张图像在视觉上合理化,本文则是基于Iizuka 等人的基础上采用感知损失和MSE 损失函数相结合的方法训练生成对抗网络。
2 网络结构
2.1 生成对抗网络
网络主体采用生成对抗网络(GAN),GAN 的产生其中心思想为“二人零和博弈”[9],与其他普通网络不同,生成对抗网络由两个模型组成,一个是用来生成数据的生成模型G,另一个是用来判别生成样本真假性的判别模型D。 如图1 所示生成模型G 以1 个随机噪声作为输入,将其生成1 张伪造的样本,判别器模型D 以真实样本或者伪造样本作为输入,预测该样本是真实的还是伪造的。 生成网络的目的是能够欺骗判别器网络,因此随着逐步的迭代训练,生成网络生成越来越逼真的样本像,甚至可以达到以假乱真的效果,以至于判别器无法判断其真伪性;在这个过程中,判别器也在不断的提高自己辨别真伪的能力,使得生成器能够生成更加真实的样本。
图1 GAN 模型Fig.1 GANmodel
2.2 生成器
生成器采用Iizuka 等提出的网络结构模型,网络模型采用典型的编码器-解码器结构。 编码器采用带掩码的图像作为输入,通过下采样进行图像的特征提取,解码器通过这些特征恢复为原始的分辨率,生成图像中掩码部分的内容[10]。 在图像修复任务中,通常想要了解更多的图像中潜在的特征,因此网络模型中间采用了扩张卷积,扩张卷积在基础的卷积核上加入间隔,在不损失特征图尺寸的情况下增大了感受野,从而获取图像中更多的信息。 总的来说,生成器包括六次下采样的编码器,接着是三次扩张卷积和将图像上采样到原始尺寸的解码器。 生成器的整体组成如图2 所示。 应当注意的是,网络结构中并未使用池化层,而是将卷积步幅设置为2,将待修复图像的大小缩小为原来的一半,生成器网络模型仅仅降低了两次分辨率,使用大小为原始大小四分之一的卷积,其目的是为了降低最终图像的纹理模糊程度。 此外,随着卷积网络层数的加深,数据的波动浮动较大,会大大的降低网络训练的速度。因此,本文除了网络的最后一层不使用批量归一化处理,其余所有层都使用批量归一化处理[11];同时除最后一层卷积使用Tanh 函数外,其余所有层都使用Relu 激活函数。
图2 生成器模型Fig.2 Generator model
2.3 判别器
通过对生成器使用损失函数训练后,生成器对缺失区域进行补全。 但是补全的效果并不能保证与真实图像保持一致。 为了图像生成的更加真实合理,在本文中引入全局判别器和局部判别器来鉴定图像是真实图像还是生成器修复的图像。 判别器的主要作用是通过与生成器不断的对抗训练,最终能够更准确的识别真假图像。 同样地,判别器也由一系列卷积层组成,如图3 所示。
图3 判别器模型Fig.3 Discriminator model
全局判别器的输入为完整的整幅图像,网络由5 个卷积层和1 个全连接层组成。 全局判别器从整体上判断生成的图像是否真实合理,即整幅图像的上下文信息是否一致。 局部判别器的输入为整幅图像的一半,网络由4 个卷积层和1 个全连接层组成,局部判别器只检测以补全区域为中心的部分,用来判断局部修复的纹理特征是否合理。 局部判别器与全局判别器相同,除网络最后一层外,所有层都使用批量归一化处理。 同时,两个判别器除了最后一层使用sigmoid 激活函数,其余卷积层都是使用relu 激活函数。 最后,将两个判别器最后输出的向量连接到一起,得到1 个2048 维的向量,向量最后使用sigmoid 激活函数,生成0 ~1 之间的数值,这个数值的大小决定了输入图像为真实图像的概率。
3 损失函数
通过缩小修复图像与真实图像之间的距离来达到修复缺失图像的目的,因此本文采用感知损失[12-13]与MSE 损失相结合的方式来训练生成器模型。 其次,使用GAN 损失联合更新判别器和生成器模型,使得生成的图像更加真实。
GAN 损失采用生成对抗网络的对抗训练策略,其本质是求最大最小的优化问题。 这体现了生成器不断优化自己,生成更加真实的图像欺骗判别器,判别器也不断更新优化,使得能够正确的区分真伪图像。 GAN 损失的表达式(1):
其中,Pdata(x) 为真实数据x 的分布, Pz(z) 为噪声变量z 的分布,G(z) 为生成器的输出。
生成器的损失函数包含两个部分,MSE 损失函数表示为(2):
其中,X 为待修复的图像M 时输入的掩码,×为像素的乘积。
感知损失函数,使用预训练的VGG19 的relu 激活层输出的特征图。 在本文实验中,特征图选择relu1-1,relu2-1,relu3-1 三层的输出。 感知损失定义为(3):
CjHjWj表示第j 层特征图的大小,Øj是预训练网络第j 层的特征图。
综合上述GAN 损失函数和生成器损失函数可得(4):
其中,α,β 为训练时的权重。
4 实验
4.1 实验平台及内容
本实验基于windows 操作系统的tensorflow 框架下运行,python 为编程语言。 实验设备CPU:Inter i7-8700,GPU:RTX2070S-8G,内存:16G。
实验的数据集为celebA 人脸数据集,原始数据集大小为178×218,在模型训练时将图片缩为128×128 的图像,全局判别器的输入为128×128,而局部判别器的输入大小为修复区域为中心的64×64。 实验选取数据集的100 000 张图像,其中80 000 张用来模型的训练,20 000 张用来模型的测试。 在训练过程中,生成器的网络迭代20 000 次,判别器网络迭代10 000 次,生成器和判别器联合迭代70 000 次。
4.2 实验过程
本文的训练分成3 个阶段。 首先,利用感知损失和MSE 对生成器进行训练,使之生成大致的修复图片;其次,固定生成器,根据上一阶段训练的生成器对判别器进行训练,利用GAN 损失对判别器迭代更新;最后,对生成器和判别器一起训练,直至训练结束。 后续采用泊松图像混合对图像进行处理。
4.3 评估标准
实验结果的评估标准由定性分析和定量分析两部分组成,将本文的实验结果与自动编码器、DCGAN以及Context Encoder 这3 种不同的方法进行比较。在定性分析中,3 种对比方法中的视觉图像效果引用文献[15]中的效果图。 为了直观的比较,本文把最后的修复效果图裁剪为相同的人脸位置。 各个方法的修复图如图4(从左至右分别为待修复图、自动编码器、DCGAN、Context Encoder、本文、原图)所示。
图4 对比图Fig.4 Comparison picture
由图4 可知,自动编码器方法的效果最差,这是因为自动编码器只由生成器模型生成,无法将损失降到最小,修复区域出现了结构扭曲现象;对比自动编码器,DCCGAN 方法的图像修复效果从内容上保持了一致性,但是图像的局部细节修复的效果较差;Context Encoder 方法在内容和局部细节上都表现较好,但边缘连接区域修复痕迹明显,缺乏视觉连通性。 本文方法与Context Encoder 方法相比,修复效果与原始图像更加相似,边缘修复痕迹也比较淡。
定量分析使用峰值信噪比(PSNR)和结构相似性(SSIM)两个指标来衡量图像的修复效果。 PSNR是常用的判断图像质量的评价指标,虽然有时会出现数值结果与人的主观感受不一致的情况,但仍然可以作为一个有效的评判标准。 其主要比较图像对应像素之间的差别,PSNR 数值越大,表明失真越小。 另一个主要的评价标准SSIM,从亮度、对比度和结构3 个方面来衡量,用均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。 得到的数值大小体现了两幅图像的相似程度,数值越大,代表两幅图像差距越小,修复的效果越好。 计算的结果如表1、表2 所示。
表1 不同图像补全方法的PSNR 值Tab.1 The PSNR of different image completion methods dB
表2 不同图像补全方法的SSIM 值Tab.2 The SSIM of different image completion methods
5 结束语
基于生成对抗网络模型对图像进行修复,生成器采用编码器-解码器结构,判别器全局判别器和局部判别器,用来保证整体修复的一致性和局部信息细节的合理性。 训练过程使用基于VGG 预训练特征图的感知损失与MSE 相结合训练生成模型,修复效果与自动编码器、DCGAN 以及Context Encoder方法进行比较。 根据定量分析和定性分析可知,本文方法实现了较好的修复效果。 然而模型的修复效果非常依赖训练集,对于除人脸修复的其他图像修复,则需要重新训练数据集,对于建筑物及风景的修复则需要进一步的研究与训练。