Классификация изображений с использованием функций SIFT и SVM

12

Я надеюсь, что кто-то может объяснить, как использовать модель пакета слов для классификации изображений с использованием функций SIFT / SURF / ORB и машины опорных векторов?

В настоящее время я могу вычислить векторы функций SIFT для изображения и внедрил SVM, однако мне трудно понять литературу о том, как использовать модель мешка слов для «векторного квантования» функций SIFT и построения гистограмм, которые дают векторы фиксированного размера, которые можно использовать для обучения и тестирования SVM.

Любые ссылки на учебники или литературу по теме приветствуются, спасибо

Джоно Броган
источник

Ответы:

16

Если вы могли бы реализовать SVM, вы можете квантовать функции. :)

Как правило, функции квантуется с использованием кластеризации k-средних. Сначала вы решаете, каким должен быть ваш «размер словаря» (скажем, 200 «визуальных слов»), а затем запускаете кластеризацию k-средних для этого количества кластеров (200). Дескрипторы SIFT представляют собой векторы из 128 элементов, то есть точек в 128-мерном пространстве. Таким образом, вы можете попытаться объединить их, как и любые другие точки. Вы извлекаете дескрипторы SIFT из большого количества изображений, аналогичных тем, которые вы хотите классифицировать, используя набор функций. (В идеале это должен быть отдельный набор изображений, но на практике люди часто просто получают функции из своего набора обучающих образов.) Затем вы запускаете кластеризацию k-средних на этом большом наборе дескрипторов SIFT, чтобы разделить его на 200 (или что угодно) кластеров. назначить каждый дескриптор кластеру. k-means даст вам 200 кластерных центров,

Затем вы берете каждый SIFT-дескриптор в вашем изображении и решаете, к какому из 200 кластеров он принадлежит, находя центр кластера, ближайший к нему. Затем вы просто посчитаете, сколько функций в каждом кластере у вас есть. Таким образом, для любого изображения с любым количеством функций SIFT у вас есть гистограмма 200 бинов. Это ваш вектор функций, который вы даете SVM. (Обратите внимание, термин функции сильно перегружен).

Насколько я помню, было проделано много работы относительно того, как эти гистограммы должны быть нормализованы. Возможно, я ошибаюсь, но мне кажется, что я вспоминаю статью, в которой утверждалось, что вектор двоичных объектов (т. Е. 1, если присутствует хотя бы 1 свойство из этого кластера, и 0 в противном случае) работал лучше, чем гистограмма. Вы должны были бы проверить литературу для деталей, и детали важны.

Изменить: Панель инструментов системы Computer Vision для MATLAB теперь предоставляет множество функциональных возможностей .

Дима
источник
Привет Дима, спасибо за твой ответ, у меня только один вопрос, когда ты говоришь "тогда вы запускаете кластеризацию k-средних для такого количества кластеров", на чем вы работаете? ps Я почти испытываю искушение принять этот ответ за ваш комментарий о том, что функция термина сильно перегружена, я новичок в обработке изображений и не могу согласиться с этим
Jono Brogan
@JonoBrogan: Вы должны принять мой ответ, потому что он правильный. :) Я отредактировал ответ, чтобы попытаться уточнить k-средних.
Дима
Имеет ли это смысл сейчас?
Дима
Да спасибо Я принял ответ, хотя мне просто интересно, знаете ли вы, как вы решаете, сколько «визуальных слов» использовать?
Джоно Броган
3
Но самая большая проблема в том, что алгоритм Kmeans не всегда дает один и тот же результат. Это очень рандомизировано.