目标检测评价指标(含 mAP、F-measure、FPS)

写在前面的话

无论是目标检索、分类、还是检测,都有其自身的一套评价指标体系。可能其中很多概念很类似,比如精确度、召回率。但其实内涵还是有些不一样的。身为一个已经搞了一年图像目标检测的后进者,直到现在才发现,之前我以为轻松搞懂的评价标准,其实是错误的。今天特就自己翻阅的资料做一个汇总,不敢保证对,但至少修正了一部分自以为是的思想。

在网上之前看到的很多打着目标检测评价指标的博文,其实只是对分类做的评价。而检测的实质是分类+定位。所以没有牵扯到 IoU 概念的统统都是耍流氓~

好了闲话少叙,我们言归正传…

-----------------------------------------------------------------------------------------------------------------------------------------

1 目标检测一些基本概念

这部分包含但不限于

  1. 什么是 目标检测?
  2. 什么是 Ground Truth?
  3. 什么是 IoU?
  4. 精确度 Precision 和召回率 Recall 的絮絮叨叨概念,不想看的可以直接跳到 2 mAP 那里

可以参考 目标检测的评估指标mAP的那些事儿 中的相关部分。

2 mAP

TP: IoU>0.5的检测框数量(同一 Ground Truth 只计算一次)
FP: IoU<=0.5的检测框,或者是检测到同一个 GT 的多余检测框的数量
FN: 没有检测到的GT的数量

Precision: TP / (TP + FP)
Recall: TP / (TP + FN)

PR曲线: Precision-Recall曲线
AP: PR曲线下的面积,综合考量了 recall 和 precision 的影响,反映了模型对某个类别识别的好坏。
mAP: mean Average Precision, 即各类别AP的平均值,衡量的是在所有类别上的平均好坏程度。

-----------------------------------------------------------------------------------------------------------------------------------------

在目标检测中,mAP的定义首先出现在PASCAL Visual Objects Classes(VOC)竞赛中,这个大赛包含许多图像处理任务。

我们要注意,在计算Precision和Recall,至少有两个变量会影响 Precision 和 Recall,即 IoU 和

### FLOPs 的定义与义 FLOPs 表示 floating-point operations per second,即浮点运算次数。这是指模型执行一次前向传播过程中所需的浮点运算总数,用来衡量算法或模型的计算复杂度[^2]。 对于神经网络而言,FLOPs 可以帮助评估模型在实际应用中的资源消耗情况。较低的 FLOPs 意味着更少的计算需求,在移动设备或其他资源受限环境中尤为重要。 ```python def calculate_flops(model): flops = model.compute_flops() return flops ``` ### mAP 的定义与mAP 是 mean Average Precision 的缩写,表示平均精确率均值。该指标综合考虑了多个类别下的 AP 平均表现,广泛应用于多类别的目标检测任务中作为整体性能评测标准[^1]。 具体来说,针对每一个类别分别计算其对应的 AP 值,再取所有类别的算术平均值得到最终的 mAP 结果。较高的 mAP 分数表明模型具有更好的分类准确性以及边界框定位能力。 ```python from pycocotools.coco import COCO import numpy as np def compute_map(coco_gt, coco_dt): iou_type = 'bbox' coco_eval = COCOeval(coco_gt, coco_dt, iou_type) coco_eval.evaluate() coco_eval.accumulate() coco_eval.summarize() stats = list(coco_eval.stats) map_score = round(float(stats[0]), 3) # mAP@IoU=0.50:0.95 return map_score ``` ### FPS 的定义与FPS 即 frames per second,代表每秒钟处理帧的数量。这一参数反映了计算机视觉系统实时性的强弱程度,尤其适用于视频流分析场景下对延迟敏感的应用场合[^4]。 更高的 FPS 数字意味着更快的数据吞吐能力更低的时间延迟特性,从而使得交互体验更加流畅自然。通常情况下,提升 FPS 往往伴随着硬件加速技术的支持或是软件层面优化措施的应用。 ```python import time def measure_fps(process_frame_func, num_frames=100): start_time = time.time() for _ in range(num_frames): process_frame_func() # Process a single frame here elapsed_time = time.time() - start_time fps = num_frames / elapsed_time return fps ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值