当前位置: 首页 > news >正文

YOLOv5至YOLOv12升级:石头剪刀布手势识别系统的设计与实现(完整代码+界面+数据集项目)

摘要:面向人机交互与智能终端应用,构建一个高精度、可部署的石头剪刀布手势识别系统具有现实价值。本文围绕“YOLOv5 至 YOLOv12 的升级与工程化落地”展开,系统性给出从数据集构建到界面部署的完整实现路径,并提供可复现的代码与资源包。算法层面,以 YOLO 系列为主干完成手势目标的检测与类别判别,结合手势小目标、形变强、遮挡与光照变化等场景特性,给出训练与推理流程、关键超参数与推理后处理的工程细节;同时对 YOLOv5–YOLOv12 多版本模型进行对比实验,利用 mAP、F1、PR 曲线与训练曲线等指标评估不同版本在精度、速度与参数规模之间的权衡。系统层面,采用 PySide6 构建可交互的桌面端界面,实现图片/视频/摄像头多源输入、实时检测结果可视化、置信度与 IoU 调节、类别统计与结果导出等功能,并通过 SQLite 设计登录注册与用户数据持久化机制,使实验复现、模型切换与结果管理形成闭环。最终,本文给出完整项目代码、可运行界面与数据集资源,为手势识别的学习与应用开发提供可直接迁移的工程参考。

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷

项目介绍地址:https://my.feishu.cn/wiki/OWqVwMWCjihDRMk9bSQcoFKanDJ

功能效果展示视频:YOLOv5至YOLOv12升级:石头剪刀布手势识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集


@

目录
  • 1. 前言综述
  • 2. 数据集介绍
  • 3. 模型设计与实现
  • 4. 训练策略与模型优化
  • 5. 实验与结果分析
    • 5.1 实验设置与对比基线
    • 5.2 度量指标
    • 5.3 结果与讨论
  • 6. 系统设计与实现
    • 6.1 系统设计思路
    • 6.2 登录与账户管理
  • 7. 下载链接
  • 8. 参考文献(GB/T 7714)

➷点击跳转至文末所有涉及的完整代码文件下载页☇


1. 前言综述

在智能交互由“接触式操作”走向“视觉感知驱动”的过程中,手势识别因其非接触、低学习成本与强语义映射能力,逐渐成为智慧终端、公共交互屏、AR/VR 以及轻量化工业辅助作业中的常用交互入口;其中“石头剪刀布”作为三类静态手势的典型极简场景,既能覆盖手部目标定位、类别判别与实时反馈等关键链路,也非常适合作为从算法到系统落地的标准化案例来检验工程完整性与可复现性。1

表1给出了视觉手势识别在“检测—识别”链路上的常见技术路线及其与公开数据集/任务形态的对应关系,便于后续将本文系统的设计选择放回到更大的研究谱系中进行对照与取舍。1

表1 视觉手势识别相关研究路线与代表性对比(面向“石头剪刀布”任务的归纳)

研究方向/范式 代表方法(示例) 常用数据集/任务形态 主要优势 局限与改进点(面向石头剪刀布)
传统分割与特征分类 肤色/背景分割 + HOG/SIFT + SVM 小规模静态手势、受控背景 实现门槛低、可解释性较强 对光照/肤色/背景变化敏感;多场景泛化弱,难以稳定实时
两阶段检测范式 RPN + RoI 分类回归(Faster R-CNN 等) 需要较高定位精度的检测任务 定位精度高、对小目标更友好 推理链路更长,端侧实时性压力更大;工程部署更重
一阶段检测范式 密集预测(YOLO/SSD 系) 实时检测与交互式应用 速度与精度折中良好,适合实时 UI 联动 需处理尺度、遮挡与“相似手型”导致的边界混淆
时空建模(动态手势) 3D CNN/CTC/LSTM 等 NVGesture 等多模态动态手势 能表达时序演化与过渡动作 数据与标注成本高;对本文静态三分类属“过拟合式复杂”
视频级分类(非检测) 2D/3D CNN 对整段视频分类 Jester 等视频手势 实现简单(不显式框选) 难以在 UI 中给出可解释定位;对背景变化更敏感
大规模静态手势数据驱动 大规模图像级手势分类/检测 HaGRID 等静态手势库 覆盖人群与场景更广,利于泛化 类别定义与本文三类不一致;需要迁移与再标注/重采样
轻量化与端侧友好改造 Tiny/轻量 backbone/剪枝量化 嵌入式/移动端场景 速度快、算力友好 精度易受损;需通过数据增广与损失设计弥补能力下降
注意力机制增强的实时检测 注意力中心架构(新一代 YOLO) 兼顾精度与实时 在复杂背景下的表征能力更强 注意力带来计算开销,需要结构与推理优化协同

从方法演化来看,早期视觉手势识别往往依赖背景建模与手工特征,典型做法是先做手部区域分割,再用梯度方向直方图等描述子配合分类器完成判别,但其对光照、肤色分布与背景纹理的敏感性,使得跨场景鲁棒性很难保证。2 随着深度学习检测框架成熟,研究逐步转向“先检测手部、再识别类别”的显式建模,其中两阶段检测以候选区域机制获得较高定位精度,但实时交互场景常受制于推理链路长度与部署复杂度。3 相比之下,一阶段检测将定位与分类统一为密集预测问题,在速度与精度的折中上更贴近实时交互系统的工程诉求,也为“摄像头—推理—界面反馈”的闭环提供了更稳定的延迟上界。4

