摘要:上期图文教程,我们分享了 YOLO11 模型,YOLO11 是 Ultralytics实时物体检测系列中的最新模型,以最先进的精度、速度和效率重新定义了目标检测。在之前YOLO 版本基础上,YOLO11 在架构和训练方法上进行了重大改进,使其成为目标检测任务中
上期图文教程,我们分享了 YOLO11 模型,YOLO11 是 Ultralytics实时物体检测系列中的最新模型,以最先进的精度、速度和效率重新定义了目标检测。在之前YOLO 版本基础上,YOLO11 在架构和训练方法上进行了重大改进,使其成为目标检测任务中的核心模型。
主要功能:
增强型特征提取: YOLO11 采用改进的架构,增强了特征提取能力,从而实现更精确的目标检测和复杂任务性能。优化效率和速度: YOLO11 引入了完善的架构设计和优化的训练管道,提供更快的处理速度,并在准确性和性能之间保持最佳平衡。参数更少,精度更高:随着模型设计的进步,YOLO11m 在 COCO 数据集上实现了更高的平均精度(mAP),同时使用的参数比YOLOv8m 减少了 22%,从而在不影响精度的情况下提高了计算效率。跨环境适应性: YOLO11 可在各种环境中无缝部署,包括边缘设备、云平台和支持NVIDIA GPU 的系统,确保最大的灵活性。支持的任务范围广泛:无论是对象检测、实例分割、图像分类、姿态估计,还是面向对象检测 (OBB),YOLO11 都能应对各种计算机视觉任务。YOLO11模型支持众多计算机视觉任务,包括对象检测,实例分割,姿态检测等,本期我们就基于YOLO11模型的姿态检测来介绍一下YOLO11模型的运动健康的锻炼检测。
在YOLO11 的默认姿势模型中,有 17 个关键点,每个关键点代表人体的不同部位。0: 鼻子 1: 左眼 2: 右眼 3: 左耳 4: 右耳 5: 左肩 6: 右肩 7: 左肘 8: 右肘 9: 左腕 10: 右腕 11: 左髋 12: 右髋 13: 左膝 14: 右膝 15: 左脚踝 16: 右脚踝YOLO11模型把人体关键点分成 17个点,我们可以通过实时对人体关键点进行检测,并计算关键点之间的运动轨迹,这样就可以监测运动健康情况。
首先,我们来看看人体姿态检测的代码:
from ultralytics import YOLOmodel = YOLO('yolov11n-pose.pt')#图片对象检测source = 'image.jpg'results = model(source) from PIL import Imagefor r in results: im_array = r.plot im = Image.fromarray(im_array[..., ::-1]) im.show im.save('results.jpg') # 视频人体姿态检测video_path = "11.mp4"cap = cv2.VideoCapture(video_path) # 这里若cap = cv2.VideoCapture(0)# 便是打开电脑的默认摄像头while cap.isOpened: success, frame = cap.read if success: results = model(frame) annotated_frame = results[0].plot cv2.imshow("YOLOv11 pose", annotated_frame) if cv2.waitKey(1) & 0xFF == ord("q"): break else: breakcap.releasecv2.destroyAllWindows凭借上述代码,我们能够将人体的关键点标注于图片或者视频帧之上。倘若要开展人体运动健康监测工作,我们必须实时记录若干关键点的位置,同时计算在未来视频帧中这些关键点的位置,并剖析二者之间的关联,如此方能准确地自动监测运动健康状况(例如引体向上、俯卧撑等,仅需监测 5、6、7、8、9、10 关键点)。
而YOLO11模型也集成了运动健康监测机制,当然我们也可以自行设计代码来计算(比如 6,8,10)关键点之间的位置,以便来计算(比如俯卧撑)运动项目的数量。
import cv2from ultralytics import solutionscap = cv2.VideoCapture("11.mp4")assert cap.isOpened, w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))video_writer = cv2.VideoWriter("result.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))gym = solutions.AIGym(line_width=2,show=True, kpts=[6, 8, 10],)while cap.isOpened: success, im0 = cap.read if not success: print("video error") break im0 = gym.monitor(im0) video_writer.write(im0)cv2.destroyAllWindowsvideo_writer.release这里使用了ultralytics中的AIGym库来检测人体运动情况,首先当我们打开一段锻炼视频后,模型会自动进行人体姿态的检测,而在AIGym参数中,我们定义了关键点的检测(比如 6,8,10),这样就可以动态监测这三个关键点的位置,进而可以动态监测相关关键点的运动情况。
当然,我们也可以监测其他关键点,以便进行其他运行项目的监测,比如腿部关键点,或者人体上半身关键点的监测,都可以进行相关运动项目的对象检测功能。
而YOLO11系列模型的精度与速度都有了较大的提高,我们可以把相关的模型部署到移动端,进而可以在手机,或者其他移动设备上,实时进行运动健康的监测。当然ultralytics也提供了很多其他方面的检测模型。比如物体计数,停车管理,安全警报系统,速度估计,距离计算等等,后期我们再进行一一分享。
https://docs.ultralytics.com/zh/models/yolo11/#overview来源:人工智能研究所