1

我用 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 系统?

4

1 回答 1

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

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

于 2018-04-27T07:57:07.707 回答