欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:49461302       资源大小:2.49MB        全文页数:33页
    • 资源格式: DOCX        下载积分:28金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要28金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    广东东软学院本科生毕业设计(论文)本科毕业设计(论文) 基于tensorflow的表情识别算法实现 Expression recognition algorithm based on tensorflow 院 (系)计算机学院专 业软件工程班 级16软件6班学 号16210120626学生姓名何丽嫦指导教师商丽娟提交日期2020年 4 月 19 日毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作品及成果。对本文的研究作出贡献的个人和集体,均已在论文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。毕业论文作者(签字): 签字日期: 年 月 日成绩评定成绩项论文成绩(百分制)折合比例实得成绩(折合分)指导教师成绩30%评阅教师成绩20%答辩成绩50%总评成绩注:毕业设计(论文)成绩按百分制评定。答辩成绩不及格的(评分低于60分的),则该毕业设计(论文)总评成绩为答辩成绩。内容摘要随着时代的发展,大数据已经慢慢的成为互联网时代的主流,以及机器学习、人工智能、计算机视觉逐渐广布在大众生活中,单一的人脸识别技术已经比较成熟的应用在军事、医疗、公共社会等场所中,进而将人脸表情识别推向更高度的热潮。每个人的人脸都是独一无二的,人脸表情是当人们面对面交流时很难被察觉的、带有隐藏的情绪意义的人体情绪,经常标明人们极力压制和暗藏的情绪情感,所以通过机器与软件的结合进行表情识别可以清楚的得知该人的情绪。人脸表情辨别的研究还有很长的路要走,将以变化多端的模式不断持续的影响我们的日常。本文题目为基于tensorflow的人脸表情识别算法的研究。科研学家把面部表情识别主要将表情划分为七个种类,整个人脸表情识别研究将会划分为四个过程:数据预处理、卷积神经网络的搭建、模型的训练与人脸表情的识别界面的设计,第一部分包括对数据集的预处理和利用卷积网络搭建的神经网络与训练模型,第二部分为加载模型进行人脸表情识别测试,其中创新点就是使用pyqt5进行GUI界面设计封装,增加系统的界面简洁性与用户体验感。其中最大的难点就是搭建卷积神经网络与训练的过程花费的时间。关键词: 人脸表情识别 深度学习 人工智能Abstract With the development of the times, big data has gradually become the mainstream of the Internet era, as well as machine learning, artificial intelligence, computer vision gradually spread in public life, a single face recognition technology has been more mature in military, medical, public society and other places, and then face expression recognition to a higher upsurge. Everyone's face is unique. Microexpression is a kind of subtle expression with certain emotional meaning that is difficult to be detected face to face. It often expresses the depressed and hidden emotional feelings. Therefore, through the combination of machine and software to recognize the expression, the emotion of the person can be clearly known. Facial expression recognition technology will continue to affect our lives in many ways.This question is the research of facial expression recognition algorithm based on tensorflow. Facial expression recognition mainly divides expression into seven categories, and the whole facial expression recognition research is mainly divided into two processes: the training of convolutional neural network model and the recognition test of facial expression. The first part includes the preprocessing of data set and the neural network and training model built by convolutional network. The second part is the loading model for facial expression recognition test, in which innovation Point is to use pyqt5 for GUI interface design and encapsulation, to increase the system's interface simplicity and user experience. The biggest difficulty is to process and analyze the numerical value of face image.Key words: facial expression recognition deep learning artificial intelligence目 录第一章 绪论11.1研究背景及意义11.2 国内外研究现状11.3 本文组织结构2第二章 Tensorflow相关基础知识32.1 Tensorflow介绍32.1.1tensorflow计算图32.1.2tensorflow数据读取32.1.3运行模型(会话)42.2 Tensorflow平台特性42.3 Tensorflow环境配置5第三章 基于Tensorflow人脸表情识别63.1 数据集与预处理63.1.1数据集的选择63.1.2数据集的预处理63.2 搭建卷积神经网络83.2.1GoogleNet原理83.2.2深度卷积神经网络模型83.3 模型训练与测试113.3.1模型训练113.3.2模型测试133.4本章小结15第四章 系统设计与实现174.1 系统设计174.1.1系统功能需求174.1.2系统模块流程174.2相关技术174.2.1pyqt5介绍174.2.2opencv介绍184.2.3具体设计184.3 系统运行效果214.4 本章小结23第五章 总结245.1 工作总结245.2 不足与展望24参考文献25致谢26II广东东软学院本科生毕业设计(论文)第一章 绪论1.1研究背景及意义如今,科技发达,信息流通,科技发展跟着时代变换的脚步,迅速的发展成为巨大的影响力,人际交往主流从面对面交流到书信到电话,到现在许多程序的面世,与人交谈只用花蝼蚁之力。我们已经踏入这个新的打数据的时代,一个数据迅速增长的时代。每天生成着巨量数据,被挖掘且运用在不同的范畴,生活也越来越方便。人工智能、人机交互、自动化也开始出现在人们的眼前,人工智能技术中的生物特征识别技术更加为重中之重,通过数据的收集,将人类的生物特征或行为特征进行分析,从而进行特征的识别。人脸识别已经运用在许多领域中,如近期热点人脸支付,也是通过该技术进行的。人脸包含了许多信息,脸部是含有最多信息的标注,世上没有完全相同的两张脸,没有完全相同的脸部信息,人与人交往中往往都是面对面交谈,脸部是最为重要以及突出的特征。当人们除去语言外,能表达信息还有表情以肢体动作,所以表情是人类的第二语言,经过表现在脸部的思维情绪来传播信息。而且表情还是浮现在表面无法被轻易隐藏的,轻微的器官抽动都是表情变动的特征,可以传递出人的情绪变动,所以表情识别成为了深度学习的其中一个热点。目前,一个高效率、高性能的人脸表情识别系统是非常被需要的,它能够尽责任的被运用在普通日常的许多场景中。许多研究都将人脸表情分为七大类:正常,生气,蔑视,厌恶,恐惧,开心和伤心。在工作中,可以作为趣味性的增加到上下班打卡系统中,只有以开心的表情才能打卡成功,可以提高员工的热情等等。表情识别一直都在研究热门中,而tensorflow便携、高效、可扩展用于人脸表情的研究也是对此的一种推进。在本文中主要结合tensorflow对人脸表情识别进行研究,制作一个GUI界面进行人脸表情识别认证。1.2 国内外研究现状最早横空出世在人们眼前的表情辨别是在20世纪70年代,距离现在已经过去了很长一段时间,但是表情识别的热度居高不下,仍为时下热点,特别由于现在处于一个每天都有海量数据产生的时代,表情识别的展开绝对不失为是一个充满挑战性与可行性的科研研究题目。面部表情作为传递人类内心活动以及情绪的最直接方式,研究人脸表情识别的源头是由PEkman和WVFriesen于1971年,将面部表情这么复杂的一个事物,划分并设定为6种情绪:诧异、快乐、悲哀、恐惧、讨厌、愤怒,而后又增加了没有表情变化的情绪种类:正常;并非零碎的详细有安排地创建了人脸表情图象库,里面包含详细讲诉了如何区分每一种表情的面部特色变动,包括脸部器官等细微变化都一一记录下来。而不得不提的就是表情识别的历史里程碑:面部肌肉行为编码系统(F:Facical A: Action C:Coding S:System),也是由两位伟大的学家提出的。2019 年 Vanita Jain 等人提出了一种融合局部特彾和全局特彾的面部表情识别模型,该模型经过将人脸器官作为划分的根据,划分出多个区域,并仔细选择有助于减少冗余的感关趣区域来提取局部特征。国内张正友博士,也曾罗列出表情识别的重要性以及主要内容:人脸表情识别被认为在现代人工智能化与人机交互技术中的占领着一个比较重要的位置,最近几年该研究也得到不通过领域的深刻关注,顺势飙升而成为现世最受关注的热点之一,许多科学研究学者纷繁研讨以及提出许多提高识别效率的应用方法。而非动态情绪图象的搭建使用多层深度网络学习的方式也是今日倍受关注的一种人脸情绪识选择:The Third Emotion Recognition in the Wild Challenge的表情识别方式是在卷积神经网络的基础上实现的。前馈神经网络作为卷积神经网络的组成部分,它所包含的人工神经元能够对覆盖在其区域内四周的一些周围神经元做出适当的呼应,对于大型数据图像具有良好的大规模图像处理性能。也给表情识别研究带来飞速进步。2019 年彭兇霖等人提出一种分层任务学习的人脸表情识别并且以现有的卷积神经网络为基础模型,建造双层树的分类器,对旧时惯用的输出层的平面 softmax分类器进行替换且同时间内完成构建深度多任务学习框架,将人脸表情识别推上更深层次。人脸表情识别系统主要是对于人脸的检测和对于人脸表情的识别分类组成并且逐步将其运用到跨领域范畴,将其放置于不同的依附体中,如软件,网络摄像头等等。1.3 本文组织结构本研究论文主要包罗讲诉了五大个章节:第一章为绪论部分主要对人类脸部表情识别研究的背景与意义进行了了解与收集,最终以文案合集编写的方式显示出来,还有由古至今的国内国外关于人脸表情识别相应的具有重大意义的研究进行了分析并阐述。第二章为讲述tensorflow主流应用以及本文运用到的相关基础知识。本章主要介绍了tensorflow搭建时所需要用到的主要依赖包进行详细阐述,主要详细讲诉tensorflow的优点以及时效性、关注点与tensorflow与深度学习框架的结合使用的相干常识与应用。第三章主要讲述基于tensorflow框架并且搭建卷积神经网络从而进行对人脸表情识别算法的准备与研究。描述研究前期准备工作,包括获取数据集、表情分类、搭建卷积神经网络模型与训练过程。第四章为系统设计与实现为了符合大众性以及优化使用者的体验感,提高了界面的美观性以及简洁性。使用opencv和pyqt5进行了GUI界面的设计,本章主要讲述GUI界面的设计原理与步骤。第五章为全文总结对该论文与系统设计一切执行过的任务与具体内容进行细致的总结,分析优缺点以及不足之处,并提出自己对未来人脸表情识别的发展所持有的观点。第二章 Tensorflow相关基础知识2.1 Tensorflow介绍2.1.1tensorflow计算图“Tensorflow”于2015年11月出现在大众视野中,是由谷歌在基于DistBelief基础上所研发的numerical computation允许多人分享的开源软件库。他灵活的适应性加速了科研人员一系列的训练模型设计完成,在海量数据集的模型训练中更是拔得头筹,成为开源社区中最为欢迎的深度学习框架。“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.data API(文件读取)将待处理的文件数据用一个输入管道进行数据的读取。3、Preloaded data(预加载数据)使用一个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编程的(With as)上下文管理器进行封装创建会话,可以解决不正常退出程序而导致的资源泄露问题,当程序结束时上下文管理器时会主动封锁一切资源,代码如下:With tf.Session() as Sess: Sess.run()2.2 Tensorflow平台特性Tensorflow后端是利用C+、CUDA进行保障高效性,其资料库中拥有海量辅佐函数来简化构建图的任务,容易上手,简单易用。其接口可以被使用于C/C+语言以及Python等,其余的编程语言也能够通过SWIG工具来间接运用该接口。Tensorflow系统计算任务可以是通过计算图来体现其本身不包含各种计算函数,所以在开始编程前,需要在运用前先通过导入(import)命令衔接需要使用的接口。Tensorflow系统计算任务可以是通过计算图来体现其本身不包含各种计算函数,所以在开始编程前,需要在运用前先通过导入(import)命令衔接需要使用的接口。Tensorflow系统计算任务可以是通过计算图来体现其本身不包含各种计算函数,所以在开始编程前,需要在运用前先通过导入(import)命令衔接需要使用的接口。Tensorflow程序能够划分为构建(bu)图和执行(execution)图两个阶段如下图2-2-1所示:图2-2-1 Tensorflow程序图Tensorflow拥有机动性、可适性强、自动差分、最优化表现等特点,在图像分类、机器视觉、无人驾驶、音频处理、推荐系统等深度学习、机器学习范畴场景下都有丰硕的应用成果,甚至涉及了通用数值、符号计算畛域。TensorFlow正在致力于树立能够使得学术界的学术研讨交流与成果展现变得愈加快速的平台,甚至能够将机器/深度学习跨越学术界至工业界运用到生产之中。2.3 Tensorflow环境配置本研究实验环境为:Tensorflow2.0(CPU)+python3.7+CUDA8.17.13.45051. 安装python编程环境浏览器打开网址:www.python.org,选择合适且需要的python版本安装包安装即可。2.Tensorflow-CPU版本比较方便合适大部分电脑,对显卡要求不高,所以选择安装Tensorflow-CPU版本,从应用中打开命令提示符(cmd)窗口,如果pip包已经很久没有更新使用,提议进行升级,因为若版本过旧,不能安装最近更新的包。3.由于各个版本的Tensorflow都会包含对应的numpy包,所以提议事先检查本机是否已经安装了Numpy包,可以通过输入pip uninstall numpy进行将原有的旧版numpy库删除。4.然后可以在命令提示符中输入安装tensorflow的语句,系统会自动选择并下载安装包并进行安装配置tensorflow。若显示numpy错误并安装失败,则可以先把东西全部卸载干净,然后重新开始直接在第三步语句后选择忽略numpy组件加上(ignore-installed numpy)进行安装,。5.测试Tensorflow能否正常使用,随便打开python编程工具创立项目并输入导包语句若成功输入无红点报错则安装成功。该研究所用到的库:time、tqdm、numpy、os、csv、cv2、matplotlib、sys、pyqt5。5广东东软学院本科生毕业设计(论文)第三章 基于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-1 fer2013.csv内容图3.1.2数据集的预处理若通过寻常的处理数据集的方法,若选择直接将从网上收集到的图片数据集全部载入内存,再进行预处理将会花费许多时间,也没有必要将csv文件数据集再转为图片集多此一举的方法会使得每次训练全部数据载入的过程缓慢,耗时长,而且必然会造成内存巨大的开销。所以决定选择将数据集(csv文件)直接转化为TFRECORD的格式而不是图片从而节省内存与方便调用。选择的TFRECORD格式是由Tensorflow 提供的以一种独特的格式将数据存储起来。TFRECORD的格式结构比较难理解作为一种二进制文件,没法直接查看。但是它可以合理调配及运用内存,便利于海量数据的读取与运用而且不需要独自的标签文件,优点效率高、跨平台,有助于降低学习成本;TFRECORD格式文件由字段(Features)与协议内存块(protocol buffer)组成。并且可以输入代码从而获得所需的数据,再将数据写入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-2 csv转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层的聚集结合使用。主要选择运用Inception mod来进行对特征映射厚度的减低作用。最大优点是使用小计算量却提高一层特征变化与非线性化属于性价比较高的一类Inception模型如下图3-2-1所示。图3-2-1 Inception模型图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()函数max pooling是CNN当中的最大值池化操作。用法与tf.nn.conv2d()接近。tf.nn.dropout()函数tensorflow框架中主要为了尽量避免或过拟合的加重而利用的函数,它普通都是存在于全连接层。tf.reduce_mean()函数:最大作用于作为降维或者计算tensor(图像)的平均值。使用到张量tensor沿着指定的数轴(tensor的某一维度)上的平均数值的计算。tf.nn.lrn()函数与tf.nn.dropout()用法相似,用于数据增强并且作为relu激励之后的防止数据过拟合而被提出的一类解决办法,被称为local response normalization局部响应标准化。在输入层后加入一个 1*1 的卷积层来搭建这个模型,该方法其有既增加非线性表示,加深网络,提升模型表达能力且基本不增加原始计算量的优点。本研究将卷积层与输入层分为两个函分别定义,卷积层关键个别代码如下图3-2-4所示,全连接层关键代码如下图3-2-5所示:图3-2-4 卷积层主要代码图图3-2-5 全连接层主要代码图优化器选择Adam Optimize,学习率设为0.001,train_step_ = tf.train.AdamOptimizer(self.lr).minimize(loss_, name='train_step')。网络的整体架构包含输入层一共11层网络,分别为:输入层(input)、卷积层(convolutions,conv1)、卷积层2(conv2)、池化层1(subsampling,pool2)、卷积层3(conv3)、池化层2(pool3)、卷积层4(conv4)、池化层3(pool3)、全连接层1、全连接层2、输出层(径向基层)。详细内容如下表所示:表3-2-1 搭建卷积神经网络种类描述核步长填充输出丢弃Input48*48*1Conv1卷积层和relu1*1148*48*32Conv2卷积层和relu5*51248*48*32Pool2最大池化3*3223*23*32Conv3卷积层和relu3*31123*23*32Pool3最大池化3*3211*11*32Conv4卷积层和relu5*51211*11*64Pool4最大池化3*325*5*64Local1全连接和relu1*1*204850%Local2全连接和relu1*1*204850%Logits输出1*1*73.3 模型训练与测试3.3.1模型训练对于人脸在图像中的比例、脸部正对或侧对、眼睛等物品对脸部的遮挡、不同浓度的妆容、不同光照等情况,都会影响识别效果。通过编写数据增强函数pre_process_img,使得模型在训练过程中出现过多的网络过拟合现象,通过对训练集数据的变换可以得到泛化能力更强的深度网络顺应于实际场景。主要通过tf.image.random_flip_left_right()函数:可以按水平 (从左向右) 随机翻转图像,tf.image.random_brightness()函数:在-32/255, 32/255的范围内随机调整图片的亮度。tf.image.random_contrast()函数:在-0.8, 1.2的范围随机调整图片的对比度。tf.random_crop()函数:进行对图像大小的随机裁剪。tf.image.resize_images函数:调整图像的像素大小至48*48主要代码如下图3-3-1所示:图3-3-1 数据增强代码图编写读取TFRECORD文件数据函数_parse_function_csv,tf.cast函数:将 tensorflow 中张量数据转换类型即将features类型由int64变为int32,tf.multiply函数:将48,48,1与1./255中对应元素各自相乘。主要代码如下图3-3-2所示:图3-3-2 读写TFRecord代码图正式开始训练时,每一步骤(step)训练过程,都要打开tensorflow会话,使用session的run方法执行计算,进行数据的读取,并引用载入所构建的卷积神经网络,主要代码如下图3-3-3所示:图3-3-3 开始训练主要代码图将准确率与缺失值,每一step的数据数据变化显示在面板中,可以方便的监控整个训练过程。因为数据量的庞大整个训练过程非常的长。当训练完成时,当准确率为最大时,保存训练模型与权重模型,最终成功有约75%的准确率。主要代码如下图3-3-4所示,部分训练数据如下图3-3-5所示:图3-3-4 计算loss与acc代码图图3-3-5 训练过程数据图3.3.2模型测试模编写代码验证模型准确率,先布置存放表情识别模型、人脸识别模型(opencv自带'haarcascade_frontalface_alt.xml')、需要验证的图片路径。新建一个列表存放7中表情种类'angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral',然后使用Session来激活ckpt文件对话。模型测试主要分为三步:1、建立人脸表情文件夹:收集所需要识别的人脸图像存放到一个文件夹。2、创建函数对所需要识别的图形进行数据处理创建函数advance_image(images_):输入图像格式做统一处理。新建列表(rsz_img)用for循环将一张一张图像filp水平翻转后的数组数据,resize重新规定为48*48数组,且np.reshape重新规定数组组成为48,48,1存入后,在建一个新列表(rsz_imgs)把(rsz_img)转换为numpy.array格式存入。具体方式如下图3-3-6所示:图3-3-6 图像数据处理图创建函数produce_result(images_):对处理过的图像数据,进行识别得出结果,生成tensor。创建函数produce_confusion_matrix(images_list_, total_num_):产生混淆矩阵代码实现将confusion_matrix值设置为True即生成混淆矩阵False为识别遍历指定文件夹内所有jpg与png格式的图片,并计算7种表情的百分比。创建函数predict_emotion(image_):调用produce_result(images_)使用模型进行预测表情。具体代码如下图3-3-7所示:图3-3-7 预测表情主要代码图创建函数face_detect():调用人脸识别模型进行人脸识别定位。为了加快检测速度,过滤噪点目标的目的,选择使用detectMultiScale函数中目标检测对象的最大与最小两极尺寸。3、进行表情识别,识别出的人脸使用cv2.rectangle(img, (x, y), (x + w, y + h), (188, 20, 125), 3)用方框将人脸框住,并用cv2.putText(img, emo, a, cv2.FONT_HERSHEY_SCRIPT_COMPLEX,www_s, (255, 200, 155), thickness=www,lineType=1)函数将识别出的表情类别写在方框下方,把7种表情的比例用柱状图表示出来。遍历文件夹所有图片进行识别。最终效果展示如下图3-3-8与图3-3-9:图3-3-8 识别实例图1图3-3-9 识别实例图23.4本章小结表情识别的技术原理与和实现原理具体流程如下图3-4-1:图3-4-1 表情识别具体流程图经过测试与诸多fer2013模型的测试对比发现,netural表情最多,happy,surprise 两类表情识别准确率相对较高,而对 angry,fear,sad类表情识别准确率较低,因为他们都是以皱眉,抿嘴等一系列的动作来辨别表情的,不利于相互之间做明显区分。如下表3-2所示:表3-2测试结果angrydisgustfearhappysadsurpriseneutralangry0.6820.0220.16990.01120.14230.01540.1122disgust0.1170.66920.06910.00250.01440.01890.0087fear0.0870.01970.6520.00340.09820.05840.0031happy0.3050.00250.04650.87660.01550.01560.1579sad0.03150.07090.0520

    注意事项

    本文(基于Tensorflow的人脸表情识别算法研究.docx)为本站会员(温桑)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开