YOLO 系列的持续迭代,使其逐渐从“可用的实时检测器”走向“可部署的工程底座”:例如 YOLOv4 系统化整理并验证了多种训练与结构细节,在不显著牺牲速度的前提下提升了通用检测精度,为后续版本的工程实践提供了可复用的经验模板。5 YOLOv7 进一步强调训练侧的可迁移“freebies”,在多速度区间内取得具有代表性的效率优势,使其在轻量化与实时应用中仍具竞争力。[6] 进入近两年,YOLOv9 通过可编程梯度信息等机制讨论信息瓶颈问题,并提出轻量网络结构以提升参数利用率,体现出从“堆叠结构技巧”向“可解释的训练信号设计”转变的趋势。[7] YOLOv10 进一步将端到端部署中的关键瓶颈(如 NMS 依赖)纳入模型设计,强调在一致的分配策略下实现 NMS-free 的实时检测,从系统落地角度降低了推理后处理对延迟与可移植性的影响。[8] 与学术论文路线不同,Ultralytics 在 YOLO11 的发布中更强调工程化的快速演进与多任务支持,尽管缺少正式论文,但其文档体系在模型使用、导出与部署链路上提供了可直接复现的工程入口。[9] 最新的 YOLOv12 则将注意力机制引入实时检测主干,尝试在保持推理速度的同时获取更强的建模能力,反映出实时检测从“卷积主导”向“注意力增强”的结构迁移趋势。[10]

在数据层面,公开手势数据集呈现出“动态多模态—大规模视频—大规模静态图像”并行发展的格局:NVGesture 强调在线动态手势的检测与分类,并结合时序建模与弱分割训练,为连续输入流的实时交互提供了重要基线。[11] Jester 数据集以大规模视频样本覆盖日常交互动作,适合研究视频级手势理解与时序鲁棒性,但其范式更偏向“整段分类”而非“框级检测”。[12] HaGRID 则在静态图像层面提供了更大规模的手势类别与场景覆盖,为跨人群、跨背景的泛化能力评估提供了更丰富的样本分布。[13] 对于本文聚焦的“石头剪刀布”三分类静态手势,公开数据往往在类别定义、拍摄尺度、手部占比与背景复杂度上与目标应用存在偏差,因此“面向任务的再采样、再标注与分布重构”仍是影响系统可靠性的关键前置工作。

国内相关研究同样呈现出从分类到检测、从单模型到轻量化改造的演进路径,例如有工作将 YOLO 系列用于手势检测,并在轻量模型基础上提出针对性改进以提升特定数据集上的 mAP,为“实时交互 + 轻量部署”的路线提供了可参考的工程证据。[14] 同时,更广义的动作/姿态理解研究也在向图卷积与 Transformer 等结构发展,这类趋势虽然不直接等价于静态手势三分类,但其对时序建模、结构先验与跨场景泛化的讨论,为后续扩展到连续手势或多手协同交互提供了方法论储备。[15]

尽管任务形式简洁,“石头剪刀布”在真实系统中仍会遭遇一组典型难点:其一,三类手势在局部形态上具有强相似性,边界样本(半握拳、手指弯曲过渡)易引发类别混淆;其二,手部尺度随拍摄距离变化显著,遮挡、运动模糊与逆光会放大检测失败率;其三,交互系统对延迟敏感,算法侧的后处理、线程调度与界面渲染常共同决定端到端体验;其四,训练数据往往存在“人物—背景—设备”耦合分布,模型在跨场景迁移时容易出现置信度漂移与误检。围绕这些问题,老思在本文中将以 YOLOv5 至 YOLOv12 的可复现实验为主线,给出一套从数据集构建、模型训练对比到 PySide6 图形界面与推理服务整合的完整实现,并以统一的数据划分与指标体系评估不同版本在精度、速度与部署便利性上的差异。最后,本文还将提供可直接运行的工程代码、界面与数据集组织方式,便于读者在相同任务上复现实验并进一步扩展到更复杂的手势交互场景。
主要功能演示:
(1)启动与登录:系统启动后首先进入登录界面,通过 SQLite 完成账号注册、登录校验与用户配置加载;登录成功后自动切换至主界面,并将该用户的历史检测记录与个性化设置写入独立空间,保证多用户之间的结果隔离与可追溯。
启动与登录界面图
在这里插入图片描述

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面提供统一的输入源切换入口,支持摄像头实时流、视频文件逐帧推理、单张图片快速检测以及图片文件夹的批量推理;推理过程中界面同步显示检测框、类别与置信度,并提供播放控制与结果保存,确保“输入—推理—显示—导出”的交互闭环稳定可用。
多源输入与实时检测演示图
在这里插入图片描述

(3)模型选择与对比演示:系统内置 YOLOv5 至 YOLOv12 的权重加载与热切换逻辑,用户可在界面侧一键切换模型进行同源数据推理,并以统一的阈值设置与可视化风格输出结果,便于直观看到不同版本在误检、漏检与边界定位上的差异;同时可将各模型的统计指标与推理耗时记录到数据库,支撑后续对比分析与复现实验。
模型选择与对比演示图
在这里插入图片描述

(4)新增主题修改功能:为适配不同使用场景与展示需求,系统提供主题切换与外观定制能力,允许在不改动核心推理逻辑的前提下修改界面配色、背景、图标与部分文案样式;主题配置以资源文件与 QSS(Qt Style Sheet)组织,并与用户账号绑定持久化保存,实现“同一套代码,多种界面风格”的可维护扩展。
主题修改功能演示图
在这里插入图片描述


