基于Tensorflow的人脸表情识别算法研究.docx

上传人:b****2 文档编号:2411357 上传时间:2023-05-03 格式:DOCX 页数:31 大小:2.11MB
下载 相关 举报
基于Tensorflow的人脸表情识别算法研究.docx_第1页
第1页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第2页
第2页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第3页
第3页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第4页
第4页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第5页
第5页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第6页
第6页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第7页
第7页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第8页
第8页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第9页
第9页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第10页
第10页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第11页
第11页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第12页
第12页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第13页
第13页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第14页
第14页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第15页
第15页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第16页
第16页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第17页
第17页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第18页
第18页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第19页
第19页 / 共31页
基于Tensorflow的人脸表情识别算法研究.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Tensorflow的人脸表情识别算法研究.docx

《基于Tensorflow的人脸表情识别算法研究.docx》由会员分享,可在线阅读,更多相关《基于Tensorflow的人脸表情识别算法研究.docx(31页珍藏版)》请在冰点文库上搜索。

基于Tensorflow的人脸表情识别算法研究.docx

基于Tensorflow的人脸表情识别算法研究

基于tensorflow的表情识别算法实现

Expressionrecognitionalgorithmbasedontensorflow

 

内容摘要

随着时代的发展,大数据已经慢慢的成为互联网时代的主流,以及机器学习、人工智能、计算机视觉逐渐广布在大众生活中,单一的人脸识别技术已经比较成熟的应用在军事、医疗、公共社会等场所中,进而将人脸表情识别推向更高度的热潮。

每个人的人脸都是独一无二的,人脸表情是当人们面对面交流时很难被察觉的、带有隐藏的情绪意义的人体情绪,经常标明人们极力压制和暗藏的情绪情感,所以通过机器与软件的结合进行表情识别可以清楚的得知该人的情绪。

人脸表情辨别的研究还有很长的路要走,将以变化多端的模式不断持续的影响我们的日常。

本文题目为基于tensorflow的人脸表情识别算法的研究。

科研学家把面部表情识别主要将表情划分为七个种类,整个人脸表情识别研究将会划分为四个过程:

数据预处理、卷积神经网络的搭建、模型的训练与人脸表情的识别界面的设计,第一部分包括对数据集的预处理和利用卷积网络搭建的神经网络与训练模型,第二部分为加载模型进行人脸表情识别测试,其中创新点就是使用pyqt5进行GUI界面设计封装,增加系统的界面简洁性与用户体验感。

其中最大的难点就是搭建卷积神经网络与训练的过程花费的时间。

关键词:

人脸表情识别深度学习人工智能

 

Abstract

Withthedevelopmentofthetimes,bigdatahasgraduallybecomethemainstreamoftheInternetera,aswellasmachinelearning,artificialintelligence,computervisiongraduallyspreadinpubliclife,asinglefacerecognitiontechnologyhasbeenmorematureinmilitary,medical,publicsocietyandotherplaces,andthenfaceexpressionrecognitiontoahigherupsurge.Everyone'sfaceisunique.Microexpressionisakindofsubtleexpressionwithcertainemotionalmeaningthatisdifficulttobedetectedfacetoface.Itoftenexpressesthedepressedandhiddenemotionalfeelings.Therefore,throughthecombinationofmachineandsoftwaretorecognizetheexpression,theemotionofthepersoncanbeclearlyknown.Facialexpressionrecognitiontechnologywillcontinuetoaffectourlivesinmanyways.

Thisquestionistheresearchoffacialexpressionrecognitionalgorithmbasedontensorflow.Facialexpressionrecognitionmainlydividesexpressionintosevencategories,andthewholefacialexpressionrecognitionresearchismainlydividedintotwoprocesses:

thetrainingofconvolutionalneuralnetworkmodelandtherecognitiontestoffacialexpression.Thefirstpartincludesthepreprocessingofdatasetandtheneuralnetworkandtrainingmodelbuiltbyconvolutionalnetwork.Thesecondpartistheloadingmodelforfacialexpressionrecognitiontest,inwhichinnovationPointistousepyqt5forGUIinterfacedesignandencapsulation,toincreasethesystem'sinterfacesimplicityanduserexperience.Thebiggestdifficultyistoprocessandanalyzethenumericalvalueoffaceimage.

Keywords:

facialexpressionrecognitiondeeplearningartificialintelligence

 

第一章绪论

