关于模型评估与微调的见解#
训练 YOLO 模型之后,下一步是评估其性能并进行微调以弥补差距。评估使用 mAP 和 IoU 等指标来量化准确率,而微调则会调整训练参数以增强薄弱环节,从而使模型满足你的项目目标。本指南介绍了关键的评估指标、如何解读这些指标以及如何根据它们的结果采取行动。
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
评估和微调处于计算机视觉项目工作流的尾声,此时训练正在进行,你需要验证模型是否准确、高效并准备好进行部署。
关键评估指标#
各种指标用于衡量模型的有效性能。这些性能指标提供了清晰的数字见解,指导改进工作以确保模型达到其预定目标。
置信度分数#
置信度分数代表模型对于检测到的物体属于特定类别的确定程度。其范围从 0 到 1,分数越高表示置信度越高。置信度分数有助于过滤预测结果;只有置信度分数高于指定阈值的检测结果才会被视为有效。
在运行推理时,如果你没看到任何预测结果且已检查过其他所有设置,请尝试降低置信度阈值。有时阈值太高,会导致模型忽略有效的预测。降低阈值可以让模型考虑更多的可能性。这可能无法满足你的最终项目目标,但却是了解模型能力并决定如何进行微调的好方法。
交并比#
交并比(IoU)是目标检测中的一项指标,用于衡量预测边界框与真实边界框的重合程度。IoU 值的范围从 0 到 1,其中 1 代表完全匹配。IoU 至关重要,因为它能衡量预测边界与实际物体边界的吻合程度。
平均精度均值 (Mean Average Precision)#
平均准确率均值(mAP)用于衡量目标检测模型的整体性能。它查看检测每个对象类别的准确率,对这些分数求平均值,并给出一个单一的数字,显示模型识别和分类对象的准确程度。
最常报告的 mAP 指标有两个:
- mAP@.5: 衡量在 IoU 阈值为 0.5 时的平均精度。此指标检查模型是否能在较宽松的准确性要求下正确找到目标。它关注的是目标位置是否大致正确,无需完美的定位,有助于查看模型在检测目标方面是否表现良好。
- mAP@.5:.95: 对在多个 IoU 阈值下计算出的 mAP 值取平均值,范围从 0.5 到 0.95,步长为 0.05。该指标更为详细且严格。它全面地展示了模型在不同严格程度下识别物体的准确性,对于需要精确目标检测的应用程序尤为有用。
其他 mAP 指标包括 mAP@0.75(使用更严格的 0.75 IoU 阈值)以及 mAP@small、medium 和 large(评估不同尺寸物体的精确度)。
评估 YOLO26 模型#
你可以使用验证模式评估训练好的 YOLO26 模型。若要更深入地了解每个指标的计算和解释方式,请参阅 YOLO26 性能指标指南。
处理可变图像尺寸#
在不同尺寸的图像上评估模型有助于你了解其在各种数据集上的性能。rect=true 验证参数按长宽比对图像进行分组,并将每个批次填充到适合的最小形状,因此评估矩形图像时无需将其强制转换为正方形。
imgsz 参数设置验证期间使用的图像大小,作为正方形应用。如果你没有显式设置它,YOLO26 会重复使用模型设置中保存的值(官方预训练模型为 640,或者自定义检查点训练时的任何大小)。通过 rect=true,YOLO26 将较长的一侧限制为 imgsz,并将较短的一侧填充到步幅的倍数,从而保持长宽比。根据你的数据集尺寸和可用的 GPU 内存调整 imgsz。
访问 YOLO26 指标#
为了详细了解模型的性能,你可以通过几行 Python 代码访问特定的评估指标。下面的代码片段加载模型、运行验证并打印最有用的指标。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation on your dataset
results = model.val(data="coco8.yaml")
# Overall metrics
print("mAP50-95:", results.box.map) # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50) # mAP at IoU 0.50
print("mAP75:", results.box.map75) # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # weighted score used for model selection
# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)
# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)请注意,fitness() 是一个方法,必须带括号调用,而 map、map50 和 mp 等指标是直接访问的属性。
results.box.image_metrics 属性是一个以图像文件名为键的单图像字典,为每张图像在 IoU 0.5 时保存 precision、recall、f1、tp、fp 和 fn。预处理、推理、损失和后处理时间在 results.speed 字典中单独报告。这些结合起来可以让你准确定位模型在哪张图像上表现不佳并进行相应微调。
微调你的模型#
微调是指使用预训练模型并调整其参数,以提高其在特定任务或数据集上的性能。它也被称为模型重新训练,能让模型更好地理解和预测其在实际应用中将遇到的数据的输出结果。根据你的评估结果,你可以在自己的数据上重新训练模型,并调整微调指南中涵盖的训练参数。
针对小目标进行图像平铺#
图像分块可以提高小目标的检测准确率。通过将较大的图像划分为较小的片段(例如将 1280x1280 的图像分割为多个 640x640 的片段),你可以保留原始分辨率并让模型从高分辨率碎片中学习。Ultralytics 在推理时通过 SAHI 分块推理支持此功能。在对分块图像进行训练时,请确保为每个新片段正确调整标签。
结论#
评估和微调是将训练好的模型转变为可靠且可部署的模型的关键:像 mAP 和 IoU 这样的指标可以暴露出缺点,而有针对性的参数更改则可以解决这些问题。首先使用验证模式来对你的模型进行基准测试,然后使用微调指南中涵盖的参数进行重新训练,并通过新的参数、技术和数据集不断进行迭代。如果在过程中遇到问题,请在 Ultralytics GitHub 存储库或 Ultralytics Discord 服务器上向社区求助。
常见问题解答#
为了评估 YOLO26 模型的性能,重要的指标包括置信度分数、交并比 (IoU) 和平均准确率均值 (mAP)。置信度分数衡量模型对每个检测到的对象类别的确定性。IoU 评估预测边界框与真实情况的重合程度。平均准确率均值 (mAP) 汇集了各个类别的准确率分数,其中 mAP@.5 和 mAP@.5:.95 是针对不同 IoU 阈值的两种常见类型。在我们的YOLO26 性能指标指南中了解有关这些指标的更多信息。
微调预训练的 YOLO26 模型需要调整其参数,以提高其在特定任务或数据集上的性能。首先使用指标评估你的模型,然后基于你自己的数据集从预训练权重开始重新训练。在评估期间,诸如
rect=true之类的参数有助于有效地处理各种图像大小。有关需要调整的训练参数,请参阅微调指南。为了在评估期间处理可变的图像大小,请在 YOLO26 中使用
rect=true参数,该参数按长宽比对图像进行分组并填充每个批次,而不是强制每个图像变成正方形。imgsz参数设置用于验证的图像大小;如果你不覆盖它,YOLO26 会重复使用模型保存的值(官方预训练模型为 640)。调整imgsz以适合你的数据集和 GPU 内存。有关更多详细信息,请访问我们关于处理可变图像大小的部分。运行验证后,你可以使用 Python 访问 YOLO26 模型评估指标:
用法from ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run validation results = model.val(data="coco8.yaml") # Access key metrics print("Mean average precision at IoU=0.50:", results.box.map50) print("Mean average precision at IoU=0.50:0.95:", results.box.map) print("Mean recall:", results.box.mr) print("Class indices evaluated:", results.box.ap_class_index)分析这些指标可帮助你微调和优化你的 YOLO26 模型。如需更深入的了解,请查看我们的YOLO 性能指标指南。