2012-01-20 3 views
2

저는 제스처 인식을 파이썬으로하고 있으며, 숨겨진 마르코프 모델을 관리 할 수있는보다 완벽한 라이브러리는 nltk입니다. 그러나 내가 이해할 수없는 것이 있습니다.HiddenMarkovModelTrainer 객체를 초기화하십시오.

우선 데이터입니다. 나는 제스처의 좌표를 가지고 있고 그것들을 8 클러스터로 (k- 수단으로) 클러스터 화했다. 그래서 이것은 제 제스처 구조입니다 :

raw coordinates x,y: [[123,16], [120,16], [115,16], [111,16], [107,16], [103,17], ...] 

centroids x,y : [[ 132.375  56.625  ] 
       [ 122.45454545 30.09090909] 
       [ 70.5   27.33333333] 
       ...] 

labels: [5 6 6 6 6 6 6 2 2 2 2 2 2 4 4 4 ...] 

이제 저는 Baum-Welch와 HMM을 훈련시키고 싶습니다. 그래서 HiddenMarkovModelTrainer가 제 수업입니다.

저는 인터넷에서 baum welch의 몇 가지 구현을 찾았지만 Matlab에서만 발견되었습니다. 이것의 구현은 tipically이 입력이 필요 알고리즘 : 내 경우 (데이터의 가능한 값을 알파벳 - - - - X (라벨 내 경우) 기차에 대한 데이터입니다 이

baum-welch(X, alphabet, H) 

를 0,1 , 2,3,4,5,6,7) - H ntlk.HiddenMarkovModelTrainer 생성자에서 내가 상태를상징을 제공해야하고 내가 돈 때문에

이 지금은 혼란 스러워요 숨겨진 상태의 수 ' X를 훈련 할 데이터가 HiddenMarkovModelTrainer.t의 입력 값이라는 점을 감안할 때, 그들이 무엇인지 알아야합니다. rain_unsupervised() method 나는 내 알파벳이 상징이라고 생각한다. 나는 무엇을 주에 넣어야할지 모른다.

영어가 부족하더라도 내 설명이 분명하기를 바랍니다.

답변

4

숨겨진 마르코프 모델은 실제 상태를 관찰 할 수 없기 때문에 호출됩니다. 대신에, 주정부는 특정 확률로 관측치를 산출합니다. NLTK에서 HMM의 고전적 사용은 관측치가 단어이고 숨겨진 내부 상태가 POS 태그 인 POS 태깅입니다. 이 경우 statessymbols 매개 변수의 의미를 이해하려면 this example을 확인하십시오. HMM과 제스처 인식에 대한

, 관찰은 기하학적 입력 데이터의 기능 모델링 (symbols) 어떤 종류의 시간적 순서는 - 귀하의 경우, 당신은 클러스터링 (또한 "구역"을 사용 - 다른 수에 대한 section 3.2 of this paper ("Yang, Xu. Hidden Markov Model for Gesture Recognition") 참조 모델). 내 이해를 위해 내부 상태 집합에는 의미있는 해석이 없습니다. 각 제스처에 대한 HMM 교육에 사용되는 내부 상태의 수는 단순히 실험해야하는 매개 변수입니다. 예를 들어, this paper ("Yamato, Ohya, Ishii. Recognizing Human Action in Time-Sequential Images using HMM")을 참조하십시오. 상태 수는 36으로 설정되어 있으며 이는 수정 가능한 매개 변수의 예를 인용하기 위해 this master thesis에서 너무 높다고 비난됩니다. 대답 링크, 매우 clear.sorry에 대한

observed_sequence = [5, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 4, 4, 4] 
states = range(20) # experiment with this number 
symbols = set(observed_clusters) 
trainer = HiddenMarkovModelTrainer(states, symbols) 
model = trainer.train_unsupervised([observed_sequence]) 
+0

감사하지만 예에서 나는 몇 가지 오류가 있습니다

그래서 나는이 코드를 시도 할 것입니다. 첫째, * 'set'객체는 색인 생성 *을 지원하지 않습니다. 만약 내가 목록 대신 집합을 사용하면 : * ''int '객체는 unsubscriptable입니다. * – nkint

+0

그리고'a ','b ','c '등과 같은 기호를 관찰 된 시퀀스 및 기호로 사용하면 .. 호출 할 때 model.probability ([ 'a', 'b']) 또는 model.probability ('ab') * 'IndexError : 문자열 인덱스가 범위를 벗어났습니다.'* – nkint

+0

코드의 오류로 불편을 끼쳐 드려 죄송합니다. HMM 트레이너의 버그 (http://code.google.com/p/nltk/issues/detail?id=681#c0) ... '모델 사용 정보.확률':이 메소드는 태그가 붙은 토큰의 순서를 기대하는데, 그 주된 목적은 POS 태깅이기 때문에 다음과 같이 입력을 시도하십시오 :'[('a', None), ('b', None)]' – wutz

관련 문제