问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

目标检测精度评估指标详解:召回率、mAP和MR-2

创作时间:
作者:
@小白创作中心

目标检测精度评估指标详解:召回率、mAP和MR-2

引用
CSDN
1.
https://m.blog.csdn.net/qq_43642885/article/details/140426051

在目标检测领域,评估模型性能的常用指标包括召回率(Recall)、平均精度均值(mAP)和平均对数漏检率(MR-2)。本文将通过一个具体的Python代码示例,详细解释如何计算True Positives (TP)和False Positives (FP),并进一步阐述TP、FP、TN和FN的概念及其在评估分类模型中的重要性。

检测精度评价指标主要包括:

  1. 召回率(Recall Rate)
  2. 平均精度均值(mAP)
  3. 平均对数漏检率(MR-2)

TP 和 FP 的计算示例

假设你有一个目标检测模型,并使用它检测图像中的目标。你需要计算 TP 和 FP 以评估模型的性能。我们假设有以下数据:

  • ground_truth: 实际的目标位置。
  • detections: 模型检测到的目标位置。
import cv2
import numpy as np

# 这是一个假设的 ground_truth 和 detections 数据
ground_truth = [
    (50, 50, 100, 100),  # 真实的目标区域
    (200, 200, 250, 250)
]
detections = [
    (55, 55, 105, 105),  # 检测到的目标区域(TP)
    (60, 60, 110, 110),  # 检测到的目标区域(TP)
    (210, 210, 260, 260),# 检测到的目标区域(TP)
    (300, 300, 350, 350) # 错误检测到的目标区域(FP)
]

# 计算 IoU(Intersection over Union)
def compute_iou(box1, box2):
    x1, y1, x2, y2 = box1
    x1g, y1g, x2g, y2g = box2
    
    xi1 = max(x1, x1g)
    yi1 = max(y1, y1g)
    xi2 = min(x2, x2g)
    yi2 = min(y2, y2g)
    
    inter_area = max(0, xi2 - xi1) * max(0, yi2 - yi1)
    
    box1_area = (x2 - x1) * (y2 - y1)
    box2_area = (x2g - x1g) * (y2g - y1g)
    
    union_area = box1_area + box2_area - inter_area
    
    iou = inter_area / union_area
    return iou

# 设置 IoU 阈值
iou_threshold = 0.5

# 初始化 TP 和 FP 计数器
TP = 0
FP = 0

# 遍历检测结果并计算 TP 和 FP
for detection in detections:
    is_tp = False
    for gt in ground_truth:
        iou = compute_iou(detection, gt)
        if iou >= iou_threshold:
            is_tp = True
            break
    if is_tp:
        TP += 1
    else:
        FP += 1

print(f'True Positives (TP): {TP}')
print(f'False Positives (FP): {FP}')

解释

  1. 计算 IoU
    compute_iou函数计算两个边界框之间的 IoU(Intersection over Union),用于判断检测结果是否与真实目标匹配。

  2. 设置阈值:设置一个 IoU 阈值(如 0.5),超过该阈值则认为检测结果是一个 TP。

  3. 遍历检测结果:对于每个检测结果,计算其与所有 ground truth 的 IoU,如果有一个超过阈值,则认为该检测结果是 TP,否则为 FP。

TP、FP、TN和FN的概念

  1. 真正例(True Positive, TP)
    解释:模型正确地将正类别样本预测为正类别。
    例子:在疾病诊断中,一个病人实际患有疾病,模型也预测他患有疾病。

  2. 假正例(False Positive, FP)
    解释:模型错误地将负类别样本预测为正类别。
    例子:在垃圾邮件检测中,一个正常的邮件被模型错误地标记为垃圾邮件。

  3. 真负例(True Negative, TN)
    解释:模型正确地将负类别样本预测为负类别。
    例子:在疾病诊断中,一个病人实际上没有患病,模型也预测他没有患病。

  4. 假负例(False Negative, FN)
    解释:模型错误地将正类别样本预测为负类别。
    例子:在疾病诊断中,一个病人实际患有疾病,但模型预测他没有患病。

这些指标在评估分类模型时非常重要,因为它们可以用来计算更复杂的性能指标,如准确率(Accuracy)、召回率(Recall)或敏感度、精确率(Precision)、F1分数等。例如:

  • 准确率:分类正确的样本占总样本数的比率
    计算公式为:(TP+TN)/(TP+TN+FP+FN)

  • 召回率:正类别中被正确预测的样本比例
    计算公式为TP/(TP+FN)

  • 精确率:被预测为正类别中实际为正类别的样本比例
    计算公式为:TP/(TP+FP)

  • F1分数:精确率和召回率的调和平均数
    计算公式为2×(精确率×召回率)/(精确率+召回率)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号