结合卷积神经网络与OpenCV的人脸表情识别

2021-04-13 20:07张悦欣付晓峰
电脑知识与技术 2021年5期
关键词:卷积神经网络深度学习

张悦欣 付晓峰

摘要:针对实时人脸表情识别模型训练慢、识别速度慢的问题,提出一种OpenCV和卷积神经网络结合进行实时表情识别的方法。人脸表情是多个局部区域特征的集合,而卷积神经网络提取出的特征能更多地关注局部,因此采取卷积神经网络的方式进行模型的训练。所提网络在全连接层中加入了Dropout,能有效预防过拟合现象的发生,并且提升模型泛化能力。实验结果表明此模型的可行性,在fer2013数据集上的准确率达到71.6%。基于以上方法再结合OpenCV構建一个实时表情识别系统,系统实时识别表情的速度为0.4s。所构建的系统相比于现有的其他系统,具有训练速度较快、准确率较高、识别速度较快等优点。

关键词:OpenCV; 卷积神经网络; 表情识别; 情感分类; 深度学习

Abstract:Aiming at the problems of slow training and slow recognition speed of real-time facial expression recognition model, a method for real-time expression recognition by combining OpenCV and convolutional neural network is proposed. Facial expression is a collection of features of multiple local regions, and the features extracted by the convolutional neural network can pay more attention to the locality. Therefore, this paper adopts the method of convolutional neural network to train the model. The network in this paper adds Dropout to the fully connected layer, which can effectively prevent the occurrence of overfitting and improve the model generalization ability. The experimental results show the feasibility of this model, and the accuracy rate on the fer2013 data set reaches 71.6%. Based on the above method and then combined with OpenCV to construct the real-time expression recognition system in this paper, the system's real-time expression recognition speed is 0.4s. Compared with the existing system, the system in this paper has the advantages of faster training speed, higher accuracy and faster recognition speed.

Key words:OpenCV; convolutional neural network; facial expression recognition; emotion classification; deep learning

面部表情是人们用来表达自己内心情绪的方式之一,对比语言能更具象直观地表达人类的心情。随着人工智能技术和计算机技术的日益进步,人们日益向往智能化的人机交互方式[1]。如果计算机能认识和识别人类的情感,将能更好地为人类服务。因此人脸表情识别在机器人、心理学、医学、智能监控及3D合成动画[2]等方面都有很大的应用价值。

目前表情识别的应用方法有LBP、SVM[3]和深度学习[4]等。近几年来,深度学习逐渐走进越来越多人的视线,成了人们研究的热点,卷积神经网络[5]也成为其中较为热门的方法,并取得了越来越好的成绩,比如VGGNet[6]、CNN16等。但结合实时摄像进行表情识别的仍然不是很多,用时存在识别时间较长等问题。为了减少人脸识别的时间,本文使用了OpenCV中的haarcascade分类器[7],其中积分图和AdaBoost级联分类器的使用节省了大量时间,可提高检测效率。

本文采用OpenCV的haarcascade分类器检测人脸部分,利用卷积神经网络来提取人脸表情特征,设计了一个可以进行实时人脸表情识别的系统,还可进行静态图片或视频中的表情识别。

1 方法

卷积神经网络是包括卷积层、池化层、全连接层的深度神经网络[8]。卷积神经网络权值共享,卷积池化交替出现的层组织结构方式能够减少网络参数并对输入进行降维,使提取出的特征具有高度不变性。本文采用4层卷积和4层池化交替,输入数据集的训练图片,输出包含7个神经元,对应7种表情,分别为angry、disgust、fear、happy、neutral、sad、surprise。

人脸图像具有丰富的表情数据信息,如:眼睛睁大、眉毛皱起、嘴巴张大、嘴角上扬等,这些都是人心情通过面部的具象表达。为了提取出的特征能更多地关注局部,一般设定卷积神经网络内的卷积核小于输入图像的大小,适合提取人脸多个局部区域特征。关于表情分类,本文先利用卷积神经网络提取相关特征,再通过分类器得到最后的分类结果。

1.1 表情识别模型构建

卷积神经网络具有由卷积池化结构提供特征提取的能力,其组织方式使其含有较少的训练参数,能够提取旋转、位移不变形特征以及像素局部相关性。本文的卷积神经网络由4层卷积层、4层池化层、2层全连接层组成,接下来将详细介绍本文所采用的卷积神经网络的组成。

