当前位置:首页 » 《随便一记》 » 正文

毕业项目:基于yolov8的人脸表情检测识别系统(Python+卷积神经网络)

3 人参与  2024年12月27日 18:01  分类 : 《随便一记》  评论

点击全文阅读


文章目录

概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YOLOv8 概述简介 ? 四、模型训练步骤? 五、模型评估步骤? 六、训练结果?完整代码 总结

往期经典回顾

项目项目
基于yolov8的车牌识别系统基于yolov8/yolov5的钢铁缺陷检测系统

概要

    随着5G时代的到来,我们正迈入一个万物互联的智能世界。伴随着这一进程,各类AI算法深度学习神经网络不断涌现,同时,低功耗、高性能的智能芯片逐渐进入市场。这些技术的快速迭代和发展,加速了智能设备在日常生活中的普及应用。如今,人脸识别技术已经广泛融入社会生活的方方面面,而人脸表情识别作为其中的重要分支,也成为了研究的热点方向

    人脸表情识别教育、智能医疗、人机交互等领域具有广阔的应用前景。人脸表情是面部器官和肌肉动作共同作用下的表现结果。心理学研究表明,人脸表情不仅仅限于基本的高兴、悲伤、平静等,还包括许多复杂的复合表情,比如惊喜(高兴+惊讶)紧张(恐惧+焦虑)等。随着社会的智能化进程加快,人脸表情识别技术的应用场景将更加广泛。因此,当前急需一种识别效果好、应用价值高的人脸表情识别系统,以满足各类智能化需求。

关键词:人脸表情;深度学习;特征融合;注意力机制;卷积神经网络

在这里插入图片描述

一、整体资源介绍

项目中所用到的算法模型和数据集等信息如下:

算法模型:
    yolov8yolov8 + SE注意力机制

数据集:
    网上下载的数据集,格式都已转好,可直接使用。

以上是本套代码算法的简单说明,添加注意力机制是本套系统的创新点

技术要点

OpenCV:主要用于实现各种图像处理和计算机视觉相关任务。Python:采用这种编程语言,因其简洁易学且拥有大量丰富的资源和库支持。数据增强技术: 翻转、噪点、色域变换,mosaic等方式,提高模型的鲁棒性。

功能展示:

部分核心功能如下:

功能1: 支持单张图片识别功能2: 支持遍历文件夹识别功能3: 支持识别视频文件功能4: 支持摄像头识别功能5: 支持结果文件导出(xls格式)功能6: 支持切换检测到的目标查看

功能1 支持单张图片识别

系统支持用户选择图片文件进行识别。通过点击图片选择按钮,用户可以选择需要检测的图片,并在界面上查看所有识别结果。该功能的界面展示如下图所示:
在这里插入图片描述

功能2 支持遍历文件夹识别

系统支持选择整个文件夹进行批量识别。用户选择文件夹后,系统会自动遍历其中的所有图片文件,并将识别结果实时更新显示在右下角的表格中。该功能的展示效果如下图所示:
在这里插入图片描述

功能3 支持识别视频文件

在许多情况下,我们需要识别视频中的目标。因此,系统设计了视频选择功能。用户点击视频按钮即可选择待检测的视频,系统将自动解析视频并逐帧识别多个目标,同时将识别结果记录在右下角的表格中。以下是该功能的展示效果:
在这里插入图片描述

功能4 支持摄像头识别

在许多场景下,我们需要通过摄像头实时识别目标。为此,系统提供了摄像头选择功能。用户点击摄像头按钮后,系统将自动调用摄像头并进行实时识别,识别结果会即时记录在右下角的表格中。
在这里插入图片描述

功能5 支持结果文件导出(xls格式)

本系统还添加了对识别结果的导出功能,方便后续查看,目前支持导出xls数据格式,功能展示如下:

在这里插入图片描述

功能6 支持切换检测到的目标查看

在这里插入图片描述

二、数据集

该数据集包含7种类别的人脸表情图片,并已按照trainvaltest文件夹分类,且配备了适用于YOLO格式的标注文件,用户可以直接使用。

fer2013人脸表情数据集包含35,886张人脸表情图片,分辨率固定为48×48的灰度图像。数据集划分为:训练集(Training) 28,708张,公共验证集(PublicTest)私有验证集(PrivateTest)各3,589张。

数据集中共有7种表情类别,并使用数字标签0-6进行标注。具体表情及其标签对应关系如下:
0 - anger(生气)
1 - disgust(厌恶)
2 - fear(恐惧)
3 - happy(开心)
4 - sad(伤心)
5 - surprised(惊讶)
6 - normal(中性)
但是,数据集并没有直接给出图片,而是将表情、图片数据、用途的数据保存到csv文件中,如下图所示,
在这里插入图片描述
我提供的都是将其转换好的,可以直接拿来训练。

转换后的数据样式如下:

在这里插入图片描述

三、算法介绍

1. YOLOv8 概述

简介

YOLOv8算法的核心特性和改进如下:

