基于深度学习YOLOv5模型的人脸表情分类方法设计_第1页
基于深度学习YOLOv5模型的人脸表情分类方法设计_第2页
基于深度学习YOLOv5模型的人脸表情分类方法设计_第3页
基于深度学习YOLOv5模型的人脸表情分类方法设计_第4页
基于深度学习YOLOv5模型的人脸表情分类方法设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1引言.........................................................................................................................1

1.1项目背景..................................................................................................1

1.2Python简介.................................................................................................2

1.2.1Pytorch简介....................................................................................2

1.2.2PyCharm简介....................................................................................2

1.2.3Python第三方库简介......................................................................2

2需求分析.................................................................................................................3

2.1可行性需求分析......................................................................................3

2.2数据集采集功能分析..............................................................................3

2.3人脸表情分类关键技术分析..................................................................4

2.3.1Yolov5网络结构的简介..................................................................4

2.3.2输入端...............................................................................................4

2.3.3主干网络(Backbone)...................................................................5

2.3.4Neck...................................................................................................5

2.3.5输出端...............................................................................................5

3数据采集.................................................................................................................5

3.1数据集需求分析......................................................................................5

3.2数据集获取分析......................................................................................6

3.3数据集获取..............................................................................................7

4数据集处理.............................................................................................................7

4.1数据预处理..............................................................................................8

4.2读取训练集,验证集与测试集..............................................................8

4.3查看数据集大小......................................................................................9

5模型构建及评估分析...........................................................................................10

5.1模型构建................................................................................................10

5.1.1模型网络结构.................................................................................10

I

湖南商务职业技术学院毕业设计

5.1.2创建模型.........................................................................................11

5.2模型编译................................................................................................12

5.2.1优化器设置.....................................................................................12

5.2.2损失函数设置.................................................................................13

5.2.3模型训练设置.................................................................................14

5.2.4学习率调优.....................................................................................15

5.2.5batch_size设置............................................................................15

5.2.6Epoch设置......................................................................................16

5.3模型部署................................................................................................16

5.3.1系统前端设计.................................................................................17

5.3.2系统效果展示以及分析.................................................................17

6小结.......................................................................................................................19

参考资料.....................................................................................................................20

II

湖南商务职业技术学院毕业设计

基于深度学习YOLOv5模型的人脸表情分类方法设计

1引言

随着人工智能技术的发展,人脸表情识别已成为计算机视觉领域的探讨热

点之一。人脸表情分类是指根据人脸图像中表情的特征,将其归为某一类别,

如开心、生气、惊讶等。该技术在实际应用中有着广泛的应用,如人机交互、

智能客服、情感分析等方面。

传统的人脸表情分类方法多基于人工特征提取和机器学习算法,存在一定

的局限性。而深度学习模型在人脸表情分类任务中具有很好的性能,尤其是基

于目标检测算法的YOLOv5模型,其快速的检测速度和高精度的表情分类效果,

使其在实际应用中具有很大的优势。

本文旨在基于YOLOv5模型的人脸表情分类方法,并针对该方法的特点进行

优化。首先,介绍了人脸表情识别技术的现状及发展趋势。其次,详细介绍了

YOLOv5模型的结构和原理,并了其在人脸表情分类中的应用。最后,对基于

YOLOv5模型的人脸表情分类方法进行实验验证,对比传统方法的性能表现,证

明了该方法在表情分类任务中具有较高的准确率和鲁棒性,具有一定的应用前

景。

1.1项目背景

人脸表情识别已经成为一个备受关注的方向,人脸表情识别技术的应用非

常广泛,如人机交互、智能客服、情感分析等领域。在这些领域中,人脸表情

分类技术是非常重要的一部分。

传统的人脸表情分类方法多基于人工特征提取和机器学习算法,例如支持

向量机(SVM)、k近邻(k-NN)等。然而,这些方法存在一定的局限性,如手

