温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
面部
特征
检测
表情
实时
识别
苏萃文
电脑与电信1.2 研究现状表情是人们的主观体验、情感、情绪和情意的外部表现形式,是人类交流过程中传递感情信息的重要媒介。1971年,Ek-man等第一次将表情划分为悲伤、高兴、恐惧、厌恶、惊讶和愤怒6种基本形式,为研究人脸表情奠1定了基础。心理学家A.Mehrabia研究表明,在人与人之间的日常沟通交流中,若将一个完整沟通信息量以100%表示,通过文字传递信息占比为7%,语音语调传递信息占比为38%,而通过表情动作所传递信息占比高达55%,可见通过眼部、口部等表现出的面部表情在表达中占有重要作用,因此表情的识别具有很高的研究价值。1.2.1 传统方法人脸表情特征提取是指提取人脸的特征性信息,提取到信息的准确性决定了表情识别的正确性,是人脸表情识别中的重要环节。人脸表情特征提取方法可以分为传统的面部表情特征提取与基于深度学习的特1征提取方法。典型的传统表情特征提取方法主要有主成分分析法、独立成分分析法和局部二值模式,每一种表情提取方法结合合适的表情分类算法,实现人脸表情分类。1.1 研究背景随着模式识别和人工智能技术及其相关学科的迅猛发展,人脸表情识别集成了计算机视觉、图像处理、深度学习等多种专业技术以及生理学和心理学等相关学科知识,使用计算机研究识别面部表情成为可能,并成为计算机技术研究领域的一大热点。人脸表情识别是人脸识别的进一步发展,具体指从给定的静态图像或动态视频序列中分离出特定的表情状态,进而确定被识别对象2的心理情绪,实现计算机对人脸表情的理解与识别。人脸表情识别技术已广泛应用于案件侦破、疲劳驾驶检测、教学质量评价、人机交互、推荐系统等众多领域。主成分分析法将高维空间数据去中心化,平移、旋转坐标轴找到主成分,实现高维空间数据降维,最大化3保留原始数据特征信息。王宪佼等利用主成分分析法提取人脸图像特征信息并使用支持向量机进行分类,在ORL人脸库中识别率达到94%。1 引言针对主成分分析法方法识别率不高、无法识别非线4性特征的缺点,彭荣杰等提出利用核改进的KPCA算法,使用其内部非线性核函数对非线性人脸轮廓进行特征提取,并使用SVM分类器进行表情分类,在ORL人脸库中识别率达到了95.16%,在Yale人脸库中识别率为95.10%,基于面部特征检测的人脸表情实时识别*苏萃文 柴国强摘 要:针对传统方法特征提取识别准确率低、提取方法复杂以及深度学习方法模型复杂、实时性较差等缺点,提出了一种基于OpenCV和Dlib模型的人脸表情实时识别方法。首先,使用OpenCV实时采集并预处理图像;然后,使用Dlib预训练模型提取人脸特征点;最后,结合本文提出的5个表情识别指标:眉毛的倾斜程度、眼睛的睁开程度、上嘴唇与鼻尖高度占比、嘴巴宽度占比和嘴巴高度占比,对人脸表情进行实时识别。通过搭建系统界面,简化操作,增强了识别方法的实用性。实验表明,所提出算法表情识别的准确率均到达96%以上,验证了其有效性。(山西师范大学 物理与信息工程学院,山西 太原 030000)关键词:深度学习;人脸表情实时识别;OpenCV;Dlib模型中图分类号:TP391.41 文献标识码:A 文章编号:1008-6609(2023)01-0017-05作者简介:苏萃文(2002),女,山西寿阳人,本科,研究方向为深度学习。*通讯作者:柴国强(1989),男,山西临汾人,博士,讲师,研究方向为深度学习、信号与信息处理。基金项目:山西省基础研究计划,项目编号:20210302124647;山西省高等学校科技创新项目,项目编号:2021L269;山西省高等学校大学生创新创业训练计划项目,项目编号:20220310;山西师范大学大学生创新创业训练计划资助项目,项目编号:2022DCXM-52。17DOI:10.15966/ki.dnydx.2023.z1.018电脑与电信同时减少了特征数据储存空间,提高了运算能力。相较于主成分分析法,独立成分分析法更加智能,可以提取人脸图像中隐藏的信息,进一步提高了表情识别的5准确率。周书仁等提出了基于ICA模型的FastICA算法结合隐马尔可夫模型的表情识别系统,该系统使表情平均识别所需时间大幅减少,且表情平均识别率达到了95.8%。局部二值模式使用LBP算子描述图像局部纹理特征,6具有旋转不变性和灰度不变性,并且容易计算。定义一个33像素区域的LBP算子,以顺时针或逆时针为转动方向,将中心像素点灰度值作为阈值,依次与邻域像素点灰度值作差,若差值大于0,赋值1,反之,则赋值0,将赋值按顺序排列,得到中心像素点的LBP二进制编码值,转换为十进制即为中心像素点的LBP特征值,反映了该窗口局部纹理特征信息,通过滑动LBP算子窗口,可以得到7整张图像纹理特征信息。姚丽莎等提出了利用LBP算子检测人脸并返回人脸区域,在处理视频人脸表情识别的过程中,具有更高效率、实时性更好的优点。传统的表情提取方法依赖于人工提取特征,方法较为复杂,每一种提取方法都需要选择合适的分类算法,并且分模块实现的每一个模块,其结果在一定程度上会影响下一个模块,最终影响整个识别过程。而基于深度学习的表情识别方法使用构建的深度表情识别网络,使在数据集上提取特征更加高效准确,所提取到特征的鲁棒性更强,可以实现端到端的分类任务。1.2.2 深度学习方法近年来,基于深度学习的表情识别方法取得突破性进展,利用深度神经网络结构对人脸图像进行特征提取和表情分类。深度神经网络使用组合的底层特征,形成抽象的高维特征,发现数据隐层特征分布,从而实现数据分类。在表情识别中,常使用的深度学习网络结构主要有卷积神经网络、深度信念网络和循环神经网络。(1)视频采集模块本文将眉毛的倾斜程度、眼睛的睁开程度、上嘴唇与鼻尖高度占比、嘴巴宽度占比和嘴巴高度占比作为表情分析的5个指标,根据实验分别设置合适阈值,实现人脸四种基本表情:自然、高兴、生气和惊讶的实时识别,并搭建系统界面,操作简单,实时性好,表情识别率高。系统分为视频采集、图像预处理、特征点提取和表情识别四个模块。本文设计表情识别算法流程图如图2所示。2.1 技术路线2.2.1 整体流程使用中值滤波滤除图像存在的随机噪声等干扰因使用OpenCV从摄像头中读取视频流,判断读取视频是否成功,成功则对读取到的视频流进行分帧处理,得到每一帧图像,否则重新采集视频。卷积神经网络对人脸位置改变、尺度变化具有很强的鲁棒性,具有广泛的应用。卷积神经网络通常由卷积层、池化层以及全连接层组成,卷积层利用权重函数卷积核进行卷积运算,得到特征图。池化层通过对特征图进行特征提取和简化,放大感兴趣的特征部分,获取更抽象特征,避免过拟合,提高泛化能力。VGG网络在卷积层尺寸上做了优化,增加了卷积的层数,使得网络结果更简洁。在ILSVRC比赛中,VGG网络TOP-5的准确8率达到了92.3%,取得了良好的结果。深度信念网络由Geoffrey Hinton提出,是一种生成模型,通过训练不断优化其神经元间的权重,让整个神经网络按照最大概率生成训练数据。循环神经网络多用于时序信息以及语义信息的深度表达,在网络架构上,会记忆之前的信息,对后面的信息造成影响。本文使用opencv-python4.5.1.48计算机视觉库和Dlib19.22.0库作为实验编程环境,CPU为Intel(R)Core(TM)i5-10210UCPU1.60GHz。深度表情识别网络在识别表情方面达到了很高的识别率,但模型越来越大,越来越复杂,需要大量的训练数据,计算量较大,计算时间较长,训练难度较大,并且数据集的质量和数量比较匮乏。因此,本文提出一种基于深度学习网络构架的OpenCV和Dlib模型的人脸表情识别的实时识别方法,首先通过摄像头实时采集视频流,并利用OpenCV对视频流进行分帧,获取人脸图像,对其进行灰度、滤波去噪等图像增强处理,使用Dlib模型训练好的人脸68关键点检测模型对人脸进行特征标定,获取人脸特征信息,68个关键点位置分布图如图1所示。(2)图像预处理模块2 研究内容2.2 识别方法18图1 68关键点位置分布图在表情变化过程中,鼻子运动较少,很少被使用作为面部表情识别重要的人脸部件。本文利用鼻子运动较少这一点,将“不动”的鼻尖和“会动”的上嘴唇动静结合起来,将二者之间的距离与人脸识别框高度的比值作为面部表情识别的一个指标,对人脸表情进行识别。鼻尖标定点为第30点,上嘴唇标定点为第62点,计算两点间距离与人脸识别框高度之比,作为上嘴唇与鼻尖高度占比指标,记为LNHR:嘴巴张开与否也是表情识别经常选取的判断依据。嘴巴的张开比例包含嘴巴宽度占比和嘴巴高度占比,分别为嘴巴宽度6266点与人脸识别框宽度之比和嘴巴高度4854点与人脸识别框高度之比。素,并对图片进行灰度处理。经过预处理模块后得到的灰度图像,减少了无关信息,降低了数据量,面部特征信息的可检测性得到增强,提升算法运算效率,预处理前后图像对比如图3所示。表情变化时,眼睛也会随之变化,主要体现在眼睛睁开形状,将其变化定义为眼睛的睁开程度,使用上下眼眶间距离与人脸识别框高度之比表示。为了使计算结果更加准确,采用四组眼眶标定点的上下眼眶距离平均值作为上下眼眶的距离,记为EAD,四组标定点分别为:41和37、40和38、47和43以及46和44点,具体表示为式(1):(3)特征点提取模块将眼睛睁开程度记为EOD:使用人脸检测器检测人脸位置,判断图像是否存在人脸,检测到则用人脸识别框框出人脸,同时计算出人脸识别框的宽和高,否则继续对下一帧图像进行检测;使用Dlib训练好的人脸68关键点检测模型,对人脸图像标定关键点,如图4所示。依据图4中标定点的坐标,分别计算本文所采用的5个表情识别指标。将嘴巴宽度占比记为MWR:左、右眉毛标定点分别为:1721点、2226点。人在生气或愤怒时往往表现为面部肌肉将眉毛下拉并向内紧缩、眉头紧锁,两眉之间出现纵向皱纹。通过分析人的眉毛前段,其倾斜程度可以直观对比出在不生气和生气两种情况下的差异,因此可通过设置适当的阈值,将眉毛前段倾斜程度作为判断生气表情的依据。具体实现时,采用两个数组分别存放2021点的横坐标、纵坐标,对两个数组进行一次直线拟合,将拟合获取的直线斜率,作为眉毛倾斜程度,记为ETD。电脑与电信图2 整体流程开始加载人脸检测器采集视频是否检测到人脸?提取特征点表情识别是否读取视频?释放摄像头提取每帧图像图像预处理结束否是是否图3 预处理效果对比图图4 人脸关键点标定图EAD=(1)44+EOD=(2)heightEAD y-y6230-6662LNHR=MWR=(3)(4)heightwidth19(y-y)+(y-y)+(y-y)413740384743(y-y)4644电脑与电信y-y5448MHR=(5)height是是是否否是人脸图像是否张嘴?眉毛斜率是否大于阈值?生气眉毛斜率是否大于阈值?嘴巴宽度占比是否小于阈值?生气开心上嘴唇与鼻尖高度占比是否小于阈值?眼睛睁开程度是否大于阈值?惊讶自然开心惊讶否是否否否是图5 表情识别流程图图6 张嘴情况图图7 不张嘴情况图表1 指标阈值指标 ETD EOD LNHR MWR MHR阈值-0.30 0.052 0.257 0.348 0.051图8 系统界面(4)表情识别模块将嘴巴高度占比记为MHR:在表情识别模块中,根据标定点坐标计算得到的表情识别指标,对人脸四种基本表情进行识别,并将表情识别结果显示到观测屏幕,同时将系统计算得到的5个表情识别指标在屏幕显示,表情识别流程如图5所示。人脸表情识别过程中,首先依据嘴巴高度占比,分为张嘴和没有张嘴两种情况。在张嘴情况下,包含生气、开心和惊讶三种基本表情。依据眉毛斜率与阈值比较,将生气表情识别出来;剩余两种表情依据上嘴唇与鼻尖高度占比与阈值比较识别出来:若该指标小于阈值,为开心;否则为惊讶,结果如图6所示。本文使用wxFormBuilder软件搭建系统可视化界面,界面布局包含视频窗口和参数设置栏。使用者在参数设置栏选择摄像头,点击识别开关,系统自动开始识别视频窗口中的人脸表情,并实时反馈系统表情识别