Построение HMM из данных

У меня проблема с Hidden Markov Models. Я пишу приложение в C# на Kinect для распознавания жестов (простые жесты, такие как свайпы, волны, круги и т. д.). Я написал систему для записи жестов, после этого я создал экстрактор признаков, который подсчитывает скорости между точками, а также подсчитывает ориентации (угол между парами точек) — я думаю, что это простой метод векторного квантования, потому что я создал кодовую книгу с кодовыми словами. 1-18. Кодовые слова — это интервалы углов через каждые 20 градусов (например, угол 12dg — это кодовое слово-1, 45dg = кодовое слово-3 и т. д.).

Теперь, я думаю, мне нужно создать HMM и использовать некоторый алгоритм Forward-Backward для обучения. Потом какой-нибудь Bayes метод классификации и закончим.

Мои вопросы:

  1. Я ошибаюсь в своих шагах?
  2. Как создать ХММ? Может ли кто-нибудь описать, как это должно выглядеть программно?
  3. Как выполнить сопоставление жестов в реальном времени для тестов?

person Nickon    schedule 08.04.2013    source источник
comment
Вместо того, чтобы ставить минус, может быть, укажите мне, где я не прав или что плохого в моем посте?   -  person Nickon    schedule 09.04.2013


Ответы (1)


Отказ от ответственности: я являюсь автором некоторых руководств/программ, которые я собираюсь перечислить.

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

  2. Возможно, вы можете следовать этому руководству по HMM в С#. Это было написано мной, и в нем есть несколько примеров того, как выполнять распознавание жестов. Однако руководство создает HMM с непрерывной плотностью, а не дискретные HMM. Ваше векторное квантование делает ваши функции дискретными, поэтому я думаю, вас больше заинтересует использование HMM с дискретной плотностью. Единственные изменения, которые вам нужно сделать, чтобы заставить его работать с дискретными моделями, — это удалить общие аргументы при создании/обучении модели.

  3. Чтобы выполнять живые жесты, вы можете либо использовать какой-то определенный маркер, чтобы обозначить начало и окончание жеста, либо вы можете использовать метод, аналогичный пороговым моделям Ли и Кима. Фреймворк, описанный в вышеупомянутом руководстве, поддерживает их.

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

person Cesar    schedule 09.04.2013