Utilizzo di RNN (LSTM) per il sistema di riconoscimento dei gesti


10

Sto cercando di costruire un sistema di riconoscimento dei gesti per classificare i gesti ASL (American Sign Language) , quindi il mio input dovrebbe essere una sequenza di fotogrammi da una telecamera o da un file video, quindi rileva la sequenza e la mappa sulla corrispondente lezione (dormire, aiutare, mangiare, correre, ecc.)

Il fatto è che ho già creato un sistema simile ma per le immagini statiche (nessun movimento incluso), è stato utile per tradurre alfabeti solo in cui costruire una CNN era un compito semplice, poiché la mano non si muoveva molto e il la struttura del set di dati era anche gestibile poiché stavo usando keras e forse volevo ancora farlo (ogni cartella conteneva un set di immagini per un segno particolare e il nome della cartella è il nome della classe di questo segno ex: A, B, C , ..)

La mia domanda qui, come posso organizzare il mio set di dati per essere in grado di inserirlo in un RNN in keras e quali determinate funzioni dovrei usare per addestrare efficacemente il mio modello e tutti i parametri necessari, alcune persone hanno suggerito di utilizzare la classe TimeDistributed ma non avere un'idea chiara su come usarlo a mio favore e prendere in considerazione la forma di input di ogni livello della rete.

anche considerando che il mio set di dati sarebbe composto da immagini, probabilmente avrò bisogno di un livello convoluzionale, come sarebbe possibile combinare il livello conv in quello LSTM (intendo in termini di codice).

Ad esempio, immagino che il mio set di dati sia qualcosa del genere

struttura del set di dati

La cartella denominata "Esegui" contiene 3 cartelle 1, 2 e 3, ciascuna cartella corrisponde al suo frame nella sequenza

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Quindi Run_1 conterrà alcune serie di immagini per il primo fotogramma, Run_2 per il secondo fotogramma e Run_3 per il terzo, l'obiettivo del mio modello è allenarsi con questa sequenza per produrre la parola Run .


Quale set di dati stai usando per l'ASL?
Sam Johnson,

Siamo spiacenti ma abbiamo registrato il nostro set di dati e non siamo riusciti a rilasciarlo pubblicamente, non era poi così tanto e non ha fornito la precisione prevista.
Anasovich,

È certamente fattibile e non sembra troppa codifica extra dall'articolo menzionato di seguito, ma non sto parlando per esperienza in quanto non è un'architettura che ho usato prima. Spero che questo articolo ti indichi nella giusta direzione: machinelearningmastery.com/cnn-long-short-term-memory-networks
Ollie Graham

Risposte:


2

Sulla base della mia comprensione, questo sembra ridursi a un problema di classificazione multi-classe (ogni serie / sequenza di gesti delle mani alla fine corrisponde a una parola / simbolo). Un'architettura RNN / LSTM / GRU è un ottimo punto di partenza, ma sarà computazionalmente costosa e piuttosto lenta da addestrare. Tuttavia, se hai assolutamente bisogno di uno o più di questi dipende dal modo in cui sono strutturati i tuoi dati e se puoi cavartela trattando le tue immagini come un set, piuttosto che una sequenza.

Ecco alcune idee potenziali:

  1. Inizia impostando un layer CNN per ogni cartella "RUN_ *", insieme a dropoute / o flatteningtra ogni layer.

  2. Inizia impostando un singolo vettore lungo che rappresenti tutti gli stadi della sequenza, quindi aggiungi un paio di strati di CNN, anche con dropoute / o flattening.

Ciò richiederà un po 'di esplorazione e messa a punto da parte tua per vedere cosa funziona meglio e dovrai scegliere con le metriche di valutazione che desideri ottimizzare (ad esempio precisione / richiamo)

Il motivo per cui sto suggerendo una CNN è perché, in alcuni casi, le CNN possono fornire prestazioni simili a un modello ricorrente, ma a una frazione del costo. Sfortunatamente, è difficile dire con poche o nessuna informazione sui tuoi dati.

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.