赞
踩
目录
如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接,我这边整理了许多其他任务的说明博文,后续也会持续更新,包括yolov8模型优化、sam等等的相关内容。
在机器学习和计算机视觉的领域,对视觉数据进行解读的过程被称为“推理”或“预测”。Ultralytics YOLOv8 提供了一项强大的功能——预测模式,专为高性能、实时推理各种数据源而设计。
以下是为什么你应该考虑使用 YOLOv8 的预测模式来满足各种推理需求的原因:
YOLOv8 的预测模式设计得非常强大且多功能,主要特性包括:
stream=True
来启用此功能。当在推理期间传递 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 | 视频输入的帧间隔。允许在视频处理中跳过帧,以牺牲时间分辨率来加快处理速 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。