logo资料库

人脸表情识别.docx

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
基于深度卷积神经网络的人脸表情识别(附GitHub地址)
二. 表情识别的常用方法
三. 基于深度卷积神经网络的表情识别
四. 实验设计
五. 测试可视化实例
六. 总结
基于深度卷积神经网络的人脸表情识别(附 GitHub 地址) WuJie1010/Facial-Expression-Recognition.Pytorch​ github.com 一. 表情识别 (Facial Expression Recognition ) 表情识别是计算机理解人类情感的一个重要方向,也是人机交互的一个重要方面。表情识别是指从静态照 片或视频序列中选择出表情状态,从而确定对人物的情绪与心理变化。20 世纪 70 年代的美国心理学家 Ekman 和 Friesen 通过大量实验,定义了人类六种基本表情:快乐,气愤,惊讶,害怕,厌恶和悲伤。在 本文的表情分类中还增添了一个中性表情。人脸表情识别(FER)在人机交互和情感计算中有着广泛的研 究前景,包括人机交互、情绪分析、智能安全、娱乐、网络教育、智能医疗等。 二. 表情识别的常用方法 2.1 人为设计特征 各种的人为设计的特征已经被用于 FER 提取图像的外观特征,包括 Gabor、LBP、LGBP、HOG 和 SIFT。 这些人为设计的方法在特定的小样本集中往往更有效,但难以用于识别新的人脸图像,这给 FER 在不受控 制的环境中带来了挑战。 存在问题: (1)人为设计的特征太受制于设计的算法,设计太耗费人力。 (2)特征提取与分类是两个分开的过程,不能将其融合到一个 end-to-end 的模型中 2.2 神经网络 近几年来,前馈神经网络(FNN)和卷积神经网络(CNN)也被用来提取表情特征。基于卷积神经网络(CNN) 的新的识别框架在 FER 中已经取得了显著的结果。CNN 中的多个卷积和汇集层可以提取整个面部或局部 区域的更高和多层次的特征,且具有良好的面部表情图像特征的分类性能。经验证明,CNN 比其它类型的 神经网络在图像识别方面更为优秀。基于神经网络的方法也存在着两个问题: (1)简单的神经网络(如 FNN)忽略图像二维信息。 (2)浅层卷积网络所提取的特征,鲁棒性较差。 基本上面的人为设计特征与神经网络的缺陷,我们尝试着用深度卷积网络来解决表情识别的问题。 三. 基于深度卷积神经网络的表情识别 3.1 模型设计 (1)我们采用深度卷积神经网络来将人脸表情特征提取与表情分类融合到一个 end-to-end 的网络中。分 别采用了 VGG19 和 Resnet18 来完成表情的识别与分类。 (2)VGG19 的每一个小块是有一个卷积层,一个 BatchNorm 层,一个 relu 层和一个平均池化层来构 成的。而 resnet 是由两个卷积层,两个 BatchNorm 层组成,而且每个 resnet 模块输入输出端还有快捷 链接。 (3)在全连接层之前加入了 dropout 策略,增加了模型鲁棒性; (4)我们都去掉了传统 VGG19 与 Resnet18 中的多个全连接层,直接在一个全连接层后直接分为 7 类去 识别。 3.2 损失函数设计 在设计中,我们探索了两种损失函数的计算方法,第一种是交叉熵损失函数。模型在全连接层之后,得到 了每一类的输出概率,但此时概率是没有经过归一化的,我们通过一个 softmax 层,将概率归一化到 1, 更加易于数据处理。而交叉熵损失函数计算公式如下:
在 softmax 回归中,我们通过归一化的概率的大小解决多分类问题,类标 y 可以取 k 个不同的值(而不是 2 个)。 第二种损失函数是线性 SVM 分类损失,其抽象为 hinge 损失函数,Hinge loss 的叫法来源于其损失函数 的图形,为一个折线,第 类的损失表达式为: 如果被正确分类,损失是 0,否则损失就是 SVM 和 Softmax 分类器是最常用的两个分类器。不同的是,SVM 将输出为每个分类评分,然后再选择得 分最高的类;与 SVM 不同,Softmax 分类器是一个 logistic 分类器面对多个分类的归纳,其归一化的分 类概率更加直观,其概率总和为 1。 四. 实验设计 4.1 数据集 本文采用了 FER2013 和 CK+数据库。 Challenges in Representation Learning: Facial Expression Recognition Challenge​ www.kaggle.com FER2013 数据集由 28709 张训练图,3589 张公开测试图和 3589 张私有测试图组成。每一张图都是像素 为 48*48 的灰度图。FER2013 数据库中一共有 7 中表情:愤怒,厌恶,恐惧,开心,难过,惊讶和中性。 该数据库是 2013 年 Kaggle 比赛的数据,由于这个数据库大多是从网络爬虫下载的,存在一定的误差性。 5%。 这个数据库的人为准确率是 65% CK+​ www.portointeractivecenter.org CK+数据库则是发布于 2010 年,由 Cohn-Kanade Dataset 的基础上扩展而来的。这个数据库包括 123 个 subjects, 593 个 image sequence,每个 image sequence 的最后一张 Frame 都有 action units 的 label,而在这 593 个 image sequence 中,有 327 个 sequence 有 emotion 的 label,如图 4.2.2。这 个数据库是在实验室条件下获取的,较为严谨可靠。CK+是人脸表情识别中比较标准的一个数据库,很多 文章都会用到这个数据做测试。 4.2 数据增强 为了防止网络过快地过拟合,可以人为的做一些图像变换,例如翻转,旋转,切割等。上述操作称为数据 增强。数据操作还有另一大好处是扩大数据库的数据量,使得训练的网络鲁棒性更强。在本实验中,在训 练阶段,我们采用随机切割 44*44 的图像,并将图像进行随机镜像,然后送入训练。在测试阶段,本文采 用一种集成的方法来减少异常值。我们将图片在左上角,左下角,右上角,右下角,中心进行切割和并做 镜像操作,这样的操作使得数据库扩大了 10 倍,再将这 10 张图片送入模型。然后将得到的概率取平均, 最大的输出分类即为对应表情,这种方法有效地降低了分类错误。 4.3 在 FER2013 数据集的实验效果
data-original="https://pic2.zhimg.com/v2-63d7f9f001d663991fd2bb2851b3796c_r.jpg"> 表 1: 在 FER2013 数据集下 VGG19 的结果
src="https://pic3.zhimg.com/v2-f1f577350873b5ecd3b9991e67bb3227_b.jpg" data-size="normal" data-rawwidth="880" data-rawheight="297" class="origin_image zh-lightbox-thumb" width="880" data-original="https://pic3.zhimg.com/v2-f1f577350873b5ecd3b9991e67bb3227_r.jpg">
表 2:在 FER2013 数据集下 Resnet18 的结果
实验结果分析 (1) VGG 和 Resnet18 的深度模型在 FER 数据库上都可以取得不错的分类效果。而且 VGG 的方法要比 Resnet18 的方法要好一些。 (2) Dropout 能有效得降低过拟合,提高准确率。Dropout 的方法相当于训练的时候随机失活掉一些 连接,而在测试的时候把这些连接补充回来,这就相当于集成多个不错的模型来做综合的预测。 (3)10 倍切割的方案能进一步降低识别的错误率,对于训练阶段来说,随机切割增加了数据量,这相当 于直接扩充了数据集,减缓了过拟合的作用。对于预测阶段,10 倍的数据同时预测结果,相当于集成操作 减小网络误判的情况。 (4)Softmax 的分类方法比 SVM 的方法好。softmax 将所有分类都考虑到了,而且分类的结果,就是在 所有 K 类分类结果。而 SVM 的方法,每次只是二分类,只能学习到是否是这个样本,而不一定能学习到 正确的样本,这进一步加大了分类的困难。 (5) 在单模型的效果上,我们 VGG19+dropout+10crop+softmax 达到了很高的水平。在 Public test set 上,达到了 71.496%,在 Private test set 上达到了 73.112%,这个水平也是单一模型下的 state-of-the-art 水平。 准确率分析
图 1:VGG19+dropout+10crop+softmax 训练,测试准确率曲线 混淆矩阵分析
图 2: VGG19+dropout+10crop+softmax 在 PrivateTest 数据集的混淆矩阵 由图 2 可知:对于快乐和惊讶的准确率明显高于其他,但是恐惧的准确率就很低。对于此问题的出现,作 者认为一是因为该数据集的不同表情的数量不均衡,例如有 7215 张开心的图片,但只有 436 张厌恶的图 片,而每个分类的图片平均数量是 4101,这种种类的不平衡足以使得分类出现误差;二是生气,厌恶,恐 惧,悲伤这四类表情本身就有一定的相似性,在现实生活中,人也会觉得这四类表情难以区分,特别是在 彼此都不相识的情况下,要正确识别表情就更难了。而且我们发现,误判总是出现在某些类,可能是某些 类真的难以区分,易于混淆。接下来应该研究对特定表情的关注模块,关注到细节信息,对提高分类能力 提供进一步的支持。 与经典方法的对比
分享到:
收藏