模型评估和微调的启示
导言
一旦训练好了计算机视觉模型,就必须对其进行评估和改进,使其发挥最佳性能。仅仅训练模型是不够的。您需要确保模型准确、高效,并能实现计算机视觉项目的目标。通过评估和微调模型,您可以找出弱点,提高其准确性,并提升整体性能。
观看: 对模型评估和微调的见解 | 提高平均精度的技巧
在本指南中,我们将分享有关模型评估和微调的见解,让计算机视觉项目的这一步骤变得更加容易理解。我们将讨论如何理解评估指标和实施微调技术,为您提供提升模型能力的知识。
使用指标评估模型性能
评估模型的性能有助于我们了解它的工作效率。我们使用各种指标来衡量性能。这些性能指标提供了清晰的数字见解,可以指导改进工作,确保模型达到预期目标。让我们仔细看看几个关键指标。
信心分数
置信度分数表示模型对检测到的物体属于某一特定类别的确定性。它的范围在 0 到 1 之间,分数越高表示可信度越高。置信分有助于过滤预测;只有置信分高于指定阈值的检测才被视为有效。
Quick Tip: When running inferences, if you aren't seeing any predictions, and you've checked everything else, try lowering the confidence score. Sometimes, the threshold is too high, causing the model to ignore valid predictions. Lowering the score allows the model to consider more possibilities. This might not meet your project goals, but it's a good way to see what the model can do and decide how to fine-tune it.
联合路交叉口
交集大于联合(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 指标指南。