Dense SIFT лучше для Bag-Of-Words, чем SIFT?

Я реализую классификатор изображений Bag-of-Words с помощью OpenCV. Сначала я тестировал дескрипторы SURF, извлеченные в ключевых точках SURF. Я слышал, что дескрипторы Dense SIFT (или PHOW) лучше подходят для моих целей, поэтому я тоже попробовал их.

К моему удивлению, они выступили значительно хуже, фактически почти в 10 раз хуже. Что я делаю не так? Я использую DenseFeatureDetector из OpenCV для получения ключевых точек. Я извлекаю около 5000 дескрипторов на изображение из 9 слоев и группирую их в 500 кластеров.

Стоит ли мне попробовать дескрипторы PHOW из библиотеки VLFeat? Также я не могу использовать ядро ​​хи-квадрат в реализации SVM OpenCV, что рекомендуется во многих документах. Это важно для качества классификатора, стоит ли попробовать другую библиотеку?

Другой вопрос - масштабная инвариантность, подозреваю, что на нее может повлиять плотное извлечение признаков. Я прав?


person lizarisk    schedule 05.02.2013    source источник


Ответы (1)


Это зависит от проблемы. Вам следует попробовать разные техники, чтобы понять, какой из них лучше всего использовать для решения вашей проблемы. Обычно использование PHOW очень полезно, когда вам нужно классифицировать любой вид сцены. Вы должны знать, что PHOW немного отличается от Dense SIFT. Несколько лет назад я использовал vlfeat PHOW, и, увидев код, он просто вызывает плотное просеивание с разными размерами и некоторое сглаживание. Это может быть ключом к тому, чтобы быть инвариантным к масштабированию. Также в своих экспериментах я использовал libsvm, и в результате пересечение гистограмм было для меня лучшим вариантом. По умолчанию ядра пересечения хи-квадрата и гистограммы не включены ни в libsvm, ни в OpenCV SVM (на основе libsvm). Вы сами решаете, стоит ли вам их попробовать. Я могу сказать вам, что ядро ​​RBF достигло точности около 90%, при пересечении гистограммы 93% и хи-квадрат 91%. Но эти результаты были в моих конкретных экспериментах. Вам следует начать с RBF с автоматически настроенными параметрами и посмотреть, достаточно ли этого.

Подводя итоги, все зависит от ваших конкретных экспериментов. Но если вы используете Dense SIFT, возможно, вы могли бы попробовать увеличить количество кластеров и вызвать Dense SIFT с разными масштабами (я рекомендую вам способ PHOW).

РЕДАКТИРОВАТЬ: Я смотрел OpenCV DenseSift, и, возможно, вы могли бы начать с

m_detector=new DenseFeatureDetector(4, 4, 1.5);

Зная, что vlfeat PHOW использует [4 6 8 10] в качестве размеров бункера.

person min.yong.yoon    schedule 05.02.2013