基于 YOLOv8 的手势识别系统

本项目是一套基于 YOLOv8 的手势识别系统,以 18 类手势目标检测数据集 为数据基础,面向十八类手势的定位与识别完成模型训练、评估与系统应用。系统提供 Web 端和 PyQt6 桌面端,支持图片、视频和摄像头输入,并集成结果查看、历史查询、模型管理与训练指标展示,适用于项目设计、课程实践和答辩展示。

一、项目简介

使用十八类手势目标检测数据,完成手部位置与手势类别预测。系统将原图、手势框、坐标明细与人工复核关联,并提供批量任务、手势图鉴、历史备注、收藏与报告导出。

组成 项目内容
数据集 18 类手势目标检测数据集
模型 YOLOv8n
识别任务 十八类手势的定位与识别
实验资料 训练参数、日志、权重与已有图表
应用端 桌面界面与浏览器操作界面

二、系统功能设计

2.1 登录与数据总览

提供登录与注册,侧栏组织图片、批量、视频、摄像头、图鉴、历史、模型和指标。数据总览汇总现有任务,便于进入具体结果。

2.2 图片识别

检测页面展示手势框、类别、置信度、坐标与实际推理耗时,支持原图和标注结果对照,并可导出标注图片与目标明细。

2.3 批量与视频识别

单批最多处理 50 张图片,显示后台进度并支持取消;部分文件失败时保留其他已完成结果。视频通过采样画面检测,可导出标注视频和明细。

2.4 结果复核与收藏

识别完成后可以进行人工标记、填写备注和收藏记录,将模型输出与人工判断分别保留,便于筛选需要再次检查的样本。

2.5 手势图鉴与报告

图鉴展示 18 类真实验证集样图,可送入识别页继续检测;历史支持查询、人工标记、备注、收藏与筛选导出,并提供可打印报告。

2.6 模型与训练指标

模型管理支持既有权重切换和推理参数设置,训练指标读取真实 CSV,展示损失、Precision、Recall 与 mAP,分别标注峰值和最后一轮结果。

三、技术栈

类别 技术及用途
编程语言 Python、JavaScript
深度学习框架 PyTorch
模型训练与推理 Ultralytics YOLOv8
桌面界面 PyQt6
Web 服务 FastAPI
Web 前端 HTML、CSS、JavaScript
图像与视频处理 OpenCV、NumPy
训练日志与离线绘图 Matplotlib;CSV 训练记录
结果保存 Web 独立目录中的账号、任务、历史与结果文件

四、项目结构

项目将训练代码、界面、模型产物和 Web 服务分别组织,主要目录如下:

text 复制代码
c127/
├─ app_data/
├─ config/
├─ data/
├─ detection_app/
├─ exports/
├─ generate_training_report.py
├─ main.py
├─ requirements.txt
├─ runs/
├─ train.py
├─ utils/
├─ 训练指标分析报告.md
├─ 项目说明文档.md
└─ web/
   ├─ backend/  # 服务接口与推理任务
   ├─ frontend/              # 页面与交互
   └─ data/                  # Web 独立运行数据

本文对应的训练日志位于 runs/gesture_train/20260225_163759/results.csv。 数据集按实际配置定位;浏览器端的运行结果独立保存在 Web 数据目录。

五、数据集说明

5.1 数据集与识别任务

项目使用 18 类手势目标检测数据集,面向十八类手势的定位与识别。每个目标由类别与边界框共同描述,模型输出位置及对应预测分数。

5.2 数据规模与划分

以下数量按当前本机配套数据目录统计;所列划分对应本项目的数据组织。

数据划分 图像数量
训练集 34,723
验证集 8,132
合计 42,855

5.3 类别与标注格式

类别编号 类别名称 中文含义
0 call 打电话
1 dislike 不喜欢
2 fist 握拳
3 four 四
4 like 点赞
5 mute 静音
6 ok OK
7 one 一
8 palm 手掌
9 peace 比耶
10 peace_inverted 倒比耶
11 rock 摇滚手势
12 stop 停止
13 stop_inverted 倒停止
14 three 三
15 three2 三变体
16 two_up 二向上
17 two_up_inverted 倒二向上

YOLO 标注按每行一个目标组织:

