基于OpenCV计算机视觉库和mini-xception CNN卷积网络深度学习的人脸检测与表情识别研究_毕业设计

摘  要

随着人工智能和深度学习技术快速发展,人脸检测和表情识别技术在各个领域得到广泛应用。人脸检测是计算机视觉领域中一个重要基础问题,其准确性直接影响了后续人脸相关任务效果。表情识别则是情感计算领域一个重要研究方向,可以应用于情感识别、智能监控、人机交互等领域。

传统人脸检测方法通常使用Haar特征和级联分类器,但其准确率不高和损失率较大。本文改用深度学习方法,通过搭建基于OpenCV计算机视觉库和mini-xception网络人脸检测和表情识别系统,利用深度学习强大特征提取和分类能力,实现了对面部表情准确识别,本文提出基于深度学习表情识别方法在表情识别各方面性能都有较大提升,其中准确率达到了90%,损失率低至2.5%,并在多个数据集上准确率表现优秀,具有较好泛化能力。

本文对以深度学习为技术核心人脸检测和表情识别进行了全面探讨,对于智能系统和人机交互进一步发展具有重要意义,有利于提高深度学习技术在图像处理领域检测与识别准确性,避免传统方法中存在一些问题。利用深度学习技术进行并行计算和优化算法,提高人脸检测与表情识别系统实时性,可以提高实时性,使其更快完成图像数据处理,还可以为相关领域研究人员提供参考和借鉴。

关键词:深度学习;人脸检测;表情识别;CNN卷积神经网络

 

ABSTRACT

With the rapid development of artificial intelligence and deep learning technologies, face detection and expression recognition techniques have been widely applied in various fields. Face detection is an important fundamental problem in the field of computer vision, and its accuracy directly affects the effectiveness of subsequent face-related tasks. Expression recognition is an important research direction in affective computing, which can be applied to emotion recognition, intelligent monitoring, human-computer interaction, and other fields.

Traditional face detection methods usually use Haar features and cascade classifiers, but their accuracy is low and there is a high loss rate. In this paper, we propose to use deep learning methods to build a face detection and expression recognition system based on the OpenCV computer vision library and the mini-xception network. By leveraging the powerful feature extraction and classification capabilities of deep learning, accurate recognition of facial expressions is achieved. The proposed deep learning-based expression recognition method significantly improves the performance of expression recognition in various aspects, with an accuracy rate of 90% and a low loss rate of 2.5%. It also performs well on multiple datasets and exhibits good generalization ability.

This paper comprehensively discusses face detection and expression recognition with deep learning as the core technology, which is of great significance for the further development of intelligent systems and human-computer interaction. It helps improve the accuracy of detection and recognition in the field of image processing using deep learning technology, avoiding some issues in traditional methods. Utilizing deep learning techniques for parallel computation and optimizing algorithms can improve the real-time performance of face detection and expression recognition systems, enabling faster image data processing. It can also serve as a reference and provide insights for researchers in related fields.

Key words: Deep learning; Face detection; Expression recognition; CNN convolutional neural network

 

目  录

第1章 绪论... 1

1.1 研究背景与意义... 1

1.2 国内外研究现状... 1

1.2.1 国内文献综述... 1

1.2.2 国外文献综述... 2

1.3 研究方法... 2

1.4 非技术因素... 3

第2章 相关技术介绍... 4

2.1 人脸检测技术... 4

2.1.1 传统人脸检测方法... 4

2.1.2 深度学习在人脸检测中应用... 4

2.2 表情识别技术... 4

2.2.1 传统表情识别方法... 4

2.2.2 深度学习在表情识别中应用... 4

2.3 神经网络相关理论介绍... 5

2.3.1 全连接神经网络... 5

2.3.2 卷积神经网络... 5

2.3.3 激活函数... 6

2.4 本章小结... 7

第3章 基于CNN卷积神经网络人脸检测与表情识别... 8

3.1 CNN卷积网络结构... 8

3.2 系统实现流程... 9

3.2.1 数据预处理... 9

3.2.2 模型训练... 9

3.2.3 image_demo图像测试中OpenCV人脸识别与mini-xception网络表情识别... 10

3.3 实验设置与结果分析... 12

3.3.1 实验数据集... 12

3.3.2 训练参数设置... 13

3.3.3 实验结果与分析... 13

3.4 本章小结... 15

第4章 系统平台搭建与测试... 16

4.1 系统开发环境... 16

4.2 系统设计... 17

4.2.1 系统平台概述... 17

4.2.2 系统流程图... 17

4.2.3 系统模块设计... 19

4.2.3.1 人脸检测模块... 19

4.2.3.2 表情局部几何特征提取模块... 20

4.2.3.3 卷积网络表情预测与结果显示模块... 22

4.3 系统平台界面设计... 22

4.3.1 实时监测... 22

4.3.2 图片检测... 23

4.3.3 视频文件检测... 25

4.4 系统平台测试... 26

4.4.1 系统识别准确率测试... 26

4.4.2 系统抗干扰能力测试... 28

4.5 本章小结... 30

第5章 结论与展望... 31

5.1 研究工作总结... 31

5.2 存在问题与改进方向... 31

5.3 未来发展展望... 32

参考文献... 33

致谢... 34

附录... 35

1章 绪论

1.1 研究背景与意义

该研究来源于对人脸检测和表情识别技术需求,人脸检测和表情识别在计算机视觉领域具有广泛应用前景。通过准确地检测和识别人脸表情,可以应用于人机交互、情感分析、安防监控等领域,可以帮助人们更好地理解和交流。深度学习技术在人工智能领域有着重要地位,尤其是在计算机视觉任务中表现出强大能力。本研究采用OpenCV计算机视觉库和mini-xception网络来搭建人脸检测和表情识别系统,借助深度学习强大特征提取和分类能力,可以更准确地检测人脸识别表情,大大提高识别准确性和效率。

本文对人脸检测和表情识别技术研究有利于探索和改进深度学习在人脸检测和表情识别中应用,提高识别表情识别准确性、降低损失率,有利于智能系统和人机交互进一步发展。本文还可以为表情识别相关领域研究人员提供建议和参考,为表情识别和人脸检测领域发展尽绵薄之力。

1.2 国内外研究现状

1.2.1 国内文献综述

人脸检测与表情识别是计算机视觉领域中热门研究方向,基于深度学习方法在该领域中取得显著成果。王秋惠[1]提出一种基于深度学习人脸表情识别方法。采用卷积神经网络(CNN)作为基础模型,通过训练数据对网络进行训练,使用softmax分类器对人脸表情进行分类。实验结果表明,该方法在FER2013和CK+数据集上都取得较好表现。马韦暠[2]提出一种基于深度学习人脸表情识别方法。采用深度卷积神经网络(DCNN)作为基础模型,通过数据增强和迁移学习来提高模型表现。实验结果表明,该方法在FER2013和CK+数据集上都取得较好表现。苗壮等人[3]提出一种融合行网络特征人脸表情识别算法。采用行卷积神经网络(CNN)来提取人脸特征,将特征进行融合来进行表情识别。实验结果表明,该算法在FER2013和CK+数据集上取得较好准确率。奚琰[4]提出一种基于对比学习方法,通过对比学习来训练模型,从而提高在细粒度遮挡情况下表情识别准确率。范文杰等人[5]采用深度卷积神经网络(DCNN)作为基础模型,通过数据增强和模型融合来提高识别准确率。吕鹏等人[6]采用多个卷积神经网络(CNN)来提取不同类型特征,将这些特征进行融合来进行表情识别。实验结果表明,该算法在FER2013和CK+数据集上取得较好准确率。黄豪豪等人[7]采用遗传算法和粒子群优化算法来优化卷积神经网络(CNN)参数,从而提高表情识别准确率。张宝薪等人[8]采用深度卷积神经网络(DCNN)来提取人脸特征,通过训练数据对网络进行训练。实验结果表明,该方法在人脸识别任务中取得较好性能。何超等人[9]通过改进卷积神经网络(CNN)结构和参数初始化方法,提高模型对人脸表情识别准确率。雒翠萍等人[10]采用深度卷积神经网络(DCNN)来提取人脸特征,通过训练数据对网络进行训练。实验结果表明,该方法在FER2013数据集上取得较好性能。姜月武等人[11]回顾基于深度学习人脸表情识别研究现状,对未来研究方向进行展望。

