【YOLO】之理解召回率、精确率和准确率

  1. 某呼上是这样解释的:
    精确率(precision)和准确率(accuracy)是不一样的。

    实际上非常简单,精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是
    P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
    召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
    R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP

    其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数。

  2. 或者可以这样理解:
    TP: 将正类预测为正类数
    FN: 将正类预测为负类数
    FP: 将负类预测为正类数
    TN: 将负类预测为负类数

    准确率(accuracy) = 预 测 对 的 所 有 \frac{预测对的}{所有} = ( T P + T N ) ( T P + F N + F P + T N ) \frac{(TP+TN)}{(TP+FN+FP+TN)} (TP+FN+FP+TN)(TP+TN)

    精确率(precision) = T P ( T P + F P ) \frac{TP}{(TP+FP)} (TP+FP)TP

    召回率(recall) = T P ( T P + F N ) \frac{TP}{(TP+FN)} (TP+FN)TP

  3. 个人是这样理解的:

    假设检测一张图片有31个行人,检测出25个,其中有2个检测错误(检测成了狗),则求召回率,精确度,准确率?

    分析:31个行人检测出25个,说明有6个是误检或者漏检的,有2个检测错误,则说明有25-2=23个行人检测正确,有6-2=4个是漏检的。

    召回率= 正 确 检 测 的 行 人 数 目 原 始 样 本 行 人 总 数 = 25 − 2 31 = 23 31 = 0.72 \frac{正确检测的行人数目}{原始样本行人总数}=\frac{25-2}{31}=\frac{23}{31}=0.72 =31252=3123=0.72

    精确率= 检 测 出 行 人 总 数 检 测 结 果 总 数 = 25 − 2 25 = 23 25 = 0.92 \frac{检测出行人总数}{检测结果总数}=\frac{25-2}{25}=\frac{23}{25}=0.92 =25252=2523=0.92

    准确率= 所 有 识 别 正 确 的 数 目 样 本 总 数 = 25 − 2 31 = 23 31 = 0.72 \frac{所有识别正确的数目}{样本总数}=\frac{25-2}{31}=\frac{23}{31}=0.72 =31252=3123=0.72

### YOLOv8 模型的准确率精确召回率 对于YOLOv8模型而言,准确理解其性能评估中的几个核心概念至关重要。 #### 准确率(Accuracy) 在多类分类场景下,准确率是指所有预测正确的样本占总样本的比例。然而,在目标检测任务中,“准确率”这一术语并不常用,更多关注的是精确(Precision)召回率(Recall),以及它们衍生出来的mAP指标[^1]。 #### 精确(Precision) 精确为真正例(True Positives, TP)除以真正例加假正例(False Positives, FP)的数量,即: \[ \text{Precision} = \frac{\text{TP}}{\text{TP}+\text{FP}} \] 这反映了当模型做出正面预测时,实际为真的比例。高精确意味着很少有背景或其他物体被错误地标记为目标对象[^3]。 #### 召回率(Recall) 召回率定义为真正例(TP)除以真正例加上假反例(False Negatives, FN)的数量: \[ \text{Recall} = \frac{\text{TP}}{\text{TP}+\text{FN}} \] 该比表示所有真实存在的目标中有多少被成功识别出来。较高的召回率表明较少的目标丢失未检出。 #### 综合考量 值得注意的是,虽然可以单独优化精确召回率,但在实践中往往需要找到两者之间的平衡点。例如,如果仅追求高的召回率而忽视精确,则可能导致大量误报;反之亦然。因此,通常采用mAP作为整体性能度量标准,因为它考虑到了不同阈值下的平均精度变化情况。 ```python def calculate_precision_recall(tp, fp, fn): precision = tp / (tp + fp) if (tp + fp) != 0 else 0 recall = tp / (tp + fn) if (tp + fn) != 0 else 0 return precision, recall ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值