如今深度学习被应用在越来越多的领域,并且越来越成熟,各种监督、半监督的深度学习方法相较于传统方法准确率大幅提高[1]. 但深度学习十分依赖于数据样本,如果训练样本的质量和数量不高,那么识别准确率会大打折扣. 在人脸识别领域更是如此. 光照、旋转角度、表情、遮挡、化妆等,都会影响人脸识别的准确率,其中光照因素的影响尤为明显. 因此,光照预处理对于人脸识别来讲是十分重要的.
目前,针对人脸识别中的光照处理大部分仍然使用传统图像处理方法,如直方图均衡化(Histogram equalization,HE)、对数域离散余弦变换(Logarithmic Discrete Cosine Transform,LDCT)、单尺度Retinex(Single-scale Retinex,SSR)等归一化算法[2-3]. 白小叶[4]将对数域离散余弦变换、高斯差分滤波及对比度均衡化结合起来形成光照预处理链,来处理人脸图片上的光照. 聂祥飞等[5]在离散余弦变换的基础上,利用梯度脸算法增强人脸的高频细节信息. 而对于深度学习这种非传统方法,在进行人脸识别时,一般用增加数据集的光照多样性的方式来使模型学习尽可能多的光照特征,从而对各种光照具有更强的抗干扰能力,但这样的方式同时会大大增加数据数量及数据准备阶段的工作. 针对上述方法的不足,本文采用GAN这种非典型深度学习模型,以构建一个小数据量、无标签化的无监督光照归一化模型.
GAN(Generative Adversarial Nets,生成对抗网)[6]由两个模型构成——生成模型和判别模型. 其中生成模型可以学习样本的分布,从而将输入的随机噪声变为与样本分布相同的图片;判别模型则通过判断生成模型输出的图片是否像真实样本,来反馈给生成模型,从而训练生成模型,使之生成的图片更能以假乱真. 在原始GAN的基础上,越来越多的GAN模型被提出,如DCGAN(Deep Convolutional Generative Adversarial Networks,深度卷积生成对抗网)[7]、CGAN(Conditional Generative Adversarial Nets,条件生成对抗网)[8]等,为样本生成提供了更多的可能性和更可靠的技术支持. Zhu J Y等[9]提出了CycleGAN(Cycle-Consistent Adversarial Networks),在非配对的数据集上,利用两个生成模型和两个判别模型构成了一种双向环状结构,无监督地实现了两种不同风格的图片之间的相互转换.
对于光照处理问题,pix2pix(Image-to-Image Translation)可以实现精准的图片风格迁移[10],包括人脸图片,理论上可以应用于人脸去光照处理,但是需要配对的训练集,有监督地实现一一对应的图像处理. 简单的DCGAN结构(卷积层编码+转置卷积层解码)也可以实现光照到非光照的转换,但同时很容易改变人脸其他的特征,脸部变形较严重.
本文使用改进的CycleGAN模型,基于图像翻译的原理,利用生成模型与判别模型之间的环状对抗博弈使生成模型具有更强的学习能力、判别模型具有更强的判断能力,在保持人脸结构基本不变的同时学习到光照特征,实现光照归一化,且使用非配对的数据集,无需手动标注标签,大大简化了数据准备阶段的工作. 本文使用一个正面、无明显表情的无光照人脸数据集和一个正面、无明显表情的有多角度多强度光照的人脸数据集进行光照归一化模型的训练,两个数据集中的图片非一一对应,无需手动标注标签;然后利用训练好的模型来处理一个光照不均匀的人脸数据集;最后,分别将未处理的数据集和处理后的数据集用人脸识别模型进行识别,比较光照处理前后的识别准确率,并与其他光照处理方法进行对比,验证了本文方法的有效性.
1 基于CycleGAN的人脸光照归一化算法原理 1.1 人脸光照归一化实现原理用于人脸图片光照归一化的CycleGAN模型需要两个数据集:数据集A和数据集B,其中数据集A为光照多样化的人脸图像,数据集B为光照均匀的人脸图像. 利用CycleGAN模型处理人脸图像中的光照,其原理为利用CycleGAN特殊的环状结构,将两个数据集中的图像循环翻译,实现两个数据集中光照风格的迁移. 原理示意图如图1所示.
|
图 1 人脸光照归一化原理示意图 Figure 1 Schematic diagram of face illumination normalization |
光照归一化模型由两个生成模型和两个判别模型构成,其中生成模型负责生成图像,且要不断使自己生成的图像更加像原始数据集,以实现“以假乱真”;判别模型则要强化自己的分辨能力,根据标签判断图像是来自真实样本还是来自生成模型,以此来指导生成模型的生成过程.
将光照不均匀的人脸数据集A中的图像输入第1个生成模型Ga2b后,Ga2b将生成一个新的图像fakeB,然后由判别模型Db对fakeB进行分类,判断fakeB是来自真实人脸数据集还是来自生成模型生成的图像,将结果反馈给Ga2b,以此来强化Ga2b使其能够生成更真实的图像. 因此在Db的监督下,fakeB将不断缩小与数据集B中图像的差距,即光照风格要尽量像数据集B中的均匀光照. 将fakeB再输入第2个生成模型Gb2a,将生成另一个新的图像cycA,而cycA的光照风格要尽量像数据集A中的不均匀的光照. 反之,将B中图像输入Gb2a后生成的fakeA在判别模型Da的监督下要尽量像A中的光照,fakeA经Ga2b生成的cycB要尽量像B中的光照. 也就是说,生成模型不仅要能使A变成B(Ga2b),还要具备从B还原成A的能力(Gb2a),反之亦然. 这就是本模型特殊的环状结构. 生成模型和判别模型互相博弈,Db训练Ga2b,Da训练Gb2a,使两个生成模型能生成越来越真实的图像,生成模型则分别反过来训练判别模型使其不断增强分辨能力. 而cycA与cycB的生成过程可以看作是一个验证过程,用来验证生成模型是否得到了很好的训练以生成足够以假乱真的图像.
当模型训练完成后,输入数据集A中光照不均匀的人脸图像,生成模型Ga2b就可以生成像数据集B的光照均匀的图像,即将A的光照风格向B转化. 反之亦然. 如此也就实现了人脸图像光照风格的迁移. 虽然由B向A转化的过程是为了训练模型而必须存在,但出于实际需要,输出的结果只保留A向B转化的结果,即fakeB,以实现人脸光照的归一化.
1.2 光照归一化模型的结构 1.2.1 生成模型的结构
|
图 2 生成模型结构 Figure 2 Structure of the Generator |
|
图 3 残差模块结构 Figure 3 Structure of ResNet block |
生成模型共由4个卷积层(conv1-conv3、conv4)、9个残差模块层(resnet1-resnet9)、2个转置卷积层(deconv1、deconv2)构成. 生成模型的输入与输出均为128×128像素的单通道人脸灰度图像. 输入的图像进行对称填充后通过3个卷积层(conv1-conv3)提取图像特征,然后输入残差模块(resnet1-9). 每个残差模块层都包含了两个卷积层,在最后将部分输入直接添加到输出,可以在保护原始图像信息完整性的同时实现图像的转换. 图像的特征向量经由转置卷积层(deconv1-2)还原成低级特征,再由最后一层卷积层(conv4)转换成图像. 每一个卷积层之后都使用Instance Normalization来代替Batch Normalization[11],以实现单幅图像的归一化操作,从而在加快模型收敛及防止梯度爆炸的基础上提高生成图像的质量.
1.2.2 判别模型的结构判别模型的结构如图4所示. 判别模型的输入是一张128×128像素的人脸灰度图像,其作用为判断这张图像是来自样本的原始人脸图像(标签为1)还是生成模型生成的图像(标签为0),因此判别模型的输出为一个一维的向量,当判别模型D判别出样本是来自真实人脸图像则输出标签为1,而如果判别出样本是来自生成模型生成的图像则输出标签为0. 判别模型是由5个卷积层(conv1-4、conv5)构成的全卷积网络,图像经由4层卷积层(conv1-4)提取特征,然后经最后一层卷积层(conv5)产生一个一维的输出,以实现判断功能. 除第1层和最后一层外,也均采用Instance Normalization来实现归一化.
|
图 4 判别模型结构 Figure 4 Structure of the Discriminator |
训练过程如图5所示.其训练流程为:(1) 将样本集A中的光照不均匀的人脸图像输入第1个生成模型Ga2b,经一系列卷积、转置卷积后,输出图像fakeB;(2) 将fakeB输入判别模型Db中,由判别模型Db来判断该图像属于哪个标签(如果像B中的光照均匀的真实图像,则标签为1,否则为0);(3) 将fakeB输入第2个生成模型Gb2a,生成cycA;(4) 将样本集B中的光照均匀的人脸图像输入第2个生成模型Gb2a,输出fakeA;(5) 将fakeA输入Da,按照与Db类同的方法判断fakeA的标签;(6) 将fakeA输入第1个生成模型Ga2b,生成cycB;(7) 当fakeA与A、fakeB与B、cycA与A、cycB与B之间的差异达到最小,即两个生成模型生成的人脸图像与真实样本无差别,同时两个判别模型也无法正确区分真实样本和生成样本时,整个训练流程结束.
|
图 5 光照归一化模型训练流程示意图 Figure 5 Process of training face illumination normalization model |
为了更好地训练两个生成模型,损失函数中添加了一个循环损失项,即经由两个生成模型循环生成的图像与原始图像的差别,也就是cycA与A的差、cycB与B的差,二者的和. 其数学表达式为[9]
| $\begin{split}{L_{{\rm{cyc}}}}(G,&F) = {E_{x \sim {p_{{\rm{data}}}}(x)}}\left[ {{{\left\| {F(G(x)) - x} \right\|}_1}} \right] + \\&{E_{y \sim {p_{{\rm{data}}}}(y)}}\left[ {{{\left\| {G(F(y)) - y} \right\|}_1}} \right],\end{split}$ | (1) |
那么最终的loss就可表示为
| $\begin{split}L(G&,F,{D_X},{D_Y}) = {L_{{\rm{GAN}}}}(G,{D_Y},X,Y){\rm{ + }}\\&{L_{{\rm{GAN}}}}(F,{D_X},Y,X){\rm{ + }}\lambda {L_{{\rm{cyc}}}}(G,F),\end{split}$ | (2) |
其中
改进后的CycleGAN模型结构与原CycleGAN模型结构基本相同. 为了使光照处理效果显著且不改变人脸结构,本文模型在原模型的基础上将卷积核的大小更改为全奇数,其中生成模型中除第1和最后一个卷积层的卷积核为7×7像素,其他层包括残差模块中的卷积层的卷积核均为3×3像素;判别模型中卷积层的卷积核大小为5×5像素. 并且使用了更有效的激活函数.
本文使用ELU(exponential linear unit,指数线性单元)和增加了
ELU的数学公式为
| $f(x) = \left\{ {\begin{array}{*{20}{l}}x&{x > 0,}\\{\alpha ({{\rm{e}}^x} - 1)}&{x \leqslant 0;}\end{array}} \right.$ | (3) |
| $f'(x) = \left\{ {\begin{array}{*{20}{l}}1&{x > 0,}\\{f(x) + \alpha }&{x \leqslant {\rm{0}}{\rm{.}}}\end{array}} \right.$ | (4) |
在本文中,ELU的
LELU数学公式为
| $f(x) = \left\{ {\begin{array}{*{20}{l}}x&{x > 0,}\\{\alpha ({{\rm{e}}^{\beta x}} - 1)}&{x \leqslant 0;}\end{array}} \right.$ | (5) |
| $f'(x) = \left\{ {\begin{array}{*{20}{l}}1&{x > 0,}\\{\beta (f(x) + \alpha )}&{x \leqslant {\rm{0}}{\rm{.}}}\end{array}} \right.$ | (6) |
ELU(包括添加了
对于LELU中的
|
表 1 |
实验过程中发现
各种取值情况下的函数图像如图6所示. 从上至下依次为
|
图 6 激活函数 Figure 6 Activation functions |
不同于原CycleGAN模型中生成模型(包括残差模块)使用ReLU、判别模型使用LReLU的组合,本文改进模型的生成模型中的前3个卷积层和2个转置卷积层均使用ELU,利用ELU输出均值更接近于0的特性,使模型可以稳定地快速收敛;最后一层仍然使用tanh;而每个残差模块使用LELU可以保留更多的人脸细节. 判别模型最后一层不使用激活函数,其他卷积层均用ELU.
改进的CycleGAN模型使用自适应矩估计方法更新网络参数,其数学表达示为
| ${m_t} = {\beta _1}{m_{t - 1}} + (1 - {\beta _1}){g_t},$ | (7) |
| ${v_t} = {\beta _2}{v_{t - 1}} + (1 - {\beta _2}){g_t}^2,$ | (8) |
| ${\hat m_t} = \frac{{{m_t}}}{{1 - \beta _1^t}},$ | (9) |
| ${\hat v_t} = \frac{{{v_t}}}{{1 - \beta _2^t}},$ | (10) |
其中t为迭代次数,
| ${\theta _{t + 1}} = {\theta _t} - \frac{\eta }{{\sqrt {{{\hat v}_t}} + \varepsilon }}{\hat m_t},$ | (11) |
其中
在本文实验中,
改进的CycleGAN模型的实现原理及训练流程与前文所述的基本相同,需要两个数据集:光照多样化的数据集A和光照均匀的数据集B.
改进的CycleGAN模型利用CycleGAN模型的优势,将两个数据集中的图片不断循环翻译,实现两个数据集光照风格的互相转化. 即一方面以数据集B为基准,利用判别模型的“监督”作用,使生成模型在对数据集A编码解码的同时学习到B的光照特征,使A中人脸的光照风格向B转化,同时不改变A中人脸的结构,以实现A人脸+B光照;同时以数据集A为基准,使生成模型在对数据集B编码解码的同时学习到A的光照特征,使B中人脸的光照风格向A转化,同时不改变B中人脸的结构,以实现B人脸+A光照. 本文出于实际去除光照的目的,只保留了数据集A到B的转换结果,也就是将有不均匀光照的人脸图片变为光照均匀的图片,即A人脸+B光照,以实现数据集A的光照归一化.
3 实验过程与结果分析本文实验所使用的计算机配置为:CPU-3.5 GHz,RAM-16 GB,显卡GTX-1070.
3.1 实验设计 3.1.1 训练改进CycleGAN模型的实验设计如前所述,本文CycleGAN模型训练过程中需要两个人脸数据集:一个光照多样化的数据集A和一个光照均匀的数据集B. 数据集B为增广的CAS-PEAL-R1数据集的标准人脸子集[13],实验过程中在CAS-PEAL-R1原有1 040张亚裔人脸的基础上,又增加了1 161张来自FEI Face Database和CelebA的正面人脸图片,均无遮挡和明显的表情,经镜像变换后增广为4 402张均匀光照的多种族人脸图片. 数据集A则在CAS-PEAL-R1的光照子集基础上增加了另两个数据集中有各种角度和强度光照的正面人脸图片,也均无明显表情和遮挡,且其总数量与B集相同. 两个数据集均未手动标注标签,且数据集中的图片非一对一配对.
根据前文介绍的改进CycleGAN模型中激活函数的7组
模型训练好后,利用裁剪后的ExtendedYaleB数据集即CroppedYale进行人脸识别实验以测试模型的光照处理效果[14-15]. 实验分为两组以做对比,均基于Caffe深度学习框架实现,采用了Light CNN模型进行微调[16],两组实验所使用的Light CNN模型参数相同. CroppedYale包含了38个人,每人64张不同光照角度、强度下的图片,实验前将图片缩放为128×128像素. 第1组实验选取10张较暗的不同光线入射角度的图片,每人所选取的图片原始标签一致,将其用于测试,余下54张图片用于训练;第2组实验选取相同图片做测试集,但只选取光照较均匀、亮度较高的图片做训练集(由于该类样本较少,因此对其做数据扩充处理,最终数量与第1组实验相同). 训练集测试集示例图见图7.
|
图 7 测试实验数据集示例 Figure 7 Samples of datasets in test experiments |
用模型处理测试集,训练集不做处理,将处理前后的数据集分别进行人脸识别实验,迭代20 000次后对比准确率. 准确率计算方式为
| ${\rm{accuracy = }}\frac{{{\rm{TP + TN}}}}{{{\rm{TP + TN + FP + FN}}}},$ | (12) |
其中,TP为预测标签为A且实际标签为A的图像数;TN为预测标签不为A且实际标签也不为A的图像数;FP为预测标签为A但实际标签不为A的图像数;FN为预测标签不为A但实际标签为A的图像数.
在实验过程中,两组实验分别比较了激活函数采用不同
由于CycleGAN在训练过程中需要学习两个映射:
这里所用DCGAN模型的生成模型由3个卷积层和3个转置卷积层构成,以实现编码-解码的功能. 除最后一层使用tanh激活函数外,其他层使用ReLU. 判别模型由4个卷积层和1个全连接层构成,激活函数最后一层使用Sigmoid,其他层用LReLU. 生成模型和判别模型均使用BatchNormalization进行规范化,所有卷积层和转置卷积层的卷积核均为5×5像素. 优化策略与本文模型相同,损失函数为Sigmoid交叉熵损失函数.
另外,本文还采用HE、LDCT两种非深度学习方法处理测试数据集,将结果与深度学习方法进行对比.
为了验证本文方法对人脸识别准确率的提升效果,利用DCGAN方法与非深度学习方法处理人脸数据集后也进行与上文相同的两组对比实验.
3.2 实验结果与分析 3.2.1 改进CycleGAN模型训练结果针对前文所介绍的LELU激活函数,采用不同
|
图 8 采用不同
|
本文实际实验目的为输出数据集A的光照风格向数据集B转换的结果,所对应的loss曲线为d_b_loss和g_a_loss. 几组不同的
两组实验测试得到的准确率对比如图9所示.
在第1组实验中,训练集中的图片含有各种角度和强度的光照,训练数据具有较好的多样性,因此模型可以较充分地学习到人脸图片的各种特征,包括光照特征,即便测试集中的图片较暗且光照角度强度与训练集不同,分类准确率也可以达到96%以上. 利用原CycleGAN模型进行光照归一化处理后,分类准确率有所提升,达到了98%以上. 利用前文所讨论的七组
在第2组实验中,由于训练集中均为光照较亮较平均的图片,而测试集依然为较暗的图片,用未经过光照处理的测试集测试得到的准确率相比第1组实验急剧下降,只有41%. 利用原CycleGAN模型处理测试集的光照后,测试得到的准确率相比未处理的测试集有所提升,但也只有47%. 而经过7个模型处理光照后的测试集得到的准确率与前两者相比均有明显提升,其中
|
图 9 实验准确率曲线 Figure 9 Accuracy curves of experiments |
用不同方法对人脸图片进行处理的结果对比如图10. 用不同方法处理人脸图像后进行准确率测试实验的结果对比如表2.
由图10可以看到,LDCT的处理结果稍优于HE,表2中的准确率结果表明HE与LDCT均能提高识别准确率,但提升幅度有限. 只学习单向映射的DCGAN学习能力较弱,不仅没有很好地去除光照,还改变了人脸面部结构. 而实验过程中发现,对于本文所使用的样本量如此少的数据集,DCGAN较容易出现GAN经常发生的mode collapse现象,表2也表明,用这样的模型处理测试集,准确率不升反降. 学习双向映射的CycleGAN的学习能力则更强,也更不容易发生mode collapse现象,图10中原CycleGAN模型的处理结果显示,人脸结构得到了较好的保持,光照影响也有明显的削弱,但显然没有本文方法平滑. 表2的准确率结果也表明,原CycleGAN模型与HE、LDCT性能相差不大,而利用经CycleGAN处理后的测试集测试人脸识别系统,识别准确率大幅地提高.
|
图 10 人脸图片光照处理结果对比 Figure 10 Results of different illumination normalization methods |
| 表 2 准确率结果对比 Table 2 Recognition rates of two sets of experiments with different methods |
本文提出了一种利用改进CycleGAN去除人脸光照影响的方法. 该方法利用CycleGAN的环状结构,使生成模型能够学习到两个训练数据集之间的双向映射,在判别模型的“监督”下实现两个数据集的两种光照特征的互相转换,而非配对的数据集也大大简化了数据准备阶段的工作. 另外,ELU和LELU激活函数的配合使用,使模型在学习到光照特征的同时,很好地保留了人脸的面部结构,防止因脸部变形而影响识别率. 深度学习在人脸识别中的应用已经很广泛,但将GAN用在人脸识别领域依然有许多问题亟待解决,因此,未来的工作中将继续探索GAN与人脸识别的结合,在深度学习之路上继续前行.
| [1] |
陈旭, 张军, 陈文伟, 等. 卷积网络深度学习算法与实例[J].
广东工业大学学报, 2017, 34(6): 20-26.
CHEN X, ZHANG J, CHEN W W, et al. Convolutional neural network algorithm and case[J]. Journal of Guangdong University of Technology, 2017, 34(6): 20-26. |
| [2] |
LEE P H, WU S W, HUNG Y P. Illumination compensation using oriented local histogram equalization and its application to face recognition[J].
IEEE Transactions on Image processing, 2012, 21(9): 4280-4289.
DOI: 10.1109/TIP.2012.2202670. |
| [3] |
CHEN W, ER M J, WU S. Illumination compensation and normalization for robust face recognition using discrete cosine transform in logarithm domain[J].
IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2006, 36(2): 458-466.
DOI: 10.1109/TSMCB.2005.857353. |
| [4] |
白小叶. 光照变化下的人脸识别算法研究[D]. 南京: 南京邮电大学通信与信息工程学院, 2016.
|
| [5] |
聂祥飞, 杨志军, 何雪. 利用离散余弦变换与梯度脸的人脸光照处理[J].
微型机与应用, 2017, 36(11): 50-53.
NIE X F, YANG Z J, HE X. Face illumination processing using discrete cosine transform and gradient faces[J]. Microcomputer & it’s applications, 2017, 36(11): 50-53. |
| [6] |
GOODFELLOW I J, POUGET-ABADIE J, Mirza M, et al. Generative adversarial nets[C]// International Conference on Neural Information Processing Systems. Massachusetts: MIT Press, 2014: 2672-2680.
|
| [7] |
RADFORD A, METZ L, CHINTALA S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. arXiv preprint arXiv: 1511.06434, 2015.
|
| [8] |
MIRZA M, OSINDERO S. Conditional generative adversarial nets[J]. arXiv preprint arXiv: 1411.1784, 2014.
|
| [9] |
ZHU J Y, PARK T, ISOLA P, et al. Unpaired image-to-image translation using cycle-consistent adversarial networks[J]. arXiv preprint arXiv: 1703.10593, 2017.
|
| [10] |
ISOLA P, ZHU J Y, ZHOU T H, et al. Image-to-image translation with conditional adversarial networks[J]. arXiv preprint arXiv: 1611.07004, 2016.
|
| [11] |
ULYANOV D, VEDALDI A, LEMPITSKY V. Instance normalization: The missing ingredient for fast stylization[J]. arXiv preprint arXiv: 1607.08022, 2016.
|
| [12] |
CLEVERT D A, UNTERTHINER T, HOCHREITER S. Fast and accurate deep network learning by exponential linear units (elus)[J]. arXiv preprint arXiv: 1511.07289, 2015.
|
| [13] |
GAO W, CAO B, SHAN S G, et al. The CAS-PEAL large-scale Chinese face database and baseline evaluations[J].
IEEE Transactions on Systems, Man, and Cybernetics-Part A: Systems and Humans, 2007, 38(1): 149-161.
|
| [14] |
GEORGHIADES A S, BELHUMEUR P N, KRIEGMAN D J. From few to many: illumination cone models for face recognition under variable lighting and pose[J].
IEEE Transactions on Pattern Analysis & Machine Intelligence, 2001, 23(6): 643-660.
|
| [15] |
LEE K C, HO J, KRIEGMAN D J. Acquiring linear subspaces for face recognition under variable lighting[J].
IEEE Transactions on Pattern Analysis & Machine Intelligence, 2005, 27(5): 684-98.
|
| [16] |
WU X, HE R, SUN Z N, et al. A light CNN for deep face representation with noisy labels[J]. arXiv preprint arXiv: 1511.02683, 2015.
|
2018, Vol. 35