深入了解性能指标#
简介#
性能指标是评估精度和目标检测模型效率的重要工具。它们揭示了模型识别和定位图像中物体的能力,也有助于了解模型处理假阳性和假阴性的表现。这些信息对于评估和提升模型性能至关重要。本指南将介绍 YOLO26 的各种性能指标、这些指标的重要性以及如何解读它们。
目标检测指标#
首先介绍一些不仅对 YOLO26 很重要、也广泛适用于不同目标检测模型的指标。
-
平均精度 (AP): AP 计算精确率-召回率曲线下的面积,用单个数值概括模型的精确率和召回率表现。
-
平均精度均值 (mAP): mAP 扩展了 AP 的概念,通过计算多个目标类别的 AP 均值来得出结果。该指标适用于多类别目标检测场景,可全面评估模型性能。
-
精确率和召回率: 精确率表示所有正向预测中真正例所占的比例,用于评估模型避免假阳性的能力。召回率则表示所有实际正例中真正例所占的比例,用于衡量模型检测某一类别所有实例的能力。
-
F1 分数: F1 分数是精确率和召回率的调和平均值,同时考虑假阳性和假阴性,从而平衡地评估模型性能。
如何计算 YOLO26 模型的指标#
接下来,我们来了解可用于计算上述评估指标的 YOLO26 验证模式。
使用验证模式很简单。训练好模型后,你可以调用 model.val() 函数。该函数会处理验证数据集并返回各种性能指标。那么,这些指标分别表示什么?又该如何解读?
解读输出#
下面我们来逐项分析 model.val() 函数的输出,了解输出的各个部分。
按类别划分的指标#
输出中的一个部分是按类别划分的性能指标。这些细致的信息有助于了解模型在每个具体类别上的表现,尤其适用于物体类别丰富的数据集。对于数据集中的每个类别,都会提供以下信息:
-
类别:物体类别的名称,例如“person”“car”或“dog”。
-
图像数:验证集中包含该物体类别的图像数量。
-
实例数:该类别在验证集所有图像中出现的总次数。
-
Box(P, R, mAP50, mAP50-95):该指标用于了解模型的目标检测表现:
-
P(精确率):检测结果的准确性,表示有多少检测结果是正确的。
-
R(召回率):模型识别图像中所有物体实例的能力。
-
mAP50:在交并比 (IoU) 阈值为 0.50 时计算的平均精度均值。它衡量模型在仅考虑“容易”检测目标时的准确性。
-
mAP50-95:在 0.50 到 0.95 的不同 IoU 阈值下计算的平均精度均值的平均值。它全面反映模型在不同检测难度下的表现。
-
速度指标#
推理速度可能与精度同样重要,尤其是在实时目标检测场景中。本节将分解验证过程各个阶段所耗费的时间,从预处理到后处理。
COCO 指标评估#
对于在 COCO 数据集上进行验证的用户,系统会使用 COCO 评估脚本计算额外指标。这些指标可以帮助了解不同 IoU 阈值以及不同尺寸物体的精确率和召回率。
可视化输出#
除了生成数值指标外,model.val() 函数还会生成可视化输出,帮助你更直观地了解模型性能。以下是你可能会看到的可视化输出:
-
F1 分数曲线 (
BoxF1_curve.png):这条曲线展示了不同阈值下的 F1 分数。解读这条曲线有助于了解模型在不同阈值下如何平衡假阳性和假阴性。 -
精确率-召回率曲线 (
BoxPR_curve.png):这条曲线是分类问题的重要可视化工具,展示了不同阈值下精确率与召回率之间的权衡。在处理类别不平衡问题时,这条曲线尤为重要。 -
精确率曲线 (
BoxP_curve.png):以图形方式展示不同阈值下的精确率值。这条曲线有助于了解精确率如何随阈值变化。 -
召回率曲线 (
BoxR_curve.png):相应地,这张图展示了召回率如何随不同阈值变化。 -
混淆矩阵 (
confusion_matrix.png):混淆矩阵详细展示了各类别的结果,包括真阳性、真阴性、假阳性和假阴性的数量。 -
归一化混淆矩阵 (
confusion_matrix_normalized.png):这张图展示了归一化后的混淆矩阵,以比例而非原始计数表示数据。这种格式便于比较不同类别的性能。 -
验证批次标签 (
val_batchX_labels.jpg):这些图像展示了验证数据集中不同批次的真实标签,清晰呈现数据集中对象的类别及其对应位置。 -
验证批次预测 (
val_batchX_pred.jpg):与标签图像相对应,这些图像展示了 YOLO26 对相应批次作出的预测。将预测与标签图像进行比较,你可以直观地评估模型检测和分类对象的效果。
对于检测、分割和姿态任务,曲线图的前缀表示指标类型:检测任务生成 Box* 曲线,分割任务生成 Box* 和 Mask* 曲线,姿态任务生成 Box* 和 Pose* 曲线。
结果存储#
为便于以后查看,结果会保存到一个目录中,该目录通常命名为 runs/detect/val。
选择合适的指标#
选择合适的评估指标通常取决于具体应用。
-
mAP: 适用于全面评估模型性能。
-
IoU: 在需要精确定位对象时至关重要。
-
精确率: 当优先考虑减少误检时,这项指标很重要。
-
召回率: 当需要检测出对象的每个实例时,这项指标至关重要。
-
F1 分数: 适用于需要平衡精确率和召回率的场景。
对于实时应用,FPS(每秒帧数)和延迟等速度指标至关重要,它们能确保及时获得结果。
解读结果#
理解这些指标很重要。以下是一些常见低分可能反映的问题:
-
mAP 较低: 表明模型可能需要进行整体优化。
-
IoU 较低: 模型可能难以准确定位对象。尝试使用不同的边界框方法或许会有所帮助。
-
精确率较低: 模型可能检测出了太多不存在的对象。调整置信度阈值或许可以减少误检。
-
召回率较低: 模型可能漏检了真实对象。改进特征提取或增加数据或许会有所帮助。
-
F1 分数不平衡: 精确率和召回率之间存在差距。
-
特定类别的 AP: 这项指标得分较低,可能说明模型难以处理某些类别。
案例分析#
真实案例有助于说明这些指标在实际中的作用。
案例 1#
-
情况: mAP 和 F1 分数表现不佳;召回率不错,但精确率不高。
-
解读与行动: 误检可能太多。收紧置信度阈值可以减少误检,但也可能略微降低召回率。
案例 2#
-
情况: mAP 和召回率表现尚可,但 IoU 较低。
-
解读与行动: 模型能够很好地检测对象,但定位可能不够精确。改进边界框预测或许会有所帮助。
案例 3#
-
情况: 即使整体 mAP 不错,某些类别的 AP 仍远低于其他类别。
-
解读与行动: 模型可能更难处理这些类别。为这些类别增加数据,或在训练期间调整类别权重,可能会有所帮助。
交流与协作#
借助由爱好者和专家组成的社区,你可以进一步拓展 YOLO26 使用经验。以下渠道有助于学习、排查问题和拓展人脉。
参与更广泛的社区交流#
-
GitHub Issues: Ultralytics 在 GitHub 上的代码库设有 Issues 标签页,你可以在这里提问、报告 Bug 和建议新功能。社区成员和维护者都积极参与交流,这也是针对具体问题寻求帮助的好地方。
-
Ultralytics Discord 服务器: Ultralytics 设有 Discord 服务器,你可以在那里与其他用户和开发者交流。
官方文档和资源#
- Ultralytics YOLO26 文档: 官方文档全面介绍了 YOLO26,并提供安装、使用和故障排查指南。
使用这些资源不仅能帮助你应对各种挑战,还能让你了解 YOLO26 社区的最新趋势和最佳实践。
结论#
本指南详细介绍了 YOLO26 的关键性能指标。这些指标是了解模型表现的关键,对希望微调模型的人至关重要。它们能提供必要的参考信息,帮助你改进模型,并确保模型在实际场景中有效运行。
请记住,YOLO26 和 Ultralytics 社区是宝贵的资源。与其他开发者和专家交流,能让你获得常规文档中没有的见解和解决方案。在探索对象检测的过程中,保持学习热情,尝试新策略,并分享你的发现。这样做有助于丰富社区的集体智慧,推动社区不断发展。
常见问题#
平均精度均值 (mAP) 对评估 YOLO26 模型至关重要,因为它提供了一个综合多类别精确率和召回率的单一指标。mAP@0.50 衡量 IoU 阈值为 0.50 时的精确率,重点关注模型正确检测对象的能力。mAP@0.50:0.95 对一系列 IoU 阈值下的精确率取平均值,从而全面评估检测性能。mAP 得分较高表明模型有效地平衡了精确率和召回率;这对于自动驾驶和监控系统等应用至关重要,因为这些场景既要求准确检测,也要求尽量减少误报。
交并比 (IoU) 用于衡量预测边界框与真实边界框之间的重叠程度。IoU 的取值范围为 0 到 1,值越高表示定位越准确。IoU 为 1.0 表示完全重合。通常,mAP 等指标会使用 0.50 作为 IoU 阈值来定义真阳性。IoU 值较低表明模型难以精确定位对象;你可以通过改进边界框回归,或提高训练数据集中的标注精度来改善这一问题。