APP下载

端到端的低质人脸图像表情识别

2020-05-12刘全明辛阳阳

小型微型计算机系统 2020年3期
关键词:集上分类器人脸

刘全明,辛阳阳

(山西大学 计算机与信息技术学院,太原 030006)

E-mail:liuqm@sxu.edu.cn

1 引 言

在信息交流过程中,脸部表情不仅可以传达人的情绪,而且能够传递人的情感信息.研究发现,可通过人脸传递的信息量占据了总信息量的55%[1],因此人脸表情识别用于信息的捕捉是非常有意义且具有挑战的任务.著名心理学家Paul Ekman[2]将人脸表情分为悲伤、高兴、惊讶、恐惧、愤怒和厌恶六种基本表情,后又添加了中性共七种表情.人脸表情识别主要是针对这七种表情,通过人脸定位[3]、特征提取[4]和分类识别[5]来自动分辨人脸表情类别[6,7].

目前的人脸表情识别都是基于正脸或者完整的人脸,在理想状况下能够较为准确的识别出人脸的表情,在现实中考虑到自然因素的影响,难免会采集到质量较差的图像,如有遮挡或破损等,将这一类图像称为低质人脸表情图像[8].低质人脸表情图像由于特征信息的缺失直接导致识别率较低且错误率较高,为此我们需要对低质人脸表情图像的修复进行研究,补全图像中缺失的信息,进而提高识别率.传统的人脸表情图像修复分为两类:一类是基于几何图像模型的图像修补技术,适用于修补图像中的小尺度缺损[9];另一类是基于纹理合成的图像补全技术,针对填充图像中大的丢失块有较好的效果[10,11].但此类方法多半需要人工标记修复区域,无法满足自动化在线处理的要求[12].基于深度学习的人脸表情修复方法有更好的处理,文献[13]利用图像本身的冗余性,用图像已知部分的信息来补全未知部分;文献[14]提出利用互联网上存在的大量图片作为素材来找到相似的部分,直接从其它图像抠出完整一块来填补漏洞;文献[15]提出上下文编码(Context Encoders)结构首次实现联合卷积神经网络(Convolutional neural network,CNN)和生成对抗网络(Generative adversarial network,GAN)用于图像修补,利用卷积神经网络来学习图像中的高级特征,利用这些特征来指导图像缺失部分的生成.自从Context Encoders被提出,越来越多的基于Context Encoders的改进模型被设计实现,文献[16,17]在图像复原上取得不错的效果.对抗网络除了可以进行图像修复外,还可用于多分类,文献[18]提出将对抗网络的判别器用于多分类,此时生成器得到的输出被用于训练分类器;基于生成对抗网络局部遮挡人脸图像的表情识别,先利用对抗网络进行图像修复,然后通过分类器实现表情识别,充分利用生成式模型的优势完成对局部遮挡人脸图像表情的识别.

本文针对有局部破损或遮挡的低质人脸图像表情识别设计了一个端到端的网络模型:利用对抗模型实现低质人脸表情图像的复原并进行表情的识别,联合使用对抗损失、内容损失以及分类损失引导模型的训练.本文将存在局部遮挡或破损的人脸图像作为生成对抗网络的输入,利用对抗损失将存在局部遮挡或破损的区域进行复原,同时在原有的未遮挡或破损的人脸图像和低质图像之间构建欧式损失,用于进一步的图像恢复的效果.为了提升分类效果,在模型的分类器部分建立分类约束判别损失,通过对三部分损失的调节更好的优化训练网络.分类器的输入是低质人脸表情图像、修复人脸表情图像以及原始高质量人脸表情图像,分别得到三个分类损失:低质人脸表情损失、修复人脸表情损失和原始人脸表情损失,通过低质图像和原始高质量图像的损失对修复图像的损失进行约束,建立目标函数.在Fer2013和CK+数据集上进行实验验证了本文方法的有效性.

2 网络设计

2.1 网络设计

本文提出的端到端低质人脸图像表情识别模型如图1所示.网络主要包含两部分,生成器(Generative model,G)、判别器(Discrimintive model,D)和分类器(Classificiation,C)三部分共享卷积特征提取层.生成器将低质人脸图像作为网络的输入,通过编码器的下采样操作和解码器的上采样操作,对存在遮挡的人脸区域进行恢复.判别器将生成器的输出和未遮挡的人脸照片作为输入,和生成器一起进行对抗训练,提升恢复到的图像的质量.分类器将恢复到的人脸图像作为输入,构建一个分类任务用于表情识别.

图1 网络结构

如图1所示,网络中A为低质破损人脸表情图像,A′为通过生成器G复原后图像,B为原始的完整的人脸表情图像.图像A经过生成器G得到图像A′,判别器D通过计算A′与B的内容损失以及对抗损失来调整修复效果,分类器C分别计算A′,A和B的分类损失,通过建立约束判别损失使得模型有一个更好的分类性能.

