网站首页 > 技术文章 正文
前期的文章我们介绍了很多关于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('yolov8n-pose.pt')
results = model('https://ultralytics.com/images/zi.jpg')
然后我们导入YOLO库,并加载yolov8n-pose模型,这里直接选择需要的模型即可,代码运行时会自动下载相关的模型,无需其他额外的操作。模型加载完成后,就可以进行模型的预测了,这里可以填写图片URL地址,图片本地位置,视频等,其支持的输入如下:
from ultralytics import YOLO
model = YOLO('yolov8n-pose.pt')
source = 'path/to/image.jpg'
source = 'screen'
source = 'https://ultralytics.com/images/b.jpg'
source = Image.open('path/to/image.jpg')
source = cv2.imread('path/to/image.jpg')
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype='uint8')
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# Define a path to a CSV file with images, URLs, videos and directories
source = 'path/to/file.csv'
source = 'path/to/video.mp4'
# Define path to directory containing images and videos for inference
source = 'path/to/dir'
source = 'path/to/dir/**/*.jpg'
source = 'https://youtu.be/LNwODJXt4'
source = 'rtsp://example.com/media.mp4' # RTSP, RTMP, TCP or IP streaming address
results = model(source)
模型检测完成后,其结果保存在results里面,当然我们需要可视化结果,这里还需要使用可视化函数来进行结果的可视化。
from PIL import Image
for r in results:
im_array = r.plot()
im = Image.fromarray(im_array[..., ::-1])
im.show() # show image
im.save('results.jpg')
结果识别完成后,需要使用可视化,把检测到的人体关键点标注出来,并绘制到原始图片上。当然我们也可以直接保存下来,方便后期的制作。
当然模型支持输入视频的检测以及实时视频流的检测,我们主要的需求也应该是视频的检测,这里只需要修改一下上面的代码即可。
import cv2
from ultralytics import YOLO
model = YOLO('yolov8n-pose.pt')
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("YOLOv8 Inference", annotated_frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
break
cap.release()
cv2.destroyAllWindows()
- 上一篇: rtsp协议之请求响应示例
- 下一篇: WebRTC 拥塞控制 | 网络带宽过载检测
猜你喜欢
- 2024-11-25 最新FFmpeg RTSP流抓取
- 2024-11-25 WebRTC 拥塞控制 | 网络带宽过载检测
- 2024-11-25 rtsp协议之请求响应示例
- 2024-11-25 rtsp开源服务器之live555
- 2024-11-25 全网最全的抓包工具的综合对比
- 2024-11-25 【开源】音视频并发测试工具
- 2024-11-25 深度学习实战 :智慧工地安全帽和危险区域检测系统(含代码)
- 2024-11-25 NAS部署AI视频卫士,压榨NAS的最后一滴性能,NAS性能检测镜像
- 2024-11-25 Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器
- 2024-11-25 最新rtsp流媒体测试地址
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)