国内研究者在基于深度学习人脸检测与表情识别领域中取得丰富成果。通过采用不同深度学习模型和优化算法,研究者们不断提高人脸表情识别准确率和性能。但目前仍存在一些挑战,如遮挡人脸表情识别和在大规模数据集上泛化能力等,这些问题仍需进一步研究和解决。

1.2.2 国外文献综述

人脸检测与表情识别是计算机视觉领域中重要研究方向,近年来基于深度学习方法在该领域取得显著成果。Weijun等人[12]提出一种增强时空学习网络,用于动态面部表情识别。该网络结合卷积神经网络和长短时记忆网络(LSTM),能够对面部表情时空变化进行建模。实验结果表明,该方法在多个面部表情数据集上实现较好识别性能。Yibo等人[13]通过模拟研究记忆阻抗器非理想特性对面部表情识别影响,通过实验验证这种影响。研究结果表明,记忆阻抗器非理想特性会对面部表情识别准确性产生一定影响。Díaz[14]等人对基于面部表情识别视频分析方法进行调查,对这些方法应用领域和技术挑战进行讨论。综述结果表明,基于面部表情识别视频分析在人机交互、情绪计算等领域具有广泛应用前景。Yuanlun等人[15]提出一种基于Transformer Block Enhancement Module网络结构,用于提高面部表情识别损失率。实验结果表明,该方法在面部表情数据集上取得较好识别性能。

国外研究者们在基于深度学习人脸检测与表情识别领域取得一系列研究成果。通过引入时空建模、非理想特性分析、视频分析和网络结构优化等方法,研究者们不断提高人脸检测与表情识别准确性和损失率。但目前仍然存在一些挑战,如大规模数据集上泛化能力和跨文化面部表情识别等,这些问题仍需要进一步研究和解决。

1.3 研究方法

(1)文献综述法

利用文献综述法对人脸检测与表情识别领域研究进行广泛阅读和分析。收集相关学术期刊、会议论文和专利等文献,解人脸检测和表情识别历史发展、研究方法、算法和评价指标等方面现状。通过比较和总结文献中研究方法、理论基础和实验结果,确定本文研究方向和方法。

(2)数据集收集与预处理

收集具有代表性人脸图像和表情图像数据集,进行预处理。常见预处理包括图像清洗、裁剪、尺寸调整、灰度化和数据增强等。确保数据集质量和一致性。

(3)人脸检测模型设计与训练

基于深度学习技术,设计和训练适用于人脸检测模型。常用模型包括基于卷积神经网络(CNN)方法,如YOLO、Faster RCNN和SSD等。根据文献综述分析和比较,选择合适模型架构和参数设置,利用训练数据对模型进行训练和优化。

(4)表情识别模型设计与训练

利用深度学习技术,设计训练适用于表情识别模型。常用模型包括基于卷积神经网络(CNN)方法,如VGGNet、ResNet和Inception等。根据文献综述研究结果和比较,选择适合模型架构和参数设置,使用训练数据对模型进行训练和调优。

(5)实验评估与结果分析

使用收集到数据集对所设计人脸检测和表情识别模型进行实验评估。使用准确率、召回率、精确度、F1值等评价指标对模型性能进行分析和比较。通过与其他方法对比实验,验证所提出方法有效性和性能优势。

1.4 非技术因素

非技术因素对人脸识别与表情识别系统同样影响巨大。

环境因素:在光线不足导致摄像头影响模糊情况下,表情识别系统会导致无法准确识别人脸和人脸表情结果预测,为解决这一问题,需要提高系统适应能力和鲁棒性,帮助系统应对不同环境或恶劣环境挑战。

法律法规:人脸识别和表情识别技术蓬勃发展导致公民个人隐私和数据安全问题越发严重,为保护个人隐私,人脸识别与表情识别系统设计需遵守相关法律法规,不泄露用户隐私信息,保障用户数据安全,同时需要确保系统合法合规运行,避免法律风险与违法犯罪。

社会文化和道德观念:不同国家与民族文化宗教背景下,人们对于个人隐私和数据安全重视程度不同,人脸识别和表情识别系统需考虑个人隐私保护,避免侵犯用户个人权益。

2章 相关技术介绍

2.1 人脸检测技术

2.1.1 传统人脸检测方法

传统人脸检测方法大多数是依赖于图像解析处理和机器学习方法来实施。在图像处理技术领域里,通常会应用包括面部特性抽取、模型分类器构建以及与其他模型匹配分析。面部特征提取主要是通过对脸部图片进行各种预处理手段,例如灰度处理、直方图平衡等,最终获得区分人脸与非人脸特定特性。分类器设计过程是以机器学习算法作为基础,进而构建出如SVM和AdaBoost等分类器模型,并借助训练样本数据来优化分类器参数设定。模型匹配涉及到在图像里使用分类器针对各个不同区域进行识别与分析,最终确定人脸所处具体位置以及边界[16]。

2.1.2 深度学习在人脸检测中应用

深度学习在人脸检测应用主要通过卷积神经网络(CNN)。CNN 是一套基于多层神经网络技术方法来进行特征提取与分类。该方法利用卷积层、池化层以及全连接层等不同结构,能够自主地从图像中获取特征,并在大量训练数据支持下对其进行准确分类与检测工作。在处理人脸识别问题上,CNN能够直接从图像中抽取人脸特性,以进行精确面部识别和定位,深度学习技术具备优越性能,可以从庞大图像数据集中实施无监督特征识别和学习。与传统方式相比,该方法有较高准确率和较低损失率,尤其在处理各种光线、姿势和遮挡物等多变环境下人脸检测时表现尤为出色。

2.2 表情识别技术

2.2.1 传统表情识别方法

传统表情识别方法依赖人工设计特征学习,并使用过机器学习算法进行训练。特征提取通常提取表情图片中颜色、纹理和形状等特征,并提取人脸关键点特征。提取到特征再通过各种滤波器和特征描述符提取,并机器学习算法分类识别。常见机器学习算法有支持向量机(SVM)、K近邻(KNN)和决策树等,对表情识别和分类通过对提取特征进行训练和分类来实现。

2.2.2 深度学习在表情识别中应用

深度学习在表情识别中应用主要是基于卷积神经网络(CNN)。CNN通过多层神经网络进行特征提取和分类,自动快速学习图像中特征,在大规模训练数据支持下进行准确分类和识别[17]。在表情识别中,卷积神经网络可直接从原始图像中提取表情特征,进行准确分类和识别。深度学习优势是利用无监督学习和特征提取从大规模图像数据提取特征进行表情预测,相较于传统方法,具有更高准确率和较低的损失率,在不同光照、姿态和表情微变等具有挑战性的情况和环境下进行表情识别。

2.3 神经网络相关理论介绍

2.3.1 全连接神经网络

全连接神经网络是最基本神经网络结构,全连接神经网络示意图如图2.1所示,也被称为多层感知器(MLP)。在全连接神经网络中,每一个神经元与前一层每一个神经元都有连接,信息从输入层传递到输出层经过多个隐藏层,每一层都经过权重和偏置线性变换,再通过激活函数进行非线性变换。全连接神经网络训练通常采用反向传播算法,通过调整权重和偏置来最小化损失函数,运算示意图如图2.2所示。

