基于生成对抗网络的遮挡图像修复算法
曹志义, 牛少彰, 张继威     
北京邮电大学 智能通信软件与多媒体北京市重点实验室, 北京 100876
摘要

提出一种基于生成对抗网络的遮挡图像修复算法,能够在大量像素缺失的场景下复原出图像的本来面目.该算法不同于其他的样本块搜索复原算法,可直接生成并且填充可能的缺失元素,改进了生成对抗网络生成模型的结构和生成损失的计算方法,具有半监督学习的特点.实验结果表明,在满足图像整体轮廓的前提下,新算法优于其他算法.

关键词: 生成对抗网络     半监督学习     遮挡图像修复    
中图分类号:TN929.53 文献标志码:A 文章编号:1007-5321(2018)03-0081-06 DOI:10.13190/j.jbupt.2017-247
Masked Image Inpainting Algorithm Based on Generative Adversarial Nets
CAO Zhi-yi, NIU Shao-zhang, ZHANG Ji-wei     
Beijing Key Laboratory of Intelligent Telecommunication Software and Multimedia, Beijing University of Posts and Telecommunications, Beijing 100876, China
Abstract

A masked image inpainting algorithm based on generative adversarial nets was proposed, which can restore the original image from the lacking of a large number of pixels. Unlike other block search restoration algorithms, the algorithm proposed directly generates possible missing elements and restore them. Due to the improved structure of generated model and the calculation method of generating loss on generative adversarial nets, this article has the characteristics of semi-supervised learning. Experiments show that the proposed method outperforms the existing one on the premise of satisfying the overall contour of the image.

Key words: generative adversarial nets     semisupervised learning     masked image inpainting    

图像修复(Ⅱ, image inpainting)由Bertalmio等[1]在2000年被提出,是利用计算机或者数字设备对已经破损的数字图像进行残缺区域的填补和修复,最终实现视觉上的合理.早期优秀的算法是Criminisi等[2]在2004年提出的基于样本块的修复算法.首先计算样本块之间的优先权值,然后选择以最大优先权值点为中心的块作为当前待填充块,最后更新填充区域,重复上述过程直至破损区域完全被填充.由于文献[2]中所述算法存在填充顺序不稳定和匹配准则不合理的问题,Wong等[3-5]提出了有效的改进方案,并且取得了不错的效果.但是块搜索算法存在的最大问题是缺损区域较大,或图像特征比较独特时很难完整填充.近年来,由于深度卷积网络和生成对抗网络的发展,Li等[6]在2017年提出了基于生成对抗网络的面部修复算法.该算法能够修复完整的面部特征,较好地弥补了块搜索算法的不足,但是算法的本质是深度卷积对抗网络,继承了深度卷积对抗网络的不稳定特性和振荡现象,且不易收敛.笔者提出了一种改进的生成对抗网络模型,解决了不稳定特性,且收敛的速度更快.

1 相关研究

生成对抗网络(GANs,generative adversarial nets)是Ian Goodfellow等[7]在2014年提出的一种无监督学习的训练方法,是机器学习领域最为热门的研究之一. GANs启发自博弈论中的二人零和博弈,GANs模型中的两个博弈方分别由生成式模型(G, generative model)和判别式模型(D, discriminative model)充当.生成模型G捕捉样本数据的分布,用服从高斯分布的噪声Z生成一个类似真实训练数据的样本,越像真实样本越好;判别模型D是一个二分类器,可估计一个样本来自于训练数据的概率,如果样本来自于真实的训练数据,D输出概率1;否则,D输出概率0.但是GANs不稳定,有时它永远不会开始学习,或者生成合格的输出.

从2014年起,很多研究者都在尝试解决其不稳定问题,并取得了很多成果.其中最著名的改进是Radford等[8]在2015年提出的深度卷积对抗网络(DCGAN, deep convolutional generative adversarial networks),其将生成对抗网络和卷积神经网络(CNN, convolutional neural network)结合了起来,并且在大规模数据集上取得了成功.尽管DCGAN的效果不错,但是并没有根本上解决GANs网络的不稳定问题,且训练过程存在震荡现象,因采用了深层CNN网络,训练的时间和生成模型的效果常常不成正比. 2017年Arjovsky等[9]提出了瓦瑟斯坦对抗网络(WGAN, Wasserstein GAN),成功地解决了崩溃问题,虽然结果不一定理想,但确保了生成样本的多样性.

