一种基于自编码器和生成对抗网络修复人脸缺损图像的方法与流程

文档序号:15400584发布日期:2018-09-11 17:24阅读:567来源:国知局

本发明涉及一种人脸缺损图像修复的方法,具体涉及一种基于自编码器和生成对抗网络修复人脸缺损图像的方法,属于图像处理技术领域。



背景技术:

人脸识别技术近年来得到了显著的发展。但是,识别有部分遮挡的人脸对于现存的人脸识别技术依旧是个挑战。真实应用中,对于有遮挡的图像修复的需求越来越多,如监控和安全领域。图像复原作为一种常见的图像编辑操作,旨在用合理的内容填充图像中的缺失或蒙版区域。生成的内容既可以与原始内容一样精确,也可以完全符合整体图像,使得复原的图像看上去是真实的。这在过去的几十年里,由于其固有的模糊性和自然图像的复杂性,图像复原(图像填充),一直是计算机视觉和图形界具有挑战性的研究热点。

在早期也有很多种图像处理方案如:利用扩散方程将已知区域的低层特征沿着蒙版边界迭代传播到未知区域。还有通过引入纹理合成来进一步改善修补效果。最近ren等提出了利用卷积网络进行修补的方法。提非参数纹理合成的高效补丁匹配算法显著提高了图像复原的性能,其在找到类似补丁时表现良好,但当源图像中没有足够数据填充未知区域时,效果则不佳。这通常发生在对象复原中,因为每个部分都可能是唯一的,并且找不到可找到的缺失区域。虽然这个问题可以通过使用外部数据库来缓解,但随之而来的问题是需要学习一个特定对象类的补丁匹配。

在图像生成方面,goodfellow在2014年提出了生成对抗网络,li和dziugaite等在2015年提出了生成矩匹配网络。这些方法是直接训练生成器以产生逼真的样本,在一定程度上忽略了数据的多样性。在2016和2017年,生成对抗性网络框架先后被多次扩展。

自动编码器(autoencoder)和变分自动编码器(vaes)已经成为在无监督环境下学习复杂分布的最流行的方法之一。autoencoder包括两个过程:encode和decode,输入图片通过encode进行处理,得到code,再经过decode处理得到输出,encode和decode两个过程可以理解成互为反函数,在encode过程不断降维,在decode过程提高维度。当autoencoder过程中用卷积操作提取特征,相当于encode过程为一个深度卷积神经网络,好多层的卷积池化,那么decode过程就需要进行反卷积和反池化。

生成对抗网络(gan)是训练生成参数模型的框架,并且已被证明可以产生高质量的图像。gan是一种训练生成器的方法,包括两个互相对抗的模型:一个生成器g用于拟合样本数据分布和一个判别器d用于估计输入样本是来自于真实的训练数据还是生成器g。生成器通过映射函数把噪声映射到数据空间,而判别器的输出是一个标量,表示数据来自真实训练数据而非g的生成数据的概率。训练模型d要最大概率地分对真实样本(最大化log(d(x)),而生成器g要最小化log(1-d(x)),即最大化d的损失。gan框架下的学习过程就变成了一种生成器g和判别器d之间的竞争关系。最终判别器的准确率等于50%,整个模型状态达到纳什均衡。然而,gan不能直接应用于修补任务,因为它们产生完全不相关的图像的概率很高,除非受到相关限制。

基于传统方法的图像复原和修复主要分为两个方向:基于图像纹理分析技术和基于局部插值的图像修复方法。然而这两类方法都具有一定的局限性,基于传统纹理分析技术的图像去噪方法,其模型设计复杂,速度慢,效率低,容易带来图像细节模糊问题。而基于局部插值的图像修复方法,未使用到图像的全局信息,容易带来图像不平滑问题。对于缺损区域比较大的场景,效果较差。



技术实现要素:

针对现有技术中图像复原和修复模型设计复杂,速度慢,效率低,容易带来图像细节模糊、容易带来图像不平滑、效果较差等问题,本发明提供一种一种基于自编码器和生成对抗网络修复人脸缺损图像的方法。本发明要解决的技术问题是为人脸图像丢失或损坏的部分进行修复,生成逼真的,近乎原始图像的完整人脸图像。为了解决以上问题,本发明结合自编码器和条件生成对抗网络,提出了一种基于自编码器和生成对抗网络联合优化的人脸缺损图像还原的方法。

根据本发明提供的实施方案,提供一种基于自编码器和生成对抗网络修复人脸缺损图像的方法。

一种基于自编码器和生成对抗网络修复人脸缺损图像的方法,该方法包括以下步骤:

1)获取人脸图像,将获得的人脸图像组成人脸数据集;

