机器视觉目标检测模型的P、R、PR、F1指标详解

2025-11-7|2026-3-21
Pavel Han
Pavel Han
date
Nov 7, 2025
slug
2025-11-05-the-evaluation-metrics-of-computer-vision-model-P-R-PR-F1
status
Published
tags
CNN
YOLO
神经网络理论
summary
YOLOv5模型训练结果文件中的F1_curve、P_curve、PR_curve、R_curve这四张图片文件,分别对应于模型训练完成后的F1、P、PR以及R指标的曲线图。本文对这四个指标进行了详细的总结和整理。
type
Post
category
AI
AI summary
YOLOv5模型训练结果文件中的F1_curve、P_curve、PR_curve、R_curve这四张图片文件,分别对应于模型训练完成后的F1、P、PR以及R指标的曲线图。本文对这四个指标进行了详细的总结和整理。

P_Curve

P曲线对应于模型的精确率(Precision),该指标衡量的是模型预测为正例的样本中,有多少是真正的正例。它关注的是预测结果的准确性,即“查得准不准”。精确率越高,说明模型误检和误判(将背景或其他物体误认为目标)的情况越少例如,在安防监控中,高精确率就意味着报警的准确性高,减少了误报的情况。下图是一张典型的P_Curve图:
notion image
可以看到,P_Curve图的纵坐标是精确度Precision,横坐标是置信度Confidence。置信度阈值提高,精确率通常呈现出上升的状态这也是很好理解的事情:置信度越低,就有越多的误判目标被统计在内,这样自然会拉低精确度指标。而随着置信度阈值提高,大量置信度较低的检测结果被过滤掉,误判情况减少,精确度指标自然就上升了。
理想情况下的P_Curve曲线是一条Precision始终在1.0附近运行的直线,这意味着无论你如何设置置信度阈值,模型的预测都非常可靠,误检率很少。当然实际上这种情况是不可能出现的。绝大多数情况下,P_Curve都呈现出Precision随着置信度阈值Confidence迅速上升的曲线,直到某个点上曲线的纵坐标接近为1,并一直平缓运行。但无论如何,P_Curve曲线下所包围的面积越大(实际上也就意味着Precision能够越快达到接近1的程度),说明模型在不同阈值下都能保持较高的精确率,性能越稳健。
如果只有有个别类别的曲线(如上图中的crib曲线)远低于其他曲线,这可能意味着数据集中该类别的样本数量不足(实际上确实如此),或者样本质量较差,导致模型难以准确学习到该类别的特征,这时就需要考虑为该类别收集更多数据或进行数据增强。此外,正常情况下,P_Curve曲线应该是平滑上升的,而如果曲线出现剧烈波动或异常陡降,这可能就暗示训练过程中存在着过拟合或欠拟合的问题,需要做针对性的处理。
P_Curve曲线最主要的价值在于辅助科学地设置模型预测的置信度阈值,在精确率(Precision)和召回率(Recall)之间达到平衡,并且能够满足项目应用需求和目标。例如,在无法接受误检、追求高精度的应用场景中(如安全监控中的误报警成本很高),此时应该根据P_Curve曲线,从中选择一个高精确率(如0.95或更高)所对应的置信度阈值。这种情况下模型的输出会非常保守,只输出它极其确定的结果,但代价就是可能会漏掉一些不太确定的正样本,从而导致召回率降低。

R_Curve

与P曲线相对应的则是R曲线,即召回率(Recall)曲线。召回率衡量的是在所有真实正例中,有多少被模型成功预测出来了因此,Recall指标关注的是模型发现正例的能力,即“查得全不全”。召回率越高,说明模型漏检(未能检测到真实目标)的情况越少。
与P曲线类似,R曲线的横坐标同样是置信度(Confidence),纵坐标则是模型的召回率(Recall)。因此它展示的是当模型输出的置信度阈值从0到1变化时,召回率是如何变化的。下图是一张典型的召回率曲线图:
notion image
P_Curve曲线和R_Curve曲线都是以置信度阈值Confidence作为横坐标,但这两个指标相对比置信度阈值的变化则是刚好相反的。在R_Curve中,随着置信度阈值的提高,召回率会呈现出下降的状态。从直观上也是比较容易理解的:置信度越高,也就会导致越多的正例判定被过滤掉(因为置信度达不到阈值的要求),自然也就导致漏检增加、召回率降低了。
整个R_Curve在上图中的整体位置越高,曲线与两个坐标轴所包围的面积越大,说明模型在不同置信度阈值下都能保持较高的召回率,性能越稳健,漏检越少。
类似的,R曲线的主要价值也在于帮助科学地选择和设置置信度阈值,在满足应用需求的情况下平衡精确率(P)和召回率(R)。例如在追求高召回率、完全不能接受漏检的应用场景中(医疗诊断、自动驾驶中的障碍物检测等),此时就应该根据R曲线,选择一个可接受的高召回率(如0.95或更高)所对应的置信度阈值。
下图是P曲线与R曲线的对比和总结表:
notion image

