窝牛号

YOLO对象检测算法也这么卷了吗——基于YOLOv8的人体姿态检测

前期的文章我们介绍了很多关于YOLO系列的对象检测算法,虽然YOLO系列是应用在目标检测算法上,但是最近更新的YOLO系列算法都加入了对象分割,人体姿态检测等模型。

YOLOv8对象检测算法

2023年,Ultralytics再次发布YOLO更新模型,YOLOv8模型。Ultralytics YOLOv8是YOLO对象检测和图像分割模型的最新版本。YOLOv8 是一种尖端的、最先进的 (SOTA) 模型。

YOLOv8的一个关键特性是它的可扩展性。它被设计为一个框架,支持所有以前版本的 YOLO,可以轻松地在不同版本之间切换并比较它们的性能。

除了可扩展性之外,YOLOv8 还包括许多其他创新,使其成广泛应用在对象检测和图像分割任务上。其中包括新的骨干网络,新的无锚网络检测头和新的损失函数功能。YOLOv8 也非常高效,可以在各种硬件平台(从 CPU 到 GPU)上运行。

YOLOv8 模型的每个类别中有五个模型,用于检测、分割和分类。YOLOv8 Nano是最快和最小的,而YOLOv8 Extra Large(YOLOv8x)是最准确但最慢的。

YOLOv8目标检测算法模型,不仅可以进行对象检测,对象分割,对象分类等任务,还支持姿态检测,目标追踪等任务。

YOLOv8目标检测算法模型具有如下几个特点,使YOLOv8目标检测算法模型在目前YOLO系列中得到了大家的喜爱。

多功能性:能够对图像、视频甚至直播进行推理。性能:专为实时、高速处理而设计,不牺牲准确性。易用性:直观的Python和CLI界面,用于快速部署和测试。高度可定制:各种设置和参数可根据特定要求调整模型的推理行为。

YOLOv8的预测模式设计十分稳定且通用,具有以下特点:

多数据源兼容性:无论数据是以单个图像、图像集合、视频文件还是实时视频流的形式,预测模式都能满足需求。流模式:使用流功能生成一个内存高效的Results对象生成器。通过在预测器的调用方法中设置stream=True来启用此功能。批量处理:能够在一个批次中处理多个图像或视频帧,进一步加快推理时间。集成友好:由于其灵活的API,可以轻松地与现有的数据和其他软件组件集成。

我们可以直接使用YOLOv8的API或者开源代码来实现人体姿态检测。

YOLOv8人体姿态检测

YOLOv8开源了5个尺寸大小的人体姿态检测模型,YOLOv8n-pose是尺寸最小的模型,但是其速度也是最快的模型,但也是牺牲了精确度。YOLOv8x-pose-p6是大尺寸模型,其图片尺寸为1280,当然模型也是最大的,其速度有所降低,但大大提高了检测精度。我们在使用YOLOv8系列的模型时,需要根据自己的应用选择不同尺寸大小的模型。

%pip install ultralytics import ultralytics ultralytics.checks()

在使用YOLOv8x-pose进行人体姿态检测前,我们需要安装ultralytics,其YOLOv8x-pose姿态检测模型已经集成在ultralytics库中,安装完成后,需要使用import进行导入。

Ultralytics YOLOv8.0.207 Python-3.10.12 torch-2.1.0+cu118 CUDA:0 (Tesla T4, 15102MiB) Setup complete ✅ (2 CPUs, 12.7 GB RAM, 27.1/78.2 GB disk)from ultralytics import YOLO model = YOLO(&39;) results = model(&39;)

然后我们导入YOLO库,并加载yolov8n-pose模型,这里直接选择需要的模型即可,代码运行时会自动下载相关的模型,无需其他额外的操作。模型加载完成后,就可以进行模型的预测了,这里可以填写图片URL地址,图片本地位置,视频等,其支持的输入如下:

from ultralytics import YOLO model = YOLO(&39;) source = &39; source = &39; source = &39; source = Image.open(&39;) source = cv2.imread(&39;) source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype=&39;) source = torch.rand(1, 3, 640, 640, dtype=torch.float32) 39;path/to/file.csv&39;path/to/video.mp4& Define path to directory containing images and videos for inference source = &39; source = &39; source = &39; source = &39; show image im.save(&39;)

结果识别完成后,需要使用可视化,把检测到的人体关键点标注出来,并绘制到原始图片上。当然我们也可以直接保存下来,方便后期的制作。

当然模型支持输入视频的检测以及实时视频流的检测,我们主要的需求也应该是视频的检测,这里只需要修改一下上面的代码即可。

import cv2 from ultralytics import YOLO model = YOLO(&39;) video_path = &34; cap = cv2.VideoCapture(video_path) 便是打开电脑的默认摄像头 while cap.isOpened(): success, frame = cap.read() if success: results = model(frame) annotated_frame = results[0].plot() cv2.imshow(&34;, annotated_frame) if cv2.waitKey(1) & 0xFF == ord(&34;): break else: break cap.release() cv2.destroyAllWindows()

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1