基于yolov8预训练模型手势识别

1.环境安装

  • Python 3.7+
  • OpenCV

  • Numpy
  • Ultralytics

2.预训练模型

  •     Yolov8.pt
  • 3.数据集准备

    访问Roboflow网站,搜索Hand Gesture Recognition Object Detection Dataset (v6, 2023-03-18 4:44pm) by Lebanese University (roboflow.com),该数据集包含用于对象检测的 5 个手势类的 839 张图像:1,2,3,4,5. 在五个手指的帮助下,形成一个到五个数字的组合,并在这些带有相应标签的手势上训练对象检测模型。

  • 链接:

  • Hand Gesture Recognition Object Detection Dataset (v6, 2023-03-18 4:44pm) by Lebanese University

  • 数据集分为训练集、验证集和测试集。该数据集包含 587 个训练图像、167 个验证图像和 85 个测试图像,结构如下:

                                                

4模型训练并生成相应模型

  • 4.1模型准备

    下载YOLOv8.pt的预训练模型作为基础模型。

    4.2配置文件设置

    这个YAML文件是用来配置目标检测模型训练的参数,特别是与数据集相关的信息。

    train: 指定了训练数据集的图像所在目录。在这个例子中,训练图像位于train/images目录下。

    val: 指定了验证数据集的图像所在目录。验证集通常用于在训练过程中评估模型性能,而不使用测试集,以避免过拟合。这里验证图像位于valid/images目录。

    test: 指定了测试数据集的图像所在目录。测试集用于最终评估模型的泛化能力,在模型训练完成后使用。测试图像位于test/images目录。

    nc: 这个数值代表数据集中类别的数量。在这个场景中,nc: 5意味着有5种不同的手势类别。

    names: 这是一个列表,包含数据集中每种类别的名称。这里的names列表定义了5种手势的名称,分别是'five', 'four', 'one', 'three', 和 'two'。

  • 4.3模型训练

    首先导入必要的库,torch是PyTorch的主库,而ultralytics包含了YOLOv8模型的接口。加载了预训练的YOLOv8模型yolov8n.pt和数据集配置文件的路径data.yaml。

    调整训练的具体参数。data是数据集配置文件的路径,epochs定义了模型训练的总轮数两百轮,设置了每批次的图像数量batch为64。imgsz是输入图像的尺寸,通常使用正方形尺寸。device指定了用于训练的设备,此处我们使用默认cpu,所以device=cpu。

  • # 导入必要的库
    import torch
    from ultralytics import YOLO
    
    # 加载预训练的YOLOv8模型
    model = YOLO(r'D:\pycharm\pythonProject1\pythonjwq\yolo\yolov8n.pt')  # 你可以选择不同的YOLOv8版本
    
    # 定义数据配置文件路径
    data_yaml_path = r'D:\pycharm\pythonProject1\pythonjwq\yolo\data.yaml'  # 这个文件应该包含数据集的配置
    
    # 开始训练
    results = model.train(
        data=data_yaml_path,
        epochs=50,  # 训练轮数
        batch=16,   # 批量大小
        imgsz=640,  # 图像尺寸
        name='gesture_model',  # 保存模型的目录
        device='cpu'    # GPU设备编号
    )
    
    # 保存最终模型
    model.save('D:\pycharm\pythonProject1\pythonjwq\yolo\gesture_model.pt')
    
    # 评估模型
    results = model.val(data=data_yaml_path)
    
    # 检查模型性能
    print(results.metrics)

    最终选用两百轮次中的最优权重为后续训练的yolov8手势识别的预训练权重:gesture_model-200.pt

  • 5.模型评估

  • 基于gesture_model-200.pt权重的模型性能曲线如下图:

  • 左上角的两个图表分别显示了训练集和验证集上的bbox_loss(边界框损失)。可以看到,随着训练的进行,这两个损失都在逐渐下降,表明模型正在逐步改进其定位准确性。

    在最右侧的两个图表中,我们看到了precision(精确率)和recall(召回率)的变化。在训练集中,precision和recall都相对稳定,但在验证集上,recall保持较高水平,而precision则有所波动。这可能表明模型在识别出所有手势的同时,有时也会出现误报的情况。

    最下方的四个图表显示了验证集上的各项指标。bbox_loss和cls_loss仍然在下降,但dfc_loss似乎有些不稳定。mAP50(B)和mAP50-95(B)是平均精度的度量标准,它们衡量了模型在不同IOU阈值下的整体性能。mAP50(B)的曲线在训练后期略有上升,但mAP50-95(B)的曲线则在训练早期就达到了峰值,之后开始下降。总体来说,模型的map50的值能得到85%左右,效果不错,为后续在实验箱上部署机械臂摆动提供了基础。

  • 6.模型测试

  • 代码:

    from ultralytics import YOLO
    
    # 加载训练好的模型
    model = YOLO(r'D:\pycharm\pythonProject1\pythonjwq\yolo\best.pt') 
    
    results = model.predict(source=0, show=True)

    测试:

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值