我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【目标检测】YOLOV8实战入门(五)模型预测

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【目标检测】YOLOV8实战入门(五)模型预测


predict模式用于在新图像或视频上使用经过训练的YOLOv8模型进行预测,在此模式下,模型从checkpoint 文件加载,用户可以提供图像或视频来执行推理。模型预测输入图像或视频中对象的类别和位置。

from ultralytics import YOLOfrom PIL import Imageimport cv2model = YOLO("model.pt")# 接受所有格式-image/dir/Path/URL/video/PIL/ndarray。0用于网络摄像头results = model.predict(source="0")results = model.predict(source="folder", show=True) # 展示预测结果# from PILim1 = Image.open("bus.jpg")results = model.predict(source=im1, save=True)  # 保存绘制的图像# from ndarrayim2 = cv2.imread("bus.jpg")results = model.predict(source=im2, save=True, save_txt=True)  # 将预测保存为标签# from list of PIL/ndarrayresults = model.predict(source=[im1, im2])

YOLOv8预测模式可以为各种任务生成预测,在使用流模式时返回结果对象列表或结果对象的内存高效生成器。通过在预测器的调用方法中传递stream=True来启用流模式。stream=True的流媒体模式应用于长视频或大型预测源,否则结果将在内存中累积并最终导致内存不足错误。

inputs = [img, img]  # list of numpy arraysresults = model(inputs, stream=True)  # generator of Results objectsfor result in results:    boxes = result.boxes  # Boxes object for bbox outputs    masks = result.masks  # Masks object for segmentation masks outputs    probs = result.probs  # Class probabilities for classification outputs

相关参数如下

KeyValueDescription
source'ultralytics/assets'source directory for images or videos
conf0.25object confidence threshold for detection
iou0.7intersection over union (IoU) threshold for NMS
halfFalseuse half precision (FP16)
deviceNonedevice to run on, i.e. cuda device=0/1/2/3 or device=cpu
showFalseshow results if possible
saveFalsesave images with results
save_txtFalsesave results as .txt file
save_confFalsesave results with confidence scores
save_cropFalsesave cropped images with results
hide_labelsFalsehide labels
hide_confFalsehide confidence scores
max_det300maximum number of detections per image
vid_strideFalsevideo frame-rate stride
line_thickness3bounding box thickness (pixels)
visualizeFalsevisualize model features
augmentFalseapply image augmentation to prediction sources
agnostic_nmsFalseclass-agnostic NMS
retina_masksFalseuse high-resolution segmentation masks
classesNonefilter results by class, i.e. class=0, or class=[0,2,3]
boxesTrueShow boxes in segmentation predictions

YOLOv8可以接受各种输入源,如下表所示。这包括图像、URL、PIL图像、OpenCV、numpy数组、torch张量、CSV文件、视频、目录、全局、YouTube视频和流。该表指示每个源是否可以在流模式下使用stream=True✅以及每个源的示例参数。

sourcemodel(arg)typenotes
image'im.jpg'str, Path
URL'https://ultralytics.com/images/bus.jpg'str
screenshot'screen'str
PILImage.open('im.jpg')PIL.ImageHWC, RGB
OpenCVcv2.imread('im.jpg')[:,:,::-1]np.ndarrayHWC, BGR to RGB
numpynp.zeros((640,1280,3))np.ndarrayHWC
torchtorch.zeros(16,3,320,640)torch.TensorBCHW, RGB
CSV'sources.csv'str, PathRTSP, RTMP, HTTP
video ✅'vid.mp4'str, Path
directory ✅'path/'str, Path
glob ✅'path/*.jpg'strUse * operator
YouTube ✅'https://youtu.be/Zgi9g1ksQHc'str
stream ✅'rtsp://example.com/media.mp4'strRTSP, RTMP, HTTP

图像类型

Image SuffixesExample Predict CommandReference
.bmpyolo predict source=image.bmpMicrosoft BMP File Format
.dngyolo predict source=image.dngAdobe DNG
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP
.pfmyolo predict source=image.pfmPortable FloatMap

视频类型

Video SuffixesExample Predict CommandReference
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

预测结果对象包含以下组件:

Results.boxes: — 具有用于操作边界框的属性和方法的boxes

Results.masks: — 用于索引掩码或获取段坐标的掩码对象