图2.1 全连接神经网络示意图

图2.2 全连接神经网络运算示意图

2.3.2 卷积神经网络

卷积神经网络是一种特殊神经网络结构,其构架如下图2.3所示,主要用于处理图像等二维数据。卷积神经网络通过卷积层、池化层和全连接层等组件构成,其中卷积层可以有效提取图像局部特征,池化层可以减小特征图尺寸保留重要信息,全连接层用来进行分类和识别。卷积神经网络参数共享和局部连接特性使得其在图像识别任务中具有较好表现。卷积神经网络创始人是着名计算机科学家Yann LeCun,目前在Facebook工作,他是第一个通过卷积神经网络在MNIST数据集上解决手写数字问题人。

图2.3  卷积神经网络架构

2.3.3 激活函数

激活函数在神经网络中扮演着非常重要角色,主要作用是引入非线性特性,使神经网络可以学习复杂非线性关系。常用激活函数包括Sigmoid函数、ReLU函数、tanh函数等。Sigmoid函数可以将输入值映射到0到1之间,ReLU函数在输入大于0时输出输入值,否则输出0,tanh函数将输入值映射到1到1之间,神经元数学原理如图2.4所示。选择合适激活函数可以加快神经网络收敛速度,提高模型性能[18]。

图2.4  神经元工作原理数学可视化过程

2.4 本章小结

本章主要围绕人脸检测与表情识别技术展开,详细介绍了传统方法与深度学习技术的应用。先阐述传统人脸检测方法,如Haar特征和级联分类器,但其准确率和损失率有限,无法满足日益增长的需求。因此本研究采用深度卷积神经网络(CNN)作为新一代的人脸检测器,通过大规模的人脸图像数据集训练,CNN能有效提取人脸特征,实现高精度的人脸定位和边界框回归。本研究摒弃传统表情识别方法,如手工设计特征和分类器,使用深度学习方法训练卷积神经网络(CNN)来进行表情识别,可快速训练大量的表情图像数据集完善CNN网络,高效提取表情特征进行不同表情的自动识别,并较高的准确率和较低的损失率。对全连接神经网络、卷积神经网络以及激活函数等基本概念进行了介绍,为理解深度学习在人脸检测与表情识别中的应用提供了理论基础。总之,本章对基于深度学习的人脸检测与表情识别技术进行了全面的介绍,展示了深度学习技术在这两个领域的优势,为后续的研究与应用打下了坚实的基础。

3章 基于CNN卷积神经网络人脸检测与表情识别

3.1 CNN卷积网络结构

项目采用cnn卷积神经网络搭建,具体使用为mini-xception网络,其网络结构如图3.1所示,Mini-Xception是一种基于Xception架构小型卷积神经网络(CNN),用于图像分类和目标检测任务。Xception是一种经过优化卷积神经网络,使用分离卷积操作,可以有效地减少参数数量和计算复杂度。Mini-Xception网络使用Xception中分离卷积操作,使用深度可分离卷积和残差连接来进一步减少参数数量和提高网络性能,其系统构架如图3.2所示。这个网络主要由一个输入层、若干个分组卷积层、全局平均池化层和一个输出层组成。其中,分组卷积层中卷积核被分成若干组,每组独自进行卷积操作,最后将结果合,以保证尽可能减少计算量。网络还使用批量标准化和激活函数等技术来改善网络性能。MiniXception网络具有较小参数数量和计算复杂度,同时在性能上表现出色。可以用于许多图像分类和目标检测任务,如人脸识别、物体识别和行人检测等[19]。

图3.1 mini_Xception网络结构

图3.2 mini_Xception系统架构

3.2 系统实现流程

3.2.1 数据预处理

数据预处理是在机器学习和深度学习任务中非常重要一步,包括数据转换、归一化、平移和缩放等操作。本系统通过getpic.py、utils.py、dataset.py三个文件实现对fer2013人脸表情数据集预处理,将处理好数据集封装成data.hdf5文件方面后面训练模型使用,数据预处理文件如图3.3所示。

图3.3 数据预处理文件

以下是数据预处理过程:

(1)使用getpic.py文件将fer2013.csv中图像数据转换为图片文件。首先使用codecs模块读取fer2013.csv文件,将内容存储到列表f中。然后遍历f中每一行数据,将标签存储到标签文件label.txt中。将图像数据按空格分割成列表img,将其转换为NumPy数组。将NumPy数组reshape为二维数组,大小为(48, 48)。最后使用cv2库imwrite()方法将图像保存为.png格式文件。

(2)使用utils.py文件进行数据预处理。该文件定义preprocess_input函数,用于对输入数据进行预处理。函数将输入数据数据类型转换为float32,将像素值缩放到0到1范围内。如果v2为True,则进一步对数据进行平移和缩放操作,将像素值限制在1到1范围内。

(3)使用dataset.py文件将fer2013数据集图片和标签生成为hdf5文件。首先导入需要使用库。然后读取标签文件内容,将图片数据和标签数据存储在列表X和Y中。遍历标签列表,根据文件名读取图片数据,进行维度转换和大小调整操作。将处理后图片数据添加到X列表中,同时将标签生成对应onehot编码存储在Y列表中。最后将X和Y转换为numpy数组,将数组存储在hdf5文件中。

3.2.2 模型训练

使用train.py文件进行训练,训练过程是先导入所需库:该代码使用Keras库中各种模块和回调函数,以及来自sklearn库交叉验证模块和数据划分模块。设置参数:定义一系列参数,如批次大小、迭代次数、输入图像形状、验证集拆分比例、类别数等。创建数据生成器:使用ImageDataGenerator类创建一个数据生成器,用于数据增强,包括旋转、平移、缩放和翻转等操作。模型参数和编译:使用mini_XCEPTION函数创建一个基于卷积神经网络模型,使用adam优化器和交叉熵损失函数进行编译。加载数据集:通过h5py库从'hdf5'文件中加载数据,进行预处理操作。划分训练集和测试集:使用train_test_split函数将数据集划分为训练集和测试集,其中测试集比例由validation_split参数指定。模型训练:使用fit_generator函数来训练模型,使用训练集数据生成器作为输入,设置每个epoch步数,指定迭代次数、回调函数和验证集数据。

训练好模型文件会被保存在如下目录中,如图3.4所示,本系统使用训练模型是fer2013_mini_XCEPTION.330.65.hdf5

图3.4 训练完成模型文件保存路径

3.2.3 image_demo图像测试中OpenCV人脸识别与mini-xception网络表情识别

本系统使用image_demo.py文件对图像进行测试,该文件先导入所需库和模型OpenCV、Keras库来进行情绪识别,然后定义必要参数和变量,图像测试输入与预测结果如图3.6所示, `emotion_model_path` 情绪模型路径,用于加载训练好情绪分类模型; `emotion_labels` 字典,将情绪标签索引映射到相应情绪标签名称;`detection_model_path` 人脸检测模型路径,用于检测图像中人脸; `emotion_classifier` 加载情绪分类模型; `face_detection` 人脸检测器; `emotion_target_size` 情绪分类模型输入图像大小。

OpenCV人脸检测模块:定义一个名为 `general_predict` 函数,用于在给定图像中进行人脸检测。该函数接收灰度图和彩色图作为输入。先将灰度图扩展为三维张量,使用人脸检测器检测图像中人脸。对于每个检测到人脸,将人脸图像调整为情绪分类模型所需大小,进行预处理。再使用情绪分类模型对处理后人脸图像进行情绪预测,返回预测结果列表,OpenCV人脸检测模块流程图如下图3.5所示。

