Pregunta

Tengo una aplicación que decide si un humano está a mano, corriendo o caminando. La idea es que he segmentado una acción, digamos a Handwave, a sus poses. Digamos

Ejemplo;

for human1:pose7-pose3-pose7-..... represents handwave
for human3:pose1-pose7-pose1-..... represents handwave
for human7:pose1-pose1-pose7-..... represents handwave
for human20:pose3-pose7-pose7-..... represents handwave

for human1 pose11-pose33-pose77-..... represents walking
for human2 pose31-pose33-pose77-..... represents walking
for human3 pose11-pose77-pose77-..... represents walking
for human20 pose11-pose33-pose11-..... represents walking

y utilicé vectores anteriores para capacitar SVM y red neuronal en Matlab.

Ahora pruebo con las imágenes de pruebas. Nuevamente tengo poses segmentadas para imágenes de prueba.

Para los tamaños vectoriales de los conjuntos de pruebas y trenes en MATLAB; SVM y la red neuronal requieren los mismos tamaños de vectores. Para que funcione;
Si lo agrego 0 (supongo como pose0-¿Qué es una pose inválida), para hacer que los tamaños sean iguales, tengo un rendimiento realmente bueno.
Si copio las poses iniciales al principio y las agrego hasta el final hasta que los tamaños sean de igual rendimiento disminuyen.

Por ejemplo;

train set: pose1-pose2-pose4-pose7-pose2-pose4-pose7
(1st method)test set: pose3-pose1-pose4-0-0-0-0 or
(2nd method)test set: pose3-pose1-pose4-pose3-pose1-pose4-pose3

Esperaría tener una mejor clasificación con el segundo método ya que los valores agregados son valores reales para las poses. Pero pose0 no es una pose real.

Tienes alguna idea ? Saludos

¿Fue útil?

Solución

En su caso, sus datos consisten en una colección de instancias cada una con una serie de características (plantea la ranura, como en PosesLot1, PosesLot2, ..., PosesLotn) y el valor de la clase (onda a mano, correr o caminar).

Su problema es que el número de características no es el mismo para todas las clases, IE Running tiene 7 poses, mientras que caminar tiene 3 poses, por ejemplo.

La forma estándar de lidiar con este tipo de problema es marcar estas ranuras vacías por un valor que falta, suponiendo que su algoritmo de aprendizaje automático pueda manejar los valores faltantes.

f1     f2    f3    f4    f5    f6    f7    class
-------------------------------------------------
pose1,pose2,pose4,pose7,pose2,pose4,pose7,running
pose3,pose1,pose4,    ?,    ?,    ?,    ?,walking

Ahora, el primer método que utilizó para agregar pose0 es una simplificación para usar ? para un valor faltante (similar a agregar una nueva pose para denotar un valor faltante, en lugar de un explícito ? valor)

La otra forma de repetir valores en realidad crea un problema en lugar de resolver uno si lo piensa ... está en efecto creando características correlacionadas y, como saben, la mayoría de los algoritmos de aprendizaje automático funciona mejor en un conjunto independiente de características (generalmente resueltas por Realizar una selección de características como paso de preprocesamiento)

Otros consejos

No creo que no sea razonable obtener un mejor rendimiento de su primer método. Supongo que te refieres a un mejor rendimiento como en una mejor clasificación. Supongo que la razón de esto sería que las secuencias de mano son normalmente más cortas. Por lo tanto, cuando se llena con poses "inválidas", hace que sea mucho más fácil distinguir las diferentes acciones mediante si incluyen poses inválidas que las poses reales que incluyen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top