动提取特征难以适应不同数据集和环境,分类效果受到限制等。因此,深度学

习方法逐渐成为人脸表情分类领域的主流方法。

深度学习模型在人脸表情分类任务中具有很好的性能,例如卷积神经网络

(CNN)、循环神经网络(RNN)等。目标检测算法YOLO(YouOnlyLookOnce)

因其快速的检测速度和高精度的表情分类效果,也被广泛应用于人脸表情分类

任务中。YOLOv5模型是YOLO系列中最新的版本,其在速度和精度方面均有了很

大的提升。

1

湖南商务职业技术学院毕业设计

1.2Python简介

Python在1989由GuidoRossum创造。

2005-2012年,Google大量使用python,这推进了python的一大发展。

由于云计算以及AI都使用到python,加上入门低、开发效率高,促使

python进一步发展。

今天,它已经发展成为一种广泛使用的高级编程语言。它可用于各种领域,

如网络爬虫、机器学习、数据分析和可视化,其特点是开源(免费)、库丰富、

易于学习、可移植性强等。

1.2.1Pytorch简介

PyTorch是一个以动态变化为基础的深度学习的框架,用于试验、测试,

探讨和创造。具有创建动态图的功能,有利于动态,生动地描述变化。并且

与python有着非常紧密的联系。PyTorch具有以下特点:可以用动态图表示

代码。和Python编程语言有着紧密,不可分割的联系。高级和低级API的

融合。可以在多个GPU上直接实现,能够为导出和生产构建无Python模

型表示。使用Caffe框架扩展到海量数据。PyTorch的核心优势在于快速原

型实验和测试想法的能力,另外具备将实验转化为生产性、可部署资源的可能

性的能力。PyTorch是一种理解深度学习概念的相对简单的方式。它只需几行

代码即可解决常见的分类问题。

1.2.2PyCharm简介

PyCharm是一种支持多语言编程的集成开发环境,支持像.py文件.css文

件.js文,还持网页.html文件编写。具备许多快捷,高效率的功能,比如代码

跳转,智能提示,版本控制,单元测试,调试,语法高亮等等。使得用户在利

用python进行代码调试,测试的时候效率大幅度提升。除此之外,PyCharm还

提供了一些高级功能,比如支持Django框架下的专业Web开发,支持用户在

Google的基础框架上运行自己的应用程序,Google将会为用户自动提供“服务

器”。

1.2.3Python第三方库简介

requests:最友好的网络爬虫功能库,是Python实现的简单易用的HTTP库,

使用起来比urllib更简洁很多,Python第三方库在使用前要先进行安装。

2

湖南商务职业技术学院毕业设计

Re:正则表达式解析和处理功能库,里面包含了多种字符串匹配的方法。

BeautifulSoup:HTML和XML的解析库,可以对HTML、XML格式进行解析,

从中提取相关信息;还可以对所提供的任何格式进行相关的数据爬取,而且对

它进行树形解析。

NumPy库是Python数据分析的基础,是处理数组的Python库,NumPy库的

数据结构比Python自带的更加高效。

pandas:数据分析并保存为csv文件,python数据分析高层次应用库,还

可以进行数据清洗。

2需求分析

2.1可行性需求分析

1.技术可行性

Python编程语言通俗易懂、是一种动态的面对对象的脚本语言。这让它对

于爬虫领域有着巨大的优势,是当前爬虫的首选语言。本项目便是利用python

采集数据,通过python第三方库进行数据分析、与数据可视化的展示。Tableau

是一款对人操作十分友好的软件,利用它对数据可视化进行展示和分析也十分

便捷。

2.项目可行性

人脸表情分类是近几年一直讨论的话题,可以应用在人脸识别,公安等领

域上,所使用的范围比较广。对于表情识别项目,训练集的容量比较小,训练

时间短并且项目轻易上手,项目实用性强。

3.编译器的选用

编译器选用Pycharm(community版本),Pycharm简单易操作,最重要的是

