跳至内容

关于模型评估和微调的见解

导言

一旦训练好了计算机视觉模型,就必须对其进行评估和改进,使其发挥最佳性能。仅仅训练模型是不够的。您需要确保模型准确、高效,并能实现计算机视觉项目的目标。通过评估和微调模型,您可以找出不足之处,提高模型的准确性,并提升整体性能。

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

使用指标评估模型性能

评估一个模型的性能如何,有助于我们了解它的工作效率。我们使用各种指标来衡量性能。这些性能指标提供了清晰的数字见解,可以指导改进工作,确保模型达到预期目标。让我们仔细看看几个关键指标。

置信度得分

置信度分数表示模型对检测到的对象属于特定类的确定性。它的范围从 0 到 1,分数越高表示置信度越高。置信度分数有助于筛选预测;只有置信度分数高于指定阈值的检测才被视为有效。

快速提示:在运行推论时,如果没有看到任何预测结果,并且已经检查了其他所有内容,请尝试降低置信度分数。有时,阈值过高会导致模型忽略有效预测。降低分数可以让模型考虑更多的可能性。这可能无法满足您的项目目标,但却是了解模型功能并决定如何微调的好方法。

联合交叉点

并集交集 (IoU) 是对象检测中的一个指标,用于测量预测的边界框与地面实况边界框的重叠程度。IoU 值的范围从 0 到 1,其中 1 代表完美匹配。IoU 是必不可少的,因为它测量预测边界与实际对象边界的匹配程度。

联合大道交叉口概述

平均精度

平均精度 (mAP) 是一种衡量对象检测模型性能的方法。它着眼于检测每个对象类的精度,对这些分数进行平均,并给出一个总数,显示模型识别和分类对象的准确性。

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

  • mAP@.5:测量在 0.5 的单一 IoU(Intersection over Union)阈值下的平均精度。该指标检查模型是否能在较宽松的精度要求下正确找到物体。它的重点是物体是否大致位于正确的位置,而不是需要完美的位置。它有助于了解模型在发现物体方面的总体表现是否良好。
  • mAP@.5:.95:在多个 IoU 阈值(从 0.5 到 0.95,增量为 0.05)下计算的 mAP 值的平均值。这一指标更为详细和严格。它能更全面地反映模型在不同严格程度下发现物体的准确性,对于需要精确物体检测的应用尤其有用。

其他 mAP 指标包括 mAP@0.75(使用更严格的 0.75 IoU 门限)和 mAP@small、medium 和 large(评估不同大小对象的精度)。

平均值 平均精度 概述

评价 YOLOv8 模型性能

关于YOLOv8 ,您可以使用验证模式来评估模型。此外,请务必阅读我们的指南,该指南深入介绍了YOLOv8 性能指标以及如何解释这些指标

常见社区问题

在评估您的 YOLOv8 模型,您可能会遇到一些小问题。根据常见的社区问题,这里有一些提示可以帮助您充分利用您的 YOLOv8 型:

处理可变图像大小

评估您的 YOLOv8 具有不同大小图像的模型可以帮助您了解其在不同数据集上的性能。使用 rect=true 验证参数, YOLOv8 根据图像大小调整每个批次的网络步幅,使模型能够处理矩形图像,而无需强制它们为单一大小。

"(《世界人权宣言》) imgsz 验证参数设置图像大小调整的最大尺寸,默认为 640。您可以根据数据集的最大尺寸和GPU 可用内存来调整。即使使用 imgsz 设置 rect=true 允许模型通过动态调整步幅来有效地管理不同的图像大小。

访问 YOLOv8 指标

如果您想更深入地了解您的 YOLOv8 模型的性能,您可以通过几行 Python 法典。下面的代码片段将允许您加载模型、运行评估并打印出显示模型运行情况的各种指标。

使用方法

from ultralytics import YOLO

# Load the model
model = YOLO("yolov8n.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("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)

结果对象还包括速度指标,如预处理时间、推理时间、损失和后处理时间。通过分析这些指标,您可以微调和优化您的 YOLOv8 模型以获得更好的性能,使其对您的特定用例更有效。

微调如何进行?

