Cómo utilizar el algoritmo Hidden Markov Model Viterbi para el etiquetado de secuencias

* A2A *

Ok, ahora que la descripción está actualizada, creo que entiendo mejor tu problema.

Sus datos de entrenamiento (tamaño N) son el conjunto [matemáticas] \ {(S_i, y_i) \} _ {i = 1} ^ N [/ matemáticas] donde [matemáticas] S_i = \ {F_ {i, 1}, F_ {i, 2}, \ ldots, F_ {i, m_i} \} [/ math] es una secuencia de fotogramas asociados con un solo gesto [math] y_i [/ ​​math] (o más bien en realidad tienes muchas secuencias de fotogramas asociado con un solo gesto, para que pueda entrenar un modelo por gesto). Sin embargo, sus datos de destino son una secuencia ilimitada de cuadros [matemática] F_1, F_2, F_3, \ ldots [/ matemática] y su objetivo es identificar todos los gestos que se realizan en esta secuencia, pero no sabe dónde está un gesto comienza / termina en esta secuencia.

Enfoque 1
El enfoque habitual para tal problema es dividirlo en dos pasos:
1] Segmentación
2] Etiquetado

La segmentación es esencialmente identificar el límite en la secuencia que completa una secuencia dada de gestos. Hay varias formas de hacer esto, una forma simple sería:
Cree un clasificador que pueda identificar un cuadro como un cuadro inicial o final o ninguno, donde un cuadro inicial significa un cuadro donde comienza un gesto y un cuadro final significa un cuadro donde termina el gesto y ninguno significa que el cuadro muestra algún gesto a mitad de camino .

Una vez que haya identificado los límites, ahora tendrá secuencias segmentadas [matemáticas] [F_1, F_2, F_3], [F_4, F_5, F_6, F_7, F_8], \ ldots [/ math], donde los corchetes indican los segmentos . Una vez que tenga estos segmentos, puede continuar con el paso 2 que es el etiquetado y parece que ya está familiarizado sobre cómo etiquetarlos.

Enfoque 2
Otro enfoque es el siguiente:
A medida que reciba un nuevo marco [matemático] F_1, \ ldots, F_i [/ ​​matemático] como una secuencia completa y use su modelo y encuentre las probabilidades de todas las clases. Ahora, deberías poder calcular la entropía de la distribución de la clase, llámala [math] E_i [/ ​​math] **. Ahora, puede imaginar que la entropía de la distribución de clases al principio será alta y luego seguirá reduciéndose y esto idealmente debería continuar hasta que termine un gesto y cuando comience un nuevo gesto, la entropía idealmente debería aumentar nuevamente. Digamos que la entropía disminuye hasta [matemática] F_k [/ matemática] y aumenta en [matemática] F_ {k + 1} [/ matemática], entonces puede tratar [matemática] F_1, F_2, \ ldots, F_k [ / math] como un segmento, y desde [math] F_ {k + 1} [/ math] comienza un nuevo segmento.

Lo anterior son algunas ideas realmente simples. Hay varias formas de mejorarlas, pero por ahora, las ideas anteriores probablemente deberían establecer una línea de base razonable para usted.

** Según su descripción, parece que está utilizando modelos independientes para diferentes gestos. Si es así, entonces sus probabilidades no serán comparables, pero su descripción parece sugerir que de alguna manera funciona para usted. Si funciona para usted, entonces probablemente tendrá que normalizar las probabilidades de su clase, de modo que sumen 1, antes de calcular la entropía.

More Interesting

¿Puedes ser bueno en la programación pero malo en los algoritmos?

Cómo resolver un problema de coincidencia de patrones de cadena sin usar funciones de expresión regular incorporadas

¿Podemos crear una matriz sin especificar un tamaño?

¿Por qué puede verse la secuencia de Fibonacci como un algoritmo dinámico y por qué tiene un mal tiempo de ejecución?

Dado que solo quedan 2 meses para las regiones regionales de ACM ICPC, ¿cuántos problemas podría resolver allí si comenzara a practicar ahora, teniendo solo la idea más básica sobre algoritmos?

¿Cuándo es bueno representar un árbol binario como una matriz?

¿Debo comenzar a aprender algoritmos y estructura de datos si solo tengo algunos conocimientos básicos de programación Java?

Imprimí un libro electrónico con 600 páginas. El montón se cayó y ahora tengo que organizarlas en el orden de los números de página. ¿Cuál es la mejor manera de hacerlo?

¿Necesitamos un algoritmo 10 veces más rápido o una máquina 10 veces más rápida? Da una razón para justificar tu respuesta.

¿Qué es la representación de colas usando array?

¿Por qué conocer estructuras de datos y algoritmos básicos no es suficiente para descifrar la mayoría de las entrevistas técnicas?

¿Por qué las personas usan mid = low + (high-low) / 2 en lugar de (low + high) / 2?

¿Qué bibliotecas o marcos de Python, C son buenos para las pruebas de diagnóstico en estadísticas?

¿Cuáles son algunas aplicaciones prácticas de la teoría de la complejidad y la teoría del caos?

¿Bajo qué escenarios son apropiados los siguientes algoritmos de ruta más corta?