图3.5 OpenCV人脸检测模块流程图

Mini-xception网络表情识别模块:定义函数`save_predict`,用于加载图像调用 `general_predict` 函数进行情绪预测。还在图像上绘制矩形框和情绪标签,将结果保存到指定目标路径。最后调用 函数`save_predict`对指定图像进行情绪预测,保存结果图像到当前工作目录下 `res.png` 文件中,具体表情识别流程详见第四章。

图3.6 图像测试输入与预测结果

3.3 实验设置与结果分析

3.3.1 实验数据集

fer2013是一种用于人脸表情识别数据库,包含来自互联网用户分享超过三万张真实人类表情图像。这些图像被分成七类,分别是生气(anger)、厌恶(disgust)、恐惧(fear)、开心(happy)、伤心(sad)、吃惊(surprise)、中性(normal),各类表情数据库如图3.7所示。这个数据库作为一个公共数据集,为人脸表情识别研究提供一个标准基础。fer2013可以用于评估算法性能和比较结果,以便更好地研究和发展人脸表情识别技术。fer2013还包含图像标签和情感评分。这些数据可以用于帮助研究人员更好地理解人类表情和情感,以及如何识别们。这个数据库可以被广泛地应用于情感识别、智能人机交互、心理学和神经科学等多个领域研究[20]。

图3.7 fer2013人脸表情数据库

3.3.2 训练参数设置

在本论文表情识别系统中,训练过程中训练参数设置如下:

(1)批量大小(batch_size)为32,表示每次训练从训练集中取出32个样本进行训练。

(2)训练轮数(num_epochs)为800,表示整个训练过程将重复执行800次。

(3)输入图像尺寸(input_shape)为(48, 48, 1),表示输入图像宽度和高度为48像素,通道数为1。

(4)验证集比例(validation_split)为0.1,表示将训练集10%作为验证集。

(5)类别数量(num_classes)为7,表示总共有7个表情类别需要进行训练和分类。

(6)EarlyStopping参数(patience)为50,表示在验证集上损失连续50个epoch没有改善时停止训练。

(7)模型保存路径(base_path)为'trained_models/float_models/',表示训练完成后模型保存位置。

数据生成器设置如下:

(1)featurewise_center和featurewise_std_normalization都设置为False,表示不对输入数据进行特征归一化。

(2) rotation_range设置为10,表示随机旋转图像角度范围为[-10, 10]。

(3)width_shift_range和height_shift_range都设置为0.1,表示随机水平和垂直平移图像范围为[-0.1, 0.1]。

(4)zoom_range设置为0.1,表示随机缩放图像范围为[0.9, 1.1]。

(5)horizontal_flip设置为True,表示随机水平翻转图像。

模型编译使用了Adam优化器、分类交叉熵损失函数和准确率评估指标。在加载数据集时,使用了随机数种子为0train_test_split函数将数据集分割为训练集和测试集,其中测试集大小为验证集比例。通过fit_generator使用生成器进行模型训练,每次从训练集中取batch_size个样本进行训练,总共进行num_epochs轮训练。同时,使用了回调函数进行训练过程监控和控制。验证集与测试集相同。

3.3.3 实验结果与分析

本论文在FER2013表情数据集上进行实验,使用经过预处理图像数据,将其输入本论文设计卷积神经网络系统中进行训练和测试。通过调整网络结构、超参数和训练策略,本论文得到如下实验结果:

 准确率(Accuracy):在表情识别训练过程中,准确率(Accuracy)是一个重要评估指标,用于衡量模型在预测表情类别时准确性。准确率指是模型在所有样本中正确分类比例,通常用一个介于0和1之间数值表示,可以理解为模型预测正确样本数占总样本数比例。本系统在数据集表情识别上达到高准确率,在FER2013数据集上,本系统实现约 90% 准确率,实验训练acc曲线如下图3.8所示。

图3.8 训练数据集acc曲线

训练损失变化(loss):在表情识别训练过程中,通常会对模型进行反向传播优化,通过最小化损失函数来调整模型参数以提高预测准确性。训练损失是在每个训练批次中计算模型预测与实际标签之间差异,损失越低表示模型性能越好。本系统在数据集表情识别上达到较低训练损失变化,在FER2013数据集上,本系统实现约2.5% 训练损失变化,系统loss曲线如下图3.9所示。

图3.9 训练数据集loss曲线

 情绪分类性能: 本系统对于不同情绪类别表现出较好分类性能。无论是基本七种情绪分类,还是在某些数据集上扩展更多情绪分类,本系统都能够有效地进行识别和分类。

 泛化能力(Generalization):本系统在不同数据集上表现出良好泛化能力。尽管各个数据集图像特征和情绪表达方式有所不同,但本系统在不同数据集上都能够取得较为稳定和可靠识别效果。

系统优势与不足:本系统在表情识别任务上表现出一定优势,但也存在一些不足之处。例如,在某些情绪类别上,系统识别性能相对较低,需要进一步优化网络结构和训练策略。此外,对于一些复杂表情,系统识别准确率也有待提高。

数据集影响:系统训练和测试结果需要不同数据集特点的影响,互联网上部分数据集可能存在表情名称标注错误及不同表情数据样本不均衡问题,从而导致系统泛化能力和识别效果降低。

3.4 本章小结

本章主要介绍了基于CNN卷积神经网络的人脸表情识别技术。本章先对CNN卷积网络结构进行了详细解析,阐述了其基本原理和主要组成部分,描述系统实现流程,包括数据预处理、模型训练和图像测试等步骤。在数据预处理部分,收集具有代表性的人脸图像数据集,并对数据进行预处理,以提高模型训练的效果和准确率。模型训练则通过深度卷积神经网络提取人脸特征进行训练,以学习到区分不同表情的特征表示。在实验数据集部分,列举使用的数据集,如FER2013和CK+等,这些数据集被广泛用于表情识别研究,能够评估模型的性能和泛化能力。训练参数设置则涉及模型学习率、批次大小等关键参数的选择。最后,通过对实验结果的分析和讨论,本章展示了基于CNN卷积神经网络的人脸表情识别模型在多个数据集上的表现。结果显示本模型具有较高的准确率,能够有效识别不同的人脸表情。

4章 系统平台搭建与测试

4.1 系统开发环境

深度学习人脸表情识别系统开发环境需要配置一些库和工具,以便进行模型训练和推断。以下是本系统库配置,包括主要Python库和工具,如图4.1和表4.1所示:

图4.1 系统所需Python库和工具

表4.1 系统所需Python库和工具名称与功能

软件包

库功能内容

certifi

Python一个包,用于提供SSL证书根证书包。提供一组可信任CA证书,用于验证SSL连接安全性。

pip

pip是Python包管理工具,用于安装、升级和管理Python包和依赖。

Python3.6

Python是一种高级编程语言,用于开发各种类型应用程序。

setuptools

Python一个包,用于构建和分发Python包。提供一组工具和命令,用于构建、安装和升级Python包。

sqlite

SQLite是一种轻量级关系型数据库引擎,被集成到Python中,用于创建和管理数据库。

VC

VC代表Visual C++,是Microsoft Visual Studio开发工具套件中一部分,用于编译C++程序。

vs2015_runtime

Visual Studio 2015运行时是为使用Visual Studio 2015构建应用程序提供一组库和组件。

续表4.1 系统所需Python库和工具名称与功能

wheel

Python包格式,用于分发和安装Python包。是一个预编译包格式,使安装Python包更加高效。

wincertstore

Python一个包,用于管理Windows操作系统中证书存储。提供一组工具和命令,用于查找、安装和管理证书。

4.2 系统设计