它有这强大的Anaconda3环境库,较好满足人脸表情识别分类这一项目的实施。

2.2数据集采集功能分析

此次项目的数据集是收集了部分影视剧的演员人脸表情以及一些其他人物

的人脸表情,人脸表情一共分为了六种开心,生气,惊讶,厌恶,悲伤,恐惧

表情。数据清洗后共300条记录,以此尽可能保证数据可靠性。

本次收集了部分影视剧的演员人脸表情以及一些其他人物的人脸表情,主

要获得了以下信息:医疗服务方面,可以通过对病患的人脸情感识别判断其痛

3

湖南商务职业技术学院毕业设计

苦情况,辅助医生进行诊断;交通安全方面,通过对车辆驾驶员进行实时人脸情

感识别,可以在疲劳驾驶和突发情况时及时给予提示;公共安全方面,通过人脸

情感识别可以预测人们的心理变化,从而预防恶性事件的发生;教育方面,可以

通过实时的人脸情感识别来反映学生的学习状态。.

2.3人脸表情分类关键技术分析

2.3.1Yolov5网络结构的简介

YOLOv5网络模型分为四个部分,包括输入、主干网络(Backbone)、Neck

模块和输出。

首先,YOLOv5算法使用卷积神经网络(CNN)从输入图像中提取特征。然后,

YOLOv5算法使用多个检测层来检测图像中的目标。每个检测层都有多个边界框,

每个边界框对应于图像的一个区域。每个领域都有一个置信度和一些预测值(例

如,类别、中心点坐标等)。最后,Y0L0v5算法使用非极大值免疫抑制(NMS)

算法来过滤掉最可能的目标,并分配一个目标边界框和类别。

2.3.2输入端

(1)Mosaic数据增强

概述:Mosaic数据增强是通过随机挑选4张图片并将它们拼接在一起来创

建一个新的合成图像,然后对这个新的合成图像进行数据增强操作,包括翻转、

缩放和色彩增强等,以增加训练集的多样性和鲁棒性

优点:

1、增强了数据类型的多样化。

2、目标个数扩充

3、四张图片拼接在一起变相地提高了batch_size,在进行BN操作时的时

候可以更好的统计均值和方差

缺点:

如果在我们的数据集中,存在着许多的较小的目标。那么Mosaic数据增强

会让原本的数据集的目标变得甚至更少。最终会导致训练模板的泛化能力变差

(2)自适应增强

概述:在yolo算法中,每个不同的数据集都会有不同长度以及宽度的。自

适应增强算法会测算出不同类型数据集最优的锚框值。

优点:自适应能力强,对数据集的处理能力强。

4

湖南商务职业技术学院毕业设计

缺点:训练耗时长,迭代次数不太好设定。

(3)自适应图片的缩放

概述:因为每个数据集中的图片的尺寸大部分都是不同的,所以自适应图

片缩放就是将数据集中的图片统一尺寸。

优点:统一图片的尺寸,有利于快速便捷的计算与检测。

缺点:如果缩放或者填充图片边缘过多,会影响到推理的效率。

2.3.3主干网络(Backbone)

(1)Focus结构:

概述:focus是一种对特征图的切片操作,把图片的宽度和高度的信息合

并到同一维度h,因此高度和度宽都缩小到原来的一半,同一维度h则会扩大到

原来的4倍。

优点:Focus模块设计大部分用来降低每秒浮点的运算次数和提高检测的

效率

缺点:focus某些设备不支持,且不友好,开销很大,另外切片对不齐模型

就容易失败。

2.3.4Neck

概述:采用FPN+PAN,这两种结构用来检出小目标,以及对不同层次的特征

进行融合,尤其是PAN有着下向上的特征金字塔结构,保留了更多的底层位置

特点。

优点:增加了网络特征的融合能力,有利于增强整体特征提取能力。

缺点:性能易损伤。

2.3.5输出端