微调涉及采用预先训练的模型并调整其参数以提高特定任务或数据集的性能。该过程也称为模型再训练,使模型能够更好地理解和预测在实际应用中将遇到的特定数据的结果。您可以根据模型评估重新训练模型,以获得最佳结果。

微调模型的技巧

对模型进行微调意味着密切关注几个重要参数和技术,以实现最佳性能。以下是一些基本提示,可指导您完成整个过程。

从更高的学习率开始

通常,在初始训练时期,学习率从低开始,逐渐增加以稳定训练过程。但是,由于您的模型已经从以前的数据集中学习了一些特征,因此立即从更高的学习率开始可能更有益。

在评估您的 YOLOv8 model,您可以设置 warmup_epochs 验证参数设置为 warmup_epochs=0 以防止学习率开始过高。通过遵循此过程,训练将从提供的权重继续,并根据新数据的细微差别进行调整。

小物体的图像平铺

图像平铺可以提高对小物体的检测精度。通过将较大的图像划分为较小的片段,例如将 1280x1280 图像拆分为多个 640x640 片段,可以保持原始分辨率,并且模型可以从高分辨率片段中学习。使用时 YOLOv8,请确保正确调整这些新细分的标签。

与社区互动

与其他计算机视觉爱好者分享您的想法和问题可以激发针对项目障碍的创造性解决方案。以下是一些学习、故障排除和联系的绝佳方法。

寻求帮助和支持

  • GitHub 问题:访问YOLOv8 GitHub 代码库,并使用 "问题 "选项卡提问、报告错误和建议功能。社区和维护者可随时帮助您解决遇到的任何问题。
  • Ultralytics Discord 服务器: 加入 Ultralytics Discord 服务器 ,用于与其他用户和开发人员联系、获得支持、分享知识和集思广益。

官方文件

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

最后的思考

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

常见问题

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

要评估YOLOv8 模型的性能,重要的指标包括置信度得分(Confidence Score)、联合交叉(Intersection over Union,IoU)和平均精度(Mean Average Precision,mAP)。置信分衡量模型对每个检测到的物体类别的确定性。IoU 评估预测的边界框与地面实况重叠的程度。平均精度 (mAP) 是跨类别精度分数的汇总,mAP@.5 和 mAP@.5:.95 是不同 IoU 阈值的两种常见类型。有关这些指标的更多信息,请参阅我们的YOLOv8 性能指标指南

如何针对特定数据集微调预训练的YOLOv8 模型?

对预先训练好的YOLOv8 模型进行微调,包括调整其参数,以提高在特定任务或数据集上的性能。首先使用指标评估模型,然后通过调整 warmup_epochs 参数设置为 0 以获得即时稳定性。使用以下参数 rect=true 以有效处理不同尺寸的图像。有关更详细的指导,请参阅我们的 微调YOLOv8 模型.

在评估YOLOv8 模型时,如何处理不同的图像尺寸?

要在评估过程中处理不同的图像尺寸,请使用 rect=true YOLOv8 中的参数,该参数可根据图像大小调整每批网络的步长。该参数 imgsz 参数设置图像大小调整的最大尺寸,默认为 640。调整 imgsz 以适应您的数据集和GPU 内存。更多详情,请访问我们的 处理可变图像尺寸的部分.

我可以采取哪些实际步骤来提高YOLOv8 模型的平均精度?

提高YOLOv8 模型的平均精度(mAP)涉及多个步骤:

  1. 调整超参数:尝试不同的学习率、批量大小和图像增强。
  2. 数据扩充:使用 Mosaic 和 MixUp 等技术创建多样化的训练样本。
  3. 图像平铺将较大的图像分割成较小的平铺,以提高对小物体的检测精度。 有关具体策略,请参阅我们关于模型微调的详细指南。

如何在Python 中访问YOLOv8 模型评估指标?

您可以使用Python 访问YOLOv8 模型评估指标,具体步骤如下:

使用方法

from ultralytics import YOLO

# Load the model
model = YOLO("yolov8n.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)

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



创建于 2024-06-29,更新于 2024-07-05
作者:glenn-jocher(1),Laughing-q(1),abirami-vina(1)

评论