Meet YOLO26: next-gen vision AI.

Link to this section使用 Ultralytics YOLO 进行模型验证#

Ultralytics YOLO ecosystem and integrations

Link to this section简介#

验证是机器学习流程中的关键步骤,让你能够评估训练模型的质量。Ultralytics YOLO26 中的 Val 模式提供了一套强大的工具和指标,用于评估你的目标检测模型性能。本指南是帮助你理解如何有效使用 Val 模式,以确保你的模型既准确又可靠的完整资源。



Watch: Ultralytics Modes Tutorial: Validation

Link to this section为什么要使用 Ultralytics YOLO 进行验证?#

以下是使用 YOLO26 的 Val 模式的优势:

  • 精确度: 获取诸如 mAP50、mAP75 和 mAP50-95 等精确指标,全面评估你的模型。
  • 便捷性: 利用内置功能记忆训练设置,简化验证过程。
  • 灵活性: 使用相同或不同的数据集和图像大小来验证你的模型。
  • 超参数调优 使用验证指标对模型进行微调,以获得更好的性能。

Link to this sectionVal 模式的关键特性#

以下是 YOLO26 的 Val 模式提供的显著功能:

  • 自动设置: 模型会记住其训练配置,以便直接进行验证。
  • 多指标支持: 基于一系列准确率指标来评估你的模型。
  • CLI 和 Python API: 根据你的偏好,选择命令行界面或 Python API 进行验证。
  • 数据兼容性: 可与训练阶段使用的数据集以及自定义数据集无缝协作。
提示
  • YOLO26 模型会自动记住其训练设置,因此你可以通过 yolo val model=yolo26n.ptYOLO("yolo26n.pt").val() 轻松地在相同的图像尺寸和原始数据集上验证模型。

Link to this section使用示例#

在 COCO8 数据集上验证已训练的 YOLO26n 模型的准确率。无需参数,因为 model 会将训练时的 data 和参数保留为模型属性。请参阅下方的“参数”部分以获取完整的验证参数列表。

Windows 多进程错误

在 Windows 上,以脚本形式启动验证时,你可能会遇到 RuntimeError。在你的验证代码前添加一个 if __name__ == "__main__": 代码块即可解决。

示例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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 containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Link to this sectionYOLO 模型验证的参数#

在验证 YOLO 模型时,可以通过微调多个参数来优化评估过程。这些参数控制着输入图像大小、批处理和性能阈值等方面。以下是每个参数的详细说明,以帮助你有效地自定义验证设置。

