APP下载

基于多角度约束与谱归一化的图像修复算法

2021-08-12

计算机应用与软件 2021年8期
关键词:分类器卷积矩阵

杨 云 曹 真 齐 勇

(陕西科技大学电子信息与人工智能学院 陕西 西安 710021)

0 引 言

如今,以图像为代表的视觉信息影响着人们的日常生活。由于年代久远、保存不当等许多原因,许多珍贵的图像出现不同程度的破损,导致图像中的重要信息无法得到表达,为后续工作带来一定困难。为此,亟需图像修复技术补全图像。

图像修复技术指通过一定的方法恢复或重建带有缺失区域的缺损图像,具有非常广泛的应用领域,包括:医学影像修复、人脸图像修复、老照片修复、天文观测图像修复等。除此之外,其技术思想还可以扩展到图像去模糊、图像去雨等领域用于提高图像质量。人脸图像作为个人信息的重要表达方式,景色图像作为领略美景的重要方式,保证其完整非常重要。

随着深度学习在图像修复领域的飞速发展,其在面对大面积缺失的图像修复任务中展现出强大的修复能力。生成对抗网络模型由于可以拟合出更加真实的样本备受青睐。Pathak等[1]提出一种基于上下文内容编码器的图像修复算法,首先利用编码器解码器网络学习图像待修复区域的纹理信息并进行填充,然后在预修复网络的基础上添加判别器提高修复细节,实现了优于非深度学习方法的修复效果,但其存在训练不稳定问题导致修复结果不切实际。此方法打开了使用生成对抗网络进行图像修复任务的大门,随后衍生出一系列基于生成式对抗网络的图像修复模型,主要分为噪声型修复方法与端到端修复方法两大类。

其中,噪声型修复模型代表性研究为Raymond等[2]提出的使用深度卷积生成对抗网络模型进行图像语义修复任务,首先预训练一个生成能力突出的DCGAN模型,然后通过感知损失、内容损失约束模型生成器生成与缺失图像相近图像,截取修复块与缺失图像融合从而补全缺失图像,实现了优于上下文编码器网络的修复效果。李雪瑾等[3]在Raymond提出方法基础上改进Sigmoid函数,成功预测图像缺失区域信息。但噪声型修复模型存在训练不稳定以及结果不可控的问题,且二步修复过程带来时间过长问题。

噪声型模型修复过程时间过长,效果较差,因此,目前基于生成对抗网络的图像修复模型趋于端到端一步修复模型[6]。Iizuka等[4]提出一种全局与局部双判别器图像修复模型,针对原始单判别器模型修复效果不足的问题,增设局部判别器追踪图像局部待修复区域。Li[5]等提出双判别器生成对抗网络结构与相似块搜索算法结合的方法。Mao等[7]提出编码器解码器跳跃连接结构。虽取得不错修复效果,但部分细节信息无法被精确还原。从本质上看对于生成器约束不足,修复结果存在不确定性,输出结果往往无法精确还原出原始图像的类别特征、内容特征、风格特征。同时,针对于GANs训练不稳定问题并未引入改进策略解决,使得模型训练较为困难。

为此,本文提出多角度约束生成对抗网络(Multi-Angle GAN,MAGAN),在双判别器模型基础上增设分类器和Vgg19特征提取网络,利用分类器向生成器引入类别损失约束,利用Vgg19特征提取网络向生成器引入内容、风格损失约束,利用反向传播方法向生成器提供标志性信息梯度辅助生成器更新参数。同时,将谱归一化和Wasserstein距离方法引入判别器设计中,以稳定模型训练,辅助生成器完成更优的修复结果。

1 相关理论

1.1 Wasserstein GAN(WGAN)

初始GANs判别器设计存在一个普遍性缺陷,即训练不稳定问题。因此,从模型结构以及目标函数角度进行改进。WGAN从损失函数角度解决GANs训练不稳定问题,其提出使用Wasserstein距离改进模型的目标函数替换JS散度衡量标准,使得模型在训练过程趋于稳定。WGAN判别器损失函数如下:

D_loss=Ex~pdata(x)[D(x)]-Ex~pnoise(x)[D(x)]

(1)

式中:pnoise(x)为生成样本集合;pdata(x)为真实样本集合;E表示期望。

同时,其提出判别器的参数矩阵需要满足Lipschitz条件模型即可稳定训练,Lipschitz条件定义为限制函数变化的剧烈程度。Lipschitz条件的含义定义如下:

(2)