概述:主要运用损失函数以及非极大值抑制。

优点:得到预测模型以及更新模型参数。

3数据采集

3.1数据集需求分析

打开Google浏览器:找到搜索引擎并且搜索百度照片,进入官网输入关键

字:人脸表情,人脸表情分类,表情识别。数据网址页面如图3-1所示。其URL

5

湖南商务职业技术学院毕业设计

为:同时观察URL,发现URL没有变化。

图3-1数据网址页面

点击鼠标右键,点击检查,调用开发工具。按F12调出开发者工具,刷新

页面,如图3-2。利用全局搜索工具定位所需数据位置,点击开发者工具上面的

Headers字段,如图3-2所示。分析这是个什么请求,发现这个是一个POST请

求,那我们需要寻找它的的fromdata往下翻找,在最后找到了表单数据Form

Data。

图3-2数据网址Headers字段页面

3.2数据集获取分析

定位到我们所需要的数据所在的位置,复制一个表情名称:开心,调出全

局搜索框搜索,点击数据预览Preview,如图3-6,可以看到我们刚才复制的复

制一个表情名称如3-3所示。接下来我们分析他是以什么形式的数据存放的。

显然这是一个json数据。

6

湖南商务职业技术学院毕业设计

图3-3网址数据集分析

3.3数据集获取

打开Google浏览器:找到搜索引擎并且输入网址:

/s/1WS8g3V0UbyAY_5zyXkma8Q?

下载数据集并且保存到当前项目,如图3-4所示:

数据集说明:此数据集是从百度照片通过搜索关键字happy,sad,surprised

通过python爬虫爬取,存在着些许的误差。共120张照片,包含开心,伤心,

难过3类表情,进行统一分类。这些数据集有些照片有手遮挡和其他物体的遮

挡。为了减少python爬虫带来的误差,总共进行训练300次。

图3-4数据集展示

4数据集处理

数据清理是指识别和修复或删除数据集中不正确、损坏、重复或不完整的

数据的过程。这一点很重要,因为它有助于消除可能影响结果和算法的准确性

和可靠性的错误和不一致性。数据清洗发生在数据采集和数据分析之间,数据

录入或采集期间的数据验证等措施可以帮助最小化所需的数据清洗量。数据清

理在确保数据准确性和可靠性方面起着至关重要的作用。

7

湖南商务职业技术学院毕业设计

4.1数据预处理

导入测试集与训练集的相关库。导入测试集所需库如图4-1所示。导入训

练集所需库如图4-1所示:

图4-1数据清洗准备页面

os库提供通用的、基本的操作系统交互功能,是Python标准库,包含几百

个函数,常用的有路径操作、进程管理、环境参数等。可以实现简单的文件夹

和文件操作。

Numpy是一个开源的Python的科学计算库,用于快速处理任意维度的数组。

Numpy支持常见的数组及矩阵的操作。

Torch一直聚焦于大规模的机器学习应用,尤其是图像或者视频应用等领域。

pandas是基于NumPy的一种工具,该工具是为解决数据分析任务而创建的。

4.2读取训练集,验证集与测试集

1.首先将数据集打乱顺序

数据集有人物图片与表情标注图片,先将两者文件捆绑再打乱顺序。这里

我定的比例是7:1:2。通过zip函数捆绑。参考图4-2:

8

湖南商务职业技术学院毕业设计

图4-2数据集打乱示意图

2.再将两个文件分割

图4-3文件分割

3.分别用三个列表储存一下图片和标注文件的元素

图4-4列表存储文件

4.划分好展示:

图4-5数据集划分结果展示

4.3查看数据集大小

1.通过python中shape函数主要用于读取数组维度,通过调用shape可

以获得数组及其对应行列的维度,输入的参数也可以是一个常数,也可以是一

个矩阵。查看训练集测试集验证集,得到了训练集的大小为60000,3;验证

集大小为6000,3;测试集大小为10000,3。如图4-6所示:

