模型验证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 |
设置每批图像的数量。数值越大,GPU 内存利用效率越高,但需要的 VRAM 也越多。根据可用硬件资源进行调整。 |
save_json |
bool |
False |
如果 True 此外,还可将结果保存为 JSON 文件,以便进一步分析、与其他工具集成或提交给 COCO 等评估服务器。 |
save_hybrid |
bool |
False |
如果 True 保存混合版本的标签,将原始注释与额外的模型预测相结合。适用于半监督学习和数据集增强。 |
conf |
float |
0.001 |
设置检测的最小置信度阈值。较低的值会增加召回率,但可能会带来更多的误报。在验证过程中用于计算精确度-召回曲线。 |
iou |
float |
0.6 |
设置 "非最大抑制"的 "交叉重叠联合"阈值。控制重复检测消除。 |
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 曲线的对比图,以便对模型性能进行可视化评估。 |
rect |
bool |
True |
如果 True 该软件使用矩形推理进行分批处理,减少了填充,并可能通过以原始长宽比处理图像来提高速度和效率。 |
split |
str |
'val' |
确定用于验证的数据集分割 (val , test 或 train ).可灵活选择数据段进行性能评估。 |
project |
str |
None |
保存验证输出结果的项目目录名称。帮助整理来自不同实验或模型的结果。 |
name |
str |
None |
验证运行的名称。用于在项目文件夹内创建一个子目录,用于存储验证日志和输出结果。 |
verbose |
bool |
False |
如果 True 在验证过程中显示详细信息,包括每类指标、批处理进度和其他调试信息。 |
save_txt |
bool |
False |
如果 True 该系统可将检测结果保存为文本文件,每幅图像一个文件,便于进一步分析、定制后处理或与其他系统集成。 |
save_conf |
bool |
False |
如果 True 时,在保存的文本文件中包含置信度值。 save_txt 启用后,可提供更详细的分析和过滤输出。 |
save_crop |
bool |
False |
如果 True 该功能可保存检测到的物体的裁剪图像,这些图像可用于创建重点数据集、视觉验证或进一步分析单个检测结果。 |
workers |
int |
8 |
加载数据的工作线程数。数值越大,数据预处理速度越快,但可能会增加CPU 占用率。设置为 0 会使用主线程,这在某些环境中会更稳定。 |
augment |
bool |
False |
在验证过程中启用测试时间增强(TTA),通过在输入的转换版本上运行推理,以推理速度为代价提高检测精度。 |
agnostic_nms |
bool |
False |
启用与类别无关的 "非最大值抑制"(Non-Maximum Suppression)功能,可合并重叠的方框,而不管其预测类别如何。这对注重实例的应用非常有用。 |
single_cls |
bool |
False |
在验证过程中将所有类别视为单一类别。这对评估模型在二元检测任务中的性能很有用,或者在类别区分并不重要的情况下也很有用。 |
这些设置中的每一个都在验证过程中发挥着重要作用,可对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 模型?
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 模型验证的参数。