4.2.1 系统平台概述

本系统基于PyCharm Community Edition 2021平台利用Python语言编写,PyCharm平台集成多种开发环境(IDE)易于Python语言开发和设计。有益于开发人员高效地进行软件开发,为用户提供强大代码编辑功能、调试工具和项目管理功能。平台支持各种Python框架和库,用户界面对新手友好,易于学习、操作和使用。Python语言具有丰富计算机视觉和深度学习库,更易于人脸识别和表情识别系统的编写设计,有关深度学习库有TensorFlow、PyTorch,这两个库提供强大工具、接口,具有灵活性和高性能,可以构建和训练深度神经网络模型,快速处理大规模图像数据。PyCharm平台为本文系统的开发提供便利、功能齐全的集成开发环境,便于使用Python语言编写和调试代码,本系统通过使用PyCharm代码编辑器编写深度学习模型训练代码、数据预处理代码和模型评估代码。利用平台进行调试,解决代码中发现问题和bug,并逐步执行代码、查看变量值以及跟踪代码执行流程,快速定位和解决问题,完成整个系统的训练和设计。

4.2.2 系统流程图

在本文基于MINI-XCEPTION深度学习的人脸识别和表情识别系统流程图中,主要包括四个阶段:输入、预处理、深度神经网络训练和测试及输出阶段,以下为各阶段的详细内容:

输入:系统接收表情图像或视频作为系统输入。

预处理:对输入图像(视频处理为单张图片)进行人脸检测(Detect)和尺寸调整(Resize)等预处理步骤,以确保输入图像符合模型要求。

深度神经网络:采用MINI-XCEPTION(卷积神经网络)作为深度学习模型进行训练测试。

MINI-XCEPTION训练完成后得到训练好模型。

测试阶段:用训练好MINI-XCEPTION模型对不在数据集中的新图像进行测试,预测图像中表现情绪类别。

输出:系统输出经过训练好模型对输入图像预测情绪类别,如愤怒(Anger)、厌恶(Disgust)、恐惧(Fear)、快乐(Happy)、悲伤(Sad)、惊讶(Surprise)和正常(Normal)等。

整个流程图展示了基于MINI-XCEPTION深度学习表情识别系统工作流程,通过训练深度神经网络模型,可以有效地对输入图像中表情进行准确识别和分类,系统软件设计总体方案如图4.2所示。

图4.2 系统软件设计总体方案

表情识别系统流程包括读入图片数据,进行人脸检测,判断是否检测到人脸,如果检测到人脸则进行人脸对齐和尺寸统一处理,然后进行表情识别,最后返回结果并显示在界面上,整个流程结束,具体设计流程图如图4.3所示。

4.3 系统软件设计流程图

4.2.3 系统模块设计

本系统用于预测图片或视频中人脸情绪,整个系统作用是基于加载情绪分类器模型和人脸检测器模型,预测一张图片中人脸情绪,返回结果。

首导入所需库,包括OpenCV、os、Keras、NumPy和tqdm等库。加载数据和图像参数,创建一个ConfigProto对象和一个InteractiveSession对象,用于设置GPU使用情况。设置情绪模型路径、情绪标签和人脸检测模型路径。通过load_model函数加载情绪分类器模型和CascadeClassifier函数加载人脸检测器模型,获取情绪分类器输入尺寸。定义一个general_predict函数,用于预测图片中情绪。函数接受两个参数,一个是灰度图像,一个是彩色图像。在函数内部,首先将灰度图像扩展维度成224*224*1形状,然后通过CascadeClassifierdetectMultiScale函数检测图像中人脸,将检测到人脸坐标保存在faces列表中。如果没有检测到人脸,则打印"No face"返回空值;如果检测到人脸,则对每个人脸进行处理。对于每个人脸,首先获取人脸坐标和尺寸,计算人脸左上角和右下角坐标。根据人脸坐标裁剪出人脸区域灰度图像,尝试将人脸调整为情绪分类器输入尺寸。对人脸进行预处理,将人脸扩展维度成1*224*224*1形状,最后通过情绪分类器预测人脸情绪,获取预测结果中情绪索引。将情绪索引、人脸坐标和尺寸添加到结果列表中,返回结果列表[21]。

4.2.3.1 人脸检测模块

人脸表情识别系统人脸检测模块是系统关键组成部分之一,其作用是检测输入图像中人脸为每张检测到人脸提供情绪分类。以下是该模块描述:

该模块首先加载情绪分类器模型和人脸检测器模型,设置相关参数。其中:

 `emotion_model_path` 指定情绪分类器模型文件路径,用于加载情绪分类器模型。

 `emotion_labels` 是一个字典,用于将情绪分类器输出索引映射到情绪标签。

 `detection_model_path` 指定人脸检测器模型文件路径,用于加载人脸检测器模型。

函数 `load_model`从指定路径加载情绪分类器模型,将加载模型赋值给 `emotion_classifier` 变量。参数 `compile=False` 表示加载模型不需要在加载后进行编译。 `cv2.CascadeClassifier` 函数从指定路径加载人脸检测器模型,将加载模型赋值给 `face_detection` 变量。获取情绪分类器模型输入形状,将其赋值给 `emotion_target_size` 变量。这个尺寸将在后续代码中用于调整输入图像大小以适应情绪分类器输入要求。这个模块主要功能是加载准备好情绪分类器和人脸检测器,以便后续可以使用们来进行人脸表情识别。

以下是人脸检测模块代码:

emotion_model_path = 'trained_models/float_models/fer2013_mini_XCEPTION.33-0.65.hdf5'  # 设置情绪模型路径

emotion_labels = {0:'angry',1:'disgust',2:'fear',3:'happy', 4:'sad',5:'surprise',6:'neutral'}  # 设置情绪标签

detection_model_path = 'trained_models/facemodel/haarcascade_frontalface_default.xml'  # 设置人脸检测模型路径

emotion_classifier = load_model(emotion_model_path, compile=False)  # 加载情绪分类器模型

face_detection = cv2.CascadeClassifier(detection_model_path)  # 加载人脸检测器模型

emotion_target_size = emotion_classifier.input_shape[1:3]  # 获取情绪分类器输入尺寸

4.2.3.2 表情局部几何特征提取模块

人脸表情识别系统表情局部几何特征提取模块是一个函数`general_predict`。该函数接受两个参数,一个是灰度图像`imggray`,另一个是彩色图像`imgcolor`。将灰度图像扩展维度成`224*224*1`形状,以便后续处理,表情局部几何特征提取关键点检测效果和几何特征图如图4.4和图4.5所示。这个步骤通常是为与模型输入形状匹配。人脸检测器`face_detection``detectMultiScale`方法来检测图像中人脸。返回`faces`是一个包含人脸坐标列表。

(a)正常表情图像输入                     (b)正常表情图像关键点标注

                               

(a)惊讶表情图像输入                   (b)惊讶表情图像关键点标注

图4.4 关键点检测效果

4.5 局部特征几何特征图

函数初始化一个空列表`res`来存储结果。如果没有检测到人脸(即`len(faces)==0`),则打印"No face"返回空值。如果检测到人脸,就遍历每个人脸坐标,依次进行以下操作:

(1)提取人脸坐标和尺寸。

(2)计算人脸左上角和右下角坐标。

(3)从灰度图像中裁剪出人脸区域灰度图像。

(4)尝试将裁剪出人脸图像调整为情绪分类器期望输入尺寸。

以下图4.6是局部特征几何特征提取代码流程图:

图4.6 局部特征几何特征提取代码流程图

4.2.3.3 卷积网络表情预测与结果显示模块

