跳至内容

模型验证Ultralytics YOLO

Ultralytics YOLO 生态系统和集成

导言

验证是机器学习管道中的一个关键步骤,可让您评估训练模型的质量。Ultralytics YOLOv8 中的 Val 模式提供了一套强大的工具和指标,用于评估对象检测模型的性能。本指南是了解如何有效使用验证模式以确保模型准确可靠的完整资源。



观看: Ultralytics 模式教程:验证

为什么使用Ultralytics YOLO 进行验证?

以下是使用YOLOv8 Val 模式的优势所在:

  • 精确:获取 mAP50、mAP75 和 mAP50-95 等精确指标,全面评估模型。
  • 方便:利用可记忆培训设置的内置功能,简化验证过程。
  • 灵活性:使用相同或不同的数据集和图像尺寸验证模型。
  • 超参数调整:使用验证指标对模型进行微调,以提高性能。

Val 模式的主要功能

以上就是YOLOv8 Val 模式提供的显著功能:

  • 自动设置:模型会记住自己的训练配置,以便直接进行验证。
  • 多指标支持:根据一系列准确度指标评估模型。
  • CLI 和Python API:根据您的验证偏好,选择命令行界面或Python API。
  • 数据兼容性:可与训练阶段使用的数据集以及自定义数据集无缝兼容。

提示

  • YOLOv8 模型会自动记住它们的训练设置,因此您可以在相同的图像尺寸和原始数据集上轻松验证模型,只需 yolo val model=yolov8n.ptmodel('yolov8n.pt').val()

使用示例

在 COCO8 数据集上验证训练有素的YOLOv8n 模型的准确性。无需传递参数,因为 model 保留其培训 data 和参数作为模型属性。有关导出参数的完整列表,请参阅下面的 "参数 "部分。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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=yolov8n.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 设置每批图像的数量。使用 -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 DNN 模块进行ONNX 模型推断,为PyTorch 推断方法提供了一种替代方法。
plots bool False 当设置为 True此外,它还能生成并保存预测结果与地面实况的对比图,以便对模型的性能进行可视化评估。
rect bool False 如果 True该软件使用矩形推理进行批处理,减少了填充,可能会提高速度和效率。
split str val 确定用于验证的数据集分割 (val, testtrain).可灵活选择数据段进行性能评估。

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

带参数的验证示例

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

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")

# Customize validation settings
validation_results = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolov8n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0

常见问题

如何用Ultralytics 验证我的YOLOv8 模型?

要验证YOLOv8 模型,可以使用Ultralytics 提供的 Val 模式。例如,使用Python API,您可以加载模型并通过以下方式运行验证:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

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

yolo val model=yolov8n.pt

为进一步自定义,您可以调整各种参数,如 imgsz, batchconf Python 和CLI 模式。检查 YOLO 模型验证的论据 部分获取完整的参数列表。

YOLOv8 模型验证有哪些指标?

YOLOv8 模型验证为评估模型性能提供了几个关键指标。这些指标包括

  • 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 进行验证有几个优势:

  • 精度: YOLOv8 提供精确的性能指标,包括 mAP50、mAP75 和 mAP50-95。
  • 方便:模型会记住自己的训练设置,因此验证非常简单。
  • 灵活性:您可以根据相同或不同的数据集和图像尺寸进行验证。
  • 超参数调整:验证指标有助于对模型进行微调,以提高性能。

这些优势可确保对您的模型进行全面评估,并对其进行优化,以获得最佳结果。有关这些优势的更多信息,请参阅Ultralytics YOLO 部分。

能否使用自定义数据集验证我的YOLOv8 模型?

可以,您可以使用自定义数据集验证YOLOv8 模型。指定 data 参数,其中包含数据集配置文件的路径。该文件应包括验证数据的路径、类名和其他相关细节。

Python 中的示例:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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=yolov8n.pt data=path/to/your/custom_dataset.yaml

有关验证过程中的更多自定义选项,请参阅 "带参数验证示例"部分。

如何在YOLOv8 中将验证结果保存为 JSON 文件?

要将验证结果保存到 JSON 文件,可以设置 save_json 参数 True 进行验证。这可以在Python API 和CLI 中完成。

Python 中的示例:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

使用CLI 的示例:

yolo val model=yolov8n.pt save_json=True

该功能对于进一步分析或与其他工具集成特别有用。详情请查看 YOLO 模型验证的参数



创建于 2023-11-12,更新于 2024-07-04
作者:glenn-jocher(14)、Burhan-Q(1)、RizwanMunawar(1)

评论