Skip to content

Python 使用

欢迎来到YOLO11 Python使用文档!本指南旨在帮助您无缝地将YOLO11集成到您的Python项目中,用于目标检测、分割和分类。在这里,您将学习如何加载和使用预训练模型、训练新模型,并对图像进行预测。易于使用的Python接口是任何希望将YOLO11集成到其Python项目中的人的宝贵资源,使您能够快速实现高级目标检测功能。让我们开始吧!



观看: 掌握Ultralytics YOLO11: Python

例如,用户可以加载模型、训练它、在验证集上评估其性能,甚至只需几行代码即可将其导出为ONNX格式。

Python

from ultralytics import YOLO

# 从头开始创建一个新的YOLO模型
model = YOLO("yolo11n.yaml")

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

# 使用'coco8.yaml'数据集训练模型3个周期
results = model.train(data="coco8.yaml", epochs=3)

# 在验证集上评估模型的性能
results = model.val()

# 使用模型对图像进行目标检测
results = model("https://ultralytics.com/images/bus.jpg")

# 将模型导出为ONNX格式
success = model.export(format="onnx")

训练

训练模式用于在自定义数据集上训练YOLO11模型。在此模式下,模型使用指定的数据集和超参数进行训练。训练过程涉及优化模型的参数,以便它能够准确预测图像中对象的类别和位置。

训练

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # 传递任何模型类型
results = model.train(epochs=5)
from ultralytics import YOLO

model = YOLO("yolo11n.yaml")
results = model.train(data="coco8.yaml", epochs=5)
model = YOLO("last.pt")
results = model.train(resume=True)

训练示例

验证

验证模式用于在训练后验证YOLO11模型。在此模式下,模型在验证集上进行评估,以测量其准确性和泛化性能。此模式可用于调整模型的超参数以提高其性能。

验证

from ultralytics import YOLO

# 加载一个YOLO11模型
model = YOLO("yolo11n.yaml")

# 训练模型
model.train(data="coco8.yaml", epochs=5)

# 在训练数据上验证
model.val()
from ultralytics import YOLO

# 加载一个YOLO11模型
model = YOLO("yolo11n.yaml")

# 训练模型
model.train(data="coco8.yaml", epochs=5)

# 在单独的数据上验证
model.val(data="path/to/separate/data.yaml")

验证示例

预测

预测模式用于使用训练好的YOLO11模型对新图像或视频进行预测。在此模式下,模型从检查点文件加载,用户可以提供图像或视频进行推理。模型预测输入图像或视频中对象的类别和位置。

预测

import cv2
from PIL import Image

from ultralytics import YOLO

model = YOLO("model.pt")
# 接受所有格式 - 图像/目录/路径/URL/视频/PIL/ndarray。0表示网络摄像头
results = model.predict(source="0")
results = model.predict(source="folder", show=True)  # 显示预测。接受所有YOLO预测参数

# 从PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True)  # 保存绘制的图像

# 从ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True)  # 将预测结果保存为标签

# 从PIL/ndarray列表
results = model.predict(source=[im1, im2])
# 结果将默认是一个包含所有预测的Results对象列表
# 但请注意,当有大量图像时,这可能会占用大量内存,
# 尤其是任务是分割时。
# 1. 返回为列表
results = model.predict(source="folder")

# 结果将是一个生成器,通过设置stream=True对内存更友好
# 2. 返回为生成器
results = model.predict(source=0, stream=True)

for result in results:
    # 检测
    result.boxes.xyxy  # 以xyxy格式表示的框,(N, 4)
    result.boxes.xywh  # 以xywh格式表示的框,(N, 4)
    result.boxes.xyxyn  # 以xyxy格式表示但归一化的框,(N, 4)
    result.boxes.xywhn  # 以xywh格式表示但归一化的框,(N, 4)
    result.boxes.conf  # 置信度分数,(N, 1)
    result.boxes.cls  # 类别,(N, 1)

    # 分割
    result.masks.data  # 掩码,(N, H, W)
    result.masks.xy  # x,y分段(像素),List[segment] * N
    result.masks.xyn  # x,y分段(归一化),List[segment] * N

    # 分类
    result.probs  # 类别概率,(num_class, )

# 每个结果默认由torch.Tensor组成,
# 在其中你可以轻松使用以下功能:
result = result.cuda()
result = result.cpu()
result = result.to("cpu")
result = result.numpy()

预测示例

导出

导出模式用于将YOLO11模型导出为可用于部署的格式。在此模式下,模型被转换为其他软件应用程序或硬件设备可用的格式。此模式在将模型部署到生产环境中时非常有用。

导出

将官方YOLO11n模型导出为ONNX格式,支持动态批次大小和图像大小。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="onnx", dynamic=True)

将官方YOLO11n模型导出为TensorRT格式,在device=0上加速CUDA设备。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="onnx", device=0)

导出示例

跟踪

跟踪模式用于使用YOLO11模型实时跟踪对象。在此模式下,模型从检查点文件加载,用户可以提供实时视频流以执行实时对象跟踪。此模式适用于监控系统或自动驾驶汽车等应用。

跟踪

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载官方检测模型
model = YOLO("yolo11n-seg.pt")  # 加载官方分割模型
model = YOLO("path/to/best.pt")  # 加载自定义模型

# 使用模型进行跟踪
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")

跟踪示例

基准测试

基准测试模式用于分析YOLO11各种导出格式的速度和准确性。基准测试提供了导出格式的大小、其mAP50-95指标(用于对象检测和分割)或accuracy_top5指标(用于分类)以及各种导出格式(如ONNX、OpenVINO、TensorRT等)的每张图像的推理时间(以毫秒为单位)。这些信息可以帮助用户根据其对速度和准确性的要求,为其特定用例选择最佳的导出格式。

基准测试

对官方YOLO11n模型进行所有导出格式的基准测试。

from ultralytics.utils.benchmarks import benchmark

# 基准测试
benchmark(model="yolo11n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)

基准测试示例

使用训练器

YOLO模型类是训练器类的高级封装。每个YOLO任务都有自己的训练器,继承自BaseTrainer

检测训练器示例

from ultralytics.yolo.v8.detect import DetectionTrainer

args = dict(model="yolov8n.pt", data="coco8.yaml", epochs=3)
trainer = DetectionTrainer(overrides=args)
trainer.train()
from ultralytics.models.yolo import DetectionPredictor, DetectionTrainer, DetectionValidator

# 训练器
trainer = DetectionTrainer(overrides={})
trainer.train()
trained_model = trainer.best

# 验证器
val = DetectionValidator(args=...)
val(model=trained_model)

# 预测器
pred = DetectionPredictor(overrides={})
pred(source=SOURCE, model=trained_model)

# 从上次权重恢复
overrides["resume"] = trainer.last
trainer = detect.DetectionTrainer(overrides=overrides)

您可以轻松定制训练器以支持自定义任务或探索研发想法。在定制化部分了解更多关于定制 TrainersValidatorsPredictors 以适应您的项目需求的信息。

定制化教程

常见问题

如何将 YOLO11 集成到我的 Python 项目中进行对象检测?

将 Ultralytics YOLO11 集成到您的 Python 项目中非常简单。您可以加载预训练模型或从头开始训练新模型。以下是入门方法:

from ultralytics import YOLO

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

# 对图像进行对象检测
results = model("https://ultralytics.com/images/bus.jpg")

# 可视化结果
for result in results:
    result.show()

在我们的 预测模式 部分查看更多详细示例。

YOLO11 中有哪些不同的模式可用?

Ultralytics YOLO11 提供了多种模式,以满足不同的 机器学习 工作流程。这些包括:

  • 训练:使用自定义数据集训练模型。
  • 验证:在验证集上验证模型性能。
  • 预测:对新图像或视频流进行预测。
  • 导出:将模型导出为 ONNX、TensorRT 等格式。
  • 跟踪:在视频流中进行实时对象跟踪。
  • 基准测试:在不同配置下基准测试模型性能。

每种模式都旨在为模型开发和部署的不同阶段提供全面的功能。

如何使用我的数据集训练自定义 YOLO11 模型?

要训练自定义 YOLO11 模型,您需要指定您的数据集和其他超参数。以下是一个快速示例:

from ultralytics import YOLO

# 加载 YOLO 模型
model = YOLO("yolo11n.yaml")

# 使用自定义数据集训练模型
model.train(data="path/to/your/dataset.yaml", epochs=10)

有关训练的更多详细信息和示例用法链接,请访问我们的 训练模式 页面。

如何导出 YOLO11 模型以进行部署?

使用 export 函数可以轻松地将 YOLO11 模型导出为适合部署的格式。例如,您可以将模型导出为 ONNX 格式:

from ultralytics import YOLO

# 加载 YOLO 模型
model = YOLO("yolo11n.pt")

# 将模型导出为 ONNX 格式
model.export(format="onnx")

有关各种导出选项,请参阅 导出模式 文档。

我可以在不同的数据集上验证我的 YOLO11 模型吗?

是的,可以在不同的数据集上验证 YOLO11 模型。训练后,您可以使用验证模式来评估性能:

from ultralytics import YOLO

# 加载 YOLO11 模型
model = YOLO("yolo11n.yaml")

# 训练模型
model.train(data="coco8.yaml", epochs=5)

# 在不同的数据集上验证模型
model.val(data="path/to/separate/data.yaml")

查看 验证模式 页面以获取详细示例和用法。


📅 Created 11 months ago ✏️ Updated 1 day ago

Comments