目录

前言

课题背景和意义

实现技术思路

一、深度学习理论基础

 二、AdaBoost 结合 SVM 算法表情识别

 三、基于 MTCNN 算法的人脸表情识别

实现效果图样例

最后


前言


    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

选题指导: https://blog.csdn.net/qq_37340229/article/details/128243277

大家好,这里是海浪学长毕设专题,本次分享的课题是

🎯毕业设计-基于深度学习的人脸表情识别

课题背景和意义

人脸识别技术是当今学术界以及工业领域持续讨论的前沿课题,表情识别等 先进算法和应用研究成为了计算机识别领域纵向研究更深的方向,在学术界引起 强烈反响,尤其是在医疗与卫生、高端云计算、心理学甚至教育学领域引起极大的反响,在当前的学术界的研究以及工业界的应用中得到广泛关注。 在人类日常沟通交流中,表情是必不可少的因素之一。当双方面对面交流的 时候,人类通过表情传达了非常多的信息,某些信息甚至超过语言沟通的效果, 是人类沟通中的重要信息。 通过有关统计调查表明,人类在彼此的日常工作、学习中,并不是主要依靠 语言进行传递信息,这会颠覆很多人的认知。人脸表情中代表了人类非常多的信 息要素,甚至可能会反映一个人当下的心理,在人类的信息传递过程中占了非常 大的比重。换言之,人们天天对他人展现自己的表情信息,同时也在源源不断的 接收他人的表情信息。 总而言之,人脸表情识别对于人类 的日常生活及人机交互等方面发挥着重要作用,在未来有着非常广阔的应用背景, 研究有重要价值。

实现技术思路

一、深度学习理论基础

神经网络概述

1、神经元模型

在深度学习领域,神经网络又被科研人员称为人工神经网络,人工神经网络是 科研人员提出的一种基本理论模型,这种数学模型是依据自然界的生物神经网络 模型设计,人工神经网络是研究计算机视觉相关课题必不可少的内容之一 。

 深度学习领域的研究人员受生物界的神经网络的神经元的结构原理启发, McCulloch和Pitts于1943年提出了一种人工神经网络的神经元模型(以两人名字首 字母命名为MP模型)

2、感知机

人工神经网络中非常基础的数学模型是感知机模型,这种数学概念模型是由 科研人员在1957年提出的一种非常重要的模型,人工神经网络的神经元的模型、上文提到的MP数学模型非常相似,能够在解决二分类问题上非常有效,在解决复 杂问题的情境中应用的很普遍。

 在上图的感知机模型的输出是由以下函数进行确定:

3、前向传播

在前文已经概括性的介绍了人工神经网络,其中每个人工神经网络的神经元 都与其相连的每个人工神经网络的神经元相互传递信息,那么神经网络的输入数 据就会经过一层层的人工神经网络的神经元。因而神经网络的本质是由输出与输 入确定的方程:𝑓(𝑥) = 𝑌,方程中的系数w(权重)就是接下来神经网络需要训练 的最终理想结果值,训练得到的方程的系数w一旦最终被确定,对于从方程的输入 端的任意一个𝑥𝑖 ,那么将会得到唯一确定的𝑦𝑖。

前向传播图示:

4、Back Propagation(BP)算法

BP(反向传播算法)神经网络具有单一输入、单一输出以及多个隐藏层,在 输入层传入初始信息,然后可以根据隐含层分析相关的运算,最后可以得到一个 唯一确定的输出值,这个输出值与标记值进行差值运算得到一定的误差。当存在 误差的时候,这个误差结果就会通过相反的方向传入输入层。

卷积神经网络基础

与多层感知机相比,卷积神经网络在图像输入时有多种优势,在输入的时候 可以直接调取数字图像,这样能够非常好的解决数据重建过程繁琐步骤以及复杂 功能提取的过程,它的更重要的优势是能够在二维图像处理上。数字图像的关键 信息可以被卷积神经网络主动获取,这些特征信息就包括拓扑结构、颜色、形状 和纹理特征等。

1、输入层

输入层的主要用来输入需要处理的数据,为了使后续图像处理效果更佳出色, 那么将对传入的数据进行处理,为了解决假设条件难以满足的难题,相关的科研人员发现 通过在神经网络中加入归一化操作。归一化最先在数学的统计学上被提出,归一化将传入的数据进行一定量的偏 移或者是缩放一定的尺度。