参数类型默认值描述
datastrNone指定数据集配置文件(如 coco8.yaml)的路径。该文件应包含验证数据的路径。
imgszint640定义输入图像的大小。在处理之前,所有图像都会被缩放到此尺寸。较大的尺寸可能会提高小目标的准确率,但会增加计算时间。
batchint16设置每个批次的图像数量。较高的值可以更有效地利用 GPU 内存,但需要更多的显存。请根据可用的硬件资源进行调整。
save_jsonboolFalse如果设置为 True,将结果保存到 JSON 文件中,以便进行后续分析、与其他工具集成或提交到如 COCO 等评估服务器。
conffloat0.001设置检测的最低置信度阈值。较低的值会增加召回率,但可能会引入更多的误报。在验证期间用于计算精确率-召回率曲线。对于 OBB 验证,默认为 0.01 以减少内存使用。
ioufloat0.7Sets the Intersection Over Union threshold for Non-Maximum Suppression. Controls duplicate detection elimination.
max_detint300限制每张图像的最大检测数量。在密集场景中很有用,可以防止过多的检测并管理计算资源。
halfboolFalse启用半精度 (FP16) 计算,减少内存使用并可能提高速度,且对准确率的影响微乎其微。
devicestrNone指定用于验证的设备(cpucuda:0npunpu:0 等)。当为 None 时,会自动选择最佳可用设备。多个 CUDA 设备可以通过逗号分隔指定。
dnnboolFalse如果设置为 True,则使用 OpenCV DNN 模块进行 ONNX 模型推理,提供替代 PyTorch 推理方法的方式。
plotsboolTrue当设置为 True 时,生成并保存预测结果与标注真值的对比图、混淆矩阵以及 PR 曲线,用于直观评估模型性能。
classeslist[int]None指定要评估的类别 ID 列表。有助于在评估过程中过滤掉不需要的类,仅关注特定类别。
rectboolTrue如果设置为 True,使用矩形推理进行批处理,通过以原始长宽比处理图像来减少填充,并可能提高速度和效率。
splitstr'val'确定用于验证的数据集拆分(valtesttrain)。在选择性能评估的数据片段时提供了灵活性。
projectstrNone保存验证输出的项目目录名称。有助于组织来自不同实验或模型的结果。
namestrNone验证运行的名称。用于在项目文件夹内创建子目录,验证日志和输出将存储在该处。
verboseboolTrue如果设置为 True,则在验证过程中显示详细信息,包括各类的指标、批次进度和其他调试信息。
save_txtboolFalse如果设置为 True,将检测结果保存到文本文件中(每张图像一个文件),便于后续分析、自定义后处理或与其他系统集成。
save_confboolFalse如果设置为 True,且已启用 save_txt,则在保存的文本文件中包含置信度值,为分析和过滤提供更详细的输出。
workersint8用于数据加载的工作线程数量。较高的值可以加快数据预处理速度,但可能会增加 CPU 使用率。设置为 0 则使用主线程,在某些环境中可能更稳定。
augmentboolFalse在验证期间启用测试时增强 (TTA),通过对输入的转换版本运行推理,可能以牺牲推理速度为代价提高检测准确率。
agnostic_nmsboolFalse启用类无关的非极大值抑制,无论预测的类别如何,都会合并重叠的框。这对于实例聚焦的应用很有用。对于端到端模型(YOLO26, YOLOv10),这仅能防止同一检测结果以多个类别标签出现(IoU=1.0 的重复项),而不会在不同框之间执行基于 IoU 阈值的抑制。
single_clsboolFalse在验证期间将所有类别视为单个类别。对于评估二元检测任务的模型性能,或者当类别区分不重要时很有用。
visualizeboolFalse可视化每张图像的标注真值、真正例、假正例和假负例。对于调试和模型解释很有用。
show_labelsboolTruevisualize=True 时,在验证可视化图中显示类别标签。设置为 False 可以获得更清晰的匹配和错误查看效果。
show_confboolTruevisualize=True 时,在验证可视化图中显示置信度分数。设置为 False 可以获得更清晰的匹配和错误查看效果。
compileboolstrFalse启用 PyTorch 2.x torch.compile 图编译,后台使用 backend='inductor'。支持 True"default"False → 禁用,或如 "default""reduce-overhead""max-autotune-no-cudagraphs" 等字符串模式。如果不支持,会发出警告并回退到即时模式。
end2endboolNone覆盖支持无 NMS 推理的 YOLO 模型(YOLO26, YOLOv10)中的端到端模式。将其设置为 False 可以让你使用传统的 NMS 流程进行验证,此外还可以使用 iou 参数。

这些设置中的每一项都在验证过程中发挥着至关重要的作用,允许对 YOLO 模型进行可定制且高效的评估。根据你的具体需求和资源调整这些参数,有助于在准确率和性能之间取得最佳平衡。

Link to this section带参数的验证示例#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

在 Google Colab 中探索模型验证和不同的导出方法

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

示例
from ultralytics import YOLO

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

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
导出混淆矩阵

你还可以使用提供的代码将混淆矩阵结果保存为不同格式。

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
单图精确率、召回率和 F1