1.1研究背景及意义

如今,科技发达,信息流通,科技发展跟着时代变换的脚步,迅速的发展成为巨大的影响力,人际交往主流从面对面交流到书信到电话,到现在许多程序的面世,与人交谈只用花蝼蚁之力。

我们已经踏入这个新的打数据的时代,一个数据迅速增长的时代。

每天生成着巨量数据,被挖掘且运用在不同的范畴,生活也越来越方便。

人工智能、人机交互、自动化也开始出现在人们的眼前,人工智能技术中的生物特征识别技术更加为重中之重,通过数据的收集,将人类的生物特征或行为特征进行分析,从而进行特征的识别。

人脸识别已经运用在许多领域中,如近期热点人脸支付,也是通过该技术进行的。

人脸包含了许多信息,脸部是含有最多信息的标注,世上没有完全相同的两张脸,没有完全相同的脸部信息,人与人交往中往往都是面对面交谈,脸部是最为重要以及突出的特征。

当人们除去语言外,能表达信息还有表情以肢体动作,所以表情是人类的第二语言,经过表现在脸部的思维情绪来传播信息。

而且表情还是浮现在表面无法被轻易隐藏的,轻微的器官抽动都是表情变动的特征,可以传递出人的情绪变动,所以表情识别成为了深度学习的其中一个热点。

目前,一个高效率、高性能的人脸表情识别系统是非常被需要的,它能够尽责任的被运用在普通日常的许多场景中。

许多研究都将人脸表情分为七大类:

正常,生气,蔑视,厌恶,恐惧,开心和伤心。

在工作中,可以作为趣味性的增加到上下班打卡系统中,只有以开心的表情才能打卡成功,可以提高员工的热情等等。

表情识别一直都在研究热门中,而tensorflow便携、高效、可扩展用于人脸表情的研究也是对此的一种推进。

在本文中主要结合tensorflow对人脸表情识别进行研究,制作一个GUI界面进行人脸表情识别认证。

1.2国内外研究现状

最早横空出世在人们眼前的表情辨别是在20世纪70年代,距离现在已经过去了很长一段时间,但是表情识别的热度居高不下,仍为时下热点,特别由于现在处于一个每天都有海量数据产生的时代,表情识别的展开绝对不失为是一个充满挑战性与可行性的科研研究题目。

面部表情作为传递人类内心活动以及情绪的最直接方式,研究人脸表情识别的源头是由PEkman和WVFriesen于1971年,将面部表情这么复杂的一个事物,划分并设定为6种情绪:

诧异、快乐、悲哀、恐惧、讨厌、愤怒,而后又增加了没有表情变化的情绪种类:

正常;并非零碎的详细有安排地创建了人脸表情图象库,里面包含详细讲诉了如何区分每一种表情的面部特色变动,包括脸部器官等细微变化都一一记录下来。

而不得不提的就是表情识别的历史里程碑:

面部肌肉行为编码系统(F:

FacicalA:

ActionC:

CodingS:

System),也是由两位伟大的学家提出的。

2019年VanitaJain等人提出了一种融合局部特彾和全局特彾的面部表情识别模型,该模型经过将人脸器官作为划分的根据,划分出多个区域,并仔细选择有助于减少冗余的感关趣区域来提取局部特征。

国内张正友博士,也曾罗列出表情识别的重要性以及主要内容:

人脸表情识别被认为在现代人工智能化与人机交互技术中的占领着一个比较重要的位置,最近几年该研究也得到不通过领域的深刻关注,顺势飙升而成为现世最受关注的热点之一,许多科学研究学者纷繁研讨以及提出许多提高识别效率的应用方法。

而非动态情绪图象的搭建使用多层深度网络学习的方式也是今日倍受关注的一种人脸情绪识选择:

TheThirdEmotionRecognitionintheWildChallenge的表情识别方式是在卷积神经网络的基础上实现的。

前馈神经网络作为卷积神经网络的组成部分,它所包含的人工神经元能够对覆盖在其区域内四周的一些周围神经元做出适当的呼应,对于大型数据图像具有良好的大规模图像处理性能。

也给表情识别研究带来飞速进步。

2019年彭兇霖等人提出一种分层任务学习的人脸表情识别并且以现有的卷积神经网络为基础模型,建造双层树的分类器,对旧时惯用的输出层的平面softmax分类器进行替换且同时间内完成构建深度多任务学习框架,将人脸表情识别推上更深层次。