2、卷积层

为了提取到数据的特征信息,需要将输入数据中的一些潜在的具有关联性信 息进行抽象操作,把数据的潜在的具有相关性的信息抽象画。卷积层具有非常多的卷积单元,其中的卷 积神经网络的所用参数都是根据公式的优化求得的,其中的优化方式就是前文提 到的反向传播算法。进行卷积运算能够获得到输入数据中的不同的特征信息,计算的公式展示如下

 以下图为例展示标准卷积运算过程。卷积运算的卷积核每次滑过原始数字 图像的9个像素,覆盖像素的滑动框总共滑动四次,其运算结果是一个二维数据, 尺寸为2 × 2。对于原始数据尺寸为n的数字图像,通过尺寸为𝑓的卷积运算操作后, 那么最终的输出的数字图像的大小为𝑛 − 𝑓 + 1。

3、激励层

输入层的结果通过卷积层处理以后传入了激励层,激励层能够把上层处理的 结果进行非线性处理,在激励层常见的函数包括:Sigmoid函数、ReLU函数、Tanh 函数等 。

4、池化层

为了可以降低每个特征图具有的维度信息,为了保留更多的关键新。池化层 能够把参数进行缩减,数据量也被大幅度的削减,穿插在彼此连接的卷积层之间, 因此这个过拟合问题,能够得到有效解决,池采样能够有效的处理过拟合带来的问题。

5、全连接层

全连接层是实质是一种能够进行分类的数学模型,其作用在卷积神经网络的 各个部分中。前面讲到的卷积层、激活层、池化层等层具有相似的作用,其主要 作用是将原始的数据传递到隐藏层上的特征空间,而接下来的全连接层就是把得 到的分布式的特征一种映射的方式把样本数据标记到空间中。

一维全连接层:

 二维全连接层:

5、输出层

人工神经网络经常用于处理回归问题,在处理分类等问题也经常使用。根据 不同的问题,采用不同的激活函数。如果为了解决二分类问题,因此从隐藏层传 输到接下来的输出层,经常运用Sigmoid作为激活函数。Softmax计算公式如下:

 二、AdaBoost 结合 SVM 算法表情识别

图像预处理与特征工程提取

1、图像预处理

传入的数字图像会被噪声所干扰,尤其是图像的应用中会被许多不同种类的 噪声干扰。这些噪声并不是由于单一原因造成,比如在传输数字图像的过程中会 产生许多噪声,处理这些产生的噪声很有必要。

采取OpenCV中blur函数去噪,OpenCV内置的blur函数用归一化工具作为 图像的过滤器,能够十分有效的对图像进行模糊,其能够计算出数字图像中所有 像素对应的平均值。

2、特征工程提取

(1)1LBP

特征 LBP算子常用来提取图像中的关键非全部信息的纹理特征,其突出优点是能够 保持灰度不变形,另外旋转不变性的优点也是非常突出。在计算机领域常用的开 源工具如OpenCV中有相对应的接口,OpenCV中同时也有用来识别目标信息、检 测分类的方法。

LBP 计算公式如下:

LBP 计算图示:

(2)LBP 算子改进

上节对LBP算子的基本原理做出了基本的阐释,LBP算子存在覆盖半径小的问 题,它覆盖的区域是一个固定的圆形区域。

对传统的LBP算子改良意义重大,传统的LBP算子经过改良包括的像素数量点 更多,它的范围变成了圆形区域,这个圆形区域的半径为R,因此可以得到P个采 样点在这个圆形区域内,下图为一个5 × 5的邻域:

 由上图标示可知,图中的采样点的颜色为黑色,因此总共采样点的个数为8个, 其中的任意一个的采样点能够根据下面的数学公式得出:

AdaBoost 算法实现人脸识别 

Boosting算法是一种通过持续训练来提高模型对数据的分析能力,进而提高 弱学习器性能。

1955年,科研人员对AdaBoost算法进一步的改良:其一是通过将需要训练的 样本数据重新替换最初的权重数值,训练的数据不使用原有样本,而是使用加权 之后的样本;其二是通过加权方式,这样多个训练之后的弱学习器不是孤立的发 挥作用,而是联合起来形成了一个强大的学习器,代替Boosting算法中采用平均投票机制的做法。

 3 人脸表情数据集

