Skip to content

对象检测

对象检测示例

对象检测是一项任务,涉及在图像或视频流中识别对象的位置和类别。

对象检测器的输出是一组包围图像中对象的边界框,以及每个框的类别标签和置信度分数。当你需要在场景中识别感兴趣的对象,但不需要知道对象的确切位置或其精确形状时,对象检测是一个不错的选择。



观看: 使用预训练的Ultralytics YOLO模型进行对象检测。

Tip

YOLO11 Detect模型是默认的YOLO11模型,即yolo11n.pt,并在COCO上进行了预训练。

模型

这里展示了YOLO11预训练的Detect模型。Detect、Segment和Pose模型在COCO数据集上进行了预训练,而Classify模型在ImageNet数据集上进行了预训练。

模型在首次使用时会自动从Ultralytics的最新发布中下载。

模型 尺寸
(像素)
mAP验证
50-95
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(M)
FLOPs
(B)
YOLO11n 640 39.5 56.1 ± 0.8 1.5 ± 0.0 2.6 6.5
YOLO11s 640 47.0 90.0 ± 1.2 2.5 ± 0.0 9.4 21.5
YOLO11m 640 51.5 183.2 ± 2.0 4.7 ± 0.1 20.1 68.0
YOLO11l 640 53.4 238.6 ± 1.4 6.2 ± 0.1 25.3 86.9
YOLO11x 640 54.7 462.8 ± 6.7 11.3 ± 0.2 56.9 194.9
  • mAPval 值是在COCO val2017数据集上单模型单尺度的结果。
    通过yolo val detect data=coco.yaml device=0复现。
  • 速度Amazon EC2 P4d实例上对COCO val图像进行平均。
    通过yolo val detect data=coco.yaml batch=1 device=0|cpu复现。

训练

在图像尺寸为640的情况下,对COCO8数据集上的YOLO11n进行100个epoch的训练。有关可用参数的完整列表,请参阅配置页面。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.yaml")  # 从YAML构建新模型
model = YOLO("yolo11n.pt")  # 加载预训练模型(推荐用于训练)
model = YOLO("yolo11n.yaml").load("yolo11n.pt")  # 从YAML构建并转移权重

# 训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 从YAML构建新模型并从头开始训练
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640

# 从预训练的*.pt模型开始训练
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

# 从YAML构建新模型,转移预训练权重并开始训练
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt epochs=100 imgsz=640

数据集格式

YOLO检测数据集格式可以在数据集指南中找到详细信息。要将现有数据集从其他格式(如COCO等)转换为YOLO格式,请使用Ultralytics的JSON2YOLO工具。

验证

在COCO8数据集上验证训练好的YOLO11n模型的准确性。不需要参数,因为模型保留了训练数据和参数作为模型属性。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义模型

# 验证模型
metrics = model.val()  # 不需要参数,数据集和设置已记住
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # 包含每个类别的map50-95的列表
yolo detect val model=yolo11n.pt  # 验证官方模型
yolo detect val model=path/to/best.pt  # 验证自定义模型

预测

使用训练好的 YOLO11n 模型对图像进行预测。

示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义模型

# 使用模型进行预测
results = model("https://ultralytics.com/images/bus.jpg")  # 对图像进行预测
yolo detect predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'  # 使用官方模型进行预测
yolo detect predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # 使用自定义模型进行预测

预测 页面查看完整的 predict 模式详情。

导出

将 YOLO11n 模型导出为不同的格式,如 ONNX、CoreML 等。

示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义训练的模型

# 导出模型
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx  # 导出官方模型
yolo export model=path/to/best.pt format=onnx  # 导出自定义训练的模型

下表列出了可用的 YOLO11 导出格式。您可以使用 format 参数导出到任何格式,例如 format='onnx'format='engine'。您可以直接在导出的模型上进行预测或验证,例如 yolo predict model=yolo11n.onnx。导出完成后,将显示您的模型的使用示例。

格式 format 参数 模型 元数据 参数
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Lite tflite yolo11n.tflite imgsz, half, int8, batch
TF Edge TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch

导出 页面查看完整的 export 详情。

常见问题

如何在自定义数据集上训练 YOLO11 模型?

在自定义数据集上训练 YOLO11 模型涉及以下几个步骤:

  1. 准备数据集:确保您的数据集采用 YOLO 格式。有关指导,请参阅我们的 数据集指南
  2. 加载模型:使用 Ultralytics YOLO 库加载预训练模型或从 YAML 文件创建新模型。
  3. 训练模型:在 Python 中执行 train 方法或在 CLI 中执行 yolo detect train 命令。

示例

from ultralytics import YOLO

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

# 在您的自定义数据集上训练模型
model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=my_custom_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640

有关详细的配置选项,请访问 配置 页面。

YOLO11 中有哪些预训练模型可用?

Ultralytics YOLO11 提供了各种用于目标检测、分割和姿态估计的预训练模型。这些模型在 COCO 数据集或 ImageNet 上进行了预训练,用于分类任务。以下是一些可用的模型:

有关详细列表和性能指标,请参阅 模型 部分。

如何验证我训练的 YOLO 模型的准确性?

要验证您训练的 YOLO11 模型的准确性,您可以使用 Python 中的 .val() 方法或在 CLI 中使用 yolo detect val 命令。这将提供 mAP50-95、mAP50 等指标。

示例

from ultralytics import YOLO

# 加载模型
model = YOLO("path/to/best.pt")

# 验证模型
metrics = model.val()
print(metrics.box.map)  # mAP50-95
yolo detect val model=path/to/best.pt

有关更多验证详情,请访问 验证 页面。

我可以将 YOLO11 模型导出为哪些格式?

Ultralytics YOLO11 允许将模型导出为多种格式,如 ONNX、TensorRT、CoreML 等,以确保在不同平台和设备上的兼容性。

示例

from ultralytics import YOLO

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

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

查看导出页面上的支持格式和完整说明列表。

为什么我应该使用Ultralytics YOLO11进行目标检测?

Ultralytics YOLO11旨在为目标检测、分割和姿态估计提供最先进的性能。以下是一些主要优势:

  1. 预训练模型:利用在COCO和ImageNet等流行数据集上预训练的模型,加快开发速度。
  2. 高准确性:实现令人印象深刻的mAP分数,确保可靠的目标检测。
  3. 速度:针对实时推理进行了优化,非常适合需要快速处理的应用。
  4. 灵活性:将模型导出为ONNX和TensorRT等多种格式,以便在多个平台上部署。

在我们的博客中探索使用案例和成功故事,展示YOLO11的实际应用。


📅 Created 11 months ago ✏️ Updated 12 days ago

Comments