目标检测

YOLO object detection with bounding boxes

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

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



Watch: Object Detection with Pretrained Ultralytics YOLO Model.
提示

YOLO26 Detect 模型是默认的 YOLO26 模型,即 yolo26n.pt,并预训练于 COCO 数据集。

模型

此处展示了 YOLO26 预训练 Detect 模型。Detect、Segment 和 Pose 模型预训练于 COCO 数据集,Semantic 模型预训练于 Cityscapes,而 Classify 模型则预训练于 ImageNet 数据集。

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

模型大小
(像素)
mAPval
50-95
mAPval
50-95(e2e)
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(百万)
FLOPs
(十亿)
YOLO26n64040.940.138.9 ± 0.71.7 ± 0.02.45.4
YOLO26s64048.647.887.2 ± 0.92.5 ± 0.09.520.7
YOLO26m64053.152.5220.0 ± 1.44.7 ± 0.120.468.2
YOLO26l64055.054.4286.2 ± 2.06.2 ± 0.224.886.4
YOLO26x64057.556.9525.8 ± 4.011.8 ± 0.255.7193.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 进行复现。
  • 参数FLOPs 值适用于 model.fuse() 之后融合的模型,该操作合并了 Conv 和 BatchNorm 层,对于端到端模型,还移除了辅助的一对多检测头。预训练检查点保留了完整的训练架构,因此计数值可能会更高。

训练

在 COCO8 数据集上训练 YOLO26n 100 个 epochs,图像大小为 640。有关可用参数的完整列表,请参阅 配置 页面。

示例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

See full train mode details in the Train page. Detection models can also be trained on cloud GPUs through Ultralytics Platform.

数据集格式

YOLO 检测数据集格式的详细信息可在 数据集指南 中找到。要将现有数据集从其他格式(如 COCO 等)转换为 YOLO 格式,请使用 Ultralytics 提供的 JSON2YOLO 工具。你也可以直接在 Ultralytics Platform 上使用 AI 辅助标注工具标注和管理检测数据集。

验证

在 COCO8 数据集上验证训练好的 YOLO26n 模型 准确率。无需任何参数,因为 model 保留了其训练时的 data 和参数作为模型属性。

示例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

预测

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

示例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xywh = result.boxes.xywh  # center-x, center-y, width, height
    xywhn = result.boxes.xywhn  # normalized
    xyxy = result.boxes.xyxy  # top-left-x, top-left-y, bottom-right-x, bottom-right-y
    xyxyn = result.boxes.xyxyn  # normalized
    names = [result.names[cls.item()] for cls in result.boxes.cls.int()]  # class name of each box
    confs = result.boxes.conf  # confidence score of each box

See full predict mode details in the Predict page.

导出

将 YOLO26n 模型导出为 ONNX、CoreML 等其他格式。

示例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

可用的 YOLO26 导出格式如下表所示。你可以使用 format 参数导出为任何格式,例如 format='onnx'format='engine'。你可以在导出的模型上直接进行预测或验证,例如 yolo predict model=yolo26n.onnx。导出完成后,会向你展示该模型的使用示例。

格式format 参数模型元数据参数
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n_deepx_model/imgsz, int8, data, optimize, device

See full export details in the Export page.

常见问题 (FAQ)

我可以不通过编程来训练和部署检测模型吗?

可以。Ultralytics Platform 提供了基于浏览器的工作流,用于标注数据集、在云 GPU 上训练检测模型,并将它们部署到推理端点。查看 Platform 快速入门 以开始使用。

如何在我自己的数据集上训练 YOLO26 模型?

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

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

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model on your custom dataset
model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)

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

YOLO26 有哪些可用的预训练模型?

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

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

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

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

示例
from ultralytics import YOLO

# Load the model
model = YOLO("path/to/best.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # mAP50-95

有关验证的更多详细信息,请访问 Val 页面。

YOLO26 模型可以导出到哪些格式?

Ultralytics YOLO26 允许将模型导出为各种格式,例如 ONNXTensorRTCoreML 等,以确保跨不同平台和设备的兼容性。

示例
from ultralytics import YOLO

# Load the model
model = YOLO("yolo26n.pt")

# Export the model to ONNX format
model.export(format="onnx")

Export 页面查看支持格式的完整列表和操作说明。

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

Ultralytics YOLO26 旨在为 目标检测实例分割语义分割姿态估计 提供顶尖的性能。以下是一些关键优势:

  1. 预训练模型:利用在 COCOImageNet 等流行数据集上预训练的模型,以加快开发速度。
  2. 高准确性:实现出色的 mAP 分数,确保可靠的目标检测。
  3. 速度:针对 实时推理 进行了优化,使其成为需要快速处理的应用的理想选择。
  4. 灵活性:将模型导出为 ONNX 和 TensorRT 等各种格式,以便在多个平台上进行部署。

浏览我们的 博客 查看展示 YOLO26 在实际应用中的案例和成功故事。

评论