2. 数据集介绍

本文面向“石头剪刀布”静态手势的目标检测任务构建了专用数据集,三类目标分别为 Paper/布Rock/石头Scissors/剪刀(其中 Chinese_name = {'Paper': "布", 'Rock': "石头", 'Scissors': "剪刀"})。老思在数据整理阶段对原始样本进行了统一清洗与规范化处理,重点剔除明显的误采样(严重模糊、不可辨识、重复帧)并统一标注规范,使其满足 YOLO 系列检测框架的训练输入要求。标注采用矩形框对手部区域进行定位并赋予类别标签,导出为 YOLO TXT 归一化格式;训练时图像输入统一调整为 \(640\times640\),以保证不同 YOLO 版本在同一输入尺度下进行公平对比。数据共计 5,229 张,其中训练集 4,178 张、验证集 546 张、测试集 505 张,对应比例约为 79.9% / 10.4% / 9.7%,能够覆盖从拟合到泛化评估的完整流程。
在这里插入图片描述

Chinese_name = {'Paper': "布", 'Rock': "石头", 'Scissors': "剪刀"}

从标注统计结果看(可参考下方的类别统计图与框分布图),三类手势总体较为均衡,但 Rock/石头 的实例量略高于另外两类,这种轻度不均衡会在边界样本(半握拳、手指弯曲过渡)上放大类别混淆风险,因此训练阶段更依赖数据增强与阈值策略来稳定决策边界。框位置分布在图像中心区域更为密集,符合“手势主体居中拍摄”的数据采集习惯;同时框尺度覆盖从小目标到近景大目标的较宽范围,提示模型需要同时兼顾多尺度特征表达与对遮挡、光照变化的鲁棒性。为此,本文在训练时采用了常见的增强策略(如 Mosaic、随机尺度与颜色扰动等),以提升跨场景泛化并减弱背景共现偏差对分类头的干扰。
在这里插入图片描述

📊 数据集规格说明 (Dataset Specification)

维度 参数项 详细数据
基础信息 标注软件 LabelImg
标注格式 YOLO TXT (Normalized)
数量统计 训练集 (Train) 4,178 张 (79.9%)
验证集 (Val) 546 张 (10.4%)
测试集 (Test) 505 张 (9.7%)
总计 (Total) 5,229 张
类别清单 Class ID: 0 Paper (布)
Class ID: 1 Rock (石头)
Class ID: 2 Scissors (剪刀)
图像规格 输入尺寸 640 * 640
数据来源 混合数据集 / 实地拍摄 / 公开素材截帧(人工清洗)

3. 模型设计与实现

本项目面向“石头/剪刀/布”三类手势的实时识别需求,选择检测范式而非纯分类范式:系统直接在图像中定位手部目标并给出类别,从而在多手同框、遮挡、尺度变化与复杂背景下仍能保持稳定输出。老思在工程实现上将“模型推理”抽象为统一的 Detector 处理层:上层 PySide6 只负责输入源调度与界面渲染,下层根据所选权重自动完成预处理、前向推理与后处理,最终输出检测框、类别(Paper/Rock/Scissors)与置信度,并将统计结果同步到界面与数据库。为保证可复现实验与横向对比,系统默认以 YOLOv12n 作为主模型,同时保留 YOLOv5–YOLOv12 的权重切换入口,用同一套 UI 流程复用不同版本的推理链路。YOLOv12 的文档指出其采用“注意力为中心”的结构设计,并在效率与可部署性之间作了取舍;同时也提醒该模型更适合研究与基准测试场景,部署端可能出现显存开销增大或 CPU 吞吐下降等现象,这也解释了本项目在 UI 中保留多版本回退机制的必要性。(Ultralytics Docs)
在这里插入图片描述

从网络结构上看,YOLO 系列可抽象为“骨干网络—特征融合颈部—检测头”三段式流水线。以 YOLOv5 为例,其骨干采用 CSPDarknet 风格的跨阶段部分连接以降低冗余计算;颈部以 SPPF 扩展感受野并配合 PAN 进行自顶向下与自底向上的多尺度融合;检测头沿三层特征图输出不同尺度的预测(图3-1)。(Ultralytics Docs) 对手势识别而言,多尺度分支的意义在于同时覆盖“近景大手”与“远景小手”,减少因输入距离变化导致的漏检。图3-1展示了一个典型 YOLOv5 检测网络在 640×640 输入下的特征流向与三尺度输出位置,后续 YOLOv8/YOLOv9/YOLOv10/YOLOv12 虽在模块细节上迭代,但“多尺度融合 + 轻量检测头”的主干思路仍然成立。

检测头与建模方式的差异,是 YOLOv5–YOLOv12 代际演进中对工程影响最大的部分。YOLOv5 仍以 anchor-based 预测为主,输出同时包含类别概率与目标存在性(objectness),并在推理阶段依赖 NMS 完成候选框抑制;其总体损失通常写为

\[\mathcal{L}=\lambda_{\text{box}}\mathcal{L}*{\text{box}}+\lambda*{\text{obj}}\mathcal{L}*{\text{obj}}+\lambda*{\text{cls}}\mathcal{L}*{\text{cls}}, \]