在人脸表情识别技术中,常用的数据集包括JAFFE和CK+。由于论文实验使用上述的两个数据集,因此将对这两个数据集简单介绍。

JAFFE由日本计算机视觉领域的科研人员制作而成,这个数据集是在理想 的实验环境制作而成,由日本的年轻女性在科研人员的相关要求下做出的不同的 人脸表情,由图像采集设备进行捕捉最终制作而成的数据集。

 CK+数据集包括七种表情,制作该数据集有213名参与者进行拍摄,图片序 列总共有593个,这个表情数据库中包含有18到50岁之间的测试人员,其中女性人 员占了一半以上,在这一半以上的女性人群中有81%的是白色人种,还有13%的黑 色人种,其余则为自由组合,以下表格为其数量分布,以及相关的图示如图。

 SVM 实现表情识别

SVM是在特征空间上的一种数学模型,在传统的机器学习领域常处理二分类的相关课题。这种分类器是一种根据间隔最大相关理论为核心,最终实现数据分类。

根 据 以 上 对 SVM 的 相 关 介 绍 , 假 设 样 本 集 𝐷 = {(𝑥1, 𝑦1 ), (𝑥2, 𝑦2 ), … … , (𝑥𝑚, 𝑦𝑚)},然后将D进行训练,其中𝑦𝑖 ∈ {−1, +1},因此,这种分类的输出数据是 最稳定的。分类的过程如下图中的粗线部分所示,其中的支持向量是图中圈示的 点。

分离超平面过程图示:

 三、基于 MTCNN 算法的人脸表情识别

通过相关的方法检测到人脸区域以后,一般将识别到的人脸区域进行对齐工 作。传入的数字图像中的人的脸形因为其位置、方向等不同。能够把不同方向的 图像进行下一步的操作,因此把识别到的人的脸形纠正到正确的方向。通过识别 出的图像中人脸的关键信息点,把这些关键点通过一系列的变换就行纠正到正确 方向,这样就能够消除位置方向等误差。

人脸识别算法研究

1、Dlib 方法

Dlib是在计算机视觉的工具库中常用工具,这个工具库里面包含了许多封装好 的深度学习算法。对于计算机视觉开发者而言使用方便,在编写相关的程序时只 需导入头文件即可实现其功能,其另外一个优势在于无需安装其他依赖库。

2、Haar+AdaBoost 方法

Haar+AdaBoost是计算机开源视觉库OpenCV中封装好的算法,在前文中已经 具体的讲述了两个算法的基本原理,此处不再赘述。两个算法在OpenCV中调用方 便,配合使用能够非常有效的进行人脸识别,是人脸识别领域常用的算法,在下 文中两个算法结合使用,为了表述方便以OpenCV进行代替。

3、MTCNN 算法研究

MTCNN由具有不同作用的子网络组成。第一个网络为P-Net,与第一个网络 相连的为R-Net,最后一个网络为O-Net。三个不同的网络各自实现的功能也是不 同的,其检测的准确度也是不同的,三个网络进行组合能够实现大致检测到精确 检测的目的。

由于MTCNN包括不同的卷积神经网络,其具体分工也是不同的。具体如图所示。

 通过P-Net网络,能够在原始图像上产生待选框区域。原始图像经过P-Net的检 测,在图像金字塔的的某些区域进行了人脸识别,这个区域是尺度不同的数字图 像的尺寸为12 × 12的方形区域内。P-Net 网络结构示意图:

R-Net紧连上一层的网络,从对P-Net的分析中,可以得出P-Net的检测是相对不够准确的。所以可以达到精确的目的,使用R-Net对P-Net的输出结果进行进一步的处理优化。R-Net 网络结构示意图:

 R-Net输出的结果最终被缩放到统一到尺寸为48 × 48 × 3的区域内,然后将上 述结果输入到最终的O-Net网络中。实质上三个网络的结构类似,与P-Net网络不同 的是输出了关键点的位置,O-Net的传入的尺寸为48 × 48 × 3,其运行的结果具有 P个坐标数据,其中的坐标指的是边界框,以及关键点的方位数据。O-Net 网络结构示意图

实现效果图样例

人脸表情识别:

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

最后

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