[0008] 本发明的目的是针对现有技术的不足,提供一种基于人脸结构信息的肖像生成方法。
[0009] 本发明解决其技术问题所采用的技术方案包括如下步骤:
[0010] 步骤(1)、数据预处理
[0011] 原始的人脸照片图像尺寸为250×200,RGB图像,通道数为3;原始的人脸照片的素描图像的尺寸也为250×200,灰度图,通道为1。对人脸照片图像和人脸照片的素描图像Y统一进行人脸对齐,对齐后得到的人脸照片图像的尺寸大小和通道数均与原来的相等,并且两眼距离为50,眼睛到图像上边的距离为125。将对齐后人脸照片图像利用现有的方法获取人脸结构部件概率图,即通过图1中的语义分析网络(Parsing Networks,P‑Net)进行采集得到,图像尺寸大小为250×200,通道数为11,即为11个部件的在每个通道的概率。将11个部件中的左眉和右眉、左眼和右眼、上唇和下唇的概率图,通过对应像素相加的方式分别进行合并,最后得到共计8个部件的概率图。训练时,用0对三类图像分别进行边缘填充,得到286×286的图像,每次随机取对应位置256×256大小的图像进行训练。
[0012] 步骤(2)、基于人脸结构信息的特征提取与融合
[0013] 基于现有的原始U形网络(U Networks,UNet),在输入端加入人脸结构信息,对U形网络进行了改进,基于神经网络实现该模型。其结构图如图1所示,将人脸照片图像X输入到一个外貌编码器(Appearance Encoder),最终得到一个1×1大小的特征图,同时保留每一次卷积操作后的特征图;将人脸结构部件概率图 输入到一个结构编码器(Composition Encoder)中,具体方法与对人脸照片处理的方法相同;在解码器(Decoder)部分,我们将每一次的输入与之前编码器中所得到的相同大小的特征图进行拼接,再进行运算。最终,在解码器的最后得到所需要的人脸素描肖像图。
[0014] 将对齐后的人脸照片图像X,对应人脸照片的素描图像Y和人脸结构部件概率图构成三元组,X,Y, 作为训练集。
[0015] 步骤(3)、基于人脸结构部件的组合损失函数:
[0016] 通过步骤(2)的方法,我们已经得到了一张256×256大小的人脸素描图像。在我们已有人脸结构部件概率图的基础上,我们分别对于每个部件去优化,即对于生成的图像,我们与其每个部件的概率图做像素点的相乘,同原始人脸素描图像与其每个部件的概率图做像素点的相乘得到的图像做曼哈顿距离(L1 Distance),来优化网络模型。
[0017] 步骤(4)、生成对抗网络
[0018] 网络分为生成器和判别器,生成器生成的肖像去逼近真实肖像的分布,判别器去判别肖像是真实原有的肖像还是生成的肖像来计算损失函数,并优化。
[0019] 步骤(5)、模型训练
[0020] 使用已有的“照片‑结构信息‑肖像”三元组构成的训练集,根据步骤(2)中模型生成肖像,利用步骤(3)和(4)来计算得到网络的损失,利用反向传播算法对步骤(2)和步骤(4)中神经网络的模型参数进行训练,直至整个神经网络模型收敛。
[0021] 步骤(1)所述的数据预处理:
[0022] 首先进行人脸对齐,对齐后得到的人脸照片图像X的尺寸大小和通道数均与原来的相等,并且两眼距离为50,眼睛到图像上边的距离为125。
[0023] 其次,通过人脸语义分析方法将人脸照片图像X分解为8个部件的基于像素点的概率图 其中 分别为每个部件的概率输出,表示像素点Xi,j属于第c个部件的概率,其中c=1,…,C,
C=8。所述的8个部件分别为:两眼、两眉、鼻子、上下嘴唇、嘴巴、脸部、头发、背景;
[0024] 对齐后的人脸照片图像 和人脸素描图像 其中h、w和C分别表示人脸照片图像高度、宽度和通道数。
[0025] 步骤(2)所述的基于人脸结构信息的特征提取与融合,具体如下:
[0026] 2‑1.首先是原始U形网络(U Networks,UNet),其具体结构如下:
[0027] U形网络分为两个部分:编码器和解码器。
[0028] 在编码器(Encoder)部分,共分为8个模块(Block),第2‑7个模块均由3种运算组成,依次分别为:Leaky修正线性单元(Leaky Rectified Linear Units,ReLU),卷积(Convolutional Neural Networks,CNN)和批规范化(Batch Normalization,BN),第一个模块包括卷积,最后一个模块包括Leaky修正线性单元和卷积;同时,将每一个模块的输出结果作为特征进行保留,在解码器中使用。
[0029] 在解码器(Decoder)部分,共分为8个模块,第1‑7个模块均由3种运算组成,依次分别为:修正线性单元(Rectified Linear Units,ReLU)、卷积(Convolutional Neural Networks,CNN)和批规范化(Batch Normalization,BN),最后一个模块包括修正线性单元、卷积和双曲正切(Tanh)。
[0030] 在解码器部分,由编码器中最后一个特征图(Feature maps)作为解码器第一个模块的输入,并且解码器每一个模块的输入都与编码器中保留的相应尺寸大小的特征图进行拼接(Concatenate),作为下一个模块的输入。在解码器的最后可得到所需要的输入图像。
[0031] 2‑2.加入人脸结构信息的U形网络,其具体结构如下:
[0032] 加入人脸结构信息的U形网络共包含两个编码器,一个解码器。
[0033] 两个编码器分别对人脸照片图像X和人脸结构信息 进行处理,其中即以X和 分别作为两个编码器的输入,具体网络结构和保留的特征图均与原始U形网络相同。
[0034] 针对人脸照片图像X的编码器,能够得到特征图集合 针对人脸结构信息 的编码器,能够得到特征图集合 其中S=8。
[0035] 在解码器部分,各模块的运算与原始U形网络相同。在第一个模块的输入部分,将两个编码器的最后一个特征图进行拼接获取特征图I1, 将特征图I1作为第一个模块的输入。同时,每个模块的输出结果O与两个编码器中相应尺寸大小的特征图进行拼接,即对于解码器中的第一个模块的输出O1,将 和 与O1拼接,等到下一个模块的输入 之后的输出依次类推。最后得到我们所要的一张256×256大小的人脸素描图像
[0036] 步骤(3)所述的基于人脸结构部件概率图 的组合损失函数,具体如下:
[0037] 损失函数包括两个部分:关于全局的损失和关于各个部件的损失,分别用和 表示。
[0038] 对于 的损失函数,具体公式如下:
[0039]
[0040] 其中,表示人脸素描图像,Y表示素描图像,m和n分别表示素描图像的高度和宽度, 的计算公式为:
[0041]
[0042] 对于 的损失函数:在已有人脸结构部件概率图 的基础上,分别对每个部件优化,具体过程如下:
[0043] 首先,引入权重因子来消除各部件不同像素点的损失。对于每个部件,具体公式如下:
[0044]
[0045] 其中, 表示第c个部件中所有像素点概率之和, 在这里表示卷积运算。⊙在这里表示对应像素点相乘。
[0046] 因此8个部件的总损失函数 的具体公式为:
[0047]
[0048] 最终得到生成器的总损失函数为:
[0049]
[0050] 其中,α可取的范围为0到1。
[0051] 步骤(4)所述的生成对抗网络,具体如下:
[0052] 生成对抗网络整体分为两个部分:生成器(Generator)和判别器(Discriminator),步骤(2)中的两个编码器和一个解码器整体组成生成对抗网络中的生成器。
[0053] 判别器的输入为 其中 表示生成的素描图像,进行真假判别,判别损失函数公式如下:
[0054]
[0055] 步骤(5)所述的训练模型,具体如下:
[0056] 生成器的损失值的公式如下:
[0057]
[0058] 判别器的损失值 即为判别器的损失。
[0059] 根据计算得到的损失值 和 利用反向传播算法(Back‑Propagation,BP)调整网络中的参数。
[0060] 本发明有益效果如下:
[0061] 由于人脸有着很强的几何约束以及非常复杂结构细节,因此我们引入人脸结构信息来进行帮助人脸素描的生成是非常有前景的。近来基于人脸像素点的人脸部件标记技术发展迅速,受此启发,我们引入人脸结构信息来进行人脸的生成。此外,我们不仅在输入端加入结构信息,在输出端的损失函数部分,我们也加入了结构信息,使用了升级版的损失函数,我们称之为组合损失(Compositional Loss)。
[0062] 本发明提出了一种基于人脸结构信息的人脸照片图像到素描生成的深度神经网络架构,以解决如上两个难点问题。1、生成视觉效果好的人脸素描图像,使其结构不合理,保留细节等特征,使其更像手工的画;2.在人脸身份信息的保留方面,即对于人脸识别问题,也有极高的准确率。