其中 \(\mathcal{L}*{\text{obj}}\)\(\mathcal{L}*{\text{cls}}\) 常用 BCE 形式,\(\mathcal{L}*{\text{box}}\) 多采用 IoU 系列回归损失(如 CIoU),用于联合约束重叠度、中心距与长宽比。与之相比,YOLOv8 文档强调其采用 anchor-free 的分离式检测头(分类与回归解耦),在相同输入尺寸下提升了速度—精度折中并降低了对先验框设计的敏感性。(Ultralytics Docs) 这种变化在手势任务中通常表现为:对手部形状与尺度分布更“自适应”,但对训练数据的标注一致性与难例覆盖更敏感,因此本项目在数据集构建阶段强调了清洗与均衡(已在第2节给出分布统计)。

进一步地,YOLOv9 将研究重点落在“信息瓶颈”与梯度可编程传递上,引入 PGI 与 GELAN 等设计以改善深层网络的信息保真与训练稳定性(图3-2)。(Ultralytics Docs) 对工程实现而言,YOLOv9 的关键价值在于:在不显著牺牲速度的前提下,提高了轻量模型的可训练性与有效表征能力,适合在手势这类“类间差异有限、类内变化大”的任务上追求更稳的收敛与更低的漏检率。YOLOv10 则进一步把端到端部署作为核心目标之一,通过一致的“双重匹配分配”实现训练阶段 one-to-many 与推理阶段 one-to-one 的统一,从而在推理端减少或消除对 NMS 的依赖(图3-3)。(Ultralytics Docs) 这会直接影响系统的后处理实现:对于传统版本,Detector 需要执行阈值筛选与 NMS;而对 YOLOv10 的 one-to-one 输出,更接近“直接取高置信度候选”的流程,延迟与抖动更小,UI 的实时体验往往更稳定。

YOLOv12 在上述“端到端与效率”主线之外,将注意力机制推到结构中心。其文档描述了区域化注意力(将特征图划分区域以降低标准自注意力的计算开销)、R-ELAN 聚合与 FlashAttention 等手段,并通过“位置感知的可分离卷积”在一定程度上弥补显式位置编码的缺失。(Ultralytics Docs) 这类注意力设计对手势识别的潜在收益在于:当背景纹理干扰强或手部局部遮挡严重时,全局/长程依赖有机会补足 CNN 局部感受野的不足;但代价是显存与算子开销上升,因此本项目默认选择 YOLOv12n 作为可用的“注意力轻量基线”,并在 UI 中提供 YOLOv8n、YOLOv10n 等更稳健的替代选项,用于不同硬件与帧率目标下的快速切换。

在代码实现层面,模型推理链路被严格拆分为三步:其一是输入预处理,将摄像头帧/视频帧/静态图像统一做 letterbox 缩放到 \(640\times640\),并完成颜色空间转换与归一化(通常映射到 \([0,1]\),再按框架要求进行张量布局);其二是前向推理,根据所选 YOLO 版本加载对应权重并执行 model(img) 得到原始输出张量;其三是后处理,将输出解码为 \((x,y,w,h)\) 与类别分数,并按阈值与(必要时)NMS 得到最终检测集合。为了让 UI“模型切换”不牵动上层逻辑,老思在 Detector 内部用一个版本标记控制后处理分支:anchor-based 走“解码 + NMS”,anchor-free 走“分布回归解码(如 DFL)+ NMS/轻量筛选”,端到端 one-to-one 则直接筛选高置信候选并输出。该设计保证了同一套界面按钮与信号槽可以稳定驱动 YOLOv5–YOLOv12 的推理,同时也为后续加入蒸馏、剪枝或 TensorRT/ONNX 部署预留了接口一致性。


4. 训练策略与模型优化

为了保证 YOLOv5 至 YOLOv12 在同一任务上的对比具有可复现性与可解释性,老思在训练阶段首先统一了实验环境与数据流水线:Python 3.12、PyTorch(CUDA 加速)、单卡 RTX 4090 作为主要算力来源,数据集按 4178/546/505 的 Train/Val/Test 划分固定不变,所有模型均使用一致的输入尺度与增强策略,避免“数据处理差异”掩盖“结构差异”。工程实现上,每次训练固定随机种子并记录关键版本号(CUDA、cuDNN、PyTorch、Ultralytics/各模型仓库 commit),同时将训练日志、最优权重(best.pt)与超参数文件一并归档,确保后续在 UI 端做多模型切换时能追溯到对应的训练配置与性能来源。

在训练流程设计上,本文采用迁移学习作为默认起点:各版本模型优先加载在通用数据集上预训练的权重(如 pretrained=true),然后在手势数据集上进行端到端微调。这样做的动机在于,石头/剪刀/布的类间差异并不依赖某个单一局部纹理,而更像“形状与局部结构组合”的判别问题,预训练权重提供的边缘、角点、纹理与多尺度组合表征能显著缩短收敛时间并降低小数据偏置。微调时通常保持 backbone 与 neck 可训练,但会避免过大的初始学习率冲击已形成的通用表征,因此采用 warmup 逐步升高学习率,随后进入余弦退火或分段下降;以余弦策略为例,可写为

\[lr(t)=lr_0\left[lrf+(1-lrf)\cdot\frac{1+\cos(\pi t/T)}{2}\right], \]

其中 \(T\) 为总训练步数或总 epoch,\(lr_0\) 为初始学习率,\(lrf\) 为最终学习率比例。该策略在检测任务中通常比固定学习率更稳定,特别是在 Mosaic 等强增强存在时能减少后期震荡。