图像修复实验主要利用了WGAN网络,但是单一网络性能不够稳定,经过多次实验,成功利用了DCGAN和WGAN网络.

首先尝试采用WGAN网络,最初的实验结果存在模糊现象,后来采用文献[6]的面部修复生成试验的二次判别损失算法,在判别损失计算部分采用DCGAN网络,模型优化部分采用WGAN网络优化器,取得了不错的效果.对比之前的GANs模型,有如下改进:

1) 生成模型直接输入遮挡图像,而文献[6]算法和WGAN网络则输入100维的高斯分布.改进后更有利于卷积网络优化,整体网络的性能更加稳定,收敛速度更快.

2) 改进了生成损失的计算方法,比文献[9]中网络的生成损失计算增加了4个新的参数;对比文献[6],从本质上发挥了首次判别损失和整体判别损失2个损失的作用,网络训练所需时间减少了40%.

3) 当生成损失的值降低到0.1以下时,给每次的变化限定一个范围,防止振荡现象.改进后的结果表明,本网络具有明显的WGAN网络特征,但又不同于文献[9]中对于判别损失的裁剪.

2 新型GANs网络设计 2.1 生成模型、判别模型和二次判别模型设计

生成模型G用于根据输入的图像特征输出学习到的图像特征.最终经过6次卷积得到16×64×64×3的向量.判别模型D用于判断生成模型的输出是否合理,它的输入为生成模型的输出,判别模型根据计算生成模型的输出与原始图像的交叉熵来表示生成模型的效率.

二次判别模型的输入是生成图像的遮挡部分,它的学习目标是真实图像中未遮挡对应的区域.该部分的向量表示为16×20×20×3.

生成模型和判别模型不断学习,再加上二次判别模型,在对抗中实现从遮挡图像到真实图像的修复过程.

2.2 生成损失、判别损失和二次判别损失计算

根据文献[9]中的算法分析,WGAN的生成损失计算如式(1)所示,其中X表示判别模型的输出.为了进行遮挡图像修复,利用式(1)进行图像修复的效果很差.参考Oord A等[10]在2016年提出的使用PixelCNN解码器进行条件图像生成一文的损失计算方法,将计算的重点放在生成模型输出与真实图像特征的距离上,如式(2)所示.

$ L\left( X \right) = \frac{1}{{16 \times 16 \times 16 \times 3}}\mathop \sum \limits_{s = 1}^{16} \mathop \sum \limits_{i = 1}^{16} \mathop \sum \limits_{j = 1}^{16} \mathop \sum \limits_{k = 1}^3 | - x_{_{i, j, k}}^{^s}| $ (1)
$ \begin{array}{c} {L_1}\left( {X, Y} \right) = \\ \frac{1}{{16 \times 16 \times 16 \times 3}}\mathop \sum \limits_{s = 1}^{16} \mathop \sum \limits_{i =1 }^{16} \mathop \sum \limits_{j = 1}^{16} \mathop \sum \limits_{k = 1}^3 |x_{_{i, j, k}}^{^s} - y_{_{i, j, k}}^{^s}| \end{array} $ (2)
$ C\left( {y, a} \right) = - \frac{1}{n}\mathop \sum \limits_x [y{{\ln}}~a + \left( {1 - y} \right){\rm{ln}}\left( {1 - a} \right)] $ (3)

生成损失有3个参数输入,即判别模型输出(定义为d)、生成模型输出(定义为g)、真实图像特征(定义为f).二次判别损失等于遮挡块图像损失(定义为o)与其对应的真实图像损失的L1(定义为m).最终二次判别模型损失定义公式如下:

$ {L_2} = {L_1}\left( {o - m} \right) $ (4)

判别损失等于生成图像损失(定义为l)与真实图像损失的差(定义为k).其中真实图像损失是真实特征图像(定义为f)在判别模型的输出(定义为t)的平均交叉熵(其输入ay分别为上文定义的t和1值化的tr表示),生成图像损失是生成结果(定义为g)经过判别模型输出(定义为d)的平均交叉熵(其输入ay分别为上文定义的d和1值化的dr表示).最终判别模型损失定义公式如下:

$ {D_1} = C\left( {e, d} \right) - C\left( {r, t} \right) $ (5)

