私は現在、テキスト検索におけるベクトル空間モデルに似た視覚的単語ベースの画像検索システムのバッグを書いています。このフレームワークでは、各画像はベクトル (または文献ではヒストグラムとも呼ばれます) で表されます。基本的に、ベクトル内の各数値は、その画像内で各「ビジュアル ワード」が出現する回数をカウントします。2 つの画像が互いに「近い」ベクトルを持っている場合、これは、多くの画像特徴が共通しており、したがって類似していることを意味します。
私は基本的に、そのようなベクトルのセットの逆ファイル インデックスを作成しようとしています。自家製のデータ構造のハックが機能しないように、数千 (試用段階) から数十万または数百万以上の画像にスケーリングできるものが必要です。
私はLuceneを見てきましたが、どうやらそれはテキストのみにインデックスを付けているようです(間違っている場合は修正してください)が、私の場合は数字(つまりベクトル自体)にインデックスを付けたいと思っています。次の方法でベクターをテキスト ドキュメントに変換するケースを見てきました。
<3, 6, ..., 5> --> "w1 w2... wn". 基本的に、ゼロ以外のコンポーネントは、テキストの単語 "w[n]" に置き換えられます。ここで、n はその数値のインデックスです。次に、この「ドキュメント」が Lucene に渡されてインデックスが作成されます。
この方法を使用する際の問題は、ベクトルのテキスト表現が特定の「単語」の出現頻度をエンコードしないため、取得した画像のランキングが良くないことです。
Lucene を引き続き使用できるように、ベクターを処理できる成熟したインデックス API を知っている人はいますか? また、Lucene for Image Retrieval (LIRE) プロジェクトを調べ、付属のデモを試してみましたが、そのデモを実行したときに生成された例外の数により、それを使用するかどうかわかりません。
API の言語に関しては、C++ または Java を使用できます。
返信ありがとうございます。