传统的修复方法根据图像的边缘、纹理和结构,利用图像中的残留信息推断被破坏的内容,完成图像修复。例如,[1-2]提出了流体动力学修复方法,使用边界梯度匹配法对小面积缺失图像修复。[3-5]提出了以范例patch为基础的几何构造修复方法。[6-7]提出了最近邻搜索图像的修复方法。这些方法能实现小面积的图像修复,但大多只重视局部图像的协调性,较少考虑全局协调性,如果图像的结构和内容复杂,或图像损坏的面积较大,往往不能完整地修复图像的特征。Hays和Efros[8]提出了图像补全算法,在数据库中寻找语义和结构相似图像区域修补损坏区域,该算法完全是数据驱动,不需要用户标记,但需要从数据库进行精确匹配,当测试场景与任何数据库图像有显著差异时,很容易失败。为了重建大面积缺失图像的合理结构,Nazeri等[10]提出了一种两阶段对抗式的边缘连接模型,能实现大面积缺失的图像修复,但需要有完整的样本提取图像的边缘,否则无法完成修复。
为了实现大面积图像缺失的修复,[11-16]提出了基于神经网络图像修复方法。这类方法克服了传统方法不能修复图像特征和图像连贯性的缺点,但需要完整且精度高的训练样本。例如,Pathak等[15]提出了一种基于上下文像素预测驱动的图像修复方法,通过上下文编码器理解整个图像的内容, 对丢失部分进行假设,修复的结构失真度较高。Brock等[17]提出了训练大规模生成对抗网络(Generative Adversarial Network,GAN)的方法,使用数据截断、正交正则化等技巧,保证大规模训练样本GAN训练的稳定性。
Ahmadi等[18]提出了新的训练GAN的方法,称为AmbientGAN,在3个基准数据集和各种测量模型上作了大量的定性和定量改进。为了解决一般深度神经网络向修复区域引入伪影和噪声的问题,Demir和Unal[9]提出了一种基于GAN框架的图像修复方法,捕获图像纹理的局部连续性和全局特征,明显提高了大面积缺失的图像修复精度。随着GAN的发展,通过半监督或大规模的完整图像样本的训练,可生成高精度、人眼无法分辨的修复结果[19-22]。但是现有的基于深度学习的图像修复方法,大多需要高精度和完整的前期训练样本。在实际修复图像中,找到高质量且完整的样本图像的成本很高,而且很多待修复图像根本没有完整的训练样本。
综上所述,现有图像修复方法存在大面积修复质量低或需要大量完整且高质量的训练样本及收敛慢的缺陷。为解决以上问题,本文提出了双生成器深度卷积生成对抗网络(DGDCGAN)模型;主要创新在于:①提出了包含双生成器的深度卷积生成对抗网络模型,以残缺或含噪图像样本作为训练集,无需完整或高质量训练样本; ②计算两两图像之间的鉴别器输出的Wasserstein距离,提高模型稳定性,计算修复图像总距离变化均方差最小化优化修复结果;③使用空洞卷积替换标准卷积,减少模型的参数量。
1 生成对抗网络模型 Goodfellow等[16]提出GAN模型框架,GAN模型通过学习数据的分布将低维的随机分布样本映射生成高维空间样本,鉴别器网络模型学习区别真实样本和生成样本,建立最大和最小机制联合训练生成和鉴别网络。模型的对抗损失函数为
(1) |
式中:V(G, D)为对抗损失函数;x为输入概率分布为pdata的真实图像;z为概率为pz的正态分布数据。
GAN模型结构如图 1所示。GAN模型的目标损失函数最小化生成图像分布和真实图像分布的KL(Kullback Leibler)散度,且最大化两者的JS(Jensen-Shannon)散度,会导致模型梯度不稳定。Arjovsky等[21-22]提出WGAN解决GAN训练不稳定问题,使用Wasserstein距离[23]代替复杂函数计算,提高计算速率和模型稳定性。WGAN的目标损失函数为
(2) |
图 1 GAN模型训练 Fig. 1 GAN model training |
图选项 |
GAN中鉴别器学习真实图像的分布优化模型参数,不断优化训练和真实图像相似的生成图像。本文依据Wasserstein距离的优点来构造鉴别器目标损失函数。
2 DGDCGAN模型 本文模型包含2个生成网络G1(z1)、G2(z2) 和1个鉴别器网络D(·),如图 2所示。在原图上加上随机高斯分布生成的掩膜后得到残缺图像,将一组残缺图像输入生成模型G,通过映射关系f(z)产生随机分布修复gi和gj。对抗训练生成网络和鉴别网络,多次迭代后,得到生成网络和鉴别网络最优的修复网络模型。相比一般的GAN模型,本文中训练集图像为残缺图像,有2个生成模型,相比单个生成器的结构, 本文网络可以更快地遍历到最优的网络参数和结构,理论上收敛速度是单个生成器的2倍。DGDCGAN模型的结构如图 2所示。
图 2 DGDCGAN的网络结构 Fig. 2 Network structure of DGDCGAN |
图选项 |
对提出的模型结构作消融性分析,主要的结构为G1(·) 和G2(·)、D(·), 生成对抗网络需要一个生成器和鉴别器,由于训练集为残缺图像,不同图像之间丢失位置不同,单个生成器不能学习到图像的完整结构,且迭代到一定次数时,生成器和鉴别器的损失值波动极大,模型不稳定且无法学习到损失区域的图像信息。假设生成的残缺图像中有已知的分布p(xi),通过残缺图像的集合{y1, y2, …,yn} 得到概率分布p(yi),从已有的变量中构建输入概率分布p(xi)的生成模型。生成模型用于生成图像残缺部分,模型中的f(·)表示对应的映射关系,图 2中的映射函数和卷积函数如下:
(3) |
式中:σ(·)表示潜在的网络层函数关系;w、b为根据输入图像大小而变化的矩阵:
(4) |
残缺图像样本中残缺部分可以从其他图像中学习,因此构造了2个生成器网络。交替训练2个生成器网络时,残缺图像样本{y1, y2, …,yn}中的残缺部分在另一个生成器中有1/p(yi)的概率可以补全,为了能更清楚地说明修复原理,本文使用同一张图片构造残缺图像。使用3通道28× 28的随机分布掩膜构造残缺图像,设(x0, y0)是随机掩膜左下角的坐标位置,若U0、U1是服从(0, 1)均匀分布的随机变量,掩膜正方形的坐标生成公式为
(5) |
如图 3所示,将残缺图像分为a、b、c、d四块区域,依据图像结构、亮度、对比度的相似度,图像缺失的区域可以从同类图像或者结构相似的图像中学习相应的结构和参数进行修复。
图 3 图像残缺分布 Fig. 3 Image fragmentation distribution |
图选项 |
通过残缺图像区域概率分布得到最优的损失函数输出映射满足:
(6) |
从损失函数的平衡点可知,当训练生成图像满足g1=g2时,生成器和鉴别器最优,此时2个生成互补完成了修复图像的生成。式(6)求得的原始图像分布唯一地决定了生成图像的分布,即需找到一个生成模型使生成图像分布与真实图像分布最匹配。
1) 生成器损失函数。本文模型包含2个生成网络,为了使2个生成网络生成更好的样本,以及判别网络将2个生成网络的生成样本判为相同的概率提高,要避免2个生成网络的掩膜位置重叠导致过拟合或最小化生成器损失函数失败,需要交替最小化鉴别网络输出值。因此,生成网络损失函数为
(7) |
式中:M为残缺图像。
2) 鉴别器损失函数。模型训练成功的关键在于:构造合理的鉴别器损失函数,使2个生成器生成图像结合残缺图后让鉴别器网络判定真实的样本。设计2个生成器互相学习,互相强化,相应的鉴别器损失函数为
(8) |
3 目标损失函数 在数据集上添加随机的掩膜生成残缺图像作为训练样本,假设残缺部分可以从其他残缺图像中找到互补的区域,构建和调优的关键是设计2个损失函数同时满足:①使生成器生成更好的图像;②鉴别器区分生成的图像分布和真实图像分布。本文模型将生成图像作为真实的图像输入鉴别器,计算两两图像之间鉴别器输出的Wasserstein距离和总距离变化均方差,计算值最小的模型即为最优的生成网络和鉴别网络。定义像素为m×n的图像img1和img2,计算生成器输出图像差别的总距离变化均方差:
(9) |
生成器目标损失函数求2个生成器的鉴别模型输出的最小化值;鉴别器目标损失函数求2个生成图像的鉴别器的输出值的最小均值和鉴别器输出的Wasserstein距离:
(10) |
每一个输入生成器数组的值被设置为1,随着实验次数增加,生成网络会匹配到一个与原图差别最小的网络模型。使用随机高斯向量作为生成网络的参数初始化函数,经过多层卷积可以完整地学习图像的结构信息,从而完成图像的修复。2个生成网络比单个生成网络收敛速度更快。
4 方法流程 使用Adam训练DGDCGAN模型,构建G1和G2两个不同的生成器网络。模型中优化器的动量设置为0.5,迭代次数为500次,所有输入样本被等比缩放为64×64像素;初始化参数为: learning_rate=0.000 1, momentum=0.5, batch_size=16, N=64(N为需要加载的残缺图数),masks为图像缺失部分掩膜(掩膜底片为黑色,缺失区域为白色)。方法流程如下:
初始化参数: learning_rate=0.000 1, momentum=0.5, batch_size=16, N=64;图像掩膜。
1. 加载残缺图像{img0, img1, …,imgN }。
2. 获取图像的未丢失部分: RM(x)=img· masks。
3. while iter训练迭代次数do:
4. ??for k=1, 2, 3, …, Kd do:
5.????生成维度[1, 100]随机样本矩阵{z(i)}~p(zi)作为生成器G1的输入样本, 服从正态分布。
6.????生成维度[1, 100]随机样本矩阵{z(j)}~p(zj)作为生成器G2的输入样本,服从正态分布。
7. ????if(iter%2= =0)
??????{
10. ??????将生成的图像对应区域补到原图imgN的残缺区域,等待优化。
?????}
11.????else
?????{
12. ??????对换第8步 G1、G2作交叉训练, 让G1、G2同步学习。
?????}
13.????使用Adam优化算法优化生成器G1、G2和鉴别器D网络结构。
14. ??????end for
15.????生成维度[1, 100]随机样本矩阵{z(i)}~p(zi),服从正态分布。
16.????生成维度[1, 100]随机样本矩阵{z(j)}~p(zj),服从正态分布。
19.????使用Adam优化算法优化更新生成器G1、G2和鉴别器D网络结构。
20. ??end while
从方法流程可以看出,本文方法的时间复杂度为O(nk),与一般的GAN相同;说明增加了一个生成器网络没有增加时间复杂度,但是增加了内存占用。
5 实验 5.1 数据集 本文使用了4个数据集:CelebA是大型的人脸数据集,包含超过20万张名人图像,图像包含较大的姿态变化和杂乱的背景[24];MNIST是28×28的手写数字数据集,训练集包含6万个示例,测试集有1万个示例[25];SVHN是32×32的门牌号数据集,图像是小的裁剪数字,有超过60万张数字图像[24];Cifar10是32×32大小的10种不同类型的图像,由6万张彩色图像组成,训练图像5万张,测试图像1万张[25]。
5.2 实验环境 实验使用Anaconda搭建的python3.6环境,基于tensorflow1.14的GPU版本实现GAN框架,网络训练硬件环境为:NVIDIA的Geforce RTX 2080内存16 GB,显存8 GB,主频3.6 GHz的服务器。
5.3 模型训练 为了验证模型修复的有效性,选取了3幅不同的图像,随机放置28×28的白色正方形遮蔽块,将输入样本顺序打乱作为训练集。分别给出了3幅图像迭代训练的实验结果,如图 4~图 6所示。
图 4 兔子训练样本流程 Fig. 4 Rabbit training sample flow |
图选项 |
图 5 MNIST数字的残缺图像 Fig. 5 Incomplete image of MNIST number |
图选项 |
图 6 熊的训练图像样本 Fig. 6 Training samples of bears |
图选项 |
图 4~图 6对比可以看出,添加了白色掩膜的图像(见图 4~图 6的图(a))被随机打乱顺序,随着训练次数的增加,逐渐从大面积的损失中恢复出原图像,图(b)中含有较为明显的掩膜块;图(c)和图(d)中随着训练次数增加,掩膜块逐渐消失;图(e)很好地还原出原图像。随着迭代次数的增加,鉴别器网络和生成器网络的损失函数逐渐优化残缺部分的图像。图 7为图 6样本训练损失函数在优化过程中的变化曲线。
图 7 随迭代次数增加损失函数和修复效果 Fig. 7 Results of loss function and inpainting as the number of iterations increases |
图选项 |
图 7中,训练样本随着迭代次数的增加,g_loss统计2个生成器的均值,数值先快速下降,然后发生平缓变化,d_loss下降一点之后开始平缓变换。随着生成函数的损失值逐渐变小,鉴别函数损失值变大后逐步调整,输入的残缺图像逐渐得到修复。从图 8中可以看出,当函数训练迭代150次之后,损失值浮动无很大的波动,表明模型稳定性较好;图 8中单个生成器的损失函数值波动较大,模型训练不稳定。
图 8 使用单个生成器时模型损失函数变化 Fig. 8 Change of model loss values when using single generator |
图选项 |
5.4 实验结果 分别选取CelebA、Cifar10、SVHN中的部分图像覆盖28×28的白色掩膜后作为模型的输入。训练的学习率为0.000 1,经过1 500次的迭代和编码后,加载训练的生成文件,输入数据集的残缺图像,最终得到修复结果,如图 9~图 11所示。
图 9 CelebA数据集修复效果对比 Fig. 9 Comparison of inpainting result of CelebA dataset |
图选项 |
图 10 Cifar10数据集修复效果对比 Fig. 10 Comparison of inpainting result of Cifar10 dataset |
图选项 |
图 11 SVHN数据集中门牌号修复效果对比 Fig. 11 Comparison of inpainting results of door number in SVHN dataset |
图选项 |
通过以上数据集修复结果可以看出,本文模型不但可以修复简单结构的数字,对结构、特征复杂的人脸等图像也有很好的修复效果。
5.5 质量评价 为了进一步验证本文方法的有效性和高精度性,对比5种方法来验证有效性。图 12(b)为中心被32×32掩膜覆盖的残缺图像,FMM[1]是基于快速行进的修复方法,PM[4]是利用图片中的其他区域来恢复边缘区域的方法,GAN_1[26]是改进GAN模型激活函数的方法,GAN_2[27]是对GAN模型的目标函数添加负反馈系数的方法,SI[20]是基于经典生成对抗网络的修复方法。
图 12 修复方法效果对比 Fig. 12 Results comparison of inpainting methods |
图选项 |
从图 12中可以看出,FMM方法修复大面积的缺失存在大量模糊区域,不能修复丢失的区域;PM未能修复图像的整体结构, 有明显的拖影;SI方法能修复图像的结构,但结果与原图像存在色差,如SI的修复结果会出现白色的斑块,这是由于模型不稳定造成的;GAN_1未能根本上解决GAN网络不稳定、不收敛的问题,修复图像存在色斑,修复图像不完整,在同样的迭代次数的情况下,修复效果不如GAN_2方法和本文方法;GAN_2对WGAN添加反馈系数,一定程度上改善了网络的性能,但修复图仍然存在明显色斑;本文方法修复的图像完整修复了缺失区域的结构,且修复质量高。
为了更加客观地比较几种修复方法,计算了图 12中各方法修复结果的峰值信噪比(PSNR)和结构相似度(SSIM),如表 1所示。
表 1 不同方法的PSNR和SSIM对比 Table 1 PSNR/SSIM comparison of different methods
方法 | PSNR | SSIM | |||||
Car | Black man | Horse | Car | Black man | Horse | ||
FMM[1] | 24.49 | 22.25 | 23.03 | 0.79 | 0.73 | 0.75 | |
PM[4] | 23.39 | 20.40 | 23.98 | 0.72 | 0.70 | 0.76 | |
SI[20] | 31.12 | 40.39 | 38.35 | 0.97 | 0.96 | 0.91 | |
GAN_1[26] | 24.54 | 25.57 | 22.79 | 0.91 | 0.91 | 0.83 | |
GAN_2[27] | 30.38 | 36.22 | 37.98 | 0.94 | 0.91 | 0.95 | |
本文方法 | 32.19 | 41.06 | 38.59 | 0.99 | 0.99 | 0.97 |
表选项
从表 1可知,在同等训练次数条件下,本文方法修复结果的PSNR和SSIM数值都高于其他的方法,说明本文方法的修复结果更接近原始图像。
6 结论 1) 本文方法用残缺图像作为训练样本,能实现大面积失真图像的修复。
2) 生成器和鉴别网络中使用空洞卷积代替标准卷积,减少模型的参数量,加快了收敛速度。
3) 本文方法通过最小化修复图像总距离变化均方差优化结果,改善了修复细节。
为了使方法能用于大面积不规则真实图像修复,仍需优化模型结构,改进损失函数。
参考文献
[1] | BERTALMíO M, BERTOZZI A L, SAPIRO G. Navier-Stokes, fluid dynamics, and image and video inpainting[C]//2001 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE Press, 2001: 7176886. |
[2] | LIU D, SUN X, WU F, et al. Image compression with edge-based inpainting[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2007, 17(10): 1273-1287. DOI:10.1109/TCSVT.2007.903663 |
[3] | BUYSSENS P, DAISY M, TSCHUMPERLE D, et al. Exemplar-based inpainting: Technical review and new heuristics for better geometric reconstructions[J]. IEEE Transactions on Image Processing, 2015, 24(6): 1809-1824. |
[4] | DARABI S, SHECHTMAN E, BARNES C, et al. Image melding: Combining inconsistent images using patch-based synthesis[J]. ACM Transactions on Graphics, 2012, 31(4): 82. |
[5] | HUANG J B, KANG S B, AHUJA N, et al. Image completion using planar structure guidance[J]. ACM Transactions on Graphics, 2014, 33(4): 1-10. |
[6] | BARNES C, SHECHTMAN E, FINKELSTEIN A, et al. PatchMatch: A randomized correspondence algorithm for structural image editing[J]. ACM Transactions on Graphics, 2009, 28(3): 24. |
[7] | WEXLER Y, SHECHTMAN E, IRANI M. Space-time completion of video[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2007, 29(3): 463-476. DOI:10.1109/TPAMI.2007.60 |
[8] | HAYS J, EFROS A A. Scene completion using millions of photographs[J]. ACM Transactions on Graphics, 2007, 26(3): 4. DOI:10.1145/1276377.1276382 |
[9] | DEMIR U, UNAL G. Patch-based image inpainting with generative adversarial networks[EB/OL]. (2018-03-20)[2020-07-25]. https://arxiv.org/abs/1803.07422v1. |
[10] | NAZERI K, NG E, JOSEPH T, et al. EdgeConnect: Generative image inpainting with adversarial edge learning[EB/OL]. (2019-01-11)[2020-07-25]. https://arxiv.org/abs/1901.00212?context=cs. |
[11] | XIE J, XU L, CHEN E. Image denoising and inpainting with deep neural networks[C]//International Conference on Neural Information Processing Systems, 2012, 1: 341-349. |
[12] | YANG C, LU X, LIN Z, et al. High-resolution image inpainting using multi-scale neural patch synthesis[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE Press, 2017: 17355590. |
[13] | IIZUKA S, SIMO-SERRA E, ISHIKAWA H. Globally and locally consistent image completion[J]. ACM Transactions on Graphics, 2017, 36(4): 1-14. |
[14] | LI Y, LIU S, YANG J, et al. Generative face completion[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE Press, 2017: 17355119. |
[15] | PATHAK D, KRAHENBUHL P, DONAHUE J, et al. Context encoders: Feature learning by inpainting[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE Press, 2016: 16526723. |
[16] | GOODFELLOW I J, POUGET-ABADIE J, MIRZA M, et al. Generative adversarial nets[C]//International Conference on Neural Information Processing Systems. Cambridge: MIT Press, 2014: 2672-2680. |
[17] | BROCK A, DONAHUE J, SIMONYAN K. Large scale GAN training for high fidelity natural image synthesis[EB/OL]. (2018-09-28)[2020-07-25]. https://arxiv.org/abs/1809.11096v1. |
[18] | AHMADI M, NEST T, ABDELNAIM M, et al. Reproducing AmbientGAN: Generative models from lossy measurements[EB/OL]. (2018-10-23)[2020-07-25]. https://arxiv.org/abs/1810.10108. |
[19] | SALIMANS T, GOODFELLOW I, ZAREMBA W, et al. Improved techniques for training GANs[C]//International Conference on Neural Information Processing Systems, 2016: 2234-2242. |
[20] | ZHU J Y, PARK T, ISOLA P, et al. Unpaired image-to-image translation using cycle-consistent adversarial networks[C]//2017 IEEE International Conference on Computer Vision. Piscataway: IEEE Press, 2017: 17453078. |
[21] | ARJOVSKY M, CHINTALA S, BOTTOU L. Wasserstein GAN[EB/OL]. (2017-01-26)[2020-07-25]. https://arxiv.org/abs/1701.07875. |
[22] | ARJOVSKY M, BOTTOU L. Towards principled methods for training generative adversarial networks[EB/OL]. (2017-01-17)[2020-07-25]. https://arxiv.org/abs/1701.04862. |
[23] | CHEN Y, HU H. An improved method for semantic image inpainting with GANs: Progressive inpainting[J]. Neural Processing Letters, 2019, 49(3): 1355-1367. DOI:10.1007/s11063-018-9877-6 |
[24] | LIU Z, LUO P, WANG X, et al. Deep learning face attributes in the wild[C]//2015 IEEE International Conference on Computer Vision. Piscataway: IEEE Press, 2015: 3730-3738. |
[25] | LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324. DOI:10.1109/5.726791 |
[26] | 李雪瑾, 李昕, 徐艳杰. 基于生成对抗网络的数字图像修复技术[J]. 电子测量与仪器学报, 2019, 33(1): 40-46. LI X J, LI X, XU Y J. Digital image restoration technology based on generative adversarial networks[J]. Journal of Electronic Measurement and Instrumentation, 2019, 33(1): 40-46. (in Chinese) |
[27] | 李天成, 何嘉. 一种基于生成对抗网络的图像修复算法[J]. 计算机应用与软件, 2019, 36(12): 195-200. LI T C, HE J. An image inpainting algorithm based on generative adversarial networks[J]. Computer Applications and Software, 2019, 36(12): 195-200. (in Chinese) |