尽管文献[9]中提到避免对数,但是实验证明对于遮挡图像修复来说生成损失使用交叉熵效果很好,如式(3)所示.生成损失第1部分的输入xy分别为上文定义的gf.第2部分交叉熵的输入ay分别为上文定义的d和1值化的d(定义为e).最终生成损失定义如下:

$ {G_1} = {L_1}\left( {g, f} \right) \times 0.3 + C\left( {e, d} \right) \times 0.4 + {L_2} \times 0.3 $ (6)
2.3 权重参数优化

对抗网络的最终目标为最小化生成损失和判别损失,为此需要选择合适的优化器来优化梯度的方向,经过不断试验,共用到2种优化器.生成模型采用Kingma等[11]在2014年提出的用Adam优化算法来优化的梯度方向.

2.4 对抗过程

每次训练先通过前向反馈计算生成损失和判别损失,后通过梯度下降最小化损失并更新权重参数.每训练200次的权重参数作为还原模型来训练测试特征图像,并将测试图片的生成结果保存.最终得到75组训练特征图片,这些特征图片的清晰度随着训练时间的增长而逐步变好.新型GANs完整的结构如图 1所示.

图 1 新型GANs网络对抗流程
3 实验细节 3.1 实验环境与实验规划

实验操作系统为windows10,64位,基于tensorflow框架,版本为1.30.显卡型号为GTX1080, 编程语言python3.5,其中的核心扩展moviepy为0.2.2.11版本,Numpy为1.11.1版本,scipy为0.18.0版本,six为1.10.0版本.用于人脸修复实验的数据集采用公开的人脸数据集CELEBA,共有20万张大小为178×218的人脸照片.实验过程如下:

1) 新型GANs网络遮挡图像修复实验;

2) 采用不同的测试图像与相同的训练步骤,分析遮挡图像修复的结果;

3) 采用相同的实验数据与步骤,不同的遮挡位置分析还原结果;

4) 采用相同的实验数据与步骤,与不同的遮挡图像修复算法对比.

3.2 新型GANs网络遮挡图像复原实验

本组试验的目标是测试遮挡图像复原的效果.测试样本一共1 000张.测试样本如图 2所示,大小为178×218.遮挡复原的结果如图 3所示.开始实验之前先把图像压缩到64×64然后添加遮挡区域开始训练.实验的目标是为了缩小遮挡照片与真实特征的差异,最终将遮挡照片修复.每次循环先经过生成模型生成输出,然后判别模型进行判别,再利用生成模型与判别模型的输出计算生成损失与判别损失.最后通过反向传播算法优化权重参数,开始下一次循环.经过1.5万次循环的结果如图 3所示,基本上复原出真实人脸特征.

图 2 新型GANs测试样本

图 3 修复结果

整个实验过程的稳定性,可由生成损失曲线图图 4所示.

图 4 新型GANs网络收敛过程
3.3 不同测试图像遮挡修复对比试验

本组试验的目标是测试遮挡图像复原在不同背景、发型、脸型等条件下的还原结果对比.本组一共进行了1 000次实验,其中遮挡块的算法是在64×64图像中选择从右上角开始20~40区域选择坐标在横坐标20,纵坐标20~40对应像素点填充该片区域.

最好的还原结果如图 5图 3所示.经过分析发现此类测试图像的特点是背景干扰少,没有长头发之类的其他干扰项.

图 5 较好的还原结果

而中等的还原结果如图 6所示.经过分析发现,此类测试图像的特点是表情严肃,小鼻子,小眼睛,有长头发之类的其他干扰项.同时由于学习的样本大部分是西方人脸,所以肤色有一些差异.

图 6 中等的还原结果

较差的还原结果如图 7所示.经过分析发现,此类测试图像的特点是有别人没有的稀缺部位,比如有嘴唇、长头发之类的其他干扰项.但此类的还原结果基本上能跟原始图像对照,通过还原结果完全可以辨别本人.

图 7 较差的还原结果
3.4 相同图像不同遮挡位置修复对比试验

本组试验的目标是测试遮挡图像复原在不同区域的复原结果.主要集中在左眼、鼻子和右眼区域的测试.本组一共进行了1 000次实验,其中鼻子区域遮挡块的算法是在64×64图像中选择从左上角开始20~40区域选择坐标为横坐标20,纵坐标从20~40对应像素点填充该列区域.

