【目标检测】性能指标

      这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,其中:总共有 P 个类别为 1 的样本,假设类别 1 为正例。总共有 N 个类别为 0 的样本,假设类别 0 为负例。
  1)True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);
  2)False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
  3)False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
  4)True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。
   
1.准确率 (Accuracy)

在这里插入图片描述
反映了分类器统对整个样本的判定能力——能将正的判定为正,负的判定为负。
  
2、精确度(Precision)
在这里插入图片描述
Precision其实就是在识别出来的图片中,正确地划分为正例的个数所占的比率

3、召回率(recall)
在这里插入图片描述
Recall 是所有正样本样例中,被正确识别为正样本的比例。

4、F1值

5、平均精度(Average-Precision,AP)与 mean Average Precision(mAP)

      对于一个类别C,可能在多张图片上有该类别,则类别C的AP(average Precision)指数:AP=每张图片上的Precision求和/含有类别C的图片数目

      对于整个数据集而言,存在多个类别,不仅仅只有C,可能还会有C1、C2、C3:mAP=上一步计算的所有类别的AP和/总的类别数目,相当于所有类别的AP的平均值。

6、IoU(交并比)

IoU表示了预测产生的候选框(Region Proposal)与原图中标记框(Ground Truth)的重叠度。
在这里插入图片描述
在这里插入图片描述

7、FPS(Frame Per Second,每秒帧率)

目标检测性能指标包括精度和速度两个方面。常用的精度指标有mAP(mean average precision)、PR曲线、ROC曲线等;常用的速度指标有FPS(frames per second,每秒处理帧数)、推理时间等。以下是使用Python和OpenCV计算mAP的示例代码: ```python import numpy as np def calculate_iou(box1, box2): x1, y1, w1, h1 = box1 x2, y2, w2, h2 = box2 xi1 = max(x1, x2) yi1 = max(y1, y2) xi2 = min(x1 + w1, x2 + w2) yi2 = min(y1 + h1, y2 + h2) iw = max(xi2 - xi1, 0) ih = max(yi2 - yi1, 0) ua = (w1 * h1 + w2 * h2 - iw * ih) iou = iw * ih / ua return iou def calculate_ap(gt_boxes, pred_boxes, iou_threshold=0.5): tp = [0] * len(pred_boxes) fp = [0] * len(pred_boxes) gt_detected = [False] * len(gt_boxes) pred_scores = [box[0] for box in pred_boxes] order = np.argsort(pred_scores)[::-1] for i in order: _, pred_box, pred_class = pred_boxes[i] max_iou = -float('inf') max_idx = -1 for j, gt_box in enumerate(gt_boxes): if pred_class != gt_box[0]: continue iou = calculate_iou(pred_box, gt_box[1:]) if iou > max_iou: max_iou = iou max_idx = j if max_iou >= iou_threshold: if not gt_detected[max_idx]: tp[i] = 1 gt_detected[max_idx] = True else: fp[i] = 1 else: fp[i] = 1 tp_acc = np.cumsum(tp) fp_acc = np.cumsum(fp) recall = tp_acc / len(gt_boxes) precision = tp_acc / (tp_acc + fp_acc) ap = 0 for t in np.arange(0, 1.1, 0.1): if np.sum(recall >= t) == 0: p = 0 else: p = np.max(precision[recall >= t]) ap += p / 11 return ap def calculate_map(gt_boxes_list, pred_boxes_list, iou_threshold=0.5): aps = [] for c in range(len(gt_boxes_list)): gt_boxes = gt_boxes_list[c] pred_boxes = pred_boxes_list[c] ap = calculate_ap(gt_boxes, pred_boxes, iou_threshold) aps.append(ap) map = sum(aps) / len(aps) return map ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值