超详细的使用yolov8进行预测的参数详解

本文详细介绍了YOLOv8的预测模式,强调其多功能性、高性能和易用性。讨论了在图像、视频上的推理流程,包括流模式和批处理,并提供了推理参数、可视化选项、结果处理和线程安全推理的详细信息。此外,还涵盖了处理Boxes、Masks、Keypoints和Probs对象的方法,以及如何进行流式处理和线程安全的推理应用。
摘要由CSDN通过智能技术生成

目录

yolov8导航

YOLOv8(附带各种任务详细说明链接)

介绍

为什么选择 Ultralytics YOLO 进行推理?

预测模式的关键特性

推理流程

 在图像文件上运行推理

推理参数

示例

推理参数

可视化参数

图像和视频格式

图像

视频

处理结果

示例

结果解读

结果对象的属性:

结果对象的方法:

处理 Boxes 对象

Boxes 类的方法和属性:

处理 Masks 对象

Masks 类的方法和属性:

处理 Keypoints 对象

Keypoints 类的方法和属性:

处理 Probs 对象

Probs 类的方法和属性:

处理 OBB 对象

OBB 类的方法和属性:

绘制结果

示例

plot() 方法参数

线程安全的推理

示例:线程安全推理

流式处理源循环

示例:流式处理循环

 总结


yolov8导航

        如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接,我这边整理了许多其他任务的说明博文,后续也会持续更新,包括yolov8模型优化、sam等等的相关内容。

YOLOv8(附带各种任务详细说明链接)

介绍

在机器学习和计算机视觉的领域,对视觉数据进行解读的过程被称为“推理”或“预测”。Ultralytics YOLOv8 提供了一项强大的功能——预测模式,专为高性能、实时推理各种数据源而设计。

为什么选择 Ultralytics YOLO 进行推理?

以下是为什么你应该考虑使用 YOLOv8 的预测模式来满足各种推理需求的原因:

  • 多功能性:能够对图像、视频甚至实时流进行推理,适应各种数据源。
  • 高性能:专为实时、高速处理而设计,在不牺牲准确性的前提下提供卓越的性能。
  • 易用性:提供直观的 Python 和 CLI 接口,便于快速部署和测试,降低了使用门槛。
  • 高度可定制:允许通过各种设置和参数来调整模型的推理行为,以满足您的具体需求,确保灵活应用。

预测模式的关键特性

YOLOv8 的预测模式设计得非常强大且多功能,主要特性包括:

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

当在推理期间传递 stream=True 时,Ultralytics YOLO 模型返回一个内存高效的 Python 生成器的 Results 对象;否则,返回一个 Results 对象的 Python 列表:

from ultralytics import YOLO

# 加载模型
model = YOLO("yolov8n.pt")  # 预训练的 YOLOv8n 模型

# 对一组图像运行批量推理
results = model(["im1.jpg", "im2.jpg"])  # 返回一个 Results 对象列表

# 处理结果列表
for result in results:
    boxes = result.boxes  # 包含边界框输出的 Boxes 对象
    masks = result.masks  # 包含分割掩码输出的 Masks 对象
    keypoints = result.keypoints  # 包含姿态输出的 Keypoints 对象
    probs = result.probs  # 包含分类输出的 Probs 对象
    obb = result.obb  # 包含 OBB 输出的 Oriented boxes 对象
    result.show()  # 显示结果
    result.save(filename="result.jpg")  # 保存结果到磁盘

推理流程

YOLOv8 可以处理不同类型的输入来源进行推理,如下表所示。输入来源包括静态图像、视频流和各种数据格式。表中还指出了每种来源是否可以在流模式下使用(使用参数 stream=True ✅)。对于处理视频或实时流,流模式非常有用,因为它创建了结果生成器,而不是将所有帧加载到内存中。

提示

对于处理长视频或大型数据集,使用 stream=True 以有效管理内存。当 stream=False 时,所有帧或数据点的结果都会存储在内存中,对于大输入来说可能会导致内存不足错误。相反,stream=True 利用了生成器,仅将当前帧或数据点的结果保存在内存中,显著减少了内存消耗,防止内存不足问题。