该代码段是用于人脸表情识别系统卷积网络表情预测与结果显示模块。主要功能是提取人脸区域表情特征,将预测情绪结果以及人脸坐标信息添加到结果列表`res`中。`continue`语句表示继续执行下一次循环,因此可以推断这段代码位于一个循环中,用来遍历每个检测到人脸区域,对灰度图像人脸区域`gray_face`进行预处理。`preprocess_input`函数对人脸进行预处理操作,可能包括对图像归一化、尺寸调整等操作。通过两次使用`np.expand_dims`函数来扩展人脸维度,将其变为`1*224*224*1`形状。这一步是为与模型输入形状匹配,因为模型可能要求输入为四维张量。使用情绪分类器`emotion_classifier`对扩展后人脸图像进行情绪预测,得到情绪预测结果`emotion_prediction`。`np.argmax`函数获取预测结果中情绪索引`emotion_label_arg`,即预测结果中概率最高情绪索引。将情绪索引、人脸左上角和右下角坐标`x1`、`y1`、`x2`、`y2`添加到结果列表`res`中,用于后续分析或展示。这样可以将每个人脸表情预测结果以及人脸在图像中位置信息保存下来,便于进一步处理和展示。

以下是表情预测结果显示代码:

continue

            gray_face = preprocess_input(gray_face, True)  # 对人脸进行预处理

            gray_face = np.expand_dims(gray_face, 0)  # 将人脸扩展维度成1*224*224*1

            gray_face = np.expand_dims(gray_face, -1)  # 将人脸扩展维度成1*224*224*1

            emotion_prediction = emotion_classifier.predict(gray_face)  # 预测人脸情绪

            emotion_label_arg = np.argmax(emotion_prediction)  # 获取预测结果中情绪索引

            res.append([emotion_label_arg,x1,y1,x2,y2])  # 将结果添加到结果列表中

4.3 系统平台界面设计

4.3.1 实时监测

本人脸识别与表情识别系统中实时监测是重要特点,本系统实时监测可以通过摄像头对人脸表情进行即时监测和识别并及时发现摄像头图片中的情绪状态,并显示预测情绪结果。在实时监测界面设计中包括图像处理和结果显示两个界面:图像处理方界面,先调用OpenCV库中相机接口获取摄像头输入图像,对图像预处理,预处理包括图像缩放、归一化、灰度化等操作,便于后续人脸检测和表情识别。然后调用Keras库加载预训练好的min-xception模型,对预处理后图像进行人脸检测和表情预测。系统需对预测结果进行可视化处理,例如在图像上绘制矩形框和相应表情标签等,便于直观地解监测结果。结果显示方面,系统需要实现实时监测结果显示。当获取到预测结果后,需要将结果实时地显示在界面上,以便用户及时解监测结果。通常情况下,监测结果可以显示在主界面上文本框、图片框等控件中。在系统平台界面设计中,实时监测内容是该系统一个重要特点,需要实现对摄像头输入图像进行处理和结果实时显示,以便于及时发现人情绪状态。

本系统界面设计主要使用PyQt5库进行界面设计,OpenCV库进行图像处理,Keras库加载训练好模型进行预测,实时监测界面如图4.7所示。先导入需要用到库,包括PyQt5、OpenCV、Keras等。然后定义一个Ui_MainWindow2类,该类用于生成应用程序界面。在setupUi方法中设置窗口各种属性和控件位置、样式等。定义button_open_camera_clicked和button_close_camera_clicked方法,分别用于打开和关闭相机。当点击相机打开按钮时,会启动一个定时器,定时从摄像头中读取图像显示到界面上;当点击相机关闭按钮时,会停止定时器释放摄像头。定义show_camera方法,该方法用于从摄像头中读取一帧图像进行人脸表情识别。首先调用general_predict方法对图像进行人脸检测和表情预测,然后根据预测结果在图像上绘制矩形框和相应表情标签,将处理后图像显示在界面上。在if __name__ == '__main__':部分,创建一个应用程序对象,将Ui_MainWindow2类实例化为ui对象,最后调用app.exec_()运行应用程序。

图4.7 人脸表情实时预测界面设计

4.3.2 图片检测

本模块基于PyQt5框架人脸表情识别应用程序。代码通过加载预训练深度学习模型,使用摄像头或者选择图片方式,检测人脸识别出表情,将结果显示在界面上。系统平台界面设计中图片监测内容包括选择图片功能、图片预览、开始检测按钮以及识别结果展示。这些功能实现可以借助PyQt5框架和深度学习模型来完成,通过调用相关方法进行人脸检测和表情识别,最终在界面上显示出识别结果。这样设计可以使用户方便地进行人脸表情识别,应用于实际场景中。

在应用程序系统平台界面设计中,图片监测是其中一个关键内容,界面设计一个可以选择图片按键,点击该按钮后调用`select_img`方法。通过文件对话框选择一张图片,将图片路径存储在`self.img_path`变量中。需要对图片进行预处理和缩放,确保符合模型输入要求,在界面上显示出来。这样用户就可以选择一张图片,实时看到图片预览效果。提供一个“开始检测”按钮,当用户点击该按钮后,会调用`detect_img`方法。在这个方法中,首调用`save_predict`方法对图片进行人脸检测和表情识别。`save_predict`方法接收图片路径作为输入,调用`general_predict`方法对图片进行识别。`general_predict`方法是一个通用表情识别函数,接收灰度图和彩色图作为输入,通过调用人脸检测器检测出人脸位置,调用深度学习模型对人脸进行表情识别,最后返回识别结果。在`save_predict`方法中,识别结果会被保存下来,在图片上绘制矩形框和表情标签。最后,处理后图片会在界面上展示出来,用户可以看到识别结果。通过以上设计,用户可以选择一张图片,在界面上实时看到图片预览效果和识别结果。这样用户可以方便地进行图片监测,解图片中人脸表情信息,图像文件预测界面如图4.8所示。

代码中`Ui_MainWindow4`类定义应用程序用户界面。`setupUi`方法初始化界面各个控件,例如标签、按钮等,设置们样式和布局。`select_img`方法是点击选择图片按钮后响应函数,通过调用文件对话框选择一张图片,将图片路径存储在`self.img_path`变量中。然后将图片进行预处理和缩放,在界面上显示出来。`detect_img`方法是点击开始检测按钮后响应函数,通过调用`save_predict`方法对图片进行人脸检测和表情识别,将结果显示在界面上。`general_predict`方法是一个通用表情识别函数,接收灰度图和彩色图作为输入,通过调用人脸检测器检测出人脸位置,调用深度学习模型对人脸进行表情识别,最后返回识别结果。`save_predict`方法是保存和显示识别结果函数,接收图片路径作为输入,调用`general_predict`方法对图片进行识别,在图片上绘制矩形框和表情标签,最后返回处理后图片。最后,在`if __name__ == '__main__'`中创建一个应用程序实例,调用`setupUi`方法设置界面,最后显示应用程序界面。

图4.8 人脸表情图像文件预测界面设计

4.3.3 视频文件检测

这段代码实现一个基于深度学习人脸表情识别系统,使用MoviePy库来处理视频文件,PyQt5库来实现GUI界面,OpenCV库来处理图像,Keras深度学习框架来训练和加载模型。主要分为以下几个部分:

视频文件选择和播放:GUI界面应提供一个选择文件按钮,允许用户选择要进行人脸表情识别视频文件。选择完视频文件后,系统将通过MoviePy库来读取该视频文件,将视频显示在GUI界面视频播放区域中,视频文件预测界面如图4.9所示。

人脸检测:在每一帧视频中,系统需要使用OpenCV库中CascadeClassifier来检测人脸区域。CascadeClassifier是一种基于Haar特征级联分类器,能够通过训练识别出人脸特征。通过将CascadeClassifier应用于视频帧,系统能够检测到人脸标记出其边界框。

