博客
关于我
OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
阅读量:791 次
发布时间:2023-02-23

本文共 3564 字,大约阅读时间需要 11 分钟。

使用YOLOv8 Pose进行瑜伽姿势分类

瑜伽作为一种富含身心健康益处的运动,近年来受到了广泛关注。为了满足对自动化瑜伽姿势分类系统的需求,本文将探讨如何利用YOLOv8 Pose这一先进的目标检测模型,对图像和视频中的瑜伽姿势进行精准分类。

本文将从以下几个方面展开讨论:

1. YOLOv8 Pose简介

YOLO(You Only Look Once)是一款以速度和准确性著称的实时目标检测算法。YOLOv8 Pose是对YOLOv8模型的扩展,专门针对人体姿势估计任务进行优化。它能够实时检测并分类人体关键点,因此成为瑜伽姿势分类的理想选择。

2. 数据准备

在开始模型训练之前,需要准备一个包含多种瑜伽姿势的图像或视频数据集,并对身体关键点进行标注。确保数据集结构清晰、组织合理。

推荐数据集

可以通过Roboflow平台获取专门针对瑜伽姿势分类的数据集,链接如下:

https://universe.roboflow.com/new-workspace-mujgg/yoga-pose

3. 在Google Colab上训练YOLOv8 Pose

步骤说明

在Google Colab环境中训练YOLOv8 Pose模型,具体操作步骤如下:

  • 上传数据集:将准备好的数据集上传到Google Drive的独立文件夹(例如“Yoga”)中,便于在Colab中访问。

  • 安装Google Drive:创建一个新的Colab笔记本,安装Google Drive:

  • from google.colab import drivedrive.mount('/content/drive')
    1. 安装依赖项:在终端中安装所需的库:
    2. % pip install ultralytics
      1. 准备数据集:确保数据集按照YOLO格式组织,包含训练集和验证集的图像文件。

      2. 创建数据配置文件:为自定义数据集生成一个YAML文件(例如data.yaml):

      3. # data.yamltrain: /content/drive/MyDrive/yoga_data/train/imagesval: /content/drive/MyDrive/yoga_data/val/imagesnc: 5  # 类别数量(瑜伽姿势)names: ['pose1', 'pose2', 'pose3', 'pose4', 'pose5']
        1. 开始训练:在终端中运行训练命令:
        2. ! yolo train model=yolov8n.pt data=data.yaml epochs=200 imgsz=640

          训练完成后,可以从Gdrive中的running/pose/train/weights/best.pt下载最终的模型权重文件。

          4. 本地使用预训练模型进行模型预测

          在OpenCV中实现姿势检测

          使用预训练模型进行姿势检测,可以按照以下步骤操作:

          import numpy as npfrom ultralytics import YOLOimport cv2import cvzoneimport mathimport time# 初始化摄像头cap = cv2.VideoCapture(0)  # 选择视频源# 加载预训练模型model = YOLO("../models/yolov8n.pt")# 定义类别对应关系classNames = ["Bitilasana", "Lotus Pose", "Tree Pose", "Child's Pose", "Downward-Facing Dog"]# 根据实际需要添加更多类别prev_frame_time = 0new_frame_time = 0while True:    new_frame_time = time.time()    success, img = cap.read()        # 获取模型输出结果    results = model(img, stream=True, verbose=False)        for r in results:        # 遍历每个检测结果        boxes = r.boxes        for box in boxes:            x1, y1, x2, y2 = box.xyxy[0]            x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)            w, h = x2 - x1, y2 - y1                        # 绘制关键点框架            cvzone.cornerRect(img, (x1, y1, w, h))                        # 获取置信度和类别            conf = math.ceil((box.conf[0] * 100)) / 100            cls = int(box.cls[0])                        # 绘制文字            cvzone.putTextRect(img, f'{classNames[cls]} {conf}', (max(0, x1), max(35, y1)), scale=1)        # 计算帧率    fps = 1 / (new_frame_time - prev_frame_time)    prev_frame_time = new_frame_time        # 显示结果    cv2.imshow("Image", img)    cv2.waitKey(1)        # 退出循环(按下'q'键)    if cv2.waitKey(100) & 0x1:        break

          创建独立环境

          为了确保代码运行顺利,可以创建一个独立的Anaconda或Pipenv环境:

          # 在终端中运行pip install ultralytics

          示例检测代码

          from ultralytics import YOLO# 加载预训练模型model = YOLO('yolov8m-pose.pt')# 定义类别映射class_mapping = {    0: 'Pose1',    1: 'Pose2',    2: 'Pose3',    3: 'Pose4',    4: 'Pose5'}# 读取图片文件source_image = 'Pose1.jpg'# 进行检测results = model(source_image)# 替换类别名称for result in results:    for cls_id, custom_label in class_mapping.items():        if cls_id in result.names:            result.names[cls_id] = custom_label# 保存检测结果results.save('Pose1_detection.jpg')

          预训练模型示例

          以下是一个使用预训练模型进行姿势分类的示例代码:

          from ultralytics import YOLO# 加载预训练模型model = YOLO('yolov8m-pose.pt')# 定义源文件路径source = 'Yoga.mp4'# 进行检测并保存结果results = model(source, save=True, conf=0.7)results.save('yoga_detection.mp4')

          模型训练示例

          以下是一个在Colab中训练YOLOv8 Pose模型的示例代码:

          ! yolo train model=yolov8n.pt data=data.yaml epochs=200 imgsz=640

          模型下载

          训练完成后,可以从以下路径下载最终的模型权重:

          Gdrive/MyDrive/Yoga_Data/training/running/pose/train/weights/best.pt

          请根据实际需求调整数据集路径和超参数。

          结语

          通过以上方法,您可以轻松地利用YOLOv8 Pose对瑜伽姿势进行自动化分类。从数据准备到模型训练,再到最终的姿势检测,您可以按照上述步骤逐步完成整个流程。希望本文的分享能够为您提供有价值的参考,助您在瑜伽姿势分类领域取得更好的成果!

    转载地址:http://lesfk.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于YoloV8的药丸/片剂类型识别
    查看>>
    OpenCV与AI深度学习 | 基于YOLO和EasyOCR从视频中识别车牌
    查看>>
    OpenCV与AI深度学习 | 基于图像处理的火焰检测算法(颜色+边缘)
    查看>>
    OpenCV与AI深度学习 | 基于拉普拉斯金字塔实现图像融合(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 基于改进YOLOv8的景区行人检测算法
    查看>>
    OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
    查看>>
    OpenCV与AI深度学习 | 基于深度学习的轮胎缺陷检测系统
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLO-World做目标检测
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLOv9分割图像中的对象
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLOv9检测图片和视频中的目标
    查看>>
    OpenCV与AI深度学习 | 如何在 Docker 容器中使用 GPU
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV中更稳更快的找圆方法--EdgeDrawing使用演示(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV传统方法实现密集圆形分割与计数(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | YOLO11自定义数据集训练实现缺陷检测 (标注+训练+预测 保姆级教程)
    查看>>
    OpenCV与AI深度学习 | 实战 | YOLOv10模型微调检测肾结石并提高准确率
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用OpenCV和Streamlit搭建虚拟化妆应用程序(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用OpenCV确定对象的方向(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
    查看>>