Я хочу сделать распознавание жестов в python с помощью kinect.
После прочтения некоторой теории, я думаю, что один из лучших методов - это обучение без учителя с использованием скрытой модели Маркова (HMM) (baum welch или некоторый EMметод) с некоторыми известными данными жестов, чтобы получить набор обученных HMM (по одному для каждого жеста, который я хочу распознать).
Затем я бы выполнил распознавание, соответствующее максимальной логарифмической вероятности (с Витерби?)данные наблюдений с помощью НММ в обученном наборе.
Например, у меня есть данные (координаты x, y, z правой руки), записанные с помощью устройства kinect некоторых жестов (говоря «привет», пнуть удар,сделайте круг рукой), и я проведу некоторое обучение:
# training
known_datas = [
tuple( load_data('punch.mat'), 'PUNCH' ),
tuple( load_data('say_hello.mat'), 'HELLO' ),
tuple( load_data('do_circle_with_hands.mat'), 'CIRCLE' )
]
gestures = set()
for x, name in known_datas:
m = HMM()
m.baumWelch(x)
gestures.add(m)
затем я выполняю распознавание наблюдаемых новых данных, выполняя max loglik, и выбираю сохраненный жест, который имеет максимальный loglik для каждого обученного HMM:
# recognition
observed = load_data('new_data.mat')
logliks = [m.viterbi(observed) for m in gestures]
print 'observed data is ', gestures[logliks.index(max(logliks))]
Мои вопросы:
- Это что-то совершенно глупое?
- Сколько тренировочных комплектов для реального случая?
- Сколько состояний для каждого HMM?
- Можно ли сделать это в реальном времени?