跳转至内容

使用 Ultralytics YOLO 进行模型验证

Ultralytics YOLO 生态系统和集成

简介

验证是机器学习流程中的关键步骤,使您可以评估训练模型的质量。Ultralytics YOLO11 中的 Val 模式提供了一套强大的工具和指标,用于评估您的目标检测模型的性能。本指南是理解如何有效使用 Val 模式以确保您的模型既准确又可靠的完整资源。



观看: Ultralytics 模式教程:验证

为什么使用 Ultralytics YOLO 进行验证?

以下是使用 YOLO11 的 Val 模式的优势:

  • 精度: 获取诸如 mAP50、mAP75 和 mAP50-95 之类的准确指标,以全面评估您的模型。
  • 便利性: 利用内置功能记住训练设置,从而简化验证过程。
  • 灵活性: 使用相同或不同的数据集和图像大小验证您的模型。
  • 超参数调整 使用验证指标来微调您的模型,以获得更好的性能。

Val 模式的关键特性

以下是 YOLO11 的 Val 模式提供的值得注意的功能:

  • 自动设置: 模型会记住其训练配置,以便进行简单的验证。
  • 多指标支持: 基于一系列精度指标评估您的模型。
  • CLI 和 Python API: 根据您的验证偏好,选择命令行界面或 Python API。
  • 数据兼容性: 与训练阶段使用的数据集以及自定义数据集无缝协作。

提示

  • YOLO11 模型会自动记住其训练设置,因此您只需使用以下命令,即可轻松地以相同的图像大小和原始数据集验证模型 yolo val model=yolo11n.ptmodel('yolo11n.pt').val()

使用示例

验证训练后的 YOLO11n 模型 准确性 在 COCO8 数据集上。由于 model 保留其训练 data 以及作为模型属性的参数。有关完整的验证参数列表,请参见下面的“参数”部分。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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 contains map50-95 of each category
yolo detect val model=yolo11n.pt      # val official model
yolo detect val model=path/to/best.pt # val custom model

YOLO 模型验证的参数

在验证 YOLO 模型时,可以微调多个参数以优化评估过程。这些参数控制着输入图像大小、批量处理和性能阈值等方面。以下是每个参数的详细分解,旨在帮助您有效地自定义验证设置。

参数 类型 默认值 描述
data str None 指定数据集配置文件(例如, coco8.yaml)的路径。 此文件包含指向 验证数据的路径,类别名称和类别数量。
imgsz int 640 定义输入图像的大小。所有图像在处理前都会调整为此尺寸。较大的尺寸可能会提高小目标的准确性,但会增加计算时间。
batch int 16 设置每个批次的图像数量。较高的值能更有效地利用 GPU 内存,但需要更多的 VRAM。根据可用的硬件资源进行调整。
save_json bool False 可视化参数: True,将结果保存到 JSON 文件中,以便进一步分析、与其他工具集成或提交到 COCO 等评估服务器。
conf float 0.001 设置检测的最小置信度阈值。较低的值会提高召回率,但也可能引入更多的假阳性。在验证期间用于计算精确率-召回率曲线。
iou float 0.7 设置交并比(Intersection Over Union)阈值,用于非极大值抑制(Non-Maximum Suppression)。控制重复检测的消除。
max_det int 300 限制每幏图像的最大检测数量。在密集场景中非常有用,可防止过度检测和管理计算资源。
half bool True 启用半精度 (FP16) 计算,从而减少内存使用量,并可能在对准确性影响最小的情况下提高速度。
device str None 指定验证的设备(cpu, cuda:0,等等)。当 None,自动选择最佳可用设备。多个 CUDA 设备可以用逗号分隔指定。
dnn bool False 可视化参数: True,使用 OpenCV DNN 模块进行 ONNX 模型推理,从而提供了一种替代 PyTorch 推理方法。
plots bool False 当设置为 True,生成并保存预测与真实值的对比图、混淆矩阵和 PR 曲线,以便对模型性能进行可视化评估。
classes list[int] None 指定要训练的类 ID 列表。可用于在评估期间过滤并仅关注某些类。
rect bool True 可视化参数: True,使用矩形推理进行批处理,减少填充,并通过以原始宽高比处理图像来潜在地提高速度和效率。
split str 'val' 确定用于验证的数据集分割(val, testtrain)。 允许灵活选择数据段进行性能评估。
project str None 用于保存验证输出的项目目录的名称。有助于组织来自不同实验或模型的结果。
name str None 验证运行的名称。用于在项目文件夹中创建一个子目录,用于存储验证日志和输出。
verbose bool False 可视化参数: True,在验证过程中显示详细信息,包括每个类别的指标、批次进度和其他调试信息。
save_txt bool False 可视化参数: True,将检测结果保存在文本文件中,每个图像对应一个文件,可用于进一步分析、自定义后处理或与其他系统集成。
save_conf bool False 可视化参数: True,在保存的文本文件中包含置信度值,当 save_txt 已启用,提供更详细的输出以供分析和过滤。
workers int 8 用于数据加载的工作线程数。较高的值可以加快数据预处理速度,但可能会增加 CPU 使用率。设置为 0 使用主线程,这在某些环境中可能更稳定。
augment bool False 启用测试时增强(TTA),通过对输入的转换版本运行推理,从而可能提高检测精度,但会牺牲推理速度。
agnostic_nms bool False 启用与类别无关的 非极大值抑制,它合并重叠的框,而不管其预测的类别如何。对于以实例为中心的应用程序很有用。
single_cls bool False 在验证期间将所有类别视为单一类别。这对于评估二元检测任务中的模型性能或类别区分并不重要时非常有用。
visualize bool False 可视化每张图像的真值、真正例、假正例和假反例。 有助于调试和模型解释。

