模型评估和微调的启示
导言
一旦训练好了计算机视觉模型,就必须对其进行评估和改进,使其发挥最佳性能。仅仅训练模型是不够的。您需要确保模型准确、高效,并能实现计算机视觉项目的目标。通过评估和微调模型,您可以找出弱点,提高其准确性,并提升整体性能。
观看: 对模型评估和微调的见解 | 提高平均精度的技巧
在本指南中,我们将分享有关模型评估和微调的见解,让计算机视觉项目的这一步骤变得更加容易理解。我们将讨论如何理解评估指标和实施微调技术,为您提供提升模型能力的知识。
使用指标评估模型性能
评估模型的性能有助于我们了解它的工作效率。我们使用各种指标来衡量性能。这些性能指标提供了清晰的数字见解,可以指导改进工作,确保模型达到预期目标。让我们仔细看看几个关键指标。
信心分数
置信度分数表示模型对检测到的物体属于某一特定类别的确定性。它的范围在 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(评估不同大小对象的精度)。
评估YOLO11 模型性能
关于YOLO11 ,您可以使用验证模式来评估模型。此外,请务必查看我们的指南,该指南深入介绍了YOLO11 性能指标以及如何解释这些指标。
常见社区问题
在评估您的YOLO11 机型时,您可能会遇到一些小问题。根据常见的社区问题,以下是一些帮助您充分利用YOLO11 机型的提示:
处理可变图像尺寸
使用不同大小的图像对YOLO11 模型进行评估,有助于了解其在不同数据集上的性能。使用 rect=true
YOLO11 是一个验证参数,它可以根据图像尺寸调整每批网络的步长,从而使模型能够处理矩形图像,而无需将其强制限制为单一尺寸。
"(《世界人权宣言》) imgsz
验证参数设置图像大小调整的最大尺寸,默认为 640。您可以根据数据集的最大尺寸和GPU 可用内存来调整。即使使用 imgsz
设置、 rect=true
让模型可以通过动态调整步长来有效管理不同的图像尺寸。
访问YOLO11 指标
如果您想更深入地了解YOLO11 模型的性能,只需几行Python 代码就能轻松访问特定的评估指标。下面的代码片段可让您加载模型、运行评估并打印出各种指标,以显示模型的性能如何。
使用方法
from ultralytics import YOLO
# Load the model
model = YOLO("yolo11n.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)
结果对象还包括速度指标,如预处理时间、推理时间、损失和后处理时间。通过分析这些指标,您可以对YOLO11 模型进行微调和优化,以获得更好的性能,使其更有效地用于特定的使用情况。
微调如何进行?
微调包括对预先训练好的模型进行参数调整,以提高其在特定任务或数据集上的性能。这一过程也被称为模型再训练,它能让模型更好地理解和预测实际应用中会遇到的特定数据的结果。您可以根据模型评估结果对模型进行再训练,以获得最佳结果。
微调模型的技巧
微调模型意味着要密切关注几个重要参数和技术,以实现最佳性能。以下是指导您完成这一过程的一些基本技巧。
从更高的学习率开始
通常情况下,在初始训练历元期间,学习率从低开始,然后逐渐提高,以稳定训练过程。不过,由于您的模型已经从之前的数据集中学习到了一些特征,因此立即开始采用较高的学习率会更有益处。
在评估YOLO11 模型时,您可以设置 warmup_epochs
验证参数 warmup_epochs=0
以防止开始时学习率过高。按照这个过程,训练将从提供的权重开始,根据新数据的细微差别进行调整。
小物体图像平铺
图像平铺可以提高小型物体的检测精度。通过将较大的图像分割成较小的片段,例如将 1280x1280 的图像分割成多个 640x640 的片段,可以保持原始分辨率,而模型可以从高分辨率片段中学习。使用YOLO11 时,请确保正确调整这些新片段的标签。
与社区互动
与其他计算机视觉爱好者分享您的想法和问题,可以激发创造性的解决方案,解决项目中的障碍。以下是一些学习、排除故障和交流的好方法。
寻求帮助和支持
- GitHub 问题:访问YOLO11 GitHub 代码库,并使用 "问题"选项卡提问、报告错误和建议功能。社区和维护者可随时帮助您解决遇到的任何问题。
- Ultralytics Discord 服务器:加入Ultralytics Discord 服务器,与其他用户和开发人员联系,获得支持,分享知识,集思广益。
官方文件
- Ultralytics YOLO11 文档:查看 YOLO11 官方文档,了解有关各种计算机视觉任务和项目的全面指南和宝贵见解。
最终想法
评估和微调计算机视觉模型是成功部署模型的重要步骤。这些步骤有助于确保模型准确、高效,并适合整体应用。训练出最佳模型的关键在于不断尝试和学习。不要犹豫调整参数、尝试新技术和探索不同的数据集。不断尝试,突破极限!
常见问题
评估YOLO11 模型性能的关键指标是什么?
要评估YOLO11 模型的性能,重要的指标包括置信度得分(Confidence Score)、联合交叉(Intersection over Union,IoU)和平均精度(Mean Average Precision,mAP)。置信分衡量模型对每个检测到的物体类别的确定性。IoU 评估预测的边界框与地面实况重叠的程度。平均精度 (mAP) 是跨类别精度分数的汇总,mAP@.5 和 mAP@.5:.95 是不同 IoU 阈值的两种常见类型。有关这些指标的更多信息,请参阅我们的YOLO11 性能指标指南。
如何针对特定数据集微调预训练的YOLO11 模型?
对预先训练好的YOLO11 模型进行微调,包括调整其参数,以提高在特定任务或数据集上的性能。首先使用指标评估模型,然后通过调整 warmup_epochs
参数设置为 0 以获得即时稳定性。使用以下参数 rect=true
以有效处理不同尺寸的图像。有关更详细的指导,请参阅我们的 微调YOLO11 模型.
在评估YOLO11 模型时,如何处理不同的图像尺寸?
要在评估过程中处理不同的图像尺寸,请使用 rect=true
YOLO11 中的参数,该参数可根据图像大小调整每批网络的步长。该参数 imgsz
参数设置图像大小调整的最大尺寸,默认为 640。调整 imgsz
以适应您的数据集和GPU 内存。更多详情,请访问我们的 处理可变图像尺寸的部分.
我可以采取哪些实际步骤来提高YOLO11 模型的平均精度?
提高YOLO11 模型的平均精度(mAP)涉及多个步骤:
- 调整超参数:尝试不同的学习率、批量大小和图像增强。
- 数据扩充:使用 Mosaic 和 MixUp 等技术创建多样化的训练样本。
- 图像平铺将较大的图像分割成较小的平铺,以提高对小物体的检测精度。 有关具体策略,请参阅我们关于模型微调的详细指南。
如何在Python 中访问YOLO11 模型评估指标?
您可以使用Python 访问YOLO11 模型评估指标,具体步骤如下:
使用方法
from ultralytics import YOLO
# Load the model
model = YOLO("yolo11n.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)
分析这些指标有助于微调和优化您的YOLO11 模型。如需深入了解,请查看我们的YOLO11 指标指南。