我实现了一个基于内容的图像检索系统,它将图像编码到VLAD码中。简单地说,一幅图像是数千维的向量,图像之间的相似性是两个相对应的维数向量之间的L2距离。在实践中,我们返回查询代码与所有数据集代码之间的顶部-k最小距离。
现在,我正在牛津大厦数据集上测试这个系统,这是一个用于测试CBIR系统的流行数据集:有55个查询图像,我们计算平均精度来评估您的方法。
给定一个查询图像,一组真正的积极信息被定义为“好”和“确定”图像之间的结合。这些集是由dataset作者手工创建的,要获得更多信息,请阅读原始论文(参见上面的链接)。
因此,假设VLAD码完备,topk[0]是数据集图像之间最相似的图像,并且它的L2距离最小。查询代码。注意到这将用于对象识别应用程序,因此给定查询图像,我们希望返回最相似的图像(而不是top-k值),因此应该只考虑顶1距离来计算这个阈值。
我想做的是学习一个treshold值s.t。如果是topk[0]<treshold,我们可以安全地假设这是一个相关的图像。
机器学习并不是真正属于我的领域,但这正是我想要学习这个值的地方:我们计算所有图像的topk[0]平均值,其中topk[0]图像是一个真正的正数,而我们不考虑假阳性(它们会污染这个阈值vaue)。我意识到这是一个非常天真的解决方案,但没有比这更好的解决办法了。
对于我的实现,我注意到top[0]通常介于1.0*和1.3*之间,以便进行良好的匹配,而通常非常“遥远”的图像具有>1.5*。
发布于 2017-04-05 09:59:50
总的来说,我建议研究一些其他的方法来量化图像的相似性,比如尺度不变检测,对光照变化的鲁棒性等等。如果你只想要一个L2-范数的临界值,有几种方法可以解决这个问题。什么是“最好的”很大程度上取决于你想要什么。如果你重视尽量减少假阳性,那应该是你的成本-功能,如果你重视避免假阴性,而不是你应该优化。您也可以尝试优化这两个同时,您给予两个温度在您的成本函数权重。我能想到的一种方法是:
只有一个选择,但也许你会发现这很有帮助。
https://stackoverflow.com/questions/43226683
复制相似问题