表情识别:对于每张检测到人脸,系统需要进行表情识别。这里可以使用已经训练好人脸表情分类模型(emotion_model_path),通过Keras深度学习框架加载该模型将其应用于每张人脸图像。模型将根据图像中表情特征对其进行分类,预测该人脸表情。

表情识别结果展示:系统将识别表情结果展示在GUI界面表情识别结果展示区域中。对于每张人脸图像,系统可以将识别结果绘制在彩色图像上,在图像上显示出预测表情标签或表情名称。

在系统运行过程中,视频将被逐帧地读取和处理,每一帧都会进行人脸检测和表情识别。系统可以实时地将每帧表情识别结果显示在GUI界面中,使用户能够观察到视频中人脸表情变化。通过以上视频监测内容,系统能够实现对人脸表情实时识别和展示,提供一种便捷方式来分析和理解视频中人脸情感状态。这为进一步研究和应用提供基础。

图4.9 人脸表情视频文件预测界面设计

4.4 系统平台测试

4.4.1 系统识别准确率测试

在本次系统识别准确率测试实验中,共邀请了50名同学参与,将测试人员被分为5组,每组10人,每位同学需展示7种不同表情,并记录系统预测结果。该实验旨在评估系统对不同表情识别能力,同时也要尽最大可能避免实验随机性和偶然性,实验系统测试表如表4.1所示,系统平台测试实验过程如图4.10所示。

表4.2系统测试结果表

组别

人数

开心

平静

生气

悲伤

惊讶

厌恶

害怕

1

10

10

10

8

8

9

7

7

2

10

10

10

8

9

8

9

10

3

10

10

10

8

8

9

10

8

4

10

9

10

10

9

10

9

8

5

10

10

9

10

10

10

8

9

图4.10 系统平台测试实验过程图

实验结果显示,本表情识别系统在识别明显开心和平静表情时表现最为出色,其准确率高达98%。惊讶表情识别率也相当显著,超过了92%。但是对于生气、悲伤、厌恶和害怕这四种表情,系统正检率较低,实验识别效果图如图4.11所示,主要原因在于模型训练误差和受试者表达效果影响。总体来看,开心、平静和惊讶这三类表情识别效果相对较好,这可能是因为这些表情更容易被人类识别和区分。

图4.11 实验中5组七类表情识别效果图

具体来说,开心和平静通常具有明显面部特征和肢体语言,这使得系统能够更准确地捕捉到这些表情特征进行辨识。而惊讶作为一种激烈情绪反应,往往会在面部表情上有明显特征,因此系统也相对较容易地将其识别出来。然而,对于生气、悲伤、厌恶和害怕这些负面情绪,由于个体表达方式多样性和复杂性,系统在识别上遇到了挑战。模型训练误差可能导致系统在辨别这些表情时出现一定偏差,使得其正检率较低。

为解决除开心与平静外表情的识别正检率可通过增加训练数据、调整模型参数及优化特征提取方法等方式来提升系统对生气、悲伤、厌恶和害怕等表情识别准确率。通过给受试者提供更加清晰、明确指导,帮助受试者更准确地展现不同表情来提高系统识别效果。系统在开心、平静和惊讶等表情识别上表现突出,但对于其他表情仍有提升空间,需要进一步优化和改进。

4.4.2 系统抗干扰能力测试

为了评估系统的应用效果,我们将系统的测试安排在未经任何人为处理的自然实际场景中进行实验。在这种场景中,我们可以见到桌子、椅子、窗户、墙壁等物品,就像图 4.12 中所展示的一样。并且图片的不同部分有明显不同的光照强度。左侧图片中的三位受试者脸部的光照存在显著不同,中间受试者戴着眼镜,这造成了一定的障碍。右侧受试者受到明显的光照遮挡,因此左侧受试者的面部光亮度较低。根据标注图示,可以确定在这个情境下,该系统仍然能够准确识别两位受试者的表情。在深夜环境下进行测试时,右侧的图片展示了环境黑暗的情况,然而系统仍然成功识别出受试者表情为 happy,这进一步证实了该系统在抵御光照强度变化方面具有一定的能力[22]。

图4.12自然场景下不同光照强度识别效果图

为了验证系统对受试者脸部转动一定角度后的场景识别能力,我们进行了实验测试,测试结果详见图4.13。图(a)和图(b)为在受试者自然环境中脸部左右转动一定角度时所采集的测试图,系统能够较好地识别。经受试者在自然场景下进行脸部上下转动一定角度的测试后,系统识别效果仍然良好,对图(c)和图(d)的识别效果良好。系统在受试者脸部微小旋转后的场景中表现出良好的识别效果,证实该系统有效地解决了自然场景下人脸微小旋转的表情识别问题。确认这个系统确实具有很高的实用价值。

(a)向左偏转识别效果                               (b)向右偏转识别效果

(c)向上偏转识别效果                            (d)向下偏转识别效果

图4.13 自然场景下脸部转动角度识别效果图

4.5 本章小结

本章主要围绕系统开发环境,系统设计以及系统平台界面设计,最后进行了系统平台测试。在系统开发环境部分,详细介绍了开发系统的环境配置,包括所需的软件和硬件环境。在系统设计部分,概述了系统平台的主要功能和架构,然后通过流程图展示了系统的整体工作流程。详细介绍系统的三个主要模块:人脸检测模块,表情局部几何特征提取模块,卷积网络表情预测与结果显示模块。在系统平台界面设计部分,分别对实时监测,图片检测和视频文件检测三个界面进行了详细介绍。最后,在系统平台测试部分,对系统的识别准确率和抗干扰能力进行了测试,结果表明,系统在识别准确率和抗干扰能力方面表现优秀。本章通过详细介绍系统的搭建和测试过程,证明了本研究所设计的系统具有良好的可行性和有效性。

5章 结论与展望

5.1 研究工作总结

随着信息技术飞速发展,人脸检测与表情识别技术在计算机视觉和人机交互领域中占据举足轻重地位。本研究围绕基于深度学习人脸检测与表情识别技术进行深入探讨,取得一系列研究成果,现对研究工作做如下总结:

在人脸检测方面,传统方法如Haar特征和级联分类器因其准确率和损失率有限,已无法满足日益增长需求。因此,本研究采用深度卷积神经网络(CNN)作为新一代人脸检测器。通过大规模人脸图像数据集训练,CNN能有效提取人脸特征,实现高精度人脸定位和边界框回归。在多个数据集上实验结果表明,基于深度学习人脸检测方法在准确率和损失率方面均有显著提升。

在人脸表情识别领域,本文摒弃传统表情识别中的手工设计特征和分类器,使用深度学习方法训练卷积神经网络(CNN)来进行表情识别,可以快速训练大量表情图像数据集来完善CNN网络,快速有效提取表情特征进行不同表情自动识别,并且经过数据监测整理得出本系统有较高准确率和较低损失率的优势。

本研究将人脸检测与表情识别技术相结合,设计基于mini-xception网络人脸表情检测系统,本系统先用opencv进行人脸检测,然后将检测到人脸图像输入到mini-xception网络中进行表情识别。经过实验证明,该系统在多个数据集上表现优秀,具有较好泛化能力。

为对研究工作进行实际应用性评估,本研究还进行系统识别准确率测试。实验随机挑选50名同学,让他们在摄像头前做出7种不同表情。测试结果表明,7类表情识别正检率均达到85%以上,其中开心、平静、惊讶表情类别正检率甚至达到98%。然而,生气、悲伤、厌恶、害怕四类表情识别效果相对较差,识别正检率偏低。分析原因,一方面可能是模型在训练过程中存在误差,对这几类表情产生少量混淆;另一方面,受试者悲观类表情表达效果较差,也可能导致误检。