Results.probs: — 包含类概率或logits

Results.orig_img: — 载入内存的原始图像

Results.path: — 包含输入图像路径的路径

默认情况下,每个结果都由一个torch. Tensor组成,它允许轻松操作:

results = results.cuda()results = results.cpu()results = results.to('cpu')results = results.numpy()

from ultralytics import YOLOimport cv2from ultralytics.yolo.utils.benchmarks import benchmarkmodel = YOLO("yolov8-seg.yaml").load('yolov8n-seg.pt')results = model.predict(r'E:\CS\DL\yolo\yolov8study\bus.jpg')boxes = results[0].boxesmasks = results[0].masksprobs = results[0].probs print(f"boxes:{boxes[0]}")print(f"masks:{masks.xy }")print(f"probs:{probs}")

output:

image 1/1 E:\CS\DL\yolo\yolov8study\bus.jpg: 640x480 4 0s, 1 5, 1 36, 25.9msSpeed: 4.0ms preprocess, 25.9ms inference, 10.0ms postprocess per image at shape (1, 3, 640, 640)WARNING  'Boxes.boxes' is deprecated. Use 'Boxes.data' instead.boxes:ultralytics.yolo.engine.results.Boxes object with attributes:boxes: tensor([[670.1221, 389.6674, 809.4929, 876.5032,   0.8875,   0.0000]], device='cuda:0')   cls: tensor([0.], device='cuda:0')conf: tensor([0.8875], device='cuda:0')data: tensor([[670.1221, 389.6674, 809.4929, 876.5032,   0.8875,   0.0000]], device='cuda:0')    id: Noneis_track: Falseorig_shape: tensor([1080,  810], device='cuda:0')shape: torch.Size([1, 6])xywh: tensor([[739.8075, 633.0853, 139.3708, 486.8358]], device='cuda:0')xywhn: tensor([[0.9133, 0.5862, 0.1721, 0.4508]], device='cuda:0')xyxy: tensor([[670.1221, 389.6674, 809.4929, 876.5032]], device='cuda:0')xyxyn: tensor([[0.8273, 0.3608, 0.9994, 0.8116]], device='cuda:0')masks:[array([[     804.94,       391.5],       [     794.81,      401.62],       [     794.81,      403.31],       [     791.44,      406.69],       ......probs:None

我们可以使用Result对象的plot()函数在图像对象中绘制结果。它绘制在结果对象中找到的所有组件(框、掩码、分类日志等)

annotated_frame = results[0].plot()# Display the annotated framecv2.imshow("YOLOv8 Inference", annotated_frame)cv2.waitKey()cv2.destroyAllWindows()

在这里插入图片描述


使用OpenCV(cv2)和YOLOv8对视频帧运行推理的Python脚本。

import cv2from ultralytics import YOLO# Load the YOLOv8 modelmodel = model = YOLO("yolov8-seg.yaml").load('yolov8n-seg.pt')# Open the video filevideo_path = "sample.mp4"cap = cv2.VideoCapture(video_path)# Loop through the video frameswhile cap.isOpened():    # Read a frame from the video    success, frame = cap.read()    if success:        # Run YOLOv8 inference on the frame        results = model(frame)        # Visualize the results on the frame        annotated_frame = results[0].plot()        # Display the annotated frame        cv2.imshow("YOLOv8 Inference", annotated_frame)        # Break the loop if 'q' is pressed        if cv2.waitKey(1) & 0xFF == ord("q"):            break    else:        # Break the loop if the end of the video is reached        break# Release the video capture object and close the display windowcap.release()cv2.destroyAllWindows()

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_43456016/article/details/130448271

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【目标检测】YOLOV8实战入门(五)模型预测

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能

本篇内容主要讲解“Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python基于HOG+SVM/RF/DT等模型怎么实现目
2023-06-30

【目标检测实验系列】AutoDL线上GPU服务器租用流程以及如何用Pycharm软件远程连接服务器进行模型训练 (以Pycharm远程训练Yolov5项目为例子 超详细)

目录 1. 文章主要内容2. 租用AutoDL服务器详细教程2.1 注册AutoDL账号,并申请学生认证(学生认证有优惠,如果不是学生可以忽略此点)2.2 算力市场选择GPU,并选择初始化配置环境2.3 控制台参数解析,并使用相关参
2023-08-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录