1.1.1 卷积层

在特征提取的部分受到了ResNet[9]的启发,建立一个3*3的滤波器,设置步长为1,步长是指每次向前传播的像素数,在输入图像数据的宽度和高度上向前移动,然后计算整个滤波器与输入数据任意一处的内积,就会得到一个卷积后的特征矩阵。在卷积层中,多个滤波器共同工作,输出时将每个滤波器卷积后的数据叠加在一起输出。

1.1.2 池化层

池化层主要有两种类型:最大池化和平均池化,本文使用最大池化,设置窗口大小和步长均为2。每次都从2*2的窗口中选取最大的数据,同时滑动2个步长进入新的窗口。对图像进行下采样,丢掉其中75%的激活信息,选取其中最大地保存下来,去除一些噪声信息,能够有效降低数据的大小。

1.1.3 全连接层

卷积神经网络和输入数据中的一部分连接,并且输出的神经元每个深度切片都共享参数。经过了前面的卷积层和池化层之后,提取出图片的特征图,将特征图中的全部神经元转变为全连接层的样子,直观上即将一个3D的立方体排列组合,变成一个全连接层,然后通过几个隐藏层,最后在输出层输出最终结果。为了防止过拟合现象的发生会引入Dropout,本文设置Dropout为0.25。

1.2 小卷积核

较大的卷积核能够获取更大的感受野,但是会导致计算量的明显增加,计算性能也会因此降低。使用多个小卷积核[10]代替大卷积核可在相同感受野的情况下,减少所需的计算量。本文3层卷积层均使用3*3的卷积核结构,保留一层5*5的卷积核,在保留足够感受野的同时,减少计算量。

1.3 haarcascade分类器

haar分类器=haar-like特征+AdaBoost算法+级联+积分图快速计算。AdaBoost方法是一种迭代算法,在每一轮中添加一个新的弱分类器,直到达到一个预估的极小的错误率。每一张训练样本图片都被初始赋予一个权重,表示它被其中一个分类器选入训练集的概率大小。如果某张样本图片已经被选入正确的分类器,在选择下一个训练集时,它被选中的概率就降低;相反,如果某张样本图片没有被准确分类,它的权重就得到提高。

2 实验

2.1 图片预处理

基于深度学习的方法需要大量样本用来训练,本文采用fer2013表情库作为实验对象,将其分为训练集和测试集,其中每张图片的表情由一个0~6中的数字代表,0=angry,1=disgust,2=fear,3=happy,4=sad,5=surprise,6=neutral。训练集中一共28709张图片,测试集3589张。在进行网络训练之前,先将图片进行预处理,得到48*48的人脸表情集。

2.2 表情分类

本文采用的卷积神经网络为4层卷积层、4层池化层、2层全连接层。导入已经预处理完的图片集,定义CNN结构,导入模型,开始训练模型。此过程大概需要一到两个小时,使用小卷积核替代大卷积核,减少了非常多的计算量。导入测试集进行准确率测试。使用混淆矩阵表示每类表情的精确准确率,具体各表情识别结果准确率如表1所示,混淆矩阵的行标表示本文算法预测表情结果,列标表示实际表情。

由表1可知该模型对happy、surprise两类表情识别准确率都达到了0.85,识别率较高,而对angry、fear、disgust类表情识别准确率都在0.6以下,识别率较低。

再对本文网络计算F1-score,F1-score是衡量分类问题的一个指标,最大为1,最小为0。由表1数据计算得到本文网络的F1-score为0.64,记录在表2中。

2.3 与其他算法比较

为验证本文所提方法的有效性,本文将分别与其他方法进行准确率、F1-score的比较。如表2所示,本文算法的准确率对比其他算法有所提升,F1-score也较高。

3 实际应用

实时进行人脸表情识别,利用OpenCV自带的haarcascade分类器,检测人脸,可在正脸分类器的基础上加上侧脸及眼睛的分类器提高正确率,配合使用上述模型对已识别到的人脸进行表情识别,连接摄像头建立实时人脸表情识别系统。

3.1 实时人脸表情识别系统

本系统在Python3.6操作环境下运行。图1为本文设计的系统主界面,图中4个按钮分别指向4个不同功能的子界面。“摄像头识别”指向连接摄像头实时进行人脸表情识别,如图2(a);“图片识别”指向静态圖片中的人脸表情识别,如图2(b);“视频识别”指向动态视频中的人脸表情识别,如图2(c)。

图2(a)为摄像头识别系统运行界面,界面中的文件图标表示可选择模型,默认为上文训练出的模型,下面的摄像头图标可打开摄像头,右上的“用时”则表示一次识别所用的时间长短,“识别结果”表示本次识别到的表情的输出结果。

图3为用此模型的识别结果举例,用时在0.04s左右,时间较短。本文采用OpenCV中的haarcascade分类器识别人脸,haar-like特征通过积分图来计算,积分图是只需要遍历一次图像就可以求出图像中所有区域像素和的快速算法,从而大大地加快了图像特征值计算的速度;AdaBoost级联分类器[14]是树状结构,每一级都是强分类器,当检测窗口成功遍历全部的强分类器时才被认为是正样本,不然则为负样本,由于每一个强分类器对负样本的判断准确度都十分高,所以一旦发现通过分类器的为负样本,就不再继续调用下面的强分类器,节省了很多的检测时间。图示背景皆为复杂背景[15],通过实验得出,系统能够准确地将人脸从背景中检测出来,并对人脸进行实时跟踪进行表情检测。

4 结论

本文利用不同于传统的新型卷积神经网络进行模型的训练,对人脸表情进行高效的分类,达到了较高的准确率。并将其与摄像头连接,可进行实时的表情识别且识别速度较快。本文中描述的实时人脸表情识别系统,能较好地实现计算机实时人脸表情识别的任务,具有网络容易训练、识别准确度较高、系统实时性强、识别速度较快等优点,可以应用于较多计算机系统的人机交互。同时,该系统算法也有继续研讨、改良的意义,有一定的提升空间。

参考文献:

[1] 薛雨丽,毛峡,郭叶,等.人机交互中的人脸表情识别研究进展[J].中国图象图形学报,2009,14(5):764-772.

[2] 潘光良.机器人人脸表情识别技术研究[J].智能机器人,2019(1):50-52.

[3] 姚丽莎,徐国明,房波,等.结合LBP和SVM的视频表情识别方法[J].山东理工大学学报(自然科学版),2020,34(4):67-72.

[4] 卢官明,何嘉利,闫静杰,等.一种用于人脸表情识别的卷积神经网络[J].南京邮电大学学报(自然科学版),2016,36(1):16-22.

[5] 施宇楠,吴自万,孙文.基于卷积神经网络的人脸表情识别研究[J].科学技术创新,2020(5):75-76.

[6] Simonyan K, Zisserman A. Very deep convolutional net-works for large-scale image recognition[C]. International Conference on Learning Representations, San Diego, USA: ICLR, 2015:1-5.

[7] 谢尔曼,罗森林,潘丽敏.基于Haar特征的Turbo-Boost表情识别算法[J].计算机辅助设计与图形学学报,2011,23(8):1442-1446,1454.

[8] 张立春,刘雅楠,曲柄光,等.深度学习下的人脸表情识别算法分析[J].电子元器件与信息技术,2020:4(1):67-68.

[9] Hhen K,ZHANG X,REN S, et al. Deep residual learning for image recognition[C]. Computer Vision and Pattern Recognition(CVPR), Las Vegas:2016. 770-778.

[10] Chen Hang, QIU Xiaohui. Research on Emotional Recognition Based on Convolution Neural Network and Pooling Algorithm[J].Computer Technology and Development, 2019 (1):61-65.

[11] 張丽英,沈诗婕,瞿子文,等.基于痛苦表情识别的智能医疗监护系统[J].国外电子测量技术,2020,39(3):148-151.

[12] 夏成静.基于数据增强和卷积神经网络的面部表情识别研究与实现[J].电脑知识与技术,2020,16(3):213-215.

[13] Dong Feiyan. Application of Distributed Training of Convolutional Neural Network in Facial Expression Recognition[J].Software,2020(1): 160-164 .

[14] 朱健翔,苏光大,李迎春.结合Gabor特征与Adaboost的人脸表情识别[J].光电子·激光,2006,17(8):993-998.

[15] 王金云,周晖杰,纪政.复杂背景中的人脸识别技术研究[J].计算机工程,2013,39(8):196-199,203.

【通联编辑:唐一东】

猜你喜欢
卷积神经网络深度学习
基于深度卷积神经网络的物体识别算法
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望