人脸表情识别系统主要是对于人脸的检测和对于人脸表情的识别分类组成并且逐步将其运用到跨领域范畴,将其放置于不同的依附体中,如软件,网络摄像头等等。

1.3本文组织结构

本研究论文主要包罗讲诉了五大个章节:

第一章为绪论部分主要对人类脸部表情识别研究的背景与意义进行了了解与收集,最终以文案合集编写的方式显示出来,还有由古至今的国内国外关于人脸表情识别相应的具有重大意义的研究进行了分析并阐述。

第二章为讲述tensorflow主流应用以及本文运用到的相关基础知识。

本章主要介绍了tensorflow搭建时所需要用到的主要依赖包进行详细阐述,主要详细讲诉tensorflow的优点以及时效性、关注点与tensorflow与深度学习框架的结合使用的相干常识与应用。

第三章主要讲述基于tensorflow框架并且搭建卷积神经网络从而进行对人脸表情识别算法的准备与研究。

描述研究前期准备工作,包括获取数据集、表情分类、搭建卷积神经网络模型与训练过程。

第四章为系统设计与实现为了符合大众性以及优化使用者的体验感,提高了界面的美观性以及简洁性。

使用opencv和pyqt5进行了GUI界面的设计,本章主要讲述GUI界面的设计原理与步骤。

第五章为全文总结对该论文与系统设计一切执行过的任务与具体内容进行细致的总结,分析优缺点以及不足之处,并提出自己对未来人脸表情识别的发展所持有的观点。

第二章Tensorflow相关基础知识

2.1Tensorflow介绍

2.1.1tensorflow计算图

“Tensorflow”于2015年11月出现在大众视野中,是由谷歌在基于DistBelief基础上所研发的——numericalcomputation允许多人分享的开源软件库。

他灵活的适应性加速了科研人员一系列的训练模型设计完成,在海量数据集的模型训练中更是拔得头筹,成为开源社区中最为欢迎的深度学习框架。

“Tensorflow”的命名由来可以看作是将本身名词划分为两个特有名词,“Tensor”张量,该概念本是扩大数学量且表达到物理量上,而在tensorflow中是一个基础并代表的是某节点a数据向节点b移动传递数据,通常可以用多维数组去定义张量,更加容易被理解与接受,即数据结构。

“Flow”数据流、飞,数据按照流的形式进行计算、互相转化的过程,即计算模型。

Tensorflow是一个将复合的数据组成结构通过使用计算图的方式进行分析和处理传输过程的程序设计系统。

计算图是在“node-edge-node”转换模式下传输数据的非形象概念。

Tensorflow的根本计算模型解释为向量a、b强势的向节点add进行传输,如下图2-1-1所示。

图2-1-1节点与向量关系图

2.1.2tensorflow数据读取

现有文章中对于Tensorflow数据的处理普遍会划分为有一共四种存取数据的通用方法:

1、Feeding(供给数据)用Python编程语言来对数据进行控制处理后把被处理的数据供给到计算图中。

2、tf.dataAPI(文件读取)将待处理的文件数据用一个输入管道进行数据的读取。

3、Preloadeddata(预加载数据)使用一个constant常量对数据进行加载,仅对于数据量较小而言。

4、QueueRunner(队列管理器)通过协调与创建一到多条线程,通过其从文件中读取records到数据流图,如果数据量较大,太耗内存,所以这时最好使用该方法,当需要对特殊文件格式如csv文件进行一系列的数据读取,继而可以带有选择性的运用具有高效性、通用性并行于一体的tensorflow一种特定规范格式——TFRecords格式。

2.1.3运行模型(会话)

在Tensorflow框架中能够划分以三种模式进行会话可以分为:

1、普通调用Sess.run需要明确调用会话生成函数以及使用完成后,关闭会话函数回收资源,使用该模式时必要明确的Sess.close关掉会话,不然会造成资源泄露的问题,代码如下:

Sess=tf.Session()

Sess.run()

Sess.close()

2、可以经过使用Python编程的(Withas)上下文管理器进行封装创建会话,可以解决不正常退出程序而导致的资源泄露问题,当程序结束时上下文管理器时会主动封锁一切资源,代码如下:

Withtf.Session()asSess:

Sess.run()

2.2Tensorflow平台特性