式中:D(x)为判别器的映射函数,若D(x)定义域内任意两点x1、x2的斜率都不大于一个固定常数L,此时D(x)满足Lipschitz条件。

1.2 谱归一化

Miyato等[8]提出谱归一化理论从模型架构角度解决GANs训练不稳定问题。主要思想是通过限制判别器参数矩阵使得判别器设计满足Lipschitz连续性。判别器网络可以看作是多层递归神经网络叠加,当输入x时,假设不使用激活函数和偏置b,则输出为:

Dn=Wn×Wn-1×…×W1×x

(3)

对于判别器中的任一层网络,其参数矩阵谱范数定义如下:

(4)

式中:σ(W)表示矩阵W的最大奇异值,也即谱范数;WT为矩阵W的转置矩阵;μ表示矩阵W的最大奇异值对应的特征矢量。结合式(2)-式(4)可得:

(5)

谱归一化即让参数矩阵除以参数矩阵谱范数,以达到归一化目的。此时,参数矩阵数值比例不会被破坏,也满足Lipschitz条件,具体如下所示:

(6)

式中:fSN(W)表示判别器参数矩阵W经谱归一化理论处理后结果值,L为常数。对判别器进行谱归一化处理,相当于对判别器添加限制,使其拥有合理的判别能力,为生成器提供更多梯度信息,从而稳定模型训练。

1.3 图像修复方法

生成对抗网络(GANs)是一种引入二人零和博弈理论的生成模型,其主要思想是通过对抗学习来训练网络学习真实样本的数据分布,近年来在图像处理领域发挥着重要作用。GANs由生成模型与判别模型两部分构成。生成对抗网络目标函数如下:

Ez~pnoise(z)[ln(1-D(G(z)))]

(7)

式中:E表示期望;pnoise(z)表示随机噪声分布集合;pdata(x)表示真实样本集合。利用生成式对抗网络做图像修复任务主要分为两大类:噪声型图像修复方法和端到端型图像修复方法。

1.3.1噪声型图像修复方法

(8)

图1 噪声型模型结构图

1.3.2端到端型图像修复方法

端到端型图像修复方法的模型基础为以缺损图像作为输入的生成对抗网络。传统单判别器生成对抗网络模型无法满足图像修复的修复效果,局部待修复区域还原效果较差。从模型设计来看,模型不存在追踪图像局部区域信息的结构。为此,双判别器模型通过增设局部判别器追踪图像局部待修复区域,有效提升了修复准确度。较于单判别器的端到端图像修复模型,双判别器模型有效还原了图像的纹理和内容信息,输出结果更加具备语义性。但由于对生成器的训练过程约束不足,使得修复结果会出现特征表示不足问题,修复结果无法将缺损区域信息全部表征出来。图像缺失区域恢复过程需要图像各方面的指示信息,对于生成器的约束过少会导致重建结果出现错误类别、错误内容以及风格特征,修复效果不佳。端到端型图像修复模型结构如图2所示。

图2 端到端型模型结构图

2 本文算法

2.1 算法流程

图3给出了本文算法的功能流程。向模型输入待修复图像,首先利用前向计算,得到修复完成图,然后利用损失函数计算修复完成图与原图之间的差异,最后通过反向传播向模型各层传递误差,从而优化模型参数。

图3 MAGAN算法流程

2.2 Multi-angle GAN模型结构

本文提出一种多角度图像修复模型MAGAN,从图像类别特征、内容特征以及风格特征入手,解决原有图像修复方法存在的图像修复结果特征信息表示不足问题。针对于修复结果缺少类别特征指示,通过添加预训练好的分类器进行指示;针对于修复结果缺少风格特征以及内容特征指示,通过预训练好的Vgg19特征提取网络进行指示。形成类别、内容以及风格损失项添加至生成器损失中。Multi-angle GAN模型整体结构如图4所示。

图4 Multi-angle GAN模型整体结构图

2.2.1生成器

生成器为带有空洞卷积的U-net型全卷积网络,由卷积块、空洞卷积块、上采样块构成。其中每一个卷积块由卷积层(Conv)、批归一化层(Batch normalization)和ReLU激活层构成;每一个空洞卷积块由空洞卷积层、批归一化层和ReLU激活层构成;每一个上采样块由反卷积层、批归一化层和Leaky_ReLU激活层构成。最初始一层卷积层卷积核尺寸为5×5,剩余卷积层卷积核尺寸为4×4 和3×3交替设计,共15层设计。空洞卷积层卷积核尺寸为3×3,卷积采样间隔由2、4、8倍增,共5层设计。空洞卷积的存在使得不增加卷积核尺寸的情况下,增大卷积的感受视野,使得输出的特征图包含信息更丰富。生成器输入带有二进制掩模的缺损图像,输出修复完成图。通过L1损失、类别损失、内容损失、风格损失、对抗损失约束生成器产生合理结果。其中L1损失公式如下:

