Strategie di riconoscimento dei gesti


12

Lavorando con il Wii trovo spesso necessario riconoscere i gesti semplici, finora sono stato in grado di osservare principalmente la grandezza dell'accelerazione per riconoscere i gesti richiesti nei nostri documenti di progettazione del gioco, ma mi piacerebbe creare un sistema più robusto che consente la "registrazione" di gesti di esempio e il riconoscimento di gesti complessi.

Quali strategie hai usato in passato? Perché hanno funzionato? Perché non hanno funzionato? Cosa faresti diversamente?

Risposte:


5

Modifica L'invarianza affine richiede apparentemente questa versione di curvatura.
http://it.wikipedia.org/wiki/Affine_curvature#Affine_curvature
Supponiamo che sia ciò a cui mi riferisco. (Sebbene la curvatura normale penso che sia invariante alle rotazioni che potrebbero essere abbastanza buone).
Modifica per una versione invariante su scala della curvatura guarda qui
/math/1329/what-is-the-form-of-curvature-that-is-invariant-under-rotations-and-uniform- Scali

I problemi di riconoscimento dei gesti sono una sottoclasse di problemi di riconoscimento e i problemi di riconoscimento sono fondamentalmente problemi di confronto tra modelli.

Stai cercando di adattare il tuo gesto a qualche raccolta di gesti, vince il gesto migliore.

Vorrei registrare il tuo gesto più volte e cercare di adattare i tuoi dati di allenamento a qualcosa come una b-spline (una curva). Probabilmente vuoi che i tuoi gesti siano invarianti rispetto alle trasformazioni affini (rotazioni, ridimensionamento, traduzione), quindi archivia la curva come una tabella di valori di curvatura (è improbabile che abbia una bella forma chiusa), al contrario delle coordinate cartesiane del controllo punti.

Questo è un modello di un gesto. Diciamo che ne hai diversi.

Per confrontarli, inizia inserendo i dati di input e quindi valuta la curvatura x il numero di volte, dove x fornisce un buon compromesso tra precisione e prestazioni.

Ora scorrere i modelli e sottrarre i valori di curvatura (valutati nello stesso punto lungo le rispettive curve in termini di lunghezza dell'arco) e quadrare la differenza. Il valore che ne risulta è chiamato residuo. Riassumi tutti i residui. Il modello con i residui più piccoli è la soluzione migliore ed è il tuo gesto più probabile.

Confronta la mia risposta con @ Olie's. Sono sostanzialmente gli stessi, anche se stiamo scegliendo modelli diversi per il gesto (costruire un tavolo della curvatura firmata e registrare il cambiamento nell'angolo della tangente sono quasi gli stessi, suppongo che i dati siano generati da un liscio curva con rumore), la differenza principale è che @Olie sta includendo la velocità.

La scelta dei parametri da includere nel modello dipende dalla situazione e dai requisiti di prestazione. Tenere presente che l'aggiunta di parametri al modello aumenta la dimensione.


4

In termini molto ampi, probabilmente si desidera definire un gesto come una direzione, seguito da un ritardo [possibilmente molto breve], seguito da un'altra direzione (e dagli angoli relativi tra le direzioni, ecc.) Fino alla fine.

Ad esempio, fare una "t" con la bacchetta (e non dimenticare che alcune persone sono mancini, quindi le tue definizioni non dovrebbero dipendere dalla mano!) È uno swoosh verticale, un breve ritardo, un'inversione che si curva, un breve ritardo, un'inversione diretto orizzontale, brusco [vicino] stop.

Mentre leggi il gesto, vuoi vedere quanto il modello letto si avvicina alla descrizione del modello.

In termini generali, è possibile innanzitutto eliminare il dizionario delle definizioni eliminando evidenti errori di corrispondenza (quelli che non iniziano nemmeno correttamente o che sono troppo lunghi o troppo corti di gran lunga), quindi "segnare" il gesto rispetto alle definizioni rimanenti. Segna il gesto valutando ciascuna porzione in base alla corrispondenza con la definizione (0-100%) e RMS-ing (prendi gli errori, quadrali, sommali, quindi prendi la radice quadrata di quella somma).

L'uso di RMS accentua le grandi differenze (risultando in un punteggio più basso), mentre tende a sorvolare piccole differenze (risultando in una corrispondenza migliore).

C'è un sacco di materiale su questa roba: il riconoscimento dei gesti di Google. Non preoccuparti se è per uno stilo o altra cosa non Wii, i principi si adattano bene.


0

L'ho fatto solo con il mouse, ma la mia soluzione ha funzionato davvero bene. Ho creato unire il motivo a punti di punti per rappresentare il gesto: questa è la forma da disegnare. Quindi ho memorizzato il percorso del cursore mentre si muoveva. Successivamente ho ridimensionato questo percorso del mouse in modo che abbia la stessa larghezza e altezza del modello target. Ogni aggiornamento ho ripetuto ciclicamente tutti i punti del mio percorso del cursore assicurandomi che fossero ciascuno entro una certa distanza dal nodo del percorso di un gesto, osservando ogni punto del percorso del gesto in ordine.


0

Mi è stato insegnato AI gioco da uno dei principali sviluppatori di AiLive (è in alcuni dei video), e la risposta breve è che provare a fare questi riconoscimenti gestuali è troppo doloroso per passare la vita. Suggerirei di seguire il percorso del middleware e di ottenere la suite LiveMove di AiLive.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.