模型评估与微调的见解

介绍

一旦你训练好了你的计算机视觉模型,评估并优化它以发挥最佳性能就至关重要了。仅仅训练模型是不够的。你需要确保你的模型准确、高效,并满足你计算机视觉项目的目标。通过评估和微调模型,你可以发现弱点、提高准确性并提升整体性能。



Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision

在本指南中,我们将分享关于模型评估和微调的见解,让这一计算机视觉项目的步骤变得更加简单易懂。我们讨论如何理解评估指标并实施微调技术,为你提供提升模型能力的知识。

使用指标评估模型性能

评估模型的表现有助于我们了解其工作效果。各种指标被用于衡量性能。这些性能指标提供了清晰的数值洞察,可以指导改进,确保模型达到预期目标。让我们更深入地了解几个关键指标。

置信度分数

置信度分数代表模型对检测到的物体属于特定类别的确定程度。其范围从 0 到 1,分数越高表示置信度越高。置信度分数有助于过滤预测结果;只有置信度分数超过指定阈值的检测结果才被视为有效。

小贴士: 在运行推理时,如果你没有看到任何预测结果,并且已经检查了其他所有环节,请尝试降低置信度分数。有时阈值设置得太高,会导致模型忽略有效的预测。降低分数可以让模型考虑更多的可能性。这可能不符合你的项目目标,但却是了解模型能力并决定如何对其进行微调的好方法。

交并比

交并比 (IoU) 是目标检测中的一项指标,用于衡量预测的边界框与真实边界框的重合程度。IoU 值的范围从 0 到 1,其中 1 代表完全匹配。IoU 至关重要,因为它衡量了预测边界与实际物体边界的贴合程度。

Intersection over Union Overview

平均精度均值

平均精度均值 (mAP) 是一种衡量目标检测模型性能的方法。它查看检测每个物体类别的精度,对这些分数进行平均,并给出一个总体数字,显示模型识别和分类物体的准确程度。

让我们专注于两个特定的 mAP 指标:

  • mAP@.5: 衡量在 0.5 的单一 IoU(交并比)阈值下的平均精度。该指标检查模型是否能以更宽松的准确性要求正确找到物体。它关注的是物体是否大致处于正确位置,而不需要完美的位置。这有助于查看模型是否普遍擅长发现物体。
  • mAP@.5:.95: 对在多个 IoU 阈值(从 0.5 到 0.95,步长为 0.05)下计算出的 mAP 值进行平均。该指标更详细且更严格。它提供了模型在不同严格程度下识别物体准确性的全面概览,对于需要精确目标检测的应用特别有用。

其他 mAP 指标包括 mAP@0.75(使用更严格的 0.75 IoU 阈值)以及 mAP@small、medium 和 large(评估不同尺寸物体的精度)。

Mean average precision mAP metric

评估 YOLO26 模型性能

关于 YOLO26,你可以使用验证模式来评估模型。此外,请务必查看我们深入探讨 YOLO26 性能指标及其解读方式的指南。

社区常见问题

在评估你的 YOLO26 模型时,你可能会遇到一些小问题。基于社区常见问题,这里有一些技巧可以帮助你充分利用你的 YOLO26 模型:

处理可变图像尺寸

使用不同尺寸的图像评估你的 YOLO26 模型可以帮助你了解其在不同数据集上的表现。使用 rect=true 验证参数,YOLO26 会根据图像尺寸为每个批次调整网络的步幅,从而使模型能够处理矩形图像,而无需强制将它们调整为单一尺寸。

imgsz 验证参数设置了图像调整大小的最大维度,默认为 640。你可以根据数据集的最大尺寸和可用的 GPU 内存进行调整。即使设置了 imgszrect=true 也能通过动态调整步幅让模型有效地管理不同的图像尺寸。

访问 YOLO26 指标

如果你想更深入地了解 YOLO26 模型的性能,只需几行 Python 代码即可轻松访问特定的评估指标。下面的代码片段将让你加载模型、运行评估并打印出各种指标,显示你的模型表现如何。

使用方法
from ultralytics import YOLO

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

# Run the evaluation
results = model.val(data="coco8.yaml")

# Print specific metrics
print("Class indices with average precision:", results.ap_class_index)
print("Average precision for all classes:", results.box.all_ap)
print("Average precision:", results.box.ap)
print("Average precision at IoU=0.50:", results.box.ap50)
print("Class indices for average precision:", results.box.ap_class_index)
print("Class-specific results:", results.box.class_result)
print("F1 score:", results.box.f1)
print("F1 score curve:", results.box.f1_curve)
print("Overall fitness score:", results.box.fitness)
print("Mean average precision:", results.box.map)
print("Mean average precision at IoU=0.50:", results.box.map50)
print("Mean average precision at IoU=0.75:", results.box.map75)
print("Mean average precision for different IoU thresholds:", results.box.maps)
print("Mean results for different metrics:", results.box.mean_results)
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Per-image metrics:", results.box.image_metrics)
print("Precision:", results.box.p)
print("Precision curve:", results.box.p_curve)
print("Precision values:", results.box.prec_values)
print("Specific precision metrics:", results.box.px)
print("Recall:", results.box.r)
print("Recall curve:", results.box.r_curve)

