【目标分类&检测测试指标】

本文详细介绍了机器学习和深度学习中常用的分类指标,如准确率、精确率、召回率和F1分数,以及目标检测任务中的IoU和AveragePrecision。还提供了Python代码示例,展示了如何在PyTorch中计算这些指标。
摘要由CSDN通过智能技术生成

目标分类指标

目标分类指标是指在机器学习和深度学习中,用于衡量模型对目标类别预测准确度的一系列评价标准。以下是一些常见的目标分类指标及其详细说明,并附上Python代码示例(以PyTorch为例):

  1. 准确率(Accuracy)
    准确率是分类问题中最直观的评估指标,它计算的是模型正确预测样本数占总样本数的比例。

    from sklearn.metrics import accuracy_score
    
    # 假设y_true是真实标签,y_pred是模型预测的标签
    y_true = [0, 1, 2, 3, 4]
    y_pred = [0, 1, 2, 3, 4]
    
    accuracy = accuracy_score(y_true, y_pred)
    print(f"Accuracy: {accuracy}")
    

    在PyTorch中,对于多分类任务,可以通过torchmetrics.Accuracy()来计算:

    from torchmetrics import Accuracy
    
    # 初始化Accuracy指标
    acc = Accuracy()
    
    # 预测与真实标签
    y_true = torch.tensor([0, 1, 2, 3, 4])
    y_pred = torch.tensor([0, 1, 2, 3, 4])
    
    # 更新指标并计算结果
    acc.update((y_pred, y_true))
    accuracy = acc.compute()
    print(f"Accuracy: {accuracy}")
    
  2. 精确率(Precision)
    精确率是在所有被模型预测为某个类别的样本中,真正属于这个类别的样本比例。

    from sklearn.metrics import precision_score
    
    # 计算某一类别的精确率
    precision = precision_score(y_true, y_pred, pos_label=1)
    
    # PyTorch中可以使用`torchmetrics.Precision`
    from torchmetrics import Precision
    
    prec = Precision(num_classes=5)  # 假设有5个类别
    prec.update((y_pred.argmax(dim=-1), y_true))
    precision = prec.compute()
    
  3. 召回率(Recall)
    召回率是在所有实际为某个类别的样本中,被模型正确预测为该类别的样本比例。

    from sklearn.metrics import recall_score
    
    recall = recall_score(y_true, y_pred, pos_label=1)
    
    # PyTorch中使用`torchmetrics.Recall`
    from torchmetrics import Recall
    
    rec = Recall(num_classes=5)
    rec.update((y_pred.argmax(dim=-1), y_true))
    recall = rec.compute()
    
  4. F1分数(F1 Score)
    F1分数是精确率和召回率的调和平均值,能同时兼顾精确率和召回率的表现。

    from sklearn.metrics import f1_score
    
    f1 = f1_score(y_true, y_pred, pos_label=1)
    
    # PyTorch中使用`torchmetrics.F1Score`
    from torchmetrics import F1Score
    
    f1_metric = F1Score(num_classes=5, average='weighted')  # 可选'weighted', 'macro', 'micro'等
    f1_metric.update((y_pred.argmax(dim=-1), y_true))
    f1_score = f1_metric.compute()
    

请注意,以上示例中的pos_label参数通常用于二分类问题中指定正类;对于多分类问题,需要根据实际情况选择合适的计算方式(如加权、宏平均或微平均)。在实际应用中,可能还需要结合混淆矩阵(Confusion Matrix)、AUC-ROC曲线等更多指标进行综合评估。

目标检测指标

目标检测是计算机视觉中的一个重要任务,用于确定图像中每个对象的位置和类别。以下是两个关键评价指标及其公式:

  1. Intersection over Union (IoU) :
    IoU 用来衡量模型预测的边界框(检测窗口 B)与真实标注的边界框(标记窗口 A)之间的重叠程度。它是两者交集面积与并集面积之比。

    计算公式为:

    IoU(A, B) = |A ∩ B| / |A ∪ B|
    

    其中:

    • |A ∩ B| 表示 A 和 B 的交集面积。
    • |A ∪ B| 表示 A 和 B 的并集面积。

    IoU 值范围在 [0, 1] 之间,值越接近1表示预测框和真实框的重叠度越高,定位精度越好;值低于预设阈值(如0.5)通常被认为是不成功的检测。

  2. Average Precision (AP) :
    AP 是对每种类别的 Precision-Recall 曲线下面积的平均值,它综合了精确率(Precision)和召回率(Recall)两个指标来评估模型性能。对于每个类别,首先计算不同召回率下的精确率,然后通过插值得到曲线下的面积。

    • Precision(精确率):正确检测到该类别的目标占所有被模型预测为该类别的比例。

      Precision = TP / (TP + FP)
      

      其中:

      • TP(True Positive):正确识别并定位的物体数。
      • FP(False Positive):错误地将非该类别的物体预测为此类别的次数。
    • Recall(召回率):正确检测到的该类别的目标占实际存在该类别目标的比例。

      Recall = TP / (TP + FN)
      

      其中:

      • FN(False Negative):未能检测出的实际存在的该类别的物体数量。
    • AP(Average Precision):对各个召回率点上的 Precision 值进行积分或插值得到的平均值。

  3. Mean Average Precision (mAP) :
    mAP 是多个类别 AP 值的平均,用来评估多类别目标检测的整体性能。

    计算公式为:

    mAP = mean(AP_1, AP_2, ..., AP_K)
    

    其中 K 是类别总数。

在不同的数据集和竞赛中,比如 PASCAL VOC 和 COCO 数据集,会根据特定的 IoU 阈值(如 IoU@0.5 或者在一定范围内的平均,如 0.5:0.95)来计算 AP 和 mAP。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stsdddd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值