Скрытые марковские модели с С++

В последнее время я изучал реализации скрытых марковских моделей на С++. Мне было интересно, могу ли я использовать любую из существующих библиотек HMM, написанных на С++, чтобы использовать с распознаванием действий (с OpenCV)?

Я свяжусь с AVOID "изобретать колесо"!

Можно ли использовать Torch3Vision, хотя (похоже) он был разработан для работа для распознавания речи?

Моя идея состоит в том, что, если мы сможем преобразовать векторы признаков в символы/наблюдения (с использованием векторного квантования - кластеризации Kmeans), мы можем использовать эти символы для декодирование, вывод, изучение параметров (алгоритм Баума-Уэлша). Таким образом, это будет работать с Torch3Vision в OpenCV.

Любая помощь по этому поводу будет действительно оценена.

Ответы

Ответ 1

Вы можете взглянуть на http://www.ece.ucsb.edu/Faculty/Rabiner/ece259/Reprints/tutorial%20on%20hmm%20and%20applications.pdf для теории, лежащей в основе HMM. Это не сложно реализовать сами алгоритмы.

Для версии на основе C вы можете взглянуть на мою реализацию, http://code.google.com/p/accelges/, которую я сделал для Google Проект Summer of Code.

Ответ 2

Существует также эта реализация, которую я написал несколько дней назад. Это класс для дискретного HMM с использованием OpenCV. Вы можете посмотреть здесь:

https://sourceforge.net/projects/cvhmm/

После квантования ваших функций вы можете преобразовать каждый вектор функции в одну метку и использовать последовательность меток для обучения дискретному HMM.