结果对象还包含 image_metrics,这是一个以图像文件名为键的单张图像字典,包含 precisionrecallf1tpfpfn,以及诸如预处理时间、推理时间、损失和后处理时间等速度指标。通过分析这些指标,你可以微调并优化你的 YOLO26 模型以获得更好的性能,使其对你的特定用例更有效。

微调是如何工作的?

微调涉及获取预训练模型并调整其参数,以提高其在特定任务或数据集上的性能。该过程也称为模型再训练,允许模型更好地理解并预测它将在现实应用中遇到的特定数据。你可以根据模型评估结果对模型进行再训练,以获得最佳效果。

微调模型的技巧

微调模型意味着要密切注意几个重要的参数和技术,以实现最佳性能。以下是一些指导你完成该过程的基本技巧。

从更高的学习率开始

通常,在最初的训练周期中,学习率从低开始并逐渐增加以稳定训练过程。然而,由于你的模型已经从之前的数据集中学到了一些特征,直接从更高的学习率开始可能更有益。

在评估你的 YOLO26 模型时,你可以将 warmup_epochs 验证参数设置为 warmup_epochs=0,以防止学习率起步过低。通过遵循此过程,训练将从提供的权重继续,并适应你新数据的细微差别。

针对小目标的图像分块

图像分块可以提高小目标的检测准确性。通过将大图像划分为较小的片段(例如将 1280x1280 的图像拆分为多个 640x640 的片段),你可以保持原始分辨率,模型可以从高分辨率碎片中学习。使用 YOLO26 时,请确保为这些新片段正确调整你的标签。

与社区互动

与其它计算机视觉爱好者分享你的想法和问题,可以激发解决项目中瓶颈的创意方案。以下是一些学习、排查故障和建立联系的绝佳途径。

寻找帮助与支持

  • GitHub Issues: 探索 YOLO26 GitHub 存储库并使用 Issues 选项卡提问、报告错误并建议功能。社区和维护者随时准备协助你解决遇到的任何问题。
  • Ultralytics Discord 服务器:加入 Ultralytics Discord 服务器与其他用户和开发者交流,获取支持、分享知识并进行头脑风暴。

官方文档

  • Ultralytics YOLO26 文档: 查看官方 YOLO26 文档,获取关于各种计算机视觉任务和项目的全面指南和宝贵见解。

结语

评估和微调你的计算机视觉模型是成功模型部署的重要步骤。这些步骤有助于确保你的模型准确、高效并适用于你的整体应用。训练出最佳模型的关键在于持续的实验和学习。不要犹豫,调整参数、尝试新技术并探索不同的数据集。保持实验并不断突破可能的边界!

常见问题 (FAQ)

评估 YOLO26 模型性能的关键指标是什么?

为了评估 YOLO26 模型的性能,重要指标包括置信度分数、交并比 (IoU) 和平均精度均值 (mAP)。置信度分数衡量模型对每个检测到的物体类别的确定程度。IoU 评估预测边界框与真实情况的重合程度。平均精度均值 (mAP) 汇总了各类的精度分数,mAP@.5 和 mAP@.5:.95 是针对不同 IoU 阈值的两种常见类型。在我们的YOLO26 性能指标指南中了解有关这些指标的更多信息。

我如何为我的特定数据集微调预训练的 YOLO26 模型?

微调预训练的 YOLO26 模型涉及调整其参数以提高在特定任务或数据集上的性能。首先使用指标评估你的模型,然后通过将 warmup_epochs 参数设置为 0 来设置更高的初始学习率,以实现立即的稳定性。使用诸如 rect=true 的参数来有效处理不同的图像尺寸。如需更详细的指导,请参阅我们关于微调 YOLO26 模型的章节。

在评估我的 YOLO26 模型时,我该如何处理可变的图像尺寸?

要在评估期间处理可变的图像尺寸,请在 YOLO26 中使用 rect=true 参数,它会根据图像尺寸为每个批次调整网络的步幅。imgsz 参数设置图像调整大小的最大维度,默认值为 640。根据你的数据集和 GPU 内存调整 imgsz。有关详细信息,请访问我们关于处理可变图像尺寸的章节。

我能采取哪些实际步骤来提高 YOLO26 模型的平均精度均值?

提高 YOLO26 模型的平均精度均值 (mAP) 涉及几个步骤:

  1. 调整超参数:尝试不同的学习率、批次大小和图像增强。
  2. 数据增强:使用 Mosaic 和 MixUp 等技术创建多样的训练样本。
  3. 图像分块:将较大的图像拆分为较小的块以提高小目标的检测准确性。参考我们关于模型微调的详细指南以获取具体策略。

我该如何在 Python 中访问 YOLO26 模型评估指标?

你可以按照以下步骤使用 Python 访问 YOLO26 模型评估指标:

使用方法
from ultralytics import YOLO

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

# Run the evaluation
results = model.val(data="coco8.yaml")

# Print specific metrics
print("Class indices with average precision:", results.ap_class_index)
print("Average precision for all classes:", results.box.all_ap)
print("Mean average precision at IoU=0.50:", results.box.map50)
print("Mean recall:", results.box.mr)

分析这些指标有助于微调和优化你的 YOLO26 模型。如需更深入的了解,请查看我们关于 YOLO26 指标 的指南。

评论