【问题标题】:Precision--recall curves in image retrieval domainPrecision--图像检索领域的召回曲线
【发布时间】:2019-02-14 09:33:47
【问题描述】:

我正在研究两个不同季节(例如夏季和秋季)的闭环检测问题。我需要制作精确召回曲线。假设,我从夏季拍摄了 500 张图像,从秋季拍摄了 500 张图像。我有距离矩阵。 enter image description here

但我完全困惑,如何制作精确的召回曲线。就像,对于一个季节的每张图像,我将按升序(距离)顺序获得 500 张最近的图像。我知道精确度和召回率的定义,但我无法接近这个问题的解决方案。期待任何形式的帮助或 cmets 或建议。提前致谢。

【问题讨论】:

    标签: information-retrieval precision-recall content-based-retrieval


    【解决方案1】:

    在precision-recall图中,每个点都是一对precision和recall值。在你的情况下,我猜你需要计算每个图像的这些值,然后平均它们。

    假设您总共有 1000 张图像,而只有 100 张属于夏天的图像。如果您拍摄 500 张最接近“夏季”图像的图像,则最佳情况下的精度(当第一张图像始终属于该类时)将是:

    precision(summer) = 100 / (100 + 400) = (retrieved summer images) / (retrieved summer images + other retrieved images) = 0.2
    

    回想一下:

    recall(summer) = 100 / (100 + 0) = (retrieved summer images) / (retrieved summer images + not retrieved summer images) = 1
    

    如您所见,它具有高召回率,因为所有夏季图像都被检索到,但精度低,因为只有 100 张图像,而其他 400 张图像不属于该类。

    现在,如果您拍摄前 100 张图像而不是 500 张,则召回率和精度都等于 1。

    如果您先拍摄 50 张图像,那么精度仍为 1,但召回率会下降到 0.5。

    因此,通过改变图像数量,您可以获得精确召回曲线的分数。对于上述示例,这些点将是 (0.2, 1), (1, 1), (1, 0.5)。

    您可以使用不同的阈值为 1000 张图像中的每一张计算这些值。

    【讨论】:

    • 非常感谢您的帮助。谢谢。
    • @HridBiswas 我刚刚编辑了评论,因为我的问题错了。无论如何,我希望我没有回复太晚:)
    • 实际上我的问题与您描述的方式略有不同,但它仍然对我很有帮助,我可以按照我的方式修改您的解决方案。但是我有一个问题是:如果我从您的示例中获取精度与召回值,即 (0.2, 1), (1, 1), (1, 0.5),那么我看到,对于召回 1,我有 2 个精度值,o.2 和 1(因为 (0.2, 1), (1, 1)),那么我该如何绘制呢?提前致谢
    • @HridBiswas 如果你用谷歌搜索“精度召回曲线”,你会看到很多图都有直线,即相同精度有两个或多个召回值(反之亦然大约)。 classeval.files.wordpress.com/2015/06/… 例如,这张图显示了完美的准确率和召回率,当召回率从 0 变为 1 时,准确率等于 1。
    猜你喜欢
    • 2020-04-18
    • 2017-09-21
    • 1970-01-01
    • 2021-09-13
    • 2022-10-18
    • 2021-09-25
    • 2016-01-22
    • 2017-10-28
    • 2020-01-01
    相关资源
    最近更新 更多