2)人脸数据集进行缺损处理:将人脸数据集中的每一张人脸图像进行图像的提取、归一化处理,在每一张人脸图像上随机生成遮挡块,每一张人脸图像对应获得一张缺损的人脸图像,缺损的人脸图像组成缺损人脸数据集;

3)训练自编码器:将人脸数据集和缺损人脸数据集输入自编码器,训练自编码器,自编码器对缺损人脸数据集中的每一张缺损的人脸图像进行初步修复;获得训练后的自编码器,同时获得初步修复人脸数据集;

4)训练生成对抗网络:生成对抗网络由生成器(g)、判别器(d)组成;在生成器(g)和判别器(d)的中输入人脸数据集中的完整的原始人脸图像,将初步修复人脸数据集输入到生成对抗网络的生成器(g)和判别器(d)中,生成对抗网络下的生成器(g)和判别器(d)根据人脸数据集中每一张人脸图像和对应的经过自编码器初步修复的人脸图像不断进行迭代训练,形成最佳状态的cgan模型;

5)将待修复人脸图像输入训练后的自编码器,获得初步修复的待修复人脸图像;

6)将初步修复的待修复人脸图像输入cgan模型的生成器(g)中,通过cgan模型的修复,获得修复的人脸图像。

作为优选,步骤1)中的人脸图像从现有公开数据集获取或者自己收集。优选从人脸数据集celeba获取。

在本发明中,步骤2)具体为:将人脸数据集中的每一张人脸图像进行图像的提取、归一化处理,在每一张人脸图像上随机生成遮挡块,其中遮挡块大小随机,遮挡块随机遮挡人脸图像中面部的某个部位,在人脸图像上形成遮挡区域,每一张人脸图像对应获得一张缺损的人脸图像,缺损的人脸图像组成缺损人脸数据集。

在本发明中,步骤3)中自编码器采用alexnet的前5层,外加一个全连接层,全连接层为前后层的神经元全连接,全连接层用于特征映射以及降维,并将alexnet中的relu改为elu。解码器将自编码器编码的隐藏特征解释出来,推理整个人脸图像的内容,然后初步的修补缺损的人脸图像。

作为优选,步骤3)具体为:

301)自编码器对缺损的人脸图像进行编码,解码器将自编码器编码的隐藏特征解释出来;

302)采用l2刻画遮挡区域缺损部分的真实内容与预测内容之间的差距,以此进行编码器的训练,损失捕获缺损的人脸图像中缺损区域(或称为遮挡区域)的内容,对于每一张缺损的人脸图像,自编码器生成缺损区域预测图像h(x),构建损失函数为:

其中:x表示缺损图像;xg表示真实像素;r表示x中的缺损区域;h(x)表示自编码器生成的缺失区域预测图像;h(xg,r)表示自编码器生成返回r区域的xg像素;(h(x)-h(xg,r))表示自编码器生成预测缺损区域的像素与该缺损区域区域真实像素的差距;

303)自编码器计算损失函数,直到损失函数为最小时,将自编码器生成的缺损区域预测图像填充到缺损的人脸图像的缺损区域(或称为遮挡区域)中,获得初步修复人脸图像f(x)。

在本发明中,步骤4)具体为:

401)在生成器(g)和判别器(d)的建模中均输入人脸数据集中的完整的原始人脸图像,人脸数据集中的人脸图像作为生成器(g)和判别器(d)共同的额外条件变量y,通过额外条件变量y作为额外输入层导入生成器(g)和判别器(d)来实现条件模型;

402)将经过自编码器初步修复的初步修复人脸图像f(x)输入到生成对抗网络的生成器(g)和判别器(d)中,生成对抗网络构建目标函数:

其中:x表示缺损图像,y表示人脸图像样本;z表示缺损图像在生成器中的生成结果;e表示误差;f(x)表示初步修复人脸图像;pd表示判别器中的图样样本;pz表示噪音图像样本;d(f(x),y)表示对于输入f(x)和y两个参数,判别器d判断正确的概率;g(f(x),z)表示对于输入参数f(x)和z,生成器生成的结果;d(f(x),g(f(x),z)):判别器对生成器生成结果判别正确的概率;z~pz(z)表示噪声分布。

403)生成对抗网络下的生成器(g)和判别器(d)根据人脸数据集中每一张人脸图像和对应的初步修复人脸图像f(x)不断进行迭代训练,直到目标函数达到0.5;即得到cgan模型。

在本发明中,步骤5)具体为:将缺损的待修复人脸图像输入训练好的自编码器,自编码器对待修复人脸图像进行编码,解码器将自编码器编码的隐藏特征解释出来,然后进行初步修补,获得初步修复的待修复人脸图像。

在本发明中,步骤6)具体为:将初步修复的待修复人脸图像输入训练好的cgan模型的生成器(g)中,cgan模型不断进行迭代计算,直到目标函数达到0.5;输出即可得更清晰、更逼真的人脸缺损图像还原结果图,获得修复的人脸图像。

作为优选,对图像的提取、归一化处理后,将人脸图像缩放为256×256的规格;随机生成遮挡块的区域限制在以人脸头像中心为中心的150*150区域内。

在本发明中,alexnet编码器为经典的cnn模型,具体结构为:神经网络前面5层为卷积层,用于特征学习。然后加3层全连接层,用于映射特征。最后,使用softmax输出,得到分类结果,softmax维度为1000,代表1000个分类。

在本发明中,将alexnet中的relu改为elu具体为:使用elu为激活函数:

代替relu:

relu的负值部分为常数“0”,而elu是一个可导函数,能够利用负值部分。且使用elu代替relu有助于更平稳地训练网络。

本发明的基于自编码器和生成对抗网络修复人脸缺损图像的方法,用自编码器进行了预修补之后,再用cgan模型进行二次再修补,预修复是为了捕捉缺损区域周围的信息特征使得生成的区域的内容更符合全局的像素,cgan再生成是为了使生成的更清晰,且边缘伪像。这个是联合优化的模型。

在本发明中,l2是一种惩罚方法,度量生成图像与真实图像之间差别的评价方法。

在本发明中,在生成网络中,输入自编码器生成的预修复图作为先验分布p(z),把符合先验分布p(z)的噪声z和条件y作为输入同时送进生成器,生成跨域向量,再通过非线性函数映射到数据空间,其中,把数据x和条件y作为输入同时送进判别器,生成跨域向量,并进一步判断x是真实训练数据的概率。

在本发明中,一个基于语义编码器和条件生成对抗网络的人脸修补方案。首先,输入的图像被随机选择的矩形区域上的噪声像素所遮挡,然后传入语义编码器。编码器将含遮挡部分的图像映射成隐性特征,解码器解码隐性特征,产生填充的图像作为其输出。紧接着,利用语义编码器生成的初步结果作为条件约束,通过cgan进一步产生清晰自然的修补图像。语义编码器的训练是以有缺失图像和完整图像作为图像对进行的,并以l2为内容损失,调节语义自编码器的权重。以这种图像对的形式,避免了自编码器仅仅是将图像进行压缩而不学习人脸特征的潜在问题。将随机噪声和自编码器产生的初步预测作为cgan的先验分布p(z)输入,则是为了进一步优化修补图像,使生成的修补图像更加自然,同时也可以避免总是朝着固定的方向生成修复图。