Tensorflow后端是利用C++、CUDA进行保障高效性,其资料库中拥有海量辅佐函数来简化构建图的任务,容易上手,简单易用。

其接口可以被使用于C/C++语言以及Python等,其余的编程语言也能够通过SWIG工具来间接运用该接口。

Tensorflow系统计算任务可以是通过计算图来体现其本身不包含各种计算函数,所以在开始编程前,需要在运用前先通过导入(import)命令衔接需要使用的接口。

Tensorflow系统计算任务可以是通过计算图来体现其本身不包含各种计算函数,所以在开始编程前,需要在运用前先通过导入(import)命令衔接需要使用的接口。

Tensorflow系统计算任务可以是通过计算图来体现其本身不包含各种计算函数,所以在开始编程前,需要在运用前先通过导入(import)命令衔接需要使用的接口。

Tensorflow程序能够划分为构建(bu)图和执行(execution)图两个阶段如下图2-2-1所示:

图2-2-1Tensorflow程序图

Tensorflow拥有机动性、可适性强、自动差分、最优化表现等特点,在图像分类、机器视觉、无人驾驶、音频处理、推荐系统等深度学习、机器学习范畴场景下都有丰硕的应用成果,甚至涉及了通用数值、符号计算畛域。

TensorFlow正在致力于树立能够使得学术界的学术研讨交流与成果展现变得愈加快速的平台,甚至能够将机器/深度学习跨越学术界至工业界运用到生产之中。

2.3Tensorflow环境配置

本研究实验环境为:

Tensorflow2.0(CPU)+python3.7+CUDA8.17.13.4505

1.安装python编程环境浏览器打开网址:

www.python.org,选择合适且需要的python版本安装包安装即可。

2.Tensorflow-CPU版本比较方便合适大部分电脑,对显卡要求不高,所以选择安装Tensorflow-CPU版本,从应用中打开命令提示符(cmd)窗口,如果pip包已经很久没有更新使用,提议进行升级,因为若版本过旧,不能安装最近更新的包。

3.由于各个版本的Tensorflow都会包含对应的numpy包,所以提议事先检查本机是否已经安装了Numpy包,可以通过输入pipuninstallnumpy进行将原有的旧版numpy库删除。

4.然后可以在命令提示符中输入安装tensorflow的语句,系统会自动选择并下载安装包并进行安装配置tensorflow。

若显示numpy错误并安装失败,则可以先把东西全部卸载干净,然后重新开始直接在第三步语句后选择忽略numpy组件加上(–ignore-installednumpy)进行安装,。

5.测试Tensorflow能否正常使用,随便打开python编程工具创立项目并输入导包语句若成功输入无红点报错则安装成功。

该研究所用到的库:

time、tqdm、numpy、os、csv、cv2、matplotlib、sys、pyqt5。

第三章基于Tensorflow人脸表情识别

3.1数据集与预处理

3.1.1数据集的选择

本研究在数据集的选择中,最终抉择使用kaggle上被公开的数据集,这样的选择不但可以节省数据采集花费过多的时间,而且可以更加准确、统一地评估同一个数据集以及人脸表情分类器通过不同方式测出的性能,即而采用人脸表情库FER2013作为表情识别的数据集。

这个数据集一共包含35887张不同人不同表情的图片,并且标注usage划分为3个部分为测试部分(Training)共有28709条数据,共同验证部分和私自验证部分一共由7178条数据组成,每条数据都是由48X48像素的灰色图像转化为不同数据点组成的,并且标注emotion划分为7种表情,用数字0-6标签分别对具体表情标注中英文如下:

0=生气(angry),1=厌恶(disgust),2=恐惧(fear),3=快乐(happy),4=悲伤(sad),5=惊喜(surprised),6=正常(netrual)。

所选择的人脸表情库(fer2013)是将表情图片的数据与用途全部以数组的形式存放如fer2013.csv文件中而不是以图片的形式保存的,fer2013.csv数据集的组成为由首行为表头说明三列数据的具体含义与命名,首列为心情标签(即表明表情种类);第二列为图片转化成的所有数据(即像素值)以数组格式储存;尾列为三类数据用途的标注(即为训练集或测试集或验证集)组成如图3-1-1所示

图3-1-1fer2013.csv内容图

3.1.2数据集的预处理

