计算召回率和精度以评估 CBIR 系统

Posted

技术标签:

【中文标题】计算召回率和精度以评估 CBIR 系统【英文标题】:Compute Recall and Precision to evaluate CBIR system 【发布时间】:2018-09-05 19:21:47 【问题描述】:

我使用 SIFT 结合其他基于特征的算法(使用 OpenCV 和 Python3)实现了 CBIR,现在我必须评估它们的组合(即 SIFT/SURF、ORB/BRISK...)的性能。

我发现我可以使用 Precision |TP| / (|TP| + |FP|) 和召回 |TP| / (|TP| + |FN|)。我知道TP是正确的肯定,FN是没有返回的相关文件,FP是返回但不相关的文件

我计算我与 BF 的匹配,我假设:

matches=bf.knnMatch(descriptor1, descriptor2, k=2)是我的TP+FP 通过 ration test 找到的匹配项是我的 TP

如何计算我的 FN?例如相关但未返回的匹配项?

请注意,我只是提出一个假设,所以如果我错了,请纠正我。

我想对具体的实现有一些帮助,例如在图像匹配的具体情况下这些数据在哪里。

您能否建议我如何根据特征检测和描述评估 CBIR 系统?

【问题讨论】:

您好,由于问题的性质,无法简单解释,您可以看看这个dissertation。希望对您有所帮助。 @Stavros Niafas 谢谢你的论文。如果我猜对了,您只是计算了相关图像总数和检索图像总数中相关检索图像的数量?我还可以问一下您在图 13 中使用了哪种 Plot。 37 岁? 没错。这是相应的召回率和精度。如果我说对了,那不是固定的。绘图是使用 matlab 定制的,在每个特定指标中进行迭代。更具体地说,例如精度,对于 9 个内点阈值,我得到 3 个与查询图像相关(来自同一房屋类)/所有检索到的图像高于 9 个阈值,假设为 5。精度(对于 1 类)= 3/5 @Stavros Niafas 非常感谢!现在很清楚了! 【参考方案1】:

我终于找到了我的问题的答案,也许它可以帮助别人!

INFORMATION RETRIEVAL CONTEXT 和 CLASSIFICATION CONTEXT 中的 PRECISION 和 RECALL 计算存在差异。

信息检索:

precision = (relevant documents + retrieved documents) / retrieved documents
recall = (relevant documents + retrieved dcuments) / relevant documents

对于分类上下文,可以说混淆矩阵:

precision = TP/TP+FP
recall = TP/TP+FN

例如,就我而言,不可能使用混淆矩阵。

【讨论】:

以上是关于计算召回率和精度以评估 CBIR 系统的主要内容,如果未能解决你的问题,请参考以下文章

一次性计算精度、召回率和 F 分数 - python

如何在 python 中使用 libSVM 计算精度、召回率和 F 分数

召回率和精度

Keras 分类器上的准确率、召回率和 FMeasure 的 Sklearn Metrics

精确率和召回率

如何从 Python 中的混淆矩阵中获取精度、召回率和 f 度量 [重复]