PR曲线

PR曲线(Precision-Recall Curve,精确率-召回率曲线)是评估目标检测模型性能的核心工具,它可以直观地展示模型在不同置信度阈值下,精确率(Precision)和召回率(Recall)之间的权衡关系。
PR曲线以召回率 (Recall)为横坐标,精确率 (Precision)为纵坐标。曲线上的每一个点都代表了在某个特定的置信度阈值下,模型所达到的精确率和召回率组合。下图是一个典型的PR曲线的示例:
notion image
针对某个特定类别的PR曲线的绘制流程如下:
  • 首先将模型在验证集上所有预测出来的边界框,按照其置信度分数从高到低进行排序。
  • 然后遍历阈值,从最高置信度(如0.99)开始,逐步降低阈值(如0.98, 0.97, ..., 0.01)。在每个阈值下,将所有置信度高于该阈值的预测框视为正例,计算此时的精确率和召回率。
  • 最后把计算出的所有的(Recall, Precision)点连接起来,就形成了PR曲线。
通常情况下,PR曲线的形态是一条从左上角开始逐渐向右下角下降的曲线。这意味着,随着召回率的提高(想检测出更多真实目标),精确率会逐渐下降(误检会增加)。而反之,如果想要提高精确率(减少误检),召回率就会下降(漏检会增加)。
在对两个模型的性能进行比较的时候(当然是使用不同的模型对相同的验证数据集进行的测试),如果模型A的PR曲线完全包住模型B的PR曲线,则可以断言模型A的性能优于模型B。而如果两条曲线发生交叉,则需要通过分别计算两条曲线与两个坐标轴之间的面积(这实际上就是AP指标)来比较两者的优劣。

PR曲线与AP/mAP指标的关系

PR曲线看上去直观,但是不是一个具体的数字,所以使用起来尤其是对不同的模型进行比较的时候,并不是很方便。所以基于PR曲线进一步引入了AP和mAP指标。
AP (Average Precision)指标是指PR曲线与两个坐标轴之间的面积。AP值越高,说明该模型在保持高召回率的同时也能维持较高的精确率,综合性能也就越好。当然,AP指标是针对单个检测类别的指标。
而大多数目标检测模型都支持对多个不同类别的目标类型进行检测,因此要比较模型的整体优劣,就要评估所有类别目标的平均AP指标,这个平均AP指标就是mAP(mean Average Precision)指标。mAP指标是目标检测模型经过训练后所支持的所有类别AP值的平均值,也是目前目标检测领域最权威、最常用的评估指标

F1曲线

完整理解了以上的P曲线和R曲线,F1曲线就比较好理解了。F1分数是精确率(Precision)和召回率(Recall)的调和平均数,用于综合评估模型的性能,其计算公式为:
因为Precision和Recall指标都是介于0-1之间的小数,所以以上公式计算出来的F1分数的取值范围也在0到1之间。F1分数的值越高表示模型在精确率和召回率上的综合表现越好。下图是一张典型的F1曲线图:
notion image
从上图可以看到,F1曲线图中同样以置信度阈值Confidence作为其横坐标,纵坐标则是不同置信度情况下的F1分数。正常情况下,F1曲线通常呈现一个先上升后下降的山峰形状在较低的置信度阈值下,模型会预测出很多结果(高召回率R),但其中包含大量误检(低精确率P),因此导致F1分数在低置信度情况下较低。随着阈值提高,误检减少,精确率上升,F1分数也随之上升。当达到某个峰值后,继续提高阈值会过滤掉一些正确的预测(低召回率),从而导致F1分数下降。
  • 曲线形态高且宽:如果F1曲线的两侧很陡峭,并且在较高的位置形成一个宽阔的平台,说明模型在很宽的置信度范围内都能保持较高的性能,模型非常稳健。这就是非常理想的F1曲线的形态。
  • 曲线形态低且窄:如果F1曲线的整体位置较低,且峰值尖锐,那就说明模型只有在非常特定的阈值下才表现尚可,整体的泛化能力较差。
整体来讲,F1曲线与P曲线(Precision-Confidence)和R曲线(Recall-Confidence)密切相关,它们共同构成了一个完整的评估体系。三者结合起来可以根据应用的具体需求,辅助更为科学的选择出来模型推理的最佳置信度阈值:
  • 在追求高精确率(避免误检)的应用需求中,可以选择峰值点右侧的更高阈值,牺牲一些召回率来换取更高的精确率。
  • 在追求高召回率(避免漏检)的应用需求中,可以选择峰值点左侧的更低阈值,牺牲一些精确率来换取更高的召回率。
一文彻底搞懂Transformer模型的Encoder结构与计算流程YOLOv5源代码解读之Detect.py
Loading...