全新SOTA模型
YOLOv8 提供了全新的最先进(SOTA)的模型,包括P5 640P6 1280分辨率的目标检测网络,同时还推出了基于YOLACT的实例分割模型。与YOLOv5类似,它提供了N/S/M/L/X五种尺度的模型,以满足不同场景的需求。Backbone
骨干网络和Neck部分参考了YOLOv7 ELAN的设计思想。
YOLOv5的C3结构替换为梯度流更丰富的C2f结构
针对不同尺度的模型,调整了通道数,使其更适配各种任务需求。
在这里插入图片描述
网络结构如下:
在这里插入图片描述

相比之前版本,YOLOv8对模型结构进行了精心微调,不再是“无脑”地将同一套参数应用于所有模型,从而大幅提升了模型性能。这种优化使得不同尺度的模型在面对多种场景时都能更好地适应。

然而,新引入的C2f模块虽然增强了梯度流,但其内部的Split等操作对特定硬件的部署可能不如之前的版本友好。在某些场景中,C2f模块的这些特性可能会影响模型的部署效率

? 四、模型训练步骤

使用pycharm打开代码,找到train.py打开,示例截图如下:
在这里插入图片描述

修改 model_yaml 的值,根据自己的实际情况修改,想要训练 yolov8s模型 就 修改为 model_yaml = yaml_yolov8s, 训练 添加SE注意力机制的模型就修改为 model_yaml = yaml_yolov8_SE

修改data_path 数据集路径,我这里默认指定的是traindata.yaml 文件,如果训练我提供的数据,可以不用改

修改 model.train()中的参数,按照自己的需求和电脑硬件的情况更改

# 文档中对参数有详细的说明model.train(data=data_path,             # 数据集            imgsz=640,                  # 训练图片大小            epochs=200,                 # 训练的轮次            batch=2,                    # 训练batch            workers=0,                  # 加载数据线程数            device='0',                 # 使用显卡            optimizer='SGD',            # 优化器            project='runs/train',       # 模型保存路径            name=name,                  # 模型保存命名            )

修改traindata.yaml文件, 打开 traindata.yaml 文件,如下所示:
在这里插入图片描述
在这里,只需修改 path 的值,其他的都不用改动(仔细看上面的黄色字体),我提供的数据集默认都是到 yolo 文件夹,设置到 yolo 这一级即可,修改完后,返回 train.py 中,执行train.py

打开 train.py ,右键执行。
在这里插入图片描述

出现如下类似的界面代表开始训练了
在这里插入图片描述

训练完后的模型保存在runs/train文件夹下
在这里插入图片描述


? 五、模型评估步骤

打开val.py文件,如下图所示:
在这里插入图片描述

修改 model_pt 的值,是自己想要评估的模型路径

修改 data_path ,根据自己的实际情况修改,具体如何修改,查看上方模型训练中的修改步骤

修改 model.val()中的参数,按照自己的需求和电脑硬件的情况更改

model.val(data=data_path,           # 数据集路径          imgsz=300,                # 图片大小,要和训练时一样          batch=4,                  # batch          workers=0,                # 加载数据线程数          conf=0.001,               # 设置检测的最小置信度阈值。置信度低于此阈值的检测将被丢弃。          iou=0.6,                  # 设置非最大抑制 (NMS) 的交叉重叠 (IoU) 阈值。有助于减少重复检测。          device='0',               # 使用显卡          project='runs/val',       # 保存路径          name='exp',               # 保存命名          )

修改完后,即可执行程序,出现如下截图,代表成功(下图是示例,具体以自己的实际项目为准。)
在这里插入图片描述

评估后的文件全部保存在在 runs/val/exp... 文件夹下
在这里插入图片描述


? 六、训练结果

我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:
在这里插入图片描述
   如果大家对于上面生成的这些内容(confusion_matrix.png、results.png等)不清楚是什么意思,可以在我的知识库里查看这些指标的具体含义,示例截图如下:

在这里插入图片描述

?完整代码

   如果您希望获取博文中提到的所有实现相关的完整资源文件(包括测试图片、视频、Python脚本、UI文件、训练数据集、训练代码、界面代码等),这些文件已被全部打包。以下是完整资源包的截图

在这里插入图片描述

您可以通过下方演示视频视频简介部分进行获取,获取位置看下方图片文字:

演示视频:
基于深度学习的人脸表情检测系统(v8)

总结

本文介绍的基于深度学习的人脸表情识别系统,通过引入SE注意力机制等创新点,有效提升了表情识别的精度和系统的稳定性。SE注意力机制能够为模型分配更合适的特征权重,使其更敏锐地捕捉到面部细微表情变化,从而增强模型的识别能力。

系统基于YOLOv8等先进的目标检测框架,实现了高效快速的人脸定位与表情分类,使得在各种复杂场景下,系统依然能够保持高效的检测速度和识别准确率。通过结合YOLOv8的强大检测能力SE模块的特征优化,表现出了良好的泛化能力和稳定性。


点击全文阅读


本文链接:http://zhangshiyu.com/post/207879.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1