张量流中的平均精度 (mAP)



我需要计算这个问题中描述的mAP,以便使用Tensorflow进行对象检测

平均精度 (AP)是用于排名集的典型性能度量。AveragePrecision 定义为范围 S 中每个真阳性 TP 之后的精度分数的平均值。给定范围 S = 7,并且排名列表(增益向量)G = [1,1,0,1,1,0,0,1,1,0,0,0,0,0,..] 其中1/0分别表示与相关/非相关项目相关的收益:

AP = (1/1 + 2/2 + 3/4 + 4/5)/4 = 0.8875。

平均精度 (mAP):一组查询的平均精度值的平均值。

我得到了 5个带有预测的 One-Hot张量:

prediction_A 
prediction_B
prediction_C 
prediction_D 
prediction_E 

其中单个预测张量具有此结构(例如prediction_A):

00100
01000
00001
00010
00010

然后我得到了正确的标签(单热)张量,具有相同的结构:

y_A
y_B
y_C
y_D
y_E

我想使用张量流计算mAP,因为我想总结一下,我该怎么做?

我找到了这个函数,但我不能使用它,因为我有一个多维向量。

我还编写了一个计算AP的python函数,但它不使用Tensorflow。

def compute_av_precision(match_list):
n = len(match_list)
tp_counter = 0
cumulate_precision = 0
for i in range(0,n):
if match_list[i] == True:
tp_counter += 1
cumulate_precision += (float(tp_counter)/float(i+1))

if tp_counter != 0:
av_precision = cumulate_precision/float(tp_counter)
return av_precision
return 0

我认为您可能需要这个:

tf.metrics.average_precision_at_k

此方法采用标签和预测来计算您提到的AP@K

以下是参考链接

https://www.tensorflow.org/api_docs/python/tf/metrics/average_precision_at_k

实现了此处定义的AP@K指标:

https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Average_precision

顺便说一句,如果您需要 Tensorflow 中的指标,首先您应该在他们的官方文档中搜索。以下是所有已实施指标的列表

https://www.tensorflow.org/api_docs/python/tf/metrics

干杯

相关内容

  • 没有找到相关文章

最新更新