生成器部分是典型的编码-解码结构,编码器使用的是VGG19的全部卷积层和池化层,解码器和编码器互逆,由卷积层和上采样层组成.判别器D和分类器C是一般的CNN结构,包括有卷积层,池化层,全连接层,通过分类层将输出的结果转化为概率的形式,为了减小网络的参数规模,判别器和分类器共享网络的卷积参数.

2.2 损失函数

1)对抗损失Lg:为了能够生成更加真实的图像,本文引入对抗损失.生成器希望其输出能够迷惑判别器,而判别器则希望能够准确判断图像的真与假.为了使得生成模型的训练更加的稳定,本文使用Wasserstein距离损失作为对抗损失,如公式(1),Pr为原始人脸图像分布,Pz为破损的人脸图像分布,fw为判别器参数函数,gθ为生成器参数函数.

(1)

2)内容损失L2:本文使用欧式损失度量生成器的输出和原始的人脸图像之间的差异,从而提升对抗生成网络的人脸遮挡区域的恢复能力.具体的损失函数表示如下,如公式(2)所示.

(2)

3)分类约束判别损失Lc:分类器部分本文使用的是多分类中最常用的交叉熵损失[19].使用 softmax激活函数实现从特征空间到[0,1]概率空间的映射,得到每一个像素分类得分的概率,然后使用交叉熵损失函数指导网络训练.使用softmax激活函数的交叉熵损失就是Softmax损失.Softmax 损失近几年来常用于做多分类而且相较于其他方法有一个不错的分类效果.将通过softmax层得到的输出作为交叉熵的输入,计算得到Softmax损失.假设样本类别数为n,则softmax层有n个输出向量,Si是softmax层的输出向量S的第i个值,表示样本属于第i个类别的概率.Softmax损失公式如公式(3)所示,y是一个1*n的向量,而且只有一个1值,其余则都为0,表示的是真实标签的one-hot编码.Lsoftmax表示的是Softmax损失.

(3)

(4)

4)模型的总损失为L由三部分组成如公式(5)所示.

L=αLg+βL2+γLc

(5)

α,β,γ为超参数,用来对各部分损失做一个平衡.

3 实验分析

本文实验通过在具有GPU的1080ti显卡的电脑上搭建TensorFlow框架来构建模型并训练,在训练本文模型之前首先利用CelebA人脸数据集上对生成模型进行预训练,然后使用本文处理后的Fer2013训练集和CK+数据集进行整个模型的训练,此时只需要微调生成模型部分,使用处理后的Fer2013测试集通过分类指标精度(Acc)和混淆矩阵[20]以对模型进行评估,最后在处理后的Fer2013测试集上对本文损失进行的分析.各个模型的训练参数如表1所示,设置α=0.85,β=0.1,γ=0.15通过实验发现本文对抗网络部分的对抗损失在0.05左右,而单独使用分类器的分类损失在0.3左右,比例为1∶6,为了平衡损失按比例设置超参数.而本文网络为了使网络侧重于分类,适当的调大分类损失部分的权重.本文的超参数并不一定是最优的.使用大于0小于1的数值是为了让初始损失不至于很大,随着梯度下降有一个平滑的损失曲线.

表1 训练参数

3.1 数据集处理

Fer2013数据集,Fer2013人脸表情数据集由35886张人脸表情图片组成,其中训练集28708张,验证集和测试集各3589张.每张图片是由大小固定为48×48的灰度图像组成,本文将所有图像处理为64×64大小.共有7种表情,分别对应于数字标签0-6,具体表情对应的标签和中英文如下:0(anger)生气;1(disgust)厌恶;2(fear)恐惧;3(happy)开心;4(sad)伤心;5(surprised)惊讶;6(neutral)中性.

CK+数据集,CK+人脸表情数据集由920张人脸表情图片组成,共有8种表情,具体表情对应的标签和中英文如下:(anger)生气;(contempt)轻视;(disgust)厌恶;(fear)恐惧;(happiness)开心;(sadness)伤心;(surprise)惊讶;(neutral)中性.CK+数据集使用前本文先做了预处理,把图像中的人脸裁剪出来固定图像尺寸为64*64大小.

实际当中,人脸图像带有遮挡或破损往往是眼睛和嘴巴部分,这是由于帽子和口罩造成的,直接导致了人脸眼部和嘴部信息缺失,而人脸这两个部位对人的表情起决定性作用,目前带有破损或遮挡的人脸表情公开数据集相对较少,本文分别考虑了人脸眼部和嘴部区域由于遮挡或破损造成的信息缺失对人脸表情的影响,在现有的人脸表情数据集上人为添加破损或遮挡,分别统一去除图像眼部或嘴部25%的区域.对Fer2013和CK+数据集样本图进行处理,如图2所示,图(a)中第一行为去除眼部25%面积区域的人脸图像,第二行为去除嘴部25%面积区域的人脸图像.图(b)和图(a)做相同处理后的人脸图像.将处理后的人脸表情图像作为新的样本集.

