3.3 使用 Ultralytics YOLO 进行模型预测

3.3 使用 Ultralytics YOLO 进行模型预测

Ultralytics YOLO 生态系统和集成

介绍

在机器学习和计算机视觉的世界里,将视觉数据解释成有意义的信息叫做“推断”或“预测”。Ultralytics YOLO11 提供了一个强大的推断模式,设计用于高性能、实时推断,可应用于多种数据源。

观看:如何在自定义项目中提取 Ultralytics YOLO 模型的输出。

实际应用

  • 制造业:汽车配件检测

  • 体育运动:足球运动员检测

  • 安全监控:人员跌落检测

为什么使用 Ultralytics YOLO 进行推断?

以下是选择 YOLO11 推断模式的几个理由:

  • 多样性:能够对图片、视频甚至实时流进行推断。

  • 性能:为高速、实时处理而设计,同时保持高准确性。

  • 易用性:提供直观的 Python 和 CLI 接口,便于快速部署和测试。

  • 高度可定制:多种设置和参数,允许根据具体需求调整模型的推断行为。

推断模式的关键功能

YOLO11 的推断模式设计得非常强大且灵活,具备以下功能:

  • 多种数据源兼容:无论是单张图片、图片集合、视频文件,还是实时视频流,推断模式都能处理。

  • 流式模式:使用流式功能生成内存高效的结果对象生成器,可通过设置 stream=True 启用。

  • 批量处理:可以一次处理多张图片或多个视频帧,进一步提高推断速度。

  • 易于集成:由于其灵活的 API,轻松实现与现有数据管道或其他软件组件的集成。

Ultralytics YOLO 模型返回一个 Python 结果对象列表,或者在 stream=True 参数下,返回内存高效的生成器。

推断示例

以下为并行时流式模式的调用示例:

from ultralytics import YOLO

# 加载一个模型
model = YOLO("yolo11n.pt")  # 预训练的 YOLO11n 模型

# 对一组图片进行批量推断
results = model(["image1.jpg", "image2.jpg"])  # 返回结果对象的列表

# 处理结果列表
for result in results:
    boxes = result.boxes  # 边界框对象
    masks = result.masks  # 分割掩码对象
    keypoints = result.keypoints  # 关键点对象
    probs = result.probs  # 分类概率对象
    obb = result.obb  # 定向边界框对象
    result.show()  # 显示结果
    result.save(filename="result.jpg")  # 保存结果

推断数据源

YOLO11 可以处理多种类型的输入源,如下表所示。这些源包括静态图片、视频流和各种数据格式。表中还标明了每种数据源是否可以在流模式下使用(通过参数 stream=True)。

提示: 使用 stream=True 来处理长视频或大型数据集,以有效管理内存。stream=False 会将所有帧或数据点的结果存储在内存中,而 stream=True 则利用生成器,只保留当前帧或数据点的结果,大幅降低内存消耗,避免内存不足。

数据源类型示例说明
图片'image.jpg'单张图片文件
URL'https://ultralytics.com/images/bus.jpg'图片的 URL
截图'screen'捕获屏幕截图
PILImage.open('image.jpg')RGB 格式的图片
OpenCVcv2.imread('image.jpg')BGR 格式的图片
numpynp.zeros((640, 1280, 3))BGR 格式的 numpy 数组
torchtorch.zeros(16, 3, 320, 640)RGB 格式的张量
CSV'sources.csv'包含图片、视频或目录路径的 CSV 文件
视频 ✅'video.mp4'视频文件(如 MP4、AVI 等)
目录 ✅'path/'包含图片或视频的目录路径
glob ✅'path/*.jpg'匹配多个文件的通配符模式
YouTube ✅'https://youtu.be/LNwODJXcvt4'YouTube 视频的 URL
流媒体 ✅'rtsp://example.com/media.mp4'流媒体 URL(如 RTSP、RTMP)
多流媒体 ✅'list.streams'包含多个流媒体 URL 的文本文件

以下是对每种数据源类型进行推断的代码示例:

from ultralytics import YOLO

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

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

# 对指定数据源进行推断
results = model(source)  # 返回结果对象的列表

推断参数

model.predict() 方法在推断时接受多个参数,可以覆盖默认设置:

from ultralytics import YOLO

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

# 对 'bus.jpg' 进行推断并设置参数
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)

推断参数:

参数类型默认值描述
sourcestr'ultralytics/assets'推断数据源,可以是图片路径、视频文件、目录、URL 或设备 ID(如摄像头)。
conffloat0.25设置检测的最小置信度阈值,低于此阈值的对象将被忽略。
ioufloat0.7非最大抑制(NMS)的 IoU 阈值,用于消除重叠框。
imgszint 或 tuple640定义推断的图片尺寸,可以是单个整数或 (高度, 宽度) 的元组。
halfboolFalse启用半精度(FP16)推断,可加快支持的 GPU 上的推断速度。
devicestrNone指定推断的设备(如 'cpu','cuda:0' 或 '0')。
max_detint300每张图片允许的最大检测数。
vid_strideint1视频输入的帧步长,可跳过帧以加快处理速度。
visualizeboolFalse启用模型特征的可视化,便于调试和解释模型。

图像和视频格式

YOLO11 支持多种图像和视频格式,具体请参见 ultralytics/data/utils.py 文件中的有效后缀及示例预测命令。

处理结果

所有 Ultralytics predict() 调用将返回一个 Results 对象列表。

from ultralytics import YOLO

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

# 对图片进行推断
results = model("bus.jpg")  # 结果对象列表

# 处理结果
for result in results:
    print(result.boxes)  # 打印检测到的边界框对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏驰和徐策

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

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

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

打赏作者

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

抵扣说明:

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

余额充值