5.2 存在问题与改进方向

在本文研究中尽管已经取得显著研究进展,但仍然存在一些问题,并需要在未来进行改进。

在处理复杂场景和极端条件下准确性和损失率有待提高。例如,在光照变化、面部遮挡、姿态变化等情况下,系统可能会出现误检或漏检情况。未来改进方向之一是进一步提高人脸检测模型泛化能力,使其能够更好地适应各种复杂环境。

表情识别技术方面存在问题。例如,对微表情和复杂表情识别精度仍有待提高,不同人面部特征和表情表现可能存在差异,这也会影响识别准确性。未来改进方向包括深入研究微表情特征提取和识别方法,以及引入更多个体差异信息,提高表情识别准确性和损失率。

本文研究主要基于静态图像数据,对于动态视频数据处理和利用有所欠缺。在实际情况中人表情和动作是连续变化,系统仅依靠静态图像可能无法完全捕捉到表情细微变化达到表情预测的效果。利用时空信息提高识别准确性,开发处理动态视频数据表情识别方法是本研究的未来改进方向。

本研究使用数据集不够丰富和多样化,使表情识别准确率没有预想的高。未来改进研究为提高模型泛化能力,可以收集更多数据集包括不同年龄、性别、种族和表情类型数据,增加数据集多样性和规模,可以进一步提高模型准确性和降低损失率。

本研究主要集中在人脸检测和表情识别技术,在实际应用中需考虑与其他技术融合集成,因此在未来改进研究中将人脸检测与姿态估计、情感识别等技术相结合实现更丰富和准确情感分析,以及将人脸检测与实时视频处理、虚拟现实等技术结合拓展系统在多媒体通信、人机交互等领域的应用。

5.3 未来发展展望

随着深度学习和人脸识别技术不断发展迭代和实际应用,本文研究的基于深度学习人脸检测与表情识别技术也将在未来取得更大突破和进步,以下是对未来发展展望:

多模态信息融合:人脸检测与表情识别可结合多种模态信息来提高识别准确性和稳定性,如音频、姿态和文本等。未来研究可以关注多模态信息融合技术,将不同模态信息进行有效整合实现更准确和全面的表情识别。

算法改进创新:深度学习算法虽目前已取得显著成果,但仍存在一定局限性和挑战。未来研究可致力于改进现有算法,提高识别准确率和降低损失率,通过探索新网络结构、优化训练策略和损失函数等方式进一步提升算法性能。

小样本学习和迁移学习:在实际应用中网络训练常面临数据样本不足问题。未来研究可以着重进行小样本学习技术,利用少量样本进行有效学习,提高算法泛化能力。迁移学习技术可应用于人脸检测与表情识别,将在一个领域学到知识迁移到另一个领域,提高识别性能。

实时性与实用性:在实际应用中,实时性和实用性是非常重要指标。未来研究可以关注提高算法实时性,通过优化算法和硬件设备,实现快速准确人脸检测与表情识别。关注算法实用性,如降低计算复杂度、减少模型大小和提高抗噪能力等,以满足不同应用场景需求。

可解释性和隐私保护:使用深度学习算法处理人脸图像时,其内部机制往往具有较强非线性和复杂性,导致算法可解释性较差。未来研究可以关注提高算法可解释性,使人脸检测与表情识别技术更加可靠和可信。随着隐私保护意识不断提高,未来研究也需要关注如何在保护个人隐私前提下进行人脸检测与表情识别,不违反法律法规对个人隐私的保护。

跨领域应用与创新:基于深度学习人脸检测与表情识别技术在娱乐、医疗、金融等领域具有广泛应用前景。未来研究可以探索将这些技术应用于其他领域,如无人驾驶、智能家居和机器人等,以实现更多跨领域创新应用。

参考文献

[1]   王秋惠. 基于深度学习人脸表情识别研究[D] .辽宁科技大学, 2023.

[2]   马韦暠. 基于深度学习人脸表情识别[D] .贵州大学, 2023.

[3]   苗壮, 程卫月, 林克正, et al. 融合行网络特征人脸表情识别算法[J]. 哈尔滨理工大学学报, 2022, 27(06): 95102.

[4]  奚琰. 基于对比学习细粒度遮挡人脸表情识别[J]. 计算机系统应用, 2022, 31(11): 175183.

[5]   范文杰, 田秀云. 基于深度学习人脸表情识别系统研究[J]. 现代信息科技, 2022, 6(20): 9093.

[6]   吕鹏, 单剑锋. 基于多特征融合人脸表情识别算法[J]. 计算机技术与发展, 2022, 32(10): 151155.

[7]   黄豪豪, 李铭田, 张富春. 优化算法在人脸表情识别中应用研究[J]. 延安大学学报(自然科学版), 2022, 41(03): 5660.

[8]   张宝薪, 孟凡轩, 靳展. 基于深度学习图像人脸识别方法研究[J]. 齐齐哈尔大学学报(自然科学版), 2022, 38(05): 4751.

[9]   何超, 侯明. 基于改进卷积神经网络人脸表情识别方法[J]. 信息技术, 2022, 05): 107111.

[10]雒翠萍, 聂志刚. 基于深度学习人脸表情识别研究与应用[J]. 甘肃科技, 2022, 38(01): 2325.

[11]姜月武, 路东生, 党良慧, et al. 人脸表情识别研究进展[J]. 智能计算机与应用, 2021, 11(06): 4350.

[12]Weijun G, Yurong Q, Weihang Z, et al. Enhanced SpatialTemporal Learning Network for Dynamic Facial Expression Recognition[J]. Biomedical Signal Processing and Control, 2024, 88(PC): 105316

[13]Yibo Z, Wen J, Yening L, et al. Analysis and Test of Influence of Memristor NonIdeal Characteristics on Facial Expression Recognition Accuracy[J]. Expert Systems With Applications, 2023, 234:121028

[14]Díaz P, Vásquez E, Shiguihara P. A Survey of Video Analysis Based on Facial Expression Recognition†[J]. Engineering Proceedings, 2023, 42(1): 324515

[15]Yuanlun X, Wenhong T, Zitong Y. Robust Facial Expression Recognition with Transformer Block Enhancement Module[J]. Engineering Applications of Artificial Intelligence, 2023, 126(PA): 106795

[16] 赵彬宇. 基于深度学习的人脸表情识别技术分析[J]. 电子技术, 2024, 53(03): 68-71.

[17] 张宝薪, 孟凡轩, 靳展. 基于深度学习的图像人脸识别方法研究[J]. 齐齐哈尔大学学报(自然科学版), 2022, 38(05): 47-51.

[18] 王珏, 钟树森, 房鹏悦. 基于深度学习的情感识别研究进展[J]. 中国科技信息, 2023, 15): 121-123.

[19] Palanichamy N. Occlusion-Aware Facial Expression Recognition: A Deep Learning Approach[J]. Multimedia Tools and Applications, 2023, 83(11): 32895-32921.

[20] M. M, P. S. Facial Expression Recognition Using Machine Learning and Deep Learning Techniques: A Systematic Review[J]. SN Computer Science, 2024, 5(4): 106621

[21] Lisha Y, Haifeng Z. Correction To: Deep Learning Method of Facial Expression Recognition Based on Gabor Filter Bank Combined with Pcnn[J]. Wireless Personal Communications, 2024, 134(3): 1915-1916.

[22] Hajar C, Adnane M M, Jamal R, et al. A Dynamic Fusion of Features from Deep Learning and the Hog-Top Algorithm for Facial Expression Recognition[J]. Multimedia Tools and Applications, 2023, 83(11): 32993-33017.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃泡芙_呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值