图2 处理后的样本集

3.2 图像生成效果

如图3(a)和(b)所示,分别是对Fer2013数据集和CK+数据集的低质人脸表情图像恢复效果.图(a)中的第一行为Fer2013数据集每个表情类下的原始图像,第二行为人脸眼部区域的恢复效果,第三行为人脸嘴部区域的恢复效果.同样图(b)为在CK+数据集上的眼部和嘴部的恢复效果.由图3恢复效果可以发现,修补的效果已经能够接近原始图像,在一些关键的区域眼睛和嘴巴都很真实,只是相对原始图像带有一定的模糊但对表情的识别影响不大.

图3 修复效果图

3.3 精度评估

如表2、表3所示,在Fer2013和CK+数据集上的精度,在原始无缺失七种表情数据集上使用生成式对抗网络和不使用生成对抗网络识别准确率相同,表2展示了分别使用生成式对抗网络(DCGAN+CNN)和不使用生成式对抗网络(CNN)对Fer2013七种表情进行实验对比,在原始训练集上的识别准确率为80.48%,在测试集上识别准确率为63.56%.对于有缺失的数据集DCGAN+CNN的识别准确率略低于CNN方法.而本文方法相比两种方法有一个更高的识别准确率,从表中可以看出本文方法在低质数据集上都得到了提升,通过使用生成式模型对图像进行复原和分类约束判别损失有一个更高的精度.在丢失相同面积的眼部区域要比嘴部区域的精度要高,眼部缺失更接近原始图像的精度,证明嘴部包含了大量能体现人脸表情的信息.在嘴部缺失25%的Fer2013测试集上精度为58.68%,比较于普通CNN分类器高出2.99个百分点.由于CK+数据集本身质量要比Fer2013数据集高,所以在精度上要稍微高一点,嘴部缺失25%的精度为90.57相较于CNN高出1.4个百分点.

表2 在Fer2013数据集上的精度

表3 在CK+数据集上的精度

3.4 Fer2013测试集(嘴部缺失)的混淆矩阵

如图4所示为在Fer2013测试集上的混淆矩阵,图(a)是只使用CNN分类器在低质的Fer2013测试集上的混淆矩阵,图(b)是使用本文模型在低质Fer2013测试集上的混淆矩阵,图(c)是使用CNN在原始Fer2013测试集上的混淆矩阵.通过对比可以发现在低质Fer2013测试集上直接使用CNN进行分类导致在每个类别下有较低的正确分类概率,甚至可能会有错分类的情况,如图(a)中真实标签为disgust,预测标签为angry,产生了错误的预测;图(b)为使用本文模型后在每个类别下正确分类的概率都得到了提升,而且消除了错分类的情况.与图3结果类似,图5是在CK+数据集上的混淆矩阵,从(a)中可以看出除了对neutral能够正确分类外其余都错分类,图(b)通过本文方法使得分类结果得到了改善,从矩阵中可以看出除了对neutral能够正确分类外还能够对contempt正确分类.

图4 在Fer2013测试集上混淆矩阵

图5 在CK+测试集上混淆矩阵

3.5 Fer2013测试集(嘴部缺失)的损失分析

本文通过在嘴部缺失25%的Fer2013测试集上的精度对损失函数进行分析,从表4可以看出,使用约束判别损失相较于直接使用生成图像的分类损失有一个更高的精度为58.68%,在仅使用对抗损失和修复图像的分类损失的情况下精度为57.68%,而使用内容损失后精度有所提升为57.92%,相比之下本文使用对抗损失和内容损失以及分类约束判别损失有一个更高的精度.

表4 Fer2013测试集(嘴部缺失25%)上不同损失函数的精度

4 总 结

本文针对低质人脸图像的表情识别,设计了一个端到端的网络模型,使用生成对抗网络对存在遮挡或破损的人脸区域进行恢复,将对抗模型的判别器进行扩展使其可以实现多分类,使得对抗模型具有多分类能力,提高了低质人脸表情识别的精度.通过在Fer2013和CK+数据集上的对比实验表明,本文方法具有较好的表情识别性能,但由于生成式模型本身训练就比较复杂.接下来我们会在本文的基础上进行模型优化,压缩模型降低训练参数,并使用较好的分类器;其次本文在处理低质图像时规则化了破损区域,实际生活中的破损区域是不规则且包含有用信息的区域,这些问题将是下一步工作的重点内容.

猜你喜欢

集上分类器人脸
学贯中西(6):阐述ML分类器的工作流程
关于短文本匹配的泛化性和迁移性的研究分析
有特点的人脸
一起学画人脸
玻璃窗上的人脸
基于朴素Bayes组合的简易集成分类器①
基于互信息的多级特征选择算法
基于动态分类器集成系统的卷烟感官质量预测方法
一种自适应子融合集成多分类器方法
师如明灯,清凉温润