跳至内容

模型验证Ultralytics YOLO

Ultralytics YOLO 生态系统和集成

导言

验证是机器学习管道中的一个关键步骤,可让您评估训练模型的质量。Ultralytics YOLO11 中的 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 设置 "非最大抑制"的 "交叉重叠联合"阈值。控制重复检测消除。
max_det int 300 限制每幅图像的最大检测次数。在高密度场景中非常有用,可以防止检测次数过多并管理计算资源。
half bool True 可进行精度(FP16)计算,减少内存使用量,在提高速度的同时,将对精度的影响降至最低。
device str None 指定验证设备 (cpu, cuda:0等)。何时 None会自动选择最佳可用设备。可以用逗号分隔指定多个CUDA 设备。
dnn bool False 如果 True使用 OpenCV 用于ONNX 模型推理的 DNN 模块,为 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 启用与类别无关的 "非最大值抑制"(Non-Maximum Suppression)功能,可合并重叠的方框,而不管其预测类别如何。这对注重实例的应用非常有用。
single_cls bool False 在验证过程中将所有类别视为单一类别。这对评估模型在二元检测任务中的性能很有用,或者在类别区分并不重要的情况下也很有用。

这些设置中的每一个都在验证过程中发挥着重要作用,可对YOLO 模型进行定制化的高效评估。根据您的具体需求和资源调整这些参数,有助于实现准确性和性能之间的最佳平衡。

带参数的验证示例

下面的示例展示了YOLO 模型验证与Python 和CLI 中的自定义参数。

示例

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 结果保存为不同格式。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
方法 返回类型 说明
to_df() DataFrame 以结构化 Pandas DataFrame 的形式返回验证结果。
to_csv() str 以 CSV 格式导出验证结果并返回 CSV 字符串。
to_xml() str 以 XML 格式导出验证结果并返回 XML 字符串。
to_html() str 以 HTML 表格格式导出验证结果,并返回 HTML 字符串。
to_json() str 以 JSON 格式导出验证结果并返回 JSON 字符串。
to_sql() str 在 SQl 数据库中导出验证结果。

更多详情,请参阅 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 年前 ✏️已更新 15 天前

评论