(9)

式中:R代表原始图像;P代表修复完成图;Rij表示原图第i行第j列像素值。此处,L1损失用于衡量两幅图像同位置像素的差异。

2.2.2分类器

分类器有助于生成器的生成结果具有合理的类别特征信息。通过一组预先确定的类别在原始数据集上训练分类器并保存模型参数。将网络结构与生成器网络进行拼接,实现模型分类能力。在辅助生成器修复图像过程中,参数不再更新。分类器为编码器结构,由卷积块、最大值池化层和全连接层构成。其中卷积块由卷积核尺寸为3×3,滑动步长为1的卷积层,ReLU激活层构成,共4块设计,最大值池化层滑动窗口大小为2,滑动步长为2。每一个卷积块后跟一层最大值池化层,最终通过全连接层并使用Softmax分类层输出预测分数。使用交叉熵损失L训练分类器,其公式如下所示:

(10)

式中:L代表真实标签;P代表预测值。首先将原图输入至分类器中,得到原图预测分数值,然后以原图预测分数为标签,将修复完成图输入至分类器中,利用交叉熵公式求取类别损失Lclass添加至生成器损失中。

2.2.3Vgg19特征提取网络

Vgg19特征提取网络有助于生成器的生成结果具有合理的风格、内容特征信息。使用预先训练好的Vgg19特征提取网络,将其与生成器网络进行拼接,实现网络的特征提取能力。同样,Vgg19特征提取网络在生成器修复图像过程中,参数不变。Vgg19由卷积核尺寸为3×3的卷积层,池化窗口尺寸为2×2的最大值池化层,ReLU激活层以及全连接层构成其网络结构。对于内容损失,将修复完成图在conv1_2与conv2_2中提取的特征图与对应真实图像特征图进行比较,对于风格损失,将conv4_3卷积层与conv5_3卷积层中提取的特征图与对应真实图像特征图进行比较。其中内容损失函数定义如下:

(11)

式中:R代表原始图像;P代表修复完成图;l表示网络层。内容损失用于衡量原图与修复完成图在同一卷积层中所有特征图的内容差异。

Gatys等[10]在图像风格迁移领域使用捕获纹理特征的特征空间来表示图片的风格。特征空间包含了图片经过卷积神经网络后每一卷积层提取的多个特征图之间相似性。这种相似性用Gram矩阵进行衡量,Gram矩阵中的元素使用特征图两两做内积求取。因此Gram矩阵可以用于表征图像的纹理、颜色信息等风格特征。Gram矩阵定义如下:

(12)

(13)

式中:原始图像Gram矩阵与修复完成图计算公式相同。将原始图像与修复完成图输入Vgg19特征提取网络,得到各自的分数。使用式(9)-式(10)计算两者的内容损失和风格损失添加至生成器损失中。

2.2.4判别器

判别器用于判别修复完成图的真实程度,多尺度判别可以保证图像生成质量更高。若只使用全局判别器,则图像部分细节判断不准确,因此通过添加局部判别器追踪图像细节部分。

局部判别器由卷积块,全连接层构成,其输入样本维度为32×32。其中卷积块由卷积核为5×5,滑动步长为2的卷积层,批归一化层(Batch normalization)和Leaky ReLU激活层构成,共3块设计。最后一层使用全连接层替换Sigmoid激活层。全局判别器输入样本维度为64×64,相较于局部判别器多添加一块卷积块,由于其针对图像整体,因此需要更深的网络层次进行特征提取。将局部判别器输出与全局判别器输出在通道(channel)维度进行拼接得到最终的预测输出向量。

此时,判别器的卷积层设计中添加谱归一化理论,调整判别器每一层的矩阵参数,提高修复完成样本质量。同时引入Wasserstein距离改进GANs目标函数,以稳定模型的训练。判别损失用于惩罚与原始样本不相干样本,生成更清晰、内容更丰富的样本。判别损失如下所示:

Ladv=Ex~pdata(P)[D(x)]-Ex~pdata(R)[D(x) ]

(14)

式中:pdata(P)为修复完成图集合;pdata(R)为原始样本。

2.2.5总损失函数

通过上述介绍的损失约束,对模型总损失函数进行汇总,总损失函数如下:

Lall=λ1L1+λ2Lclass+λ3Lcontent+λ4Lstyle+λ5Ladv

(15)

式中:λ1-λ5为平衡不同损失的权重系数。

2.3 算法实现

对于模型训练过程可以分为以下五步:

1) 初始化模型权重。除预先训练好的分类器和Vgg19网络,对模型生成器和判别器的网络层权重进行初始化。

2) 前向计算。向模型输入待修复图像,利用卷积层、池化层等网络层学习图像的特征,形成特征编码矩阵,然后利用反卷积层等网络层解码特征编码矩阵,输出修复完成图。

3) 计算误差。利用总损失函数计算修复完成图和其对应原图之间的误差损失。

4) 反向传播,更新参数。将第3)步计算得到的误差损失反向传递到模型各层,通过误差回传,更新模型参数。

5) 保存参数。循环执行第2)步-第4)步,直至模型收敛且模型输出的误差小于最小误差。此时停止训练并保存模型参数。

利用训练好的MAGAN模型补全图像,向模型输入待修复图像,输出修复完成图。

本文算法的软件编程方式在PyCharm编译器上实现,使用Python语言和TensorFlow框架实现MAGAN模型的搭建。模型整个训练过程如算法1所示。

算法1MAGAN模型图像修复训练过程

输入:原始样本x,G,D,classifier,vgg19,λ1,λ2,λ3,λ4,λ5,epoch,batch_size,mask,α。

输出:修复完成图Completed。

1. i=0,j=0

2. for i in range(epoch)

//迭代周期

3. Step_num=x/batch_size

//一个周期迭代次数,x分为

//Step_num份,批样本batch_x且其对应类别为batch_label.

4. I_batch=batch_x×(1-mask)+mask×255

//批量缺损样本

5. for j in range(step_num)

//一个周期的迭代次数

6. g_completed=G(I_batch)

//全局修复结果

7. I_completed=g_completed×(1-mask) [y1:y2, x1:x2,:]

//局部修复结果

8. Lall=function1(batch_x,g_completed,batch_label)

//function1为式(15)

9. batch_local_x=(batch_x×(1-mask)+mask×255)[y1:y2,x1:x2,:]

//局部真实样本

10. real=D(batch_x,batch_local_x)

//真实样本分数

fake=D(g_completed,l_completed)

//虚假样本分数

11. Dloss=function2(real-fake)

//function2为式(14)

12. 反向传播更新生成器参数

13. 反向传播更新判别器参数

14. end for

3 实 验

3.1 数据集处理及训练细节

本次实验的设备条件为Intel(R) Core(TM) i5- 8300HCPU,主频为2.30 GHz,内存为16 GB的笔记本电脑,其操作系统为Windows 10和NVIDIA Titan XP GPU,显存为12 GB。同时以PyCharm作为编译器,使用Python语言和TensorFlow深度学习框架实现MAGAN模型的搭建。

本次实验使用数据集为CelebA人脸数据集以及Places365-Standard数据集[9]中的outdoor场景数据集。其中CelebA是香港中文大学的开放数据集,其包含202 599幅178×218大小的RGB彩色人脸图像,并且对每幅图像做好了特征标记。将172 770幅图像用作训练集,15 917幅用作验证集和13 912幅用作测试集,并且由于本文的主要任务是恢复人脸特征,因此去除图片中不必要的背景信息避免影像修复结果,截取图像的人脸部分并调整图像尺寸为64×64作为模型输入。其中Places365-Standard是MIT的开放数据集,使用其中名为outdoor的场景集,outdoor场景集包含6 000幅256×256大小的RGB彩色风景照,将5 000幅用作训练集,900幅用作验证集,100幅用作测试集,并调整图像尺寸为64×64作为模型输入。

对于CelebA人脸数据集,通过设置不同的总损失权重系数训练模型,评估模型的性能,最终确定λ1为100,λ2为30,λ3为0.07,λ4为250,λ5为0.3,因为从测试结果看此时模型性能最佳。对于outdoor数据集,由于其不存在类别标签,因此设置为0,只验证其余损失项对模型性能的影响,并设置λ1为100,λ3为0.07,λ4为250,λ5为0.3,此时从测试结果看模型性能最优。同时,使用Adam动量梯度下降法求取模型的最优解,设置模型学习率为1e-3,一阶动量项取值0.5,批量样本尺寸为150,共训练1 000个epoch并保存结果,此时,模型达到最初设置的最大迭代周期且总损失小于设定的最小值Emin。对2个数据集使用3种修复模型设置对比实验,为了保证公平,所有模型设置相同的epoch。