在本发明中,为了有效地训练我们的网络,我们使用梯度策略,逐渐增加难度级别和网络规模。我们将训练过程分二个阶段进行。首先,我们使用l2重构损失来训练语义编码器网络,以获得缺失部分的模糊预测。然后,将自编码器生成的内容填充到原始缺损图像中,并将其作为条件生成对抗网络的噪声约束输入,结合生成对抗损失来训练cgan网络。上一个阶段是在为下一个阶段准备好要改进的特征,因此大大提高了网络训练的有效性和效率。

在本发明中,缺损区域与遮挡区域通用。遮挡区域与缺损部分通用。

与现有技术相比较,本发明的方法具有以下有益技术效果:

1、人脸图像具有相似性和易变性的特点,即所有的人脸结构都相似、不同表情的人脸视觉差异很大;针对传统的基于图像纹理分析的复原方法存在的设计复杂,速度慢,效率低,容易带来图像细节模糊、缺损的边界周围产生可见伪像的问题,本发明提出了条件生成对抗网络的生成修复方法,提高了缺损区域修复的清晰度和最大限度避免了缺损边界伪像的生成。

2、针对传统的基于局部插值的图像复原方法存在的未使用到图像的全局信息,图像不平滑、局部和全局信息不一致的问题,本发明提出了先通过自编码器生成基于缺损区域周围像素的修复内容,这种预生成方法,保证了像素忠实性和局部全局内容的一致性。

3、针对传统的在图像可用部分搜索相似补丁的复原方法存在的无法修复大区域缺损人脸图像的问题,本专利提出了基于自编码器和条件生成网络联合优化的复原法,能够处理任意形状、任意缺损大小的人脸缺损图像。

附图说明

图1为本发明基于自编码器和生成对抗网络修复人脸缺损图像的方法中自编码器和生成对抗网络的训练过程;

图2为本发明基于自编码器和生成对抗网络修复人脸缺损图像的过程;

图3为本发明本发明基于自编码器和生成对抗网络修复人脸缺损图像的方法中自编码器结构图;

图4为本发明中的自编码器生成的遮挡区域示意图;

图5为本发明的实施例还原结果图;

图6为采用本发明的方法和pm、ce模型修复缺损的人脸图像的试验结果对比。

具体实施方式

实施例

以celeba人脸图像数据集(178像素*218像素)为例,在对celeba人脸图像数据集中的图像做缺损区域还原研究时,我们首先需要挑选出训练数据集和测试数据集,并将其进行预处理;用处理好的数据集分别训练自编码器模型和条件生成网络模型;接着将缺损图像输入训练好的自编码器得到基于缺损区域周围信息的填充内容;将自编码器生成的填充内容填入缺损人脸图像的缺损区域,得到的完整图像输入条件生成对抗网络,以此修复得到清晰、自然的复原结果。此例为celeba人脸图像数据集中的人脸缺损图像复原过程。

本实验环境基于gpu高性能服务器,实验环境分为硬件和软件,硬件配置是teslak10.g1.8gbgpu服务器,主频是2.20ghz四核cpu以及16gb内存,硬盘大小5.4t。软件配置操作系统为64位ubuntu-serverlinux14.04,网络带宽为100mbits/s,脚本语言python版本为3.5.2,深度学习框架tensorflow-gpu版本为1.4.0以及pytorch版本为0.2.0。

如图1、3、4所示,本发明方法的训练过程:

第一步,人脸数据集预处理

将celeba人脸数据集的202,599幅面部图像,每幅致按两只眼睛的位置对齐,并重新缩放到256×256像素。将celeba的所有人脸图拆分182,637张图像进行训练,19,962张图像进行测试;

为了使遮挡块能遮挡面部的某个部位,我们在所有人脸图像上随机生成遮挡块,其中遮挡块大小随机,随机生成区域限制在以图像中心为中心的150*150区域内。

