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 ultralyticsimport ultralyticsultralytics.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 YOLOmodel = YOLO('yolov8n-pose.pt')results = model('https://ultralytics.com/images/zi.jpg')
然后我们导入YOLO库,并加载yolov8n-pose模型,这里直接选择须要的模型即可,代码运行时会自动下载干系的模型,无需其他额外的操作。模型加载完成后,就可以进行模型的预测了,这里可以填写图片URL地址,图片本地位置,视频等,其支持的输入如下:
from ultralytics import YOLOmodel = 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 directoriessource = 'path/to/file.csv'source = 'path/to/video.mp4'# Define path to directory containing images and videos for inferencesource = '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 addressresults = model(source)
模型检测完成后,其结果保存在results里面,当然我们须要可视化结果,这里还须要利用可视化函数来进行结果的可视化。
from PIL import Imagefor r in results: im_array = r.plot() im = Image.fromarray(im_array[..., ::-1]) im.show() # show image im.save('results.jpg')
结果识别完成后,须要利用可视化,把检测到的人体关键点标注出来,并绘制到原始图片上。当然我们也可以直接保存下来,方便后期的制作。
当然模型支持输入视频的检测以及实时视频流的检测,我们紧张的需求也该当是视频的检测,这里只须要修正一下上面的代码即可。
import cv2from ultralytics import YOLOmodel = 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: breakcap.release()cv2.destroyAllWindows()