Skip to content

使用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进行验证。
  • 数据兼容性: 无缝支持训练阶段使用的数据集以及自定义数据集。

Tip

  • YOLO11模型自动记住其训练设置,因此您只需使用yolo val model=yolo11n.ptmodel('yolo11n.pt').val()即可轻松验证模型在相同图像尺寸和原始数据集上的表现。

使用示例

在COCO8数据集上验证训练好的YOLO11n模型的准确性。无需参数,因为model保留了其训练的data和参数作为模型属性。请参阅下面的参数部分,获取完整的导出参数列表。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义模型

# 验证模型
metrics = model.val()  # 无需参数,数据集和设置已记住
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # 包含每个类别的map50-95的列表
yolo detect val model=yolo11n.pt  # 验证官方模型
yolo detect val model=path/to/best.pt  # 验证自定义模型

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 指定验证设备(cpucuda:0 等)。允许灵活使用 CPU 或 GPU 资源。
dnn bool False 如果为 True,使用 OpenCV DNN 模块进行 ONNX 模型推理,提供与 PyTorch 推理方法的替代方案。
plots bool False 当设置为 True 时,生成并保存预测与真实值的对比图,用于视觉评估模型的性能。
rect bool False 如果为 True,使用矩形推理进行批处理,减少填充并可能提高速度和效率。
split str val 确定用于验证的数据集分割(valtesttrain)。允许灵活选择用于性能评估的数据段。

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

带参数的验证示例

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

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")

# 自定义验证设置
validation_results = 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

常见问题

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

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

from ultralytics import YOLO

# 加载一个模型
model = YOLO("yolo11n.pt")

# 验证模型
metrics = model.val()
print(metrics.box.map)  # map50-95

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

yolo val model=yolo11n.pt

为了进一步自定义,您可以在Python和CLI模式中调整各种参数,如imgszbatchconf。查看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示例:

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

# 加载一个模型
model = YOLO("yolo11n.pt")

# 将验证结果保存到JSON
metrics = model.val(save_json=True)

CLI示例:

yolo val model=yolo11n.pt save_json=True

此功能对于进一步分析或与其他工具集成特别有用。查看YOLO模型验证参数以获取更多详情。


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments