我目前正在编写一个基于视觉词的图像检索系统,它类似于文本检索中的矢量空间模型。在该框架下,每个图像由矢量表示(或者有时在文献中也称为直方图)。基本上,向量中的每个数字都计算每个“视觉词”在该图像中出现的次数。如果2个图像具有“靠近”在一起的矢量,则这意味着它们具有许多共同的图像特征,因此是相似的。
我基本上是在尝试为一组这样的向量创建反向文件索引。我想要的东西可以从数千(在试用阶段)扩展到数十万或数百万+图像,因此自制的数据结构黑客将无法工作。
我看过Lucene,但显然它只是索引文本(如果我错了,请纠正我),而在我的情况下,我希望它能索引数字(即矢量本身)。我见过人们通过以下方式将矢量转换为文本文档的情况:
< 3,6,...,5> - > “w1 w2 ... wn”。基本上任何非零的组件都被文本词“w [n]”替换,其中n是该数字的索引。然后将此“文档”传递给Lucene以进行索引。
使用此方法的问题是向量的文本表示不会对特定“单词”的出现频率进行编码,因此检索到的图像的排名不会很好。
有没有人知道一个成熟的索引API可以处理向量,或者可能为我的向量建议不同的编码方案,以便我可以继续使用Lucene?我还看过Lucene的图像检索(LIRE)项目,并尝试了它附带的演示,但是当我运行该演示时生成的异常数量让我不确定是否使用它。
对于API的语言,我对C ++或Java开放。
提前感谢您的回复。