阿里巴巴做特卖的网站,网站正在建设中模板,长春市建设技工学校网站,常德网站建设设计一、mAP指标
mean Average Precision#xff08;平均精度均值#xff09;#xff0c;它是目标检测和信息检索等任务中的重要性能指标。mAP 通过综合考虑精度和召回率来衡量模型的总体性能。
1.1 精度#xff08;Precision#xff09;
表示检索到的目标中实际为正确目标…一、mAP指标
mean Average Precision平均精度均值它是目标检测和信息检索等任务中的重要性能指标。mAP 通过综合考虑精度和召回率来衡量模型的总体性能。
1.1 精度Precision
表示检索到的目标中实际为正确目标的比例计算公式为 1.2 召回率Recall
表示所有目标中成功被检索到的比例计算公式为 1.3 平均精度AP 平均精度表示的是在不同的召回率阈值下计算模型的平均精度。通常通过绘制 PR 曲线Precision-Recall 曲线计算。 PR 曲线的横轴为召回率纵轴为精度。AP 是 PR 曲线下的面积即对该曲线进行积分的结果。
1.4 mAP的计算 mAP 是对多个类别的 AP 求平均得出的数值。 如果目标检测任务中包含 N 个类别则计算每个类别的 AP并对所有类别的 AP 取平均即
1.5 mAP在2D目标检测的计算
在目标检测中通常设定一个置信度阈值用于判定检测结果是否被认为是正例即预测的目标。常见的阈值有0.5即 IOU交并比≥ 0.5 被视为有效检测。
比如mAP0.5表示将IoU设为0.5时计算每一类的所有图片的AP然后所有类别求平均得到mAP
mAP.5:.95表示在不同IoU阈值从0.5到0.95步长0.050.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95上的平均mAP。
def ap_per_class(tp, conf, pred_cls, target_cls, eps1e-16):i np.argsort(-conf)tp, conf, pred_cls tp[i], conf[i], pred_cls[i]unique_classes, nt np.unique(target_cls, return_countsTrue)nc unique_classes.shape[0]ap np.zeros((nc, tp.shape[1]))p, r np.zeros((nc, 1000)), np.zeros((nc, 1000))for ci, c in enumerate(unique_classes):i pred_cls cn_l nt[ci]n_p i.sum()if n_p 0 or n_l 0:continuefpc (1 - tp[i]).cumsum(0)tpc tp[i].cumsum(0)recall tpc / (n_l eps)precision tpc / (tpc fpc)for j in range(tp.shape[1]):ap[ci, j], _, _ compute_ap(recall[:, j], precision[:, j])return ap.mean(0)
结合YOLO仓库中的代码进行说明
np.argsort 按检测置信度对预测框排序。
unique_classes 获取数据集中存在的目标类别。
compute_ap 函数计算PR曲线并从中得到每个类别的平均精度。通过曲线下面积得到AP计算上是使用插值方法在固定的召回率点例如 [0, 0.01, 0.02, ..., 1]计算精度值并通过梯形法则对这些点进行积分得到 AP。
def compute_ap(recall, precision):mrec np.concatenate(([0.0], recall, [1.0]))mpre np.concatenate(([1.0], precision, [0.0]))mpre np.flip(np.maximum.accumulate(np.flip(mpre)))method interpif method interp:x np.linspace(0, 1, 101)ap np.trapz(np.interp(x, mrec, mpre), x)else:i np.where(mrec[1:] ! mrec[:-1])[0]ap np.sum((mrec[i 1] - mrec[i]) * mpre[i 1])return ap, mpre, mrec
输入参数recall: 一个列表或数组表示不同阈值下的召回率值。precision: 一个列表或数组表示不同阈值下的精确度值。
输出值返回三个值平均精确度AP处理过的精确度曲线以及处理过的召回率曲线。
选择一种计算PR曲线下面积的方法函数中提供了两种方法 interp使用插值方法在 [0, 1] 范围内将召回率分为 101 个点然后使用 np.interp 进行插值计算并通过 np.trapz 计算面积这是COCO 评价标准下的插值方法。 continuous直接根据召回率变化的点计算面积。
说明一下这里的细节 翻转精确度曲线 使用 np.flip 将精确度曲线倒置。假设原始精确度数组是 [0.5, 0.6, 0.4, 0.7]翻转后为 [0.7, 0.4, 0.6, 0.5]。 计算累积最大值 倒置后的精确度数组作为输入传递给 np.maximum.accumulate 计算累积最大值。该函数在遍历输入数组时将输出元素设置为从当前索引开始到数组末尾范围内的最大值。np.maximum.accumulate 的计算结果是 [0.7, 0.7, 0.7, 0.7]确保所有值都大于或等于前一个值。 翻转回原始顺序 最后再使用 np.flip 将累积最大值的数组翻转回原始顺序得到 [0.7, 0.7, 0.7, 0.7]这样得到的曲线就是非递减的包络线。在现实情况下精确度曲线有时可能会因为某个特定的召回率阈值而出现波动使得曲线有时会上升有时会下降。然而在计算PR曲线下面积时为了使结果更具稳定性和准确性需要将这些下降的部分“填平”以形成一个包络线确保整个曲线是平滑和非递减的。
1.6 mAP在3D目标检测的计算
在3D目标检测任务中为了顾及小目标物体不再适用2D中基于IoU的mAP计算方式而是计算框在BEV视图下的2D中心点之间的欧氏距离。
设置一个阈值如2米如果预测框和真实框的中心点距离小于这个阈值则认为这两个框匹配。
这种方法特别有利于提高小物体的匹配率。在3D环境中小物体的IoU可能由于深度和遮挡问题而较难计算或得到较低的匹配度。使用中心点距离作为匹配标准简化了匹配过程使得评估对于各种尺寸的物体都更为公平。 通过BEV的2D中心距离d来计算。这样解耦了物体的尺寸和方向对AP计算的影响。d设置为{0.5,1,2,4}米。在计算AP时去除了低于10%的recall和precision并用0来代替这些区域所以这里的PR曲线表示10%以上的召回率和精度以降低噪声影响。不同类C以及不同距离难度D用来计算mAP。
二、NDS
2.1 mATEAverage Translation Error
平均平移误差ATE衡量的是预测的物体中心点与真实物体中心点之间的平均欧几里得距离单位为米。 2.2 mASEAverage Scale Error
平均尺度误差ASE衡量的是预测的物体尺寸与真实物体尺寸之间的一致性通过计算1减去角度对齐后的三维交并比IoU。 2.3 mAOEAverage Orientation Error
平均角度误差AOE衡量的是预测物体方向与真实物体方向之间的最小偏航角差异。所有角度均在整个360度周期内测量但障碍物除外它们是在180度周期内测量的。 2.4 mAVEAverage Velocity Error
平均速度误差AVE是预测物体速度与真实物体速度之间的二维L2范数差m/s)。 其中 vx 和 vy 表示速度在x轴和y轴上的分量。
2.5 mAAEAverage Attribute Error
平均属性错误AAE被定义为类别分类的错误率即1减去分类准确度。 其中 acc 是分类的准确度即正确分类的样本数占总样本数的比例。
2.6 NDS计算
上述指标称为True Positive 指标。所有TP指标都是在匹配时使用 d2 米中心距计算的并且都被设计为正标量。如果特定类别未实现10%以上召回率则该类别的所有 TP 错误都将设置为1。同时忽略了一些类别的测量。 AVE平均速度误差不适用于路标锥和障碍物因为它们是固定不动的没有速度可测量。 AOE平均角度误差不适用于路标锥因为它们没有明确的方向或朝向无法评估其角度误差。 AAE平均属性误差不适用于路标锥和障碍物因为这些类别没有定义明确的属性无法计算属性相关的错误率。 NDS 的一半基于检测性能而另一半则根据框位置、大小、方向、属性和速度来量化检测质量。由于 mAVE、mAOE 和 mATE 可能大于 1 因此会将每个指标限制在 0 和 1 之间。