图4-6shape函数查看

2.取出训练集内容

9

湖南商务职业技术学院毕业设计

图4-7训练及内容部分展示

5模型构建及评估分析

5.1模型构建

5.1.1模型网络结构

YOLOv5的模型结构可以分为两个主要部分:骨干网络和检测头。

骨干网络:YOLOv5使用了一种称为CSPDarknet53的骨干网络结构,它采用

了CrossStagePartial连接(CSP连接)和残差网络的结构。CSPDarknet53包

括了52个卷积层和1个池化层,其中卷积层采用3x3的卷积核大小,池化层采

用2x2的最大池化操作。骨干网络可以将输入的图像逐层提取特征,提高模型

对物体的表示能力和抗干扰能力。

检测头:YOLOv5的检测头由SPP模块模块组成。SPP模块采用了空间金字

塔池化(SpatialPyramidPooling)的结构,将特征图分别进行不同尺度的池

化操作,并将池化结果拼接起来,以增强模型对不同尺度物体的识别能力。同

时,检测头还包括了最终的预测层,用于输出检测结果,包括检测框的位置和

类别。

5.1.2创建模型

YOLOv5是一个基于PyTorch实现的物体检测模型,由Ultralytics公司开

发。相较于其前身YOLOv4,YOLOv5在模型架构和训练策略上进行了一些改进,

具有更高的检测精度和更快的检测速度。YOLOv5的模型架构主要由骨干网络和

检测头两部分组成。骨干网络用于提取图像特征,而检测头则用于预测物体的

类别和位置。

(1)YOLOv5的骨干网络采用的是CSP(CrossStagePartial)网络,这

是一种新型的卷积神经网络结构,可以在保证准确率的前提下降低

模型的计算复杂度。CSP网络通过将特征图在通道维度上划分成两个

部分,然后将每个部分分别进行卷积操作和残差连接,最后再将它

们合并起来,实现了特征图的跨层连接和部分重用。这种设计能够

提高特征的表征能力,并减少了计算复杂度和内存消耗。以下是实

现代码:

10

湖南商务职业技术学院毕业设计

图5-1导入csp网络结构

(2)在YOLOv5的检测头中,采用的是SPP(SpatialPyramidPooling)结

构和PAN(PathAggregationNetwork)模块。SPP结构能够在不同尺度上对特

征图进行池化操作,并将池化结果合并起来,从而提高检测精度。PAN模块则能

够对特征图进行跨层连接和上下文信息聚合,进一步提高特征表征能力。以

下是实现代码:

图5-2导入SPP结构

YOLOv5的输出层包括了类别预测和边界框预测两部分。对于每个物体,模

型会预测出其类别和位置信息,然后根据置信度和类别得分对其进行筛选和排

11

湖南商务职业技术学院毕业设计

序。YOLOv5的输出层包括了类别预测和边界框预测两部分。同时,YOLOv5还采

用了一些技巧,如类别特征空间转换(CSP-SWT),进一步提升了模型的检测能

力和泛化性能

图5-3导入CSP结构模型

5.2模型编译

5.2.1优化器设置

YOLOv5使用的是一种称为AdamW的优化器。AdamW是Adam优化器的一种改

进版本,它在Adam的基础上引入了L2正则化项(weightdecay),用于控制模

型的过拟合问题。同时,AdamW还采用了一种称为“warmup”策略的学习率调整

方法,即在训练初期使用较小的学习率,逐渐增加到最大值。

具体来说,YOLOv5中AdamW的超参数设置如下:

学习率(learningrate):初始学习率为0.001,最大学习率为0.01。

动量(momentum):默认为0.937。

权重衰减(weightdecay):默认为0.0005。

批次大小(batchsize):默认为16。

训练周期(epochs):默认为300。

此外,YOLOv5还使用了一种称为“GradualWarmupScheduler”(渐进式学

习率调度器)的学习率调度器,用于在训练初期使用较小的学习率,逐渐增加

