基于YOLOv8的手势识别系统
基于 YOLOv8 目标检测框架的手势识别系统支持图片、视频、摄像头实时检测并提供训练、可视化与历史管理等功能。一、项目概述本系统采用 YOLOv8 作为检测骨干网络对 18 类手势进行识别。系统包含完整的训练流程与桌面端应用支持用户登录、多源检测、结果导出及训练指标可视化。二、数据集2.1 数据格式数据集采用YOLO 格式组织训练集gesture_datasets/train/images/图片、gesture_datasets/train/labels/标注验证集gesture_datasets/val/images/图片、gesture_datasets/val/labels/标注配置文件gesture_datasets/data.yaml2.2 图片数量划分图片数量训练集34,723 张验证集8,132 张合计42,855 张2.3 手势类别18 类序号类别名称序号类别名称0call打电话9peace比耶1dislike不喜欢10peace_inverted倒比耶2fist握拳11rock摇滚手势3four四12stop停止4like点赞13stop_inverted倒停止5mute静音14three三6okOK15three2三变体7one一16two_up二向上8palm手掌17two_up_inverted倒二向上2.4 支持图片格式训练与检测均支持常见图像格式JPG / JPEG / PNG / BMP。三、训练过程3.1 训练流程加载预训练模型默认yolov8n.pt读取gesture_datasets/data.yaml配置的数据集路径按配置进行训练epoch、batch、数据增强等将结果保存至runs/gesture_train/{时间戳}/3.2 运行训练python train.py3.3 训练输出训练完成后在runs/gesture_train/{时间戳}/下生成文件/目录说明weights/best.pt验证集上表现最好的权重weights/last.pt最后一轮权重results.csv每轮训练指标损失、mAP、精确率、召回率等*.png训练曲线与指标可视化图四、训练参数4.1 模型参数参数默认值说明预训练模型yolov8n.ptYOLOv8 nano 版本输入尺寸640×640输入图像分辨率类别数18手势类别数量4.2 训练超参数参数默认值说明epochs100训练轮数batch_size16批次大小patience20早停耐心值无提升则提前结束save_period10每 N 轮保存一次权重workers8数据加载进程数cacheFalse是否缓存图像到内存device自动自动选择 CPU/GPU支持 CUDA4.3 学习率与优化初始学习率约 0.01最终学习率约 0.0002余弦退火动量0.937权重衰减0.0005预热轮数34.4 数据增强Mosaic1.0水平翻转0.5HSV 增强H 0.015、S 0.7、V 0.4平移0.1缩放0.5Auto-augmentrandaugment随机擦除0.4close_mosaic最后 10 轮关闭 Mosaic4.5 推理参数可配置参数默认值说明置信度阈值0.25低于此值的检测框被过滤IoU 阈值0.45NMS 时的 IoU 阈值最大检测数300单张图最大保留检测框数量五、可视化图含义训练完成后会生成多张指标图用于分析训练效果。5.1 训练指标综合图2×3 子图子图含义训练损失box_loss边界框、cls_loss分类、dfl_loss分布焦点随 epoch 变化验证损失验证集上的 box_loss、cls_loss、dfl_loss精确率与召回率Precision、Recall 随 epoch 变化mAP 指标mAP0.5、mAP0.5:0.95 随 epoch 变化学习率学习率调度曲线总损失对比训练总损失与验证总损失对比用于判断过拟合5.2 单图说明图表文件含义训练指标综合图.png上述 6 个子图的综合展示mAP曲线.pngmAP0.5 与 mAP0.5:0.95 曲线训练损失曲线.pngbox_loss、cls_loss、dfl_loss 三条训练损失曲线精确率召回率曲线.pngPrecision、Recall 随 epoch 变化5.3 指标含义box_loss边界框回归损失cls_loss分类损失dfl_loss分布焦点损失DFLPrecision精确率Recall召回率mAP0.5IoU0.5 时的平均精度mAP0.5:0.95IoU 从 0.5 到 0.95 的平均精度六、系统功能6.1 用户与入口用户登录 / 注册密码加密存储默认账号admin/admin123启动入口main.py6.2 图片检测上传单张图片支持 PNG、JPG、JPEG、BMP显示检测框、类别、置信度统计检测总数、各类别数量、平均/最大置信度类别分布表、检测详情表置信度分布直方图导出检测结果图、CSV 明细6.3 视频检测加载视频文件按帧间隔进行检测可配置每帧统计与累计统计导出指定帧6.4 摄像头检测选择摄像头ID 0–10实时检测可开关可配置检测间隔截图保存会话统计保存到检测历史6.5 检测历史查看所有检测记录按类型筛选图片 / 视频 / 摄像头按文件名、类别搜索查看记录详情导出历史为 CSV6.6 模型管理选择并加载模型文件.pt配置置信度、IoU、最大检测数显示模型信息设置持久化保存6.7 训练指标训练曲线损失、mAP、精确率、召回率指标摘要mAP50、mAP50-95、Precision、Recall训练生成图表缩略图展示七、项目技术栈技术版本用途Python3.x运行环境Ultralytics≥8.0.0YOLOv8 训练与推理PyQt6≥6.6.0桌面 GUIOpenCV≥4.8.0图像与视频处理Pandas≥1.5.0数据处理与 CSVMatplotlib≥3.5.0训练曲线与可视化八、项目结构c127/ ├── config/ │ ├── __init__.py │ └── train_config.py # 训练配置epoch、batch、路径等 ├── detection_app/ # 主应用包 │ ├── __init__.py │ ├── config.py # 应用路径与默认配置 │ ├── pages/ # 功能页面 │ │ ├── __init__.py │ │ ├── camera_page.py # 摄像头检测 │ │ ├── history_page.py # 检测历史 │ │ ├── image_page.py # 图片检测 │ │ ├── metrics_page.py # 训练指标展示 │ │ ├── model_page.py # 模型管理 │ │ └── video_page.py # 视频检测 │ ├── services/ # 业务逻辑 │ │ ├── __init__.py │ │ ├── inference_service.py # YOLO 推理封装 │ │ └── storage_service.py # 用户、历史、设置存储 │ ├── utils/ │ │ ├── __init__.py │ │ ├── qt_helpers.py # PyQt 辅助函数 │ │ └── styles.py # 界面样式 │ └── windows/ │ ├── __init__.py │ ├── login_window.py # 登录/注册窗口 │ └── main_window.py # 主窗口 ├── gesture_datasets/ # 数据集目录 │ ├── data.yaml # 数据集配置 │ ├── train/ │ │ ├── images/ # 训练图片 │ │ └── labels/ # 训练标注 │ └── val/ │ ├── images/ # 验证图片 │ └── labels/ # 验证标注 ├── runs/ # 训练输出 │ └── gesture_train/ │ └── {时间戳}/ # 每次训练一个目录 │ ├── weights/ │ │ ├── best.pt │ │ └── last.pt │ ├── results.csv │ └── *.png # 可视化图 ├── utils/ │ ├── __init__.py │ └── visualize_metrics.py # 训练指标可视化与报告 ├── app_data/ # 应用数据自动创建 │ ├── users.json # 用户数据 │ ├── history.json # 检测历史 │ └── settings.json # 应用设置 ├── main.py # 应用入口 ├── train.py # 训练入口 ├── generate_training_report.py # 训练报告生成 ├── requirements.txt # 依赖列表 └── README.md # 项目说明九、环境与运行9.1 安装依赖pip install -r requirements.txt9.2 启动应用python main.py9.3 生成训练报告python generate_training_report.py [results.csv路径]不指定路径时使用默认runs/gesture_train/20260225_163759/results.csv。十、说明模型路径系统自动选择runs/gesture_train/下最新的best.pt作为默认模型数据存储用户、历史、设置保存在app_data/目录窗口标题基于最佳权重模型的手势识别系统
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2415023.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!