第二步,我们将182,637张处理好的图像训练自编码器:编码器借鉴了alexnet的前5层,外加一个全连接层,并将其中的relu改为elu,因为使用elu代替relu能使网络训练更加平稳。解码器则与编码器是对称的,用于将特征放大,推理整个图像内容,得到预测的缺失内容。

我们通过回归人脸图像中缺损区域的真实内容来训练自编码器,通过联合损失函数来处理全局信息的连续性。损失函数为:

其中:x表示缺损图像;xg表示真实像素;r表示x中的缺损区域;h(x)表示自编码器生成的缺失区域预测图像;h(xg,r)表示自编码器生成返回r区域的xg像素;(h(x)-h(xg,r))表示自编码器生成预测缺损区域的像素与该缺损区域区域真实像素的差距。

采用l2刻画遮挡区域缺损部分的真实内容与预测内容之间的差距,以此进行编码器的训练,损失捕获缺损的人脸图像中缺损区域(或称为遮挡区域)的内容,对于每一张缺损的人脸图像,自编码器生成缺损区域预测图像h(x);

假设遮挡区域r与缺损图像相对应的二进制掩码值为1,则在此区域输出区域图像的序列化数据,序列化形式为list,若二进制掩码值为0,则作为模型的输入像素。在训练过程中,输入缺损图像,通过自编码器进行训练,直到l2达到最小时,输出,生成被遮挡区域的内容;

将自编码器生成的缺损区域预测图像填充到缺损的人脸图像的缺损区域(或称为遮挡区域)中,获得初步修复人脸图像f(x)。

第三步,训练条件生成对抗网络,直至其达到最优的状态。

在生成模型(g)和判别模型(d)的建模中均引入了celeba数据集中的完整的原始图像做为g和d共同的额外条件变量y(182,637张原始的完整图像),通过原始人脸图像序列化为训练集数据,取训练集数据的y作为额外输入。

将经过自编码器初步修复的初步修复人脸图像f(x)输入到生成对抗网络的生成器(g)和判别器(d)中,生成对抗网络构建目标函数:

其中:x表示缺损图像,y表示人脸图像样本;z表示缺损图像在生成器中的生成结果;e表示误差;f(x)表示初步修复人脸图像;pd表示判别器中的图样样本;pz表示噪音图像样本;d(f(x),y)表示对于输入f(x)和y两个参数,判别器d判断正确的概率;g(f(x),z)表示对于输入参数f(x)和z,生成器生成的结果;d(f(x),g(f(x),z)):判别器对生成器生成结果判别正确的概率;z~pz(z)表示噪声分布;

生成对抗网络下的生成器(g)和判别器(d)根据人脸数据集中每一张人脸图像和对应的初步修复人脸图像f(x)不断进行迭代训练,直到目标函数达到0.5;即得到cgan模型。

如图2、5、6所示,采用本发明方法的修复缺损人脸图像的过程:

将缺损的待修复人脸图像输入训练好的自编码器,自编码器对待修复人脸图像进行编码,解码器将自编码器编码的隐藏特征解释出来,然后进行初步修补,获得初步修复的待修复人脸图像;

将初步修复的待修复人脸图像输入训练好的cgan模型的生成器(g)中,cgan模型不断进行迭代计算,直到目标函数达到0.5;输出即可得更清晰、更逼真的人脸缺损图像还原结果图,获得修复的人脸图像。

实验结果图如图5,这表明不管缺损位置如何,我们的复原结果是一致的且可实现的。总体而言,该算法可以成功地复原被不同区域遮挡、损坏的面部图像。

对比例

分别采用pm、ce模型、本发明的基于自编码器和生成对抗网络修复人脸缺损图像的方法对缺损图像进行对比实验论证。

实验结果如图6所示:

pm方法的复原结果显示,其面部还原能力较弱,依然有明显的缺损;

ce方法的复原结果较好,但依旧存在复原生成的内容不够清晰等问题;

采用本发明的方法可以从感官上感知本发明的方法模型虽然在细节上还存在一定的瑕疵,但整体的还原效果较为理想。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1