到最大值。具体来说,这个调度器在前5个周期内逐渐增加学习率,然后在剩

余的训练周期内使用最大学习率。通过以上优化器设置,YOLOv5可以获得更快

速和更准确的模型收敛和泛化能力。以下是实现代码:

图5-4优化器设置

5.2.2损失函数设置

YOLOv5中使用的损失函数包括三个部分:分类损失、定位损失和obj损失。

具体来说,YOLOv5使用的是一种称为FocalLoss的损失函数,它可以缓解类别

不平衡问题,即背景类别数量远多于前景类别数量的问题。FocalLoss的核心

12

湖南商务职业技术学院毕业设计

思想是降低容易分类的样本的权重,从而更加关注难分类的样本。以下是实现

代码:

图5-5损失函数实现

5.2.3模型训练设置

图5-6模型训练

需要注意的是,在训练YOLOv5模型时,由于模型具有较高的计算复杂度和

内存占用,需要使用高性能计算平台,如GPU或TPU进行训练,同时也需要对

数据集进行合理的采样和增强,以提高模型的鲁棒性和泛化能力。以下是实现

代码:

13

湖南商务职业技术学院毕业设计

图5-7数据集增强训练

5.2.4学习率调优

学习率是训练神经网络时非常重要的超参数之一,它直接影响着模型的收

敛速度和最终的性能。OneCycle是一种优化神经网络训练的方法,它通过动态

调整学习率和动量来加速模型的收敛速度和提高模型的泛化能力,学习率设置

为0.001。OneCycle方法由LeslieSmith于2018年提出,它的核心思想是让

学习率在整个训练过程中呈现一种先快速上升再缓慢下降的“一次函数”形状。

通过测试,该模型学习率为0.001。

图5-8学习率调优

5.2.5batch_size设置

一般来说,如果GPU的内存较小,batch_size需要适当缩小,以避免显存

溢出问题;如果训练数据集较大,则可以适当增大batch_size,以提高训练效

率。此外,对于yolov5模型而言,较小的batch_size可能会导致模型收敛速

度较慢,但是可以提高模型的泛化能力,因为小的batch_size可以增加数据的

随机性,避免过拟合的风险。

一般来说,可以通过实验来确定最佳的batch_size值。可以从较小的值开

始,逐步增加batch_size,直到出现性能下降的情况为止。一般情况下,

batch_size取值在16-64之间比较常见,但具体取值还需要根据具体情况进行

调整。本文的初始batch_size为32。代码展示如下:

14

湖南商务职业技术学院毕业设计

图5-9batch_size展示

5.2.6Epoch设置

Epoch:即一般完成一个完整的epoch之后,去计算模型的损失函数、准确

率之类的数据,最好不要在中间就去计算。一个epoch就是遍历一遍完整的数

据集。该模型设置为50。

图5-10Epoch设置

5.3模型部署

图5-11预测结果展示

进行yolov5模型的测试需要先准备好测试数据集,并对模型进行加载和编

译。在测试过程中,可以使用测试数据集中的图片对模型进行推理,并计算出

模型对于每张图片中物体的检测结果。以下是实现流程:

15

湖南商务职业技术学院毕业设计

(1)加载yolov5模型并编译。

(2)准备测试数据集,并将数据集中的图片按照模型要求进行resize。

(3)对测试数据集中的每张图片进行推理,并输出模型对于每张图片的

检测结果。以下是实现代码:

5.3.1系统前端设计

实现步骤:

一、先进行模型选择,并且在此模型基础上进行图片识别;

二、使用摄像头实时监控人脸表情进行监控;

三、选择一张人脸图片,对其中的表情进行识别。选择一张图片测试识别效

果,如下图所示:

图5-12前端展示图

5.3.2系统效果展示以及分析

通过直方图,我们可以直观的了解人脸表情识别模型的效果,即各类表情

的占

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论