基于 YOLOv11 的人脸表情识别系统

一、项目概述

本项目基于 YOLOv11 深度学习模型实现人脸表情的智能识别,提供完整的训练流程与可视化桌面应用。系统支持图片、视频、摄像头三种识别方式,具备用户登录、历史记录、模型管理、指标可视化等功能。


二、数据集

2.1 数据集信息

  • 数据集名称:FER Dataset(YOLO 格式)
  • 配置文件fer-dataset-yolo/loopy.yaml
  • 训练集 :12,271 张图像(fer-dataset-yolo/train/images
  • 验证集 :3,068 张图像(fer-dataset-yolo/test/images
  • 总图像数量:15,339 张

2.2 图片种类与类别

系统识别 7 类 人脸表情:

英文名称 中文名称
Surprise 惊讶
Fear 恐惧
Disgust 厌恶
Happiness 快乐
Sadness 悲伤
Anger 愤怒
Neutral 中性

标注格式为 YOLO 标准格式(归一化坐标:class_id x_center y_center width height),标签文件存放在 train/labelstest/labels 目录下。


三、训练过程与参数

3.1 训练流程

  1. 加载预训练模型(yolo11n.pt
  2. 读取数据集配置 loopy.yaml
  3. 执行 100 轮(epoch)训练
  4. 每 10 轮保存一次检查点
  5. 训练结束后保存最佳权重 best.pt 与最终权重 last.pt
  6. 自动生成损失曲线、mAP 曲线等可视化图表

3.2 主要训练参数

参数 取值 说明
基础模型 YOLOv11n Nano 轻量版
输入尺寸 640×640 图像输入分辨率
训练轮次 100 epochs 总迭代次数
批次大小 16 batch size
优化器 SGD 随机梯度下降
初始学习率 0.01 lr0
最终学习率 0.000199 lrf
动量 0.937 momentum
权重衰减 0.0005 weight_decay
Warmup 轮次 3 warmup_epochs
早停耐心值 20 patience
置信度阈值 0.001 训练时 conf
IoU 阈值 0.7 NMS 用

3.3 训练结果

  • 最佳模型路径fer_yolov11_runs/train_20260121_1241292/weights/best.pt
  • 最终 Precision:80.69%
  • 最终 Recall:76.95%
  • mAP50:84.82%
  • mAP50-95:70.39%

四、可视化图表含义

系统提供多种训练指标可视化图表,存放于 fer_yolov11_runs/train_20260121_1241292/ 目录:

图表文件 含义说明
1_results_overview.png 训练结果总览:训练损失、验证损失、精确率/召回率、mAP 四合一
2_train_vs_val_loss.png 训练损失与验证损失对比,分 Box/Class/DFL 三类
3_learning_rate.png 学习率随 epoch 变化曲线
4_precision_recall_f1.png 精确率、召回率及 F1-Score 曲线
5_map_metrics.png mAP@0.5 与 mAP@0.5:0.95 曲线
6_training_time.png 每轮耗时与累计训练时间
7_all_losses.png 全部 6 条损失曲线汇总
8_final_metrics_summary.png 最终 Precision/Recall/mAP 柱状图
9_convergence_analysis.png 总损失收敛与验证损失 vs mAP50 对比

指标说明

  • Box Loss:边界框回归损失
  • Class Loss:分类损失
  • DFL Loss:Distribution Focal Loss,分布焦点损失
  • Precision:精确率,预测为正例中实际为正例的比例
  • Recall:召回率,实际正例中被正确预测的比例
  • mAP50:IoU 阈值为 0.5 时的平均精度
  • mAP50-95:IoU 从 0.5 到 0.95 步长 0.05 的平均 mAP

五、系统功能

5.1 登录与注册

  • 左右对称布局:左侧为登录/注册表单,右侧为系统介绍
  • 支持用户注册与登录,数据存储在本地 app_data/users.json

5.2 图片识别

  • 支持选择本地图片进行人脸表情检测
  • 左侧展示图片预览(含检测框标注),右侧展示识别结果
  • 结果包含:检测人脸数量、各人脸表情类别、置信度、边界框坐标等

5.3 视频识别

  • 支持选择视频文件(mp4、avi、mov 等)
  • 对视频进行采样帧分析,统计各表情出现次数
  • 结果展示视频总帧数、采样帧数及表情统计

5.4 摄像头识别

  • 实时调用摄像头进行人脸表情检测
  • 左侧显示实时画面与检测框,右侧显示当前帧识别结果

5.5 历史检测记录

  • 查询当前用户的检测历史
  • 展示记录类型、来源、检测数量、时间等
  • 数据存储在本地 app_data/detection_history.json

5.6 模型选择

  • 默认使用最佳权重 best.pt
  • 支持添加其他 .pt 权重文件并切换使用
  • 配置保存在本地 app_data/models_config.json

5.7 指标可视化

  • 展示训练过程生成的各类可视化图表
  • 以标签页形式呈现,便于查看损失、mAP、学习率等指标

六、项目技术栈

技术 用途
Python 3.8+ 主要开发语言
PyTorch 深度学习框架
Ultralytics YOLOv11 目标检测与表情识别模型
PyQt6 桌面 UI 框架
OpenCV (cv2) 图像与视频处理
NumPy 数值计算
Pandas 数据处理
Matplotlib 训练曲线可视化

七、项目结构

复制代码
c114/
├── app_main.py              # PyQt6 主程序入口
├── config.py                # 配置文件(路径、类别等)
├── inference.py              # YOLO 推理模块
├── data_manager.py           # 用户、历史、模型配置管理
├── ui_styles.py              # UI 样式与主题
├── train.py                  # 模型训练脚本
├── plot_metrics.py           # 训练指标可视化脚本
├── plot_results.py           # 基础训练结果绘图
├── README.md                 # 项目说明文档
├── app_data/                 # 本地数据目录(自动创建)
│   ├── users.json            # 用户数据
│   ├── detection_history.json # 检测历史
│   └── models_config.json   # 模型配置
├── fer-dataset-yolo/         # 数据集
│   ├── loopy.yaml            # 数据集配置
│   ├── train/                # 训练集
│   └── test/                 # 验证集
└── fer_yolov11_runs/         # 训练输出
    └── train_20260121_1241292/
        ├── weights/          # 模型权重
        │   ├── best.pt       # 最佳模型
        │   └── last.pt       # 最终模型
        ├── results.csv       # 训练日志
        └── *.png             # 可视化图表

八、运行说明

8.1 环境准备

安装依赖:

复制代码
pip install torch ultralytics PyQt6 opencv-python numpy pandas matplotlib

8.2 启动系统

复制代码
python app_main.py

首次运行会显示登录界面,可先注册用户再登录。登录成功后进入主界面,左侧为导航栏,右侧为功能区域。

8.3 生成可视化图表

若指标可视化页无图表,可先运行:

复制代码
python plot_metrics.py fer_yolov11_runs/train_20260121_1241292/results.csv

图表将保存至训练结果目录,系统会自动加载展示。


九、开发信息

  • 开发作者:Jay
  • 定制联系:vx Jay8059
  • 开发时间:2026 年

相关推荐
2501_947908201 小时前
试了一下 MaiHH Conn
人工智能
byzh_rc1 小时前
[深度学习网络从入门到入土] 含并行连结的网络GoogLeNet
网络·人工智能·深度学习
ICscholar1 小时前
具身智能‘Affordance‘理解
人工智能·学习·算法
yhdata1 小时前
3.6%年复合增速定调!雾化片赛道未来六年发展路径清晰,潜力稳步释放
大数据·人工智能
乾元1 小时前
对抗性攻击:一张贴纸如何让自动驾驶视觉系统失效?
运维·网络·人工智能·安全·机器学习·自动驾驶
读创商闻2 小时前
2026主流商旅平台Top 5测评与选型解析:制造业企业的商旅治理逻辑
大数据·人工智能
天一生水water2 小时前
基于FFT的频域故障诊断
人工智能·算法·智慧油田
宇擎智脑科技2 小时前
OpenClaw:开源多渠道AI个人助手的技术架构与实践分析
人工智能·智能体
码农小韩2 小时前
AIAgent应用开发——DeepSeek分析(一)
人工智能·python·深度学习·agent·强化学习