Как создать индекс для коллекции векторов / гистограмм для контентного поиска изображений - PullRequest
2 голосов
/ 22 декабря 2011

В настоящее время я пишу пакет визуальной системы поиска изображений на основе слов, которая похожа на модель векторного пространства в текстовом поиске. Согласно этой схеме каждое изображение представлено вектором (или иногда в литературе также называется гистограммой). По сути, каждое число в векторе подсчитывает, сколько раз каждое «визуальное слово» встречается на этом изображении. Если 2 изображения имеют векторы, которые «близки» друг к другу, это означает, что они имеют много общих характеристик изображения и, следовательно, похожи.

Я пытаюсь создать инвертированный индекс файла для набора таких векторов. Я хочу что-то, что может масштабироваться от тысяч (на стадии пробного использования) до сотен тысяч или миллионов + изображений, чтобы домашний взлом структуры данных не работал.

Я смотрел на Lucene, но, видимо, он только индексирует текст (поправьте меня, если я ошибаюсь), тогда как в моем случае я хочу, чтобы он индексировал числа (т.е. сами векторы). Я видел случаи, когда люди преобразовывали вектор в текстовый документ следующим образом:

<3, 6, ..., 5> -> "w1 w2 ... wn". По существу, любой ненулевой компонент заменяется текстовым словом «w [n]», где n - индекс этого числа. Этот «документ» затем передается в Lucene для индексации.

Проблема с использованием этого метода состоит в том, что текстовое представление для вектора не кодирует, как часто встречается конкретное "слово", поэтому ранжирование найденных изображений не будет хорошим.

Кто-нибудь знает о зрелом API индексации, который может обрабатывать векторы или, возможно, предложить другую схему кодирования для моих векторов, чтобы я мог продолжать использовать Lucene? Я также посмотрел проект Lucene for Image Retrieval (LIRE) и попробовал демоверсию, которая пришла с ним, но количество исключений, которые были сгенерированы, когда я запустил эту демоверсию, заставляет меня сомневаться в ее использовании.

Что касается языка API, я открыт для C ++ или Java.

Заранее спасибо за любые ответы.

1 Ответ

0 голосов
/ 25 августа 2013

Вы можете попробовать GRire , которая является библиотекой Java, которая реализует модель Bag of Visual Words. Это мой проект, и в настоящее время я работаю над реализацией инвертированного индекса.

...