使用Ultralytics YOLO进行模型验证
引言
验证是机器学习流程中的关键步骤,使您能够评估训练模型的质量。Ultralytics YOLO11中的Val模式提供了一套强大的工具和指标,用于评估您的目标检测模型的性能。本指南作为全面资源,帮助您理解如何有效使用Val模式,确保您的模型既准确又可靠。
观看: Ultralytics模式教程: 验证
为什么选择Ultralytics YOLO进行验证?
以下是使用YOLO11的Val模式的优势:
- 精确性: 获取如mAP50、mAP75和mAP50-95等准确指标,全面评估您的模型。
- 便捷性: 利用内置功能,记住训练设置,简化验证过程。
- 灵活性: 使用相同或不同的数据集和图像尺寸验证您的模型。
- 超参数调优: 使用验证指标微调您的模型以获得更好的性能。
Val模式的关键功能
这些是YOLO11的Val模式提供的主要功能:
- 自动设置: 模型记住其训练配置,便于直接验证。
- 多指标支持: 基于一系列准确性指标评估您的模型。
- CLI和Python API: 根据您的偏好选择命令行界面或Python API进行验证。
- 数据兼容性: 无缝支持训练阶段使用的数据集以及自定义数据集。
Tip
- YOLO11模型自动记住其训练设置,因此您只需使用
yolo val model=yolo11n.pt
或model('yolo11n.pt').val()
即可轻松验证模型在相同图像尺寸和原始数据集上的表现。
使用示例
在COCO8数据集上验证训练好的YOLO11n模型的准确性。无需参数,因为model
保留了其训练的data
和参数作为模型属性。请参阅下面的参数部分,获取完整的导出参数列表。
Example
YOLO模型验证的参数
在验证YOLO模型时,可以微调多个参数以优化评估过程。这些参数控制输入图像尺寸、批处理和性能阈值等方面。以下是对每个参数的详细分解,帮助您有效自定义验证设置。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
data |
str |
None |
指定数据集配置文件的路径(例如,coco8.yaml )。该文件包含验证数据的路径、类别名称和类别数量。 |
imgsz |
int |
640 |
定义输入图像的大小。所有图像在处理前都会被调整为这个尺寸。 |
batch |
int |
16 |
设置每批次的图像数量。使用 -1 表示自动批处理(AutoBatch),它会根据 GPU 内存可用性自动调整。 |
save_json |
bool |
False |
如果为 True ,将结果保存到 JSON 文件中,以便进一步分析或与其他工具集成。 |
save_hybrid |
bool |
False |
如果为 True ,保存一个混合版本的标签,该标签结合了原始注释和额外的模型预测。 |
conf |
float |
0.001 |
设置检测的最小置信度阈值。置信度低于此阈值的检测将被丢弃。 |
iou |
float |
0.6 |
设置交并比(IoU)的阈值,用于非极大值抑制(NMS)。有助于减少重复检测。 |
max_det |
int |
300 |
限制每张图像的最大检测数量。在密集场景中很有用,以防止过多的检测。 |
half |
bool |
True |
启用半精度(FP16)计算,减少内存使用,并可能在不影响准确性的情况下提高速度。 |
device |
str |
None |
指定验证设备(cpu 、cuda:0 等)。允许灵活使用 CPU 或 GPU 资源。 |
dnn |
bool |
False |
如果为 True ,使用 OpenCV DNN 模块进行 ONNX 模型推理,提供与 PyTorch 推理方法的替代方案。 |
plots |
bool |
False |
当设置为 True 时,生成并保存预测与真实值的对比图,用于视觉评估模型的性能。 |
rect |
bool |
False |
如果为 True ,使用矩形推理进行批处理,减少填充并可能提高速度和效率。 |
split |
str |
val |
确定用于验证的数据集分割(val 、test 或 train )。允许灵活选择用于性能评估的数据段。 |
这些设置在验证过程中起着至关重要的作用,允许对YOLO模型进行可定制和高效的评估。根据您的具体需求和资源调整这些参数,可以帮助在准确性和性能之间实现最佳平衡。
带参数的验证示例
以下示例展示了在Python和CLI中使用自定义参数进行YOLO模型验证。
Example
常见问题
如何使用Ultralytics验证我的YOLO11模型?
要验证您的YOLO11模型,您可以使用Ultralytics提供的验证模式。例如,使用Python API,您可以加载一个模型并运行验证:
from ultralytics import YOLO
# 加载一个模型
model = YOLO("yolo11n.pt")
# 验证模型
metrics = model.val()
print(metrics.box.map) # map50-95
或者,您可以使用命令行界面(CLI):
为了进一步自定义,您可以在Python和CLI模式中调整各种参数,如imgsz
、batch
和conf
。查看YOLO模型验证参数部分以获取完整的参数列表。
YOLO11模型验证可以获得哪些指标?
YOLO11模型验证提供了几个关键指标来评估模型性能。这些包括:
- mAP50(在IoU阈值为0.5时的平均精度均值)
- mAP75(在IoU阈值为0.75时的平均精度均值)
- mAP50-95(在多个IoU阈值从0.5到0.95的平均精度均值)
使用Python API,您可以访问这些指标如下:
metrics = model.val() # 假设`model`已被加载
print(metrics.box.map) # mAP50-95
print(metrics.box.map50) # mAP50
print(metrics.box.map75) # mAP75
print(metrics.box.maps) # 每个类别的mAP50-95列表
为了进行完整的性能评估,审查所有这些指标至关重要。更多详情,请参阅验证模式的关键特性。
使用Ultralytics YOLO进行验证的优势是什么?
使用Ultralytics YOLO进行验证提供了几个优势:
- 精确度: YOLO11提供了包括mAP50、mAP75和mAP50-95在内的准确性能指标。
- 便利性: 模型记住了它们的训练设置,使得验证变得简单。
- 灵活性: 您可以针对相同或不同的数据集和图像尺寸进行验证。
- 超参数调优: 验证指标有助于微调模型以获得更好的性能。
这些优势确保您的模型得到彻底评估,并且可以优化以获得更好的结果。了解更多关于这些优势的信息,请参阅为什么使用Ultralytics YOLO进行验证部分。
我可以使用自定义数据集验证我的YOLO11模型吗?
是的,您可以使用自定义数据集验证您的YOLO11模型。指定data
参数为您数据集配置文件的路径。该文件应包括验证数据的路径、类别名称和其他相关细节。
Python示例:
from ultralytics import YOLO
# 加载一个模型
model = YOLO("yolo11n.pt")
# 使用自定义数据集进行验证
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
# 加载一个模型
model = YOLO("yolo11n.pt")
# 将验证结果保存到JSON
metrics = model.val(save_json=True)
CLI示例:
此功能对于进一步分析或与其他工具集成特别有用。查看YOLO模型验证参数以获取更多详情。