来源 参数 类型 说明
图像 'image.jpg' str 或 Path 单个图像文件。
URL 'https://ultralytics.com/images/bus.jpg' str 图像的 URL。
屏幕截图 'screen' str 捕获屏幕截图。
PIL Image.open('im.jpg') PIL.Image HWC 格式,RGB 通道。
OpenCV cv2.imread('im.jpg') np.ndarray HWC 格式,BGR 通道,uint8 (0-255)。
numpy np.zeros((640,1280,3)) np.ndarray HWC 格式,BGR 通道,uint8 (0-255)。
torch torch.zeros(16,3,320,640) torch.Tensor BCHW 格式,RGB 通道,float32 (0.0-1.0)。
CSV 'sources.csv' str 或 Path 包含图像、视频或目录路径的 CSV 文件。
视频 ✅ 'video.mp4' str 或 Path 视频文件,支持 MP4、AVI 等格式。
目录 ✅ 'path/' str 或 Path 包含图像或视频的目录路径。
glob ✅ 'path/*.jpg' str 匹配多个文件的通配符模式。使用 * 作为通配符。
YouTube ✅ 'https://youtu.be/LNwODJXcvt4' str YouTube 视频的 URL。
流 ✅ 'rtsp://example.com/media.mp4' str 支持 RTSP、RTMP、TCP 或 IP 地址的流协议的 URL。
多流 ✅ 'list.streams' str 或 Path *.streams 文本文件,每行一个流 URL,如 8 个流将以批处理大小 8 运行。

 在图像文件上运行推理

from ultralytics import YOLO

# 加载预训练的 YOLOv8n 模型
model = YOLO("yolov8n.pt")

# 定义图像文件的路径
source = "path/to/image.jpg"

# 在该源上运行推理
results = model(source)  # 返回一个 Results 对象列表

推理参数

model.predict() 接受多个可以在推理时传递的参数,以覆盖默认值:

示例

from ultralytics import YOLO

# 加载预训练的 YOLOv8n 模型
model = YOLO("yolov8n.pt")

# 运行带有参数的推理,例如在 'bus.jpg' 上
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)

推理参数

参数 类型 默认值 描述
source str 'ultralytics/assets' 指定推理的数据源。可以是图像路径、视频文件、目录、URL 或实时流的设备ID。支持多种格式和来源,灵活应用于不同类型的输入。
conf float 0.25 设置检测的最低置信度阈值。置信度低于此阈值的对象将被忽略。调整此值可减少误报。
iou float 0.7 非极大值抑制(NMS)的交并比(IoU)阈值。较低的值会通过消除重叠框减少检测数量,有助于减少重复检测。
imgsz int 或 tuple 640 定义推理的图像大小。可以是单个整数 640(表示正方形调整大小)或 (height, width) 元组。合适的大小可以提高检测精度和处理速度。
half bool False 启用半精度(FP16)推理,在支持的 GPU 上可以加快模型推理速度,同时对准确性影响较小。
device str None 指定用于推理的设备(例如 cpu、cuda:0 或 0)。允许用户选择在 CPU、特定 GPU 或其他计算设备上执行模型。
max_det int 300 每张图像允许的最大检测数量。限制模型在单次推理中可以检测的对象总数,防止在密集场景中输出过多结果。
vid_stride int 1 视频输入的帧间隔。允许在视频处理中跳过帧,以牺牲时间分辨率来加快处理速
引用和中提供的信息可以了解到使用YOLOv8模型进行验证的步骤和命令。首先,使用ultralytics库中的YOLO类来加载模型,通过指定模型的路径来加载官方模型或自定义模型。然后,使用val()方法来验证模型。该方法不需要传递任何参数,因为模型已经保存了其训练数据和参数作为模型属性。对于命令行界面(CLI),可以使用不同的命令来验证不同的模型,如yolo task=segment mode=val model=yolov8n-seg.pt来验证yolov8n-seg模型在COCO128-seg数据集上的准确性。 对于yolov8模型的参数详解,引用中提供了一些命令和参数说明:yolo task=detect mode=train model=yolov8n.yaml用于在训练模式下使用yolov8n.yaml配置文件进行目标检测的训练;classify predict yolov8n-cls.yaml用于使用yolov8n-cls.yaml配置文件进行分类预测;segment val yolov8n-seg.yaml用于在验证模式下使用yolov8n-seg.yaml配置文件进行图像分割验证;export yolov8n.pt format=onnx用于将训练好的yolov8n模型导出为ONNX格式。 总结而言,yolov8模型的参数详解可以根据具体的任务和模式进行调整和配置,通过ultralytics库和相关命令来加载、验证和导出模型。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [YOLOv8详解 【网络结构+代码+实操】](https://blog.csdn.net/zyw2002/article/details/128732494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

E寻数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值