3.2 结 果

3.2.1不同模型对比实验

由图5可以看到双判别器模型(GLCIC)修复结果存在过于平滑、模糊等问题,总体上还原出原图特征,但细节部分还原不足。对于基于DCGAN的语义修复模型,首先在训练DCGAN模型时,出现模型崩溃问题,无法稳定训练,通过引入谱归一化与WGAN稳定了模型训练,但修复结果过差,图像细节无法被还原。Multi-angle GAN(MAGAN)从整体和部分细节还原出原图特征,修复效果优于前两者,虽然修复结果存在轻微噪声,但从总体上是一种不错的修复模型。

图5 不同模型在CelebA数据集上修复效果对比

采用PSNR、SSIM来评价模型的修复效果,结果如表1所示。

表1 不同模型修复效果对比

图6给出了不同模型在outdoor数据集上实验结果,可以看到GLCIC模型输出结果存在模糊问题。DCGAN模型输出结果过差,部分还原结果不具备语义性。MAGAN模型输出结果从整体还原出图片信息,与原始图像相似度较高,但也存在部分细节还原不足,从总体上看是一种不错的修复。

图6 不同模型在outdoor数据集上修复效果对比

从评价指标PSNR、SSIM上量化三种模型的性能,具体指标值如表2所示。

表2 不同模型修复效果对比

3.2.2Multi-angleGAN(MAGAN)性能实验

1) 辅助网络实验。为了验证Multi-angle GAN的性能,本文在相同条件下训练了分别应用分类器,特征提取网络的多个模型。使用CelebA作为辅助网络实验数据并保持3.1节给出的模型训练参数,此处只针对不同模型设计不同的损失函数。

其中在训练分类器时,使用性别作为类别标签,由于在CelebA数据集中,性别比例分布较为均匀。在训练过程中使用训练集训练,验证集检验准确率,及时调参,避免出现过拟合。其中训练过程使用Adam优化函数,学习率为1e=3,批样本尺寸为128。最终迭代10 000步停止训练,此时训练集的准确率为0.984。每200步计算一次测试集准确率,最终测试集准确率为0.952。

其中特征提取网络使用预训练好的Vgg19网络模型。将网络结构导入到本文模型中,并利用训练好的权重进行训练。性能验证表如表3所示。

表3 Multi-angle GAN性能验证设计

在相同条件下,每个模型设置训练500个epoch,训练完成并保存参数。针对同一幅图片使用上述四种模型进行测试。从图7各个模型修复结果可以看出,Net-Content模型修复结果存在修复结果较为模糊问题,Net-Style模型修复结果存在轻微噪声问题,Net-Class模型修复结果存在细节特征还原不足问题,Net-All模型修复结果质量最优,精准还原出原始图像的纹理与语义信息。

图7 不同模型修复效果对比

同时,从评价指标PSNR、SSIM上量化四种模型的性能,具体指标值如表4所示。

表4 不同模型修复效果对比

2) 谱归一化实验。为了验证谱归一化对模型性能的影响程度,本文设计引入谱归一化和不引入谱归一化两种模型进行比较。在相同条件下,每个模型设置训练500个epoch,训练完成并保存参数。针对同一张照片使用两种模型进行测试。从图8可以看到引入谱归一化的With-SN模型整体还原效果更加逼真清晰。

图8 不同模型修复效果对比

同时,从评价指标PSNR、SSIM上量化两种模型的性能,具体指标值如表5所示。

表5 不同模型修复效果对比

4 结 语

图像作为一种重要的视觉信息,保证其完整非常重要。图像大面积破损使得图像信息无法有效传达,导致后续工作无法有序进行。本文提出一种针对大面积缺失区域的图像修复模型(Multi-angle GAN),设计辅助网络从不同角度约束模型生成器并引入谱归一化与Wassertein GAN稳定模型训练,实现了更优的修复效果。同时,尽管该模型部分修复结果存在轻微噪声,但从整体与细节上还原出图片纹理以及内容信息,是一种较为理想的修复模型。

猜你喜欢

分类器卷积矩阵
基于全卷积神经网络的猪背膘厚快速准确测定
少样本条件下基于K-最近邻及多分类器协同的样本扩增分类
学贯中西(6):阐述ML分类器的工作流程
基于图像处理与卷积神经网络的零件识别
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于朴素Bayes组合的简易集成分类器①
多项式理论在矩阵求逆中的应用
基于AdaBoost算法的在线连续极限学习机集成算法
矩阵