这些设置在验证过程中都起着至关重要的作用,从而可以对 YOLO 模型进行可定制且高效的评估。根据您的特定需求和资源调整这些参数,有助于在准确性和性能之间实现最佳平衡。

带参数的示例验证



观看: 如何以 CSV、JSON、SQL、Polars DataFrame 等格式导出模型验证结果

在 Google Colab 中探索模型验证和不同的导出方法

以下示例展示了在 Python 和 CLI 中使用自定义参数进行 YOLO 模型验证。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0

导出 ConfusionMatrix

您还可以使用提供的代码以不同的格式保存 ConfusionMatrix 结果。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
方法 返回类型 描述
summary() List[Dict[str, Any]] 将验证结果转换为汇总字典。
to_df() DataFrame 以结构化 Polars DataFrame 的形式返回验证结果。
to_csv() str 以 CSV 格式导出验证结果,并返回 CSV 字符串。
to_json() str 以 JSON 格式导出验证结果,并返回 JSON 字符串。

有关更多详细信息,请参见 DataExportMixin 类文档.

常见问题

如何使用 Ultralytics 验证我的 YOLO11 模型?

要验证您的 YOLO11 模型,您可以使用 Ultralytics 提供的 Val 模式。例如,使用 Python API,您可以加载模型并使用以下命令运行验证:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

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

或者,您可以使用命令行界面(CLI):

yolo val model=yolo11n.pt

为了进一步自定义,您可以调整各种参数,例如 imgsz, batchconf 在 Python 和 CLI 模式下。查看 YOLO 模型验证的参数 部分以获取完整的参数列表。

我可以从 YOLO11 模型验证中获得哪些指标?

YOLO11 模型验证提供了几个关键指标来评估模型性能。这些包括:

  • mAP50(IoU 阈值为 0.5 时的平均精度均值)
  • mAP75(IoU 阈值为 0.75 时的平均精度均值)
  • mAP50-95(从 0.5 到 0.95 的多个 IoU 阈值上的平均精度均值)

使用 Python API,您可以按如下方式访问这些指标:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category

为了进行完整的性能评估,审查所有这些指标至关重要。有关更多详细信息,请参阅Val 模式的主要功能

使用 Ultralytics YOLO 进行验证有哪些优势?

使用 Ultralytics YOLO 进行验证具有以下几个优势:

  • 精度 YOLO11 提供准确的性能指标,包括 mAP50、mAP75 和 mAP50-95。
  • 便利性: 模型会记住其训练设置,从而使验证变得简单明了。
  • 灵活性: 您可以针对相同或不同的数据集和图像大小进行验证。
  • 超参数调整: 验证指标有助于微调模型以获得更好的性能。

这些优势确保您的模型得到彻底评估,并且可以针对卓越的结果进行优化。在为什么使用 Ultralytics YOLO 进行验证部分了解有关这些优势的更多信息。

我可以使用自定义数据集验证我的 YOLO11 模型吗?

是的,您可以使用以下命令验证您的 YOLO11 模型 自定义数据集。指定 data 参数,并提供数据集配置文件的路径。此文件应包含 验证数据的路径、类别名称和其他相关详细信息的路径。

Python 示例:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

CLI 使用示例:

yolo val model=yolo11n.pt data=path/to/your/custom_dataset.yaml

有关验证期间更多可自定义的选项,请参阅带参数的验证示例部分。

如何在 YOLO11 中将验证结果保存到 JSON 文件?

要将验证结果保存到 JSON 文件,您可以设置 save_json 参数为 True 在运行验证时。这可以通过 Python API 和 CLI 完成。

Python 示例:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

CLI 使用示例:

yolo val model=yolo11n.pt save_json=True

此功能对于进一步分析或与其他工具集成特别有用。有关更多详细信息,请查看YOLO 模型验证的参数



📅 1 年前创建 ✏️ 5 天前更新

评论