text 复制代码
class_id center_x center_y width height

中心点坐标与宽高采用相对图像尺寸的归一化值,图像与 TXT 标注按文件名对应。

六、模型训练过程

6.1 训练流程

训练代码由 train.py 组织,先读取图像、类别与划分,再加载预训练模型进行训练,并保留逐轮日志与已有权重。

  1. 按当前数据目录读取图像及对应标签。
  2. 将输入调整为实验配置的尺寸,并应用训练预处理。
  3. 加载基础模型,在对应类别上进行训练。
  4. 在验证阶段计算指标并保存日志及权重。
  5. 使用已有训练图表分析结果,并在系统中加载权重开展推理。

6.2 模型与训练参数

参数 本次记录
基础模型 YOLOv8n
配置轮数 100
日志实际轮数 100
输入尺寸 640 × 640
Batch Size 16
优化器配置 auto
预热轮数 3.0
DataLoader Workers 8

日志最后一行累计耗时为 35,018.00 秒,约 583.6 分钟。 数据增强与学习率调度以本次参数记录和逐轮 CSV 为准;配置值与实际日志中的学习率分别读取。

6.3 训练产物

  • args.yaml:本次实验参数。
  • results.csv:每一轮损失、检测指标和学习率。
  • weights/:已保存的模型权重。
  • 训练图表:原始产物中的曲线、分布或评估图,见第八节。

七、训练结果与核心指标

7.1 最后一轮结果

以下为当前实验 CSV 的第 100 轮验证结果:

指标 日志数值 百分比
Precision 0.98303 98.303%
Recall 0.97932 97.932%
mAP@0.5 0.99158 99.158%
mAP@0.5:0.95 0.9153 91.530%

7.2 各指标最高值

指标 最高值 对应轮次
Precision 0.98742 第 83 轮
Recall 0.98028 第 92 轮
mAP@0.5 0.99158 第 100 轮
mAP@0.5:0.95 0.9153 第 100 轮

单项峰值可能出现在不同轮次;末轮表用于查看同一轮完整结果,峰值表用于查看各指标在本次训练中的最高记录。

7.3 结果分析

本次手势实验在 mAP@0.5 和严格定位指标上均取得较高日志结果。实际应用中仍应结合手部尺度、遮挡与背景差异查看具体预测,并使用复核与备注保存判断。

八、可视化图表说明

以下图片直接采用源码目录已有的训练产物,保留原始图表内容与数值。

8.1 训练结果总览

集中展示训练过程中的多项损失和评测指标,便于结合完整实验查看收敛变化。

8.2 训练与验证损失

展示图中对应的损失项随训练轮次的变化,结合训练与验证结果观察拟合情况。

8.3 检测指标变化

展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。

8.4 检测指标变化

展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。

本项目为个人原创项目,配套源码、模型权重、训练资料和项目说明,可用于毕业设计、课程实践、简历展示及个人学习。有项目成品或定制需求,可以通过主页联系作者。

相关推荐
和芯星通unicore1 小时前
卫星信号消失的地方,定位如何继续?——解密和芯星通DR 航位推算算法
人工智能·算法·gnss·智能驾驶gnss模块
北塔软件1 小时前
从根因分析到协同执行,如何让AI运维真正落地?
运维·人工智能
mit6.8241 小时前
Sonnet 5.5 多了between_tools
人工智能
蜡笔羊驼1 小时前
ModuleNotFoundError: No module named ‘torchvision.transforms.functional_tensor‘
linux·人工智能·python
李航19831 小时前
DeepDraw 网页版
人工智能·python·计算机视觉·ai·ai编程
三掌柜6661 小时前
06|鸿蒙7·端侧AI实战:提示注入,守住指令边界
人工智能·华为·harmonyos
企业数字化笔记1 小时前
一段视频有两次跳投,动作分析为什么要先做事件分段?
人工智能·python·音视频
Elcker1 小时前
Ynuo Agent(依诺) 一 0.3.10 发布:研发透明化,抛弃许愿式编程
人工智能·agent·ai编程
海宇AI1 小时前
零信任架构实战:基于海宇车辆车五项信息核验构建自动化汽配供应链车型分类与发动机型号适配网关
运维·人工智能·架构·自动化