鼻子区域的复原结果如图 8所示.经过分析发现,尽管有发型的干扰,形成了黑白相间的遮挡块,本算法依旧可以复原,并生成合理的人脸推理特征.但是因为数据集大部分是西方人脸,肤色有些异常.

图 8 鼻子区域遮挡的复原结果

左眼区域的复原结果如图 9所示.经过分析发现,尽管左侧的遮挡干扰更多,本算法还是复原了左眼.此外,由于遮挡块有部分和头发紧密结合,导致鼻子区域有部分杂质.此处遮挡块算法是在64×64图像中选择从左上角开始15~35区域选择坐标为横坐标15,纵坐标15~35对应像素点填充该片区域.右眼区域的复原结果如图 10所示.经过分析发现,尽管右侧的遮挡区域大,本算法还复原了右眼、右脸和嘴巴的真实特征.此处遮挡块的算法是在64×64图像中选择从左上角开始25~45区域选择坐标横坐标25,纵坐标25~45对应像素点填充该列区域.

图 9 左眼区域的复原结果

图 10 右眼区域的复原结果
3.5 不同遮挡复原算法对比试验

为了对比试验的性能,重现了文献[3]与文献[4-6]描述的实验过程.分别进行了1 000次试验,试验的对比值取1 000次试验的平均值.其中文献[6]方法的复原效果如图 11所示.

图 11 文献[6]的复原结果

对实验的数据进行分析,得到了各自的对比参数值.最终的实验对比结果如表 1所示.

表 1 遮挡复原算法对比

本文的算法比文献[6]减少了一个解析网络,达到了稍好的实验结果.因此训练时间和测试时间都大幅减少.时间复杂度中n与图像大小有关,m与网络参数个数有关.

4 结束语

研究了利用生成对抗网络网络进行遮挡图像复原.首先改进了生成模型的输入;其次改进了WGANs网络生成损失计算方法,使得生成模型的目标可以控制.同时利用了DCGAN网络在深度卷积训练上的优势,对于生损失和判别损失的优化方向做出了改进.然后为了强化复原效果,因遮挡区域的复原权重较高引入了二次判别模型.通过实验首先生成了遮挡图像的逼真复原结果,其次验证了算法改进后可以修正WGAN网络的不稳定特性,最后通过对比证明本算法的效果好于现有算法.

参考文献
[1] Bertalmio M, Sapiro G, Caselles V, et al. Image inpainting[C]//Conference on Computer Graphics and Interactive Techniques. New Orleans, LA: ACM Press/Addison-Wesley Publishing Company, 2000: 417-424.
[2] Criminisi A, Perez P, Toyama K. Region filling and object removal by exemplar-based image inpainting[J]. IEEE Transactions on Image Processing, 2004, 13(9): 1200–1212. doi: 10.1109/TIP.2004.833105
[3] Wong A, Orchard J. A nonlocal-means approach to exemplar-based inpainting[C]//IEEE International Conference on Image Processing. San Antonio: IEEE, 2008: 2600-2603. http://ieeexplore.ieee.org/document/4712326/
[4] Bugeau A, Bertalmio M, Caselles V, et al. A comprehensive framework for image inpainting[J]. IEEE Transactions on Image Processing, 2010, 19(10): 2634–2645. doi: 10.1109/TIP.2010.2049240
[5] Wu J, Ruan Q, An G. Exemplar-based image completion model employing PDE corrections[J]. Informatica, 2008, 21(2): 259–276.
[6] Li Y, Liu S, Yang J, et al. Generative face completion[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Hawaii: Convention Center, 2017: 6.
[7] Goodfellow I J, Pougetabadie J, Mirza M, et al. Generative adversarial nets[J]. Advances in Neural Information Processing Systems, 2014, 3(2): 2672–2680.
[8] Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. CoRR, 2015, 11(06434): 1–7.
[9] Arjovsky M, Chintala S, Bottou L. Wasserstein gan[J]. arXiv preprint arXiv: 1701. 07875, 2017. https://arxiv.org/abs/1701.07875.
[10] Van den Oord A, Kalchbrenner N, Espeholt L, et al. Conditional image generation with pixelcnn decoders[C]//Advances in Neural Information Processing Systems. Barcelona: [s. n. ], 2016: 4790-4798.
[11] Kingma D P, Ba J. Adam: a method for stochastic optimization[J]. arXiv preprint arXiv: 1412. 6980, 2014. https://arxiv.org/abs/1412.6980.