模型验证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.pt
或model('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 模型验证的论据
在验证YOLO 模型时,可以对几个参数进行微调,以优化评估过程。这些参数可控制输入图像大小、批处理和性能阈值等方面。以下是每个参数的详细说明,可帮助您有效地自定义验证设置。
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
data | str | None | 指定数据集配置文件的路径(如 coco8.yaml ).该文件包括指向 验证数据类名和类数。 |
imgsz | int | 640 | 定义输入图像的尺寸。所有图像在处理前都会调整到这一尺寸。 |
batch | int | 16 | 设置每批图像的数量。使用 -1 的自动批处理功能,它会根据GPU 内存可用性自动调整。 |
save_json | bool | False | 如果 True 此外,还可将结果保存到 JSON 文件中,以便进一步分析或与其他工具集成。 |
save_hybrid | bool | False | 如果 True ,保存混合版本的标签,将原始注释与额外的模型预测相结合。 |
conf | float | 0.001 | 设置检测的最小置信度阈值。置信度低于此阈值的检测将被丢弃。 |
iou | float | 0.6 | 设置非最大抑制 (NMS) 的交叉重叠(IoU) 阈值。有助于减少重复检测。 |
max_det | int | 300 | 限制每幅图像的最大检测次数。在密度较高的场景中非常有用,可以防止检测次数过多。 |
half | bool | True | 可进行半精度(FP16)计算,减少内存使用量,在提高速度的同时,将对精度的影响降至最低。 |
device | str | None | 指定验证设备 (cpu , cuda:0 等)。可灵活利用CPU 或GPU 资源。 |
dnn | bool | False | 如果 True 使用 OpenCV 用于ONNX 模型推理的 DNN 模块,为 PyTorch 推理方法。 |
plots | bool | False | 当设置为 True 此外,它还能生成并保存预测结果与地面实况的对比图,以便对模型的性能进行直观评估。 |
rect | bool | True | 如果 True 该软件使用矩形推理进行批处理,减少了填充,可能会提高速度和效率。 |
split | str | val | 确定用于验证的数据集分割 (val , test 或 train ).可灵活选择用于性能评估的数据段。 |
project | str | None | 保存验证输出的项目目录名称。 |
name | str | None | 验证运行的名称。用于在项目文件夹内创建一个子目录,用于存储验证日志和输出结果。 |
这些设置中的每一个都在验证过程中发挥着重要作用,可对YOLO 模型进行定制化的高效评估。根据您的具体需求和资源调整这些参数,有助于实现准确性和性能之间的最佳平衡。
带参数的验证示例
下面的示例展示了YOLO 模型验证与Python 和CLI 中的自定义参数。
示例
常见问题
如何通过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):
为进一步自定义,您可以调整各种参数,如 imgsz
, batch
和 conf
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 模型吗?
是的,您可以使用 自定义数据集.指定 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 的示例:
有关验证过程中的更多自定义选项,请参阅 "带参数验证示例"部分。
如何在 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 模型验证的参数。