计算召回率和精度以评估 CBIR 系统
Compute Recall and Precision to evaluate CBIR system
我使用 SIFT 结合其他基于特征的算法(使用 OpenCV 和 Python3)实现了 CBIR,现在我必须评估它们的组合(即 SIFT/SURF、ORB/BRISK...) 执行。
我发现我可以使用 Precision |TP| / (|TP| + |FP|) 和召回 |TP| / (|TP| + |FN|)。我知道TP是正确的positive,FN是没有返回的相关文档,FP是返回但不相关的文档
我计算了我与 BF 的匹配度并且我推测:
matches=bf.knnMatch(descriptor1, descriptor2, k=2)
是我的TP+FP
- 口粮测试匹配的就是我的TP
如何计算我的 FN?例如相关但未返回的匹配项?
请注意,我只是提出一个假设,所以如果我错了,请纠正我。
我想在具体实现上得到一些帮助,比如图像匹配的具体案例中这些数据在哪里。
或者,您能否建议我如何基于特征检测和描述来评估 CBIR 系统?
我终于找到了我的问题的答案,也许它可以帮助别人!
信息检索上下文和分类上下文中的 PRECISION 和 RECALL 计算存在差异。
信息检索:
precision = (relevant documents + retrieved documents) / retrieved documents
recall = (relevant documents + retrieved dcuments) / relevant documents
对于分类上下文,可以讲混淆矩阵:
precision = TP/TP+FP
recall = TP/TP+FN
例如,在我的例子中,无法使用混淆矩阵。
我使用 SIFT 结合其他基于特征的算法(使用 OpenCV 和 Python3)实现了 CBIR,现在我必须评估它们的组合(即 SIFT/SURF、ORB/BRISK...) 执行。
我发现我可以使用 Precision |TP| / (|TP| + |FP|) 和召回 |TP| / (|TP| + |FN|)。我知道TP是正确的positive,FN是没有返回的相关文档,FP是返回但不相关的文档
我计算了我与 BF 的匹配度并且我推测:
matches=bf.knnMatch(descriptor1, descriptor2, k=2)
是我的TP+FP- 口粮测试匹配的就是我的TP
如何计算我的 FN?例如相关但未返回的匹配项?
请注意,我只是提出一个假设,所以如果我错了,请纠正我。
我想在具体实现上得到一些帮助,比如图像匹配的具体案例中这些数据在哪里。
或者,您能否建议我如何基于特征检测和描述来评估 CBIR 系统?
我终于找到了我的问题的答案,也许它可以帮助别人!
信息检索上下文和分类上下文中的 PRECISION 和 RECALL 计算存在差异。
信息检索:
precision = (relevant documents + retrieved documents) / retrieved documents
recall = (relevant documents + retrieved dcuments) / relevant documents
对于分类上下文,可以讲混淆矩阵:
precision = TP/TP+FP
recall = TP/TP+FN
例如,在我的例子中,无法使用混淆矩阵。