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模型。在此模式下,模型使用指定的数据集和超参数进行训练。训练过程涉及优化模型的参数,以便它能够准确预测图像中对象的类别和位置。
训练
验证
验证模式用于在训练后验证YOLO11模型。在此模式下,模型在验证集上进行评估,以测量其准确性和泛化性能。此模式可用于调整模型的超参数以提高其性能。
验证
预测
预测模式用于使用训练好的YOLO11模型对新图像或视频进行预测。在此模式下,模型从检查点文件加载,用户可以提供图像或视频进行推理。模型预测输入图像或视频中对象的类别和位置。
预测
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模型导出为可用于部署的格式。在此模式下,模型被转换为其他软件应用程序或硬件设备可用的格式。此模式在将模型部署到生产环境中时非常有用。
导出
跟踪
跟踪模式用于使用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等)的每张图像的推理时间(以毫秒为单位)。这些信息可以帮助用户根据其对速度和准确性的要求,为其特定用例选择最佳的导出格式。
基准测试
使用训练器
YOLO
模型类是训练器类的高级封装。每个YOLO任务都有自己的训练器,继承自BaseTrainer
。
检测训练器示例
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)
您可以轻松定制训练器以支持自定义任务或探索研发想法。在定制化部分了解更多关于定制 Trainers
、Validators
和 Predictors
以适应您的项目需求的信息。
常见问题
如何将 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")
查看 验证模式 页面以获取详细示例和用法。