考虑到手势类别高度相似且边界样本多(半握拳、手指弯曲过渡、遮挡),本文将增强与正则化视为“提升泛化的第一优先级”。训练前期启用 Mosaic(并可选配 MixUp/Copy-Paste),通过拼接与重采样扩大目标尺度分布与背景多样性;同时采用 HSV 颜色扰动、随机水平翻转与随机缩放平移,以模拟不同光照、不同拍摄距离与不同视角。为了避免强增强在训练后期导致定位不稳,本文在收敛阶段关闭 Mosaic(close_mosaic=10),让模型在更接近真实分布的样本上细化框回归与类别边界。此处的经验结论是:对“实时交互类”任务而言,后期稳定性往往比极端增强带来的少量 mAP 提升更重要,因为 UI 端的误检抖动会直接影响交互体验。

损失函数层面,各 YOLO 版本虽实现细节不同,但可归纳为框回归损失与分类/置信度损失的加权和。框回归通常采用 IoU 系列(如 CIoU/GIoU)以联合约束重叠度与几何差异;分类与目标性分支多采用 BCE 及其变体。针对三分类任务容易出现的“过置信”问题,老思更倾向于采用轻量的标签平滑(或等价的分类正则项),并在必要时引入 focal-like 的权重调整以抑制易样本主导的梯度,从而提升对难例与遮挡样本的学习强度。训练实现上还会启用 EMA(Exponential Moving Average)权重平滑,其更新可写为

\[\theta_{\text{EMA}} \leftarrow \alpha\theta_{\text{EMA}} + (1-\alpha)\theta, \]

EMA 往往能在验证集上带来更稳定的 mAP 与更平滑的置信度输出,对本项目这种“实时显示 + 连续帧决策”的场景尤为有益。

超参数方面,本文以一套“可直接跑通且利于对比”的默认配置作为基线,并在保持公平的前提下做少量与任务相关的微调。默认设置如下表所示,其中 optimizer=auto 交由框架根据模型规模与数据量自动选择(常见为 SGD/AdamW 变体),patience=50 用于早停以避免过拟合与无效训练开销;对于算力允许的情况,适度增大 batch 或启用 AMP(混合精度)能显著提升吞吐并降低显存压力,但为了多版本对比的一致性,本文原则上只在“显存不足导致无法训练”时才调整 batch,而不随意改变其余关键项。

名称 数值 说明
epochs 120 充分覆盖收敛与后期细化
patience 50 验证集无提升则早停
batch 16 单卡 4090 的稳妥基线
imgsz 640 兼顾小目标与实时性
pretrained true 迁移学习加速收敛
optimizer auto 由框架自适应选择
lr0 / lrf 0.01 / 0.01 余弦退火常用组合
momentum 0.937 SGD 类优化器常用设置
weight_decay 0.0005 抑制过拟合、提升泛化
warmup_epochs 3.0 保护预训练特征、稳定前期
mosaic / close_mosaic 1.0 / 10 前期强增强、后期收敛稳定

在跨版本训练与对比时,本文额外强调“评价口径一致”:推理端统一置信度阈值与 IoU 阈值,输出统一采用同一套可视化样式,避免因 NMS 设置差异造成“看起来更好/更差”的假象;同时记录每个模型的收敛速度、最优 epoch、以及在 Val/Test 上的 mAP 与 F1 变化趋势,用以判断差异来源是“优化更充分”还是“结构表达更强”。最后,在系统落地侧(PySide6 实时检测)还会进行推理优化:启用 GPU 推理、按需控制输入帧率与 UI 刷新频率,并在可部署需求明确时导出 ONNX/TensorRT 以降低端到端延迟,使训练得到的精度收益能够在实时交互中稳定兑现。


5. 实验与结果分析

5.1 实验设置与对比基线

为验证 YOLOv5–YOLOv12 在“石头/剪刀/布”三类手势检测任务上的有效性与可部署性,本实验采用同一数据划分(Train/Val/Test 固定)与一致的输入尺寸(\(640\times640\)),在相同的阈值策略与后处理口径下进行横向对比。基线模型按“轻量 n 型”和“中等规模 s 型”两组展开:n 型包含 YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n;s 型包含 YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s。推理耗时统计由框架按“预处理/推理/后处理”自动分解记录,设备信息在导出的评估表中标记为 NVIDIA GeForce RTX 3070 Laptop GPU(8GB),因此本文报告的 FPS 更侧重“端到端交互体验”的工程参考而非单纯网络前向速度。

5.2 度量指标

实验采用 Precision、Recall、F1、mAP@0.5(记作 mAP50)与 mAP@0.5:0.95(记作 mAP50-95)作为主指标。其中

\[P=\frac{TP}{TP+FP},\quad R=\frac{TP}{TP+FN},\quad F1=\frac{2PR}{P+R}. \]

mAP 以类别 AP 的均值衡量整体检测性能;当 IoU 固定为 0.5 时得到 mAP50,而 mAP50-95 则在多个 IoU 阈值上平均,更强调定位精度与框回归稳定性。由于系统面向实时交互,本文同时记录单帧总耗时 \(T_{\text{total}}\)(预处理+推理+后处理)与 \(FPS=1000/T_{\text{total}}\),用于评估不同模型在“精度—延迟”之间的折中。

图5-1 :F1-Confidence 曲线
在这里插入图片描述

从图5-1可见,F1 在较宽的置信度区间内维持高位平台,并在 conf≈0.667 处取得全类 F1≈0.94 的峰值;当置信度继续抬高至接近 1.0 时,F1 快速下降,反映出 Recall 的急剧损失。对桌面端实时检测而言,这一曲线直接支持将 UI 的默认 conf 设定在 0.6–0.7 区间:既能抑制低阈值带来的误检抖动,也不至于因过严筛选造成漏检。

5.3 结果与讨论

图5-2 :PR 曲线
在这里插入图片描述

由图5-2可见,三类手势(Paper/Rock/Scissors)的 PR 曲线整体贴近左上角,说明在常见阈值范围内 Precision 与 Recall 可以同时保持较高水平;但在 Recall 逼近 1 的末端,Precision 出现明显下滑,通常对应两类情况:其一是边界手势(例如“半握拳”“剪刀张开不足”)造成类间混淆,其二是复杂背景/遮挡下产生的弱置信候选被纳入统计。该现象意味着系统若追求极限召回(如把 conf 设得很低)会显著放大误检,需要在 UI 中通过阈值滑条给用户留出可控空间。

图5-3 :训练过程曲线
在这里插入图片描述

图5-3显示训练过程整体收敛平稳:分类损失与回归相关损失持续下降,Precision/Recall 迅速上升后进入平台期;mAP50 在前若干 epoch 内快速增长并趋于饱和,而 mAP50-95 的上升更缓慢,符合“先学会检出、再学精定位”的典型规律。对本任务而言,mAP 指标在中前期已接近上限,后期训练更多是在细化定位与稳定置信度分布,这也解释了为什么早停策略或缩短 epoch 往往不会显著损失 mAP50,但可能对 mAP50-95 与视频流稳定性有影响。


5.3.1 n 型模型对比(轻量实时优先)

图5-4 :n 型 F1 与 mAP50 柱状对比
在这里插入图片描述

结合图5-4与表5-1,n 型模型在该数据集上整体差距并不大,F1 约落在 0.927–0.950,mAP50 约落在 0.942–0.966,表明任务难度相对可控,主要挑战集中在少量难例与跨场景泛化。就精度而言,YOLOv10n 取得最高 F1=0.950,其 Precision 与 Recall 均较为均衡;YOLOv9t 取得最高 mAP50=0.966,但推理时间显著增加,说明其在该实现与硬件组合下更偏“精度优先”。从工程角度更关键的是后处理开销:YOLOv10n 的 PostTime≈0.63 ms 明显低于多数版本(约 1.3–1.4 ms),与其端到端/弱 NMS 依赖的设计倾向一致,落到 UI 实时显示时通常意味着更小的延迟抖动与更稳定的帧率。

图5-5 :n 型 mAP50 随 epoch 变化(收敛速度与稳定性)
在这里插入图片描述

图5-5表明各 n 型模型在训练早期均能快速拉升 mAP50,并在约 20 个 epoch 左右进入平台期,随后提升趋缓。曲线间的差异主要体现在“早期震荡幅度”与“平台期上限”,这通常与优化器动态、增强强度以及结构对小目标/形变的表达能力相关。对于手势这种形状主导、背景多样的任务,收敛后的细微差距往往更多来自难例处理(遮挡、过曝、动作过渡)而非主流样本。

图5-6 :n 型平均 PR 曲线(高召回端的差异放大)
在这里插入图片描述

图5-6显示多模型 PR 曲线在中等 Recall 区间高度重叠,差异主要集中在 Recall 接近 1 的尾部:此处精度退化速度决定了“低阈值运行时误检增长有多快”。因此,若系统目标是视频流“尽量不漏检”,更建议选取尾部退化更缓的模型并配合较严格的 conf;若目标是“尽量不误报”,则可在精度相近时优先选择速度更快的版本(如 YOLOv8n),再通过 UI 阈值对齐实际需求。

表5-1 n 型模型定量对比(评估集统计,含端到端耗时)

模型 Params(M) FLOPs(G) P R F1 mAP50 mAP50-95 总耗时(ms) FPS
YOLOv5nu 2.6 7.7 0.951 0.925 0.938 0.954 0.774 10.940 91.408
YOLOv6n 4.3 11.1 0.937 0.940 0.938 0.960 0.786 10.340 96.712
YOLOv7-tiny 6.2 13.8 0.935 0.919 0.927 0.942 0.703 21.080 47.438
YOLOv8n 3.2 8.7 0.952 0.918 0.935 0.953 0.785 10.170 98.328
YOLOv9t 2.0 7.7 0.960 0.920 0.940 0.966 0.796 19.670 50.839
YOLOv10n 2.3 6.7 0.960 0.940 0.950 0.961 0.796 13.950 71.685
YOLOv11n 2.6 6.5 0.964 0.930 0.947 0.959 0.788 12.970 77.101
YOLOv12n 2.6 6.5 0.964 0.925 0.944 0.963 0.789 15.750 63.492

5.3.2 s 型模型对比(精度与定位更关注)

图5-7:s 型 F1 与 mAP50 柱状对比
在这里插入图片描述

s 型模型的整体精度相对 n 型并未出现数量级提升:F1 大多集中在 0.94–0.95 附近,mAP50 约在 0.953–0.963。这种“模型更大但提升有限”的现象,在三分类、目标形态相对固定且数据量适中的任务上较常见——性能瓶颈更可能来自少量难例与数据分布偏差,而非模型容量不足。值得注意的是,若以定位质量为导向,YOLOv12s 的 mAP50-95 达到 0.804,在 s 型组内最高,意味着其在更严格 IoU 阈值下仍能保持较强的框回归精度;对于需要在 UI 上呈现更“贴边”的检测框、或后续要做手部区域裁剪/二次分析的场景,这一点更有价值。

图5-9 :s 型平均 PR 曲线(尾部退化与误检敏感性)
在这里插入图片描述

在图5-9中,多条 PR 曲线几乎重合,说明 s 型组的类别可分性已充分;差异依旧集中在高召回尾部。对系统部署而言,这意味着“选更大模型”并不必然带来更稳的交互体验,反而可能因推理时延增加导致帧率下降;因此更合理的策略是:若追求最高实时性,优先选择 YOLOv8s(FPS≈87.8);若追求更高的整体精度与 mAP50,YOLOv9s 更占优;若追求定位质量(mAP50-95),YOLOv12s 更合适。

表5-2 s 型模型定量对比(评估集统计,含端到端耗时)

模型 Params(M) FLOPs(G) P R F1 mAP50 mAP50-95 总耗时(ms) FPS
YOLOv5su 9.1 24.0 0.965 0.920 0.942 0.955 0.775 12.240 81.699
YOLOv6s 17.2 44.2 0.945 0.944 0.944 0.961 0.784 12.260 81.566
YOLOv7 36.9 104.7 0.938 0.936 0.937 0.953 0.726 29.520 33.875
YOLOv8s 11.2 28.6 0.957 0.928 0.942 0.958 0.789 11.390 87.796
YOLOv9s 7.2 26.7 0.954 0.940 0.947 0.963 0.799 22.170 45.106
YOLOv10s 7.2 21.6 0.953 0.939 0.946 0.961 0.795 14.190 70.472
YOLOv11s 9.4 21.5 0.944 0.944 0.944 0.961 0.795 13.470 74.239
YOLOv12s 9.3 21.4 0.955 0.931 0.943 0.963 0.804 16.740 59.737

小结(面向系统落地的选择建议):若以“桌面端实时交互”为第一目标,n 型中的 YOLOv8n 提供最高 FPS 且精度接近最优;若希望在误检与漏检之间取得更均衡的 F1,YOLOv10n 更稳,并且后处理更轻有利于降低实时抖动;若强调定位质量或后续要做更精细的 ROI 处理,s 型中的 YOLOv12s 在 mAP50-95 上的优势更值得保留。


6. 系统设计与实现

6.1 系统设计思路

本项目的系统实现以“可复现的算法评测”与“可交互的桌面端部署”作为同等重要的目标,因此老思在总体结构上采用分层解耦:界面层负责显示与交互,控制层负责调度与状态管理,处理层负责模型推理与后处理。具体而言,Ui_MainWindow 仅描述按钮、标签、表格与画布等控件布局;MainWindow 作为控制中枢承载槽函数、输入源切换、播放控制、阈值同步、主题切换与状态机维护;Detector 则封装权重加载、推理、NMS/阈值筛选与可视化绘制,并统一输出检测框、类别、置信度与统计信息,使上层 UI 不需要感知不同 YOLO 版本的输出差异。
在这里插入图片描述

在实时性与稳定性方面,系统以 Qt 信号槽机制实现跨层通信,并用线程化策略避免推理阻塞界面刷新:摄像头/视频解码线程持续产出帧,推理线程消费帧并输出结构化结果,主线程只做渲染与轻量状态更新,从而保证窗口拖拽、按钮响应与滑条调参不会因 GPU 推理抖动而卡顿。对输入源的抽象遵循统一接口,图片、文件夹批处理、视频与摄像头均归一为“帧流”,再进入相同的预处理与推理管线,确保测试评估与系统演示在逻辑上完全一致。

工程层面还需要兼顾“多模型切换与对比”。系统默认加载 YOLOv12n,但允许在界面中切换 YOLOv5–YOLOv12 的不同权重文件;切换行为会触发 Detector 的热加载与推理参数重置,同时将模型名、阈值与耗时统计写入 SQLite,便于后续回溯对比。新增的主题功能则以 QSS(Qt Style Sheet)与资源文件组织,允许用户在不影响推理流程的情况下切换配色、背景与图标,并将主题选择与阈值偏好作为“用户配置”持久化,确保下次登录能恢复到上一次的使用状态。

图 系统流程图
在这里插入图片描述

图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。

6.2 登录与账户管理

在这里插入图片描述

登录与账户管理的设计不只是“进系统的一道门”,而是把个性化与数据持久化纳入主检测流程的必要组成:用户在登录时完成身份校验与配置载入,进入主界面后其阈值设置、主题风格、最近使用模型以及历史检测记录都会自动恢复,并且所有导出的结果文件与数据库记录都与 user_id 绑定,从而实现多用户之间的数据隔离与可追溯;当用户修改头像、密码或偏好时,系统立即写回 SQLite 并在下一次启动无缝继承,使界面体验与检测流程在时间维度上保持一致,避免了“模型可用但系统不可用”的常见工程断裂。
在这里插入图片描述


7. 下载链接

    若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

在这里插入图片描述

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷

项目介绍地址:https://my.feishu.cn/wiki/OWqVwMWCjihDRMk9bSQcoFKanDJ

功能效果展示视频:YOLOv5至YOLOv12升级:石头剪刀布手势识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集


8. 参考文献(GB/T 7714)

1 RAHMAN M M, UZZAMAN A, KHATUN F, et al. A comparative study of advanced technologies and methods in hand gesture analysis and recognition systems[J]. Expert Systems with Applications, 2025, 266: 125929.
2 DALAL N, TRIGGS B. Histograms of Oriented Gradients for Human Detection[C]//Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR). San Diego: IEEE, 2005: 886-893.
3 REN S, HE K, GIRSHICK R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[C]//Advances in Neural Information Processing Systems 28 (NeurIPS 2015). Montreal: NeurIPS, 2015: 91-99.
4 REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016: 779-788.
5 BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: Optimal Speed and Accuracy of Object Detection[J/OL]. CoRR, 2020, abs/2004.10934.
[6] WANG C Y, BOCHKOVSKIY A, LIAO H Y M. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors[J/OL]. CoRR, 2022, abs/2207.02696.
[7] WANG C Y, YEH I H, LIAO H Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//LEONARDIS A, RICCI E, ROTH S, et al (eds). Computer Vision – ECCV 2024. Cham: Springer, 2025: 1-21. (LNCS 15089).
[8] WANG A, CHEN H, LIU L, et al. YOLOv10: Real-Time End-to-End Object Detection[J/OL]. arXiv:2405.14458, 2024.
[9] Ultralytics. Ultralytics YOLO11 Documentation[EB/OL]. (2024-09-xx)[2026-02-14].
[10] TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-Centric Real-Time Object Detectors[J/OL]. arXiv:2502.12524, 2025.
[11] MOLCHANOV P, YANG X, GUPTA S, et al. Online Detection and Classification of Dynamic Hand Gestures with Recurrent 3D Convolutional Neural Networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016: 4207-4215.
[12] MATERYZNSKA J, BERGER G, BAX I, et al. The Jester Dataset: A Large-Scale Video Dataset of Human Gestures[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision Workshops (ICCVW). Seoul: IEEE/CVF, 2019.
[13] KAPITANOV A, KVANCHIANI K, NAGAEV A, et al. HaGRID — HAnd Gesture Recognition Image Dataset[C]//Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV). Waikoloa: IEEE/CVF, 2024: 4572-4581.
[14] 王粉花, 黄超, 赵波, 等. 基于YOLO算法的手势识别[J]. 北京理工大学学报, 2020, 40(8): 873-879.
[15] LU J, LI X F, ZHAO B, et al. A review of skeleton-based human action recognition[J]. 中国图象图形学报, 2023, 28(12): 3651-3669.

http://www.jsqmd.com/news/673571/

相关文章:

  • 基于TR-FRET技术的总IgG检测试剂盒在免疫研究中的应用
  • 06华夏之光永存:黄大年茶思屋榜文解法「第10期第6题」全球一张网核心瓶颈:云原生SD-WAN节点选址与路由双路径工程解法
  • 从源码到生产:Convex-Backend 完整编译指南
  • 如何用AI助手快速掌握流媒体下载的终极解决方案
  • YOLOv5至YOLOv12升级:吸烟检测系统的设计与实现(完整代码+界面+数据集项目)
  • SketchUp建模避坑指南:从群组、组件到V-Ray渲染,新手必知的10个高效技巧
  • 别只当键盘用!用BUFF67的8蓝牙通道,打造你的多设备办公桌面
  • Dify私有化部署权限失控危机(某金融客户数据越界事件复盘,含完整审计日志脱敏样本)
  • 如何使用 Laravel-Excel 实现基于数据值的单元格样式变化:完整指南
  • SecretFinder项目贡献指南:如何参与开源社区开发
  • Dify插件生态爆发前夜(2026 LTS版首发实录):3个已上线企业级插件的完整开发手记
  • 别再死记硬背了!用大白话+动图理解PN结的‘内电场’与‘空间电荷区’
  • 终极Outline数据备份策略:保护团队知识库的完整指南
  • 深度解析OpenArk:Windows系统安全分析与逆向工程的瑞士军刀
  • Qt新手避坑指南:QLabel设置超链接后点击没反应?检查这3个地方(含信号槽写法)
  • reFlutter未来展望:AI驱动的智能Flutter逆向分析技术
  • 保姆级教程:用Wireshark抓包分析mediasoup的ICE/DTLS/SRTP握手全过程
  • Unity RTS/TD游戏:从网格数据到动态建造的实战解析
  • Circle部署与优化指南:如何将项目管理应用部署到生产环境
  • 如何在5分钟内开始使用LCM:大型概念模型快速入门教程
  • 告别盲目调试:用串口打印和LED灯,5分钟可视化你的Ra-01S LoRa通信状态
  • 别再傻傻重装软件了!Win7/Win10系统报错‘api-ms-win-crt-runtime-l1-1-0.dll丢失’的终极修复指南
  • Dify金融合规配置全栈解析(含GDPR+《生成式AI服务管理暂行办法》双标对齐)
  • Unity RTS/TD游戏:从网格数据到动态建造的实战架构
  • 【MimiClaw 嵌入式 AI Agent 实战】ESP32-S3 从零搭建多端互联智能体:26天36篇开发记录的全方位踩坑与经验总结
  • kubectl-debug性能优化:如何配置资源限制和启动参数
  • 为什么92%的Java团队卡在Loom响应式配置最后一公里?这份内部调试日志级配置清单请收好
  • 告别客户端混乱!用Mountain Duck把OneDrive、Google Drive都变成电脑本地硬盘(保姆级配置)
  • xrdp终极指南:免费实现Windows到Linux的完美远程桌面连接
  • 打造家庭KTV新体验:3个步骤用UltraStar Deluxe开启免费卡拉OK之旅