验证功能会存储除分类任务外所有任务的每张图像的精确率、召回率、F1、TP、FP 和 FN 指标(在 IoU 阈值 0.5 时)。在验证完成后,可以通过 results.box.image_metrics(用于检测和 OBB)、results.seg.image_metrics(用于分割)以及 results.pose.image_metrics(用于姿态估计)进行访问。

from ultralytics import YOLO

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

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

image_metrics 中的每个条目都包含以下键:

描述
precision图像的精确率得分 (tp / (tp + fp))。
recall图像的召回率得分 (tp / (tp + fn))。
f1精确率和召回率的调和平均值。
tp图像的真正例数量。
fp图像的假正例数量。
fn图像的假负例数量。

此功能适用于检测、分割、姿态估计和 OBB 任务。

方法返回类型描述
summary()List[Dict[str, Any]]将验证结果转换为汇总字典。
to_df()DataFrame将验证结果以结构化的 Polars DataFrame 形式返回。
to_csv()str以 CSV 格式导出验证结果并返回 CSV 字符串。
to_json()str以 JSON 格式导出验证结果并返回 JSON 字符串。

更多详细信息请参阅 DataExportMixin 类文档

Link to this section常见问题解答 (FAQ)#

Link to this section如何使用 Ultralytics 验证我的 YOLO26 模型?#

要验证你的 YOLO26 模型,可以使用 Ultralytics 提供的 Val 模式。例如,使用 Python API,你可以加载模型并运行验证:

from ultralytics import YOLO

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

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

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

yolo val model=yolo26n.pt

如需进一步自定义,你可以在 Python 和 CLI 模式中调整各种参数,如 imgszbatchconf。查看 YOLO 模型验证参数 部分获取完整参数列表。

Link to this section我能从 YOLO26 模型验证中获得哪些指标?#

YOLO26 模型验证提供了几个用于评估模型性能的关键指标。其中包括:

  • mAP50(IoU 阈值为 0.5 时的平均精度均值)
  • mAP75(IoU 阈值为 0.75 时的平均精度均值)
  • mAP50-95(IoU 阈值从 0.5 到 0.95 范围内的平均精度均值)

使用 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
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

为了进行完整的性能评估,查阅所有这些指标至关重要。更多详细信息,请参考 Val 模式的关键功能

Link to this section使用 Ultralytics YOLO 进行验证有什么优势?#

使用 Ultralytics YOLO 进行验证具有以下几个优势:

  • 精度 YOLO26 提供准确的性能指标,包括 mAP50、mAP75 和 mAP50-95。
  • 便捷性: 模型会记住其训练设置,使验证过程变得简单直接。
  • 灵活性: 你可以使用相同或不同的数据集和图像尺寸进行验证。
  • 超参数调优: 验证指标有助于微调模型以获得更好的性能。

这些优势确保了你的模型得到全面评估,并能优化以获得卓越的结果。在 为何使用 Ultralytics YOLO 进行验证 部分了解更多相关优势。

Link to this section我可以使用自定义数据集来验证我的 YOLO26 模型吗?#

可以,你可以使用 自定义数据集 验证你的 YOLO26 模型。只需指定 data 参数为你数据集配置文件路径即可。该文件应包含 验证数据 的路径。

注意

验证是使用模型自身的类名进行的,你可以通过 model.names 查看,这可能与数据集配置文件中指定的类名不同。

Python 示例:

from ultralytics import YOLO

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

如需在验证期间使用更多可自定义的选项,请参阅 验证示例及参数 部分。

Link to this section如何将 YOLO26 的验证结果保存到 JSON 文件中?#

要将验证结果保存到 JSON 文件,你可以在运行验证时将 save_json 参数设置为 True。这可以通过 Python API 和 CLI 实现。

Python 示例:

from ultralytics import YOLO

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

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

CLI 示例:

yolo val model=yolo26n.pt save_json=True

此功能对于后续分析或与其他工具的集成特别有用。查看 YOLO 模型验证参数 了解更多详细信息。

评论