2

私はPythonでジェスチャー認識を行っていますが、隠れマルコフモデルを管理できることがわかったより完全なライブラリの1つはnltkです。しかし、私には理解できないことがあります。

まずはデータです。ジェスチャの座標があり、それらを 8 つのクラスター (k-means を使用) にクラスター化しました。これは私のジェスチャー構造です:

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 と私の . したがって、HiddenMarkovModelTrainer は私のクラスです。

私はインターネットで baum welch のいくつかの実装を見つけましたが、Matlab でのみです。このアルゴリズムの実装には、通常、次の入力が必要です。

baum-welch(X, alphabet, H)

どこで - X は列車のデータ (私の場合はラベル) - アルファベットはデータの可能な値 (私の場合は - 0,1,2,3,4,5,6,7) - H 非表示の数状態

XをトレーニングするデータがHiddenMarkovModelTrainer.train_unsupervised()メソッドの入力であることを考えると、ntlk.HiddenMarkovModelTrainerコンストラクターで状態シンボルを指定する必要があり、それらがどうあるべきかわからないため、混乱していますはシンボルです..状態に何を入れればよいかわかりません。

私の英語が下手でも、私の説明が明確であることを願っています。

4

1 に答える 1

4

隠れマルコフ モデルは、その実際の状態が観測できないため、そのように呼ばれます。代わりに、状態は特定の確率で観測を生成します。NLTK での HMM の古典的な使用法は POS タグ付けです。この場合、観測は単語であり、隠された内部状態は POS タグです。この例を見て、この場合の パラメータstatessymbolsパラメータの意味を理解してください。

HMM を使用したジェスチャ認識の場合、観測は幾何学的入力データのある種の特徴モデリング ( symbols) の時間シーケンスです。この場合、クラスタリング (「ゾーニング」とも呼ばれます。ジェスチャ認識の隠れマルコフ モデル")、他の可能なモデル)。私の理解では、一連の内部状態には意味のある解釈がありません。各ジェスチャの HMM のトレーニングで使用される内部状態の数は、実験する必要がある単なるパラメーターです。例については、この論文 (「Yamato, Ohya, Ishii. Recognizing Human Action in Time-Sequential Images using HMM」) を参照してください。状態数は 36 に設定されています。、これが変更可能なパラメーターである例を挙げます。

だから私はこのコードでそれを試してみます:

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])
于 2012-01-21T11:04:28.023 に答える