若通过寻常的处理数据集的方法,若选择直接将从网上收集到的图片数据集全部载入内存,再进行预处理将会花费许多时间,也没有必要将csv文件数据集再转为图片集多此一举的方法会使得每次训练全部数据载入的过程缓慢,耗时长,而且必然会造成内存巨大的开销。

所以决定选择将数据集(csv文件)直接转化为TFRECORD的格式而不是图片从而节省内存与方便调用。

选择的TFRECORD格式是由Tensorflow提供的以一种独特的格式将数据存储起来。

TFRECORD的格式结构比较难理解作为一种二进制文件,没法直接查看。

但是它可以合理调配及运用内存,便利于海量数据的读取与运用而且不需要独自的标签文件,优点效率高、跨平台,有助于降低学习成本;TFRECORD格式文件由字段(Features)与协议内存块(protocolbuffer)组成。

并且可以输入代码从而获得所需的数据,再将数据写入Example协议内存块(PB)中且将协议内存块序列转化成一个字符串,并且通过TFRecordWriter将得到的数据写入到TFRECORD格式文件中去。

TFRecord只可以支持string,int64,float32三种格式进行存储管理,本文通过以列表的形式选用Int64格式写入Feature中。

信息包含了图片的标签(label),图片的高度(height)与宽度(width)还有图片的数据(raw),分别对应了value为label,height,width,raw的feature如下图3-1-2所示。

图3-1-2csv转TFRecorf主要代码图

最终将测试部分(Training)公共验证部分(PublicTest)和私有验证部分(PrivateTest)数据分别生成fer2013_train、fer2013_test、fer2013_eavl三个TFRECORD文件,如下图3-1-3所示。

图3-1-3划分数据集图

3.2搭建卷积神经网络

3.2.1GoogleNet原理

Googlenet是于2014年与VGGNet并行被提出的深度卷积网络,在深度学习分类与识别方面的实验中深受喜爱且对识别分类体现效果有着很大的作用,GoogleNet的特点与之前被熟知的网络不一样的是它主要考虑横向的延伸而不是纵向。

Googlenet在深度与宽度的领域中,选择合并使用1*1与3*3与5*5与pooling层的聚集结合使用。

主要选择运用Inceptionmod来进行对特征映射厚度的减低作用。

最大优点是使用小计算量却提高一层特征变化与非线性化属于性价比较高的一类Inception模型如下图3-2-1所示。

图3-2-1Inception模型图

3.2.2深度卷积神经网络模型

一个完整的卷积神经网络(CNN)包括一个输入层(INPUT)、一个卷积层(CONV)、激活函数(RELU)、池化层(POOL)、全连接层(FC)和一个输出层(OUTPUT),但是在日常实验中那个所使用到的卷积神经网络进行特征提取时,将会使用不限定个卷积层。

相对于传统分类方法,神经网络能够在特征提取和分类范畴同时延伸,改变了传统手工编码提取特征的方式,将其优化成自动化一种端到端(ETE)的学习。

传统方法与深度学习方法对比如下图3-2-2所示:

图3-2-2传统方法与深度学习对比图

本文所使用Tensorflow的API接口与函数:

tf.variable_scope()函数:

定义于创立变量层的操作中的上下文管理器。

能够判断验证values是不是来自同一图型,保证图型是默许的图型,并推送名称范畴和变量范畴。

tf.get_variable()函数用于截获一个已经存在的变量或者创立一个崭新的变量。

tf.nn.relu()函数Return(返回)Tensor,通常features会是(卷积核,图像)的卷积后加上bias。

tf.nn.conv2d()函数filter(conv1_weight)卷积核,要求也是一个张量。

strides是为在卷积时图像中的每一维的步长,这是个一维的向量,[1,strides,strides,1]开头第一位与结尾一位必需固定为1。

padding为string类型其值为“same”与“valid”。

tf.nn.max_pool()函数maxpooling是CNN当中的最大值池化操作。

用法与tf.nn.conv2d()接近。

tf.nn.dropout()函数tensorflow框架中主要为了尽量避免或过拟合的加重而利用的函数,它普通都是存在于全连接层。

tf.reduce_mean()函数:

最大作用于作为降维或者计算tensor(图像)的平均值。

使用到张量tensor沿着指定的数轴(tensor的某一维度)上的平均数值的计算。

tf.nn.lrn()函数与tf.nn.dropout()用法相似,用于数据增强并且作为relu激励之后的防止数据过拟合而被提出的一类解决办法,被称为localresponsenormalization——局部响应标准化

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2