Verwenden von RNN (LSTM) für das Gestenerkennungssystem


10

Ich versuche, ein Gestenerkennungssystem zum Klassifizieren von ASL- Gesten (American Sign Language) zu erstellen. Daher soll meine Eingabe eine Folge von Bildern entweder von einer Kamera oder einer Videodatei sein, dann erkennt es die Folge und ordnet sie der entsprechenden zu Klasse (schlafen, helfen, essen, rennen usw.)

Die Sache ist, dass ich bereits ein ähnliches System gebaut habe, aber für statische Bilder (keine Bewegung eingeschlossen) war es nützlich, um Alphabete nur zu übersetzen, bei denen das Erstellen eines CNN eine einfache Aufgabe war, da sich die Hand nicht so viel bewegt und die Die Datensatzstruktur war auch überschaubar, da ich Keras verwendete und dies möglicherweise noch vorhatte (jeder Ordner enthielt eine Reihe von Bildern für ein bestimmtes Zeichen, und der Name des Ordners ist der Klassenname dieses Zeichens, z. B.: A, B, C. , ..)

Meine Frage hier, wie ich meinen Datensatz organisieren kann, um ihn in Keras in eine RNN eingeben zu können, und welche bestimmten Funktionen ich verwenden sollte, um mein Modell und alle erforderlichen Parameter effektiv zu trainieren. Einige Leute schlugen vor, die TimeDistributed- Klasse zu verwenden, aber ich nicht Haben Sie eine klare Vorstellung davon, wie Sie es zu meinen Gunsten verwenden können, und berücksichtigen Sie die Eingabeform jeder Schicht im Netzwerk.

auch bedenken , dass meine Daten Satz von Bildern bestehen würde, werde ich wahrscheinlich eine Faltungsschicht benötigen, wie wäre es möglich, das kombinieren konv Schicht in die LSTM ein (ich meine in Form von Code).

Zum Beispiel stelle ich mir meinen Datensatz so vor

Datensatzstruktur

Der Ordner 'Run' enthält 3 Ordner 1, 2 und 3, wobei jeder Ordner seinem Frame in der Sequenz entspricht

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

So RUN_1 einige Reihe von Bildern für den ersten Frame enthält, RUN_2 für den zweiten Rahmen und Run_3 ist für die dritten, Ziel meines Modells mit dieser Sequenz zur Ausgabe des Wort trainiert wird Run .


Welchen Datensatz verwenden Sie für die ASL?
Sam Johnson

Entschuldigung, aber wir haben unseren eigenen Datensatz aufgezeichnet und es nicht geschafft, ihn öffentlich zu veröffentlichen. Es war nicht so viel und wir haben nicht die erwartete Genauigkeit angegeben.
Anasovich

Es ist sicherlich machbar und sieht nicht nach zu viel zusätzlicher Codierung aus dem unten erwähnten Artikel aus, aber ich spreche nicht aus Erfahrung, da es keine Architektur ist, die ich zuvor verwendet habe. Hoffentlich weist dieser Artikel Sie in die richtige Richtung: machinelearningmastery.com/cnn-long-short-term-memory-networks
Ollie Graham

Antworten:


2

Nach meinem Verständnis scheint sich dies auf ein Klassifizierungsproblem mit mehreren Klassen zu beschränken (jeder Satz / jede Folge von Handgesten entspricht schließlich einem Wort / Symbol). Eine RNN / LSTM / GRU-Architektur ist ein guter Ausgangspunkt, ist jedoch rechenintensiv und nur langsam zu trainieren. Ob Sie eines oder mehrere davon unbedingt benötigen, hängt jedoch davon ab, wie Ihre Daten strukturiert sind und ob Sie Ihre Bilder nicht als Sequenz, sondern als Satz behandeln können.

Hier sind einige mögliche Ideen:

  1. Richten Sie zunächst eine CNN-Ebene für jeden Ordner "RUN_ *" zusammen mit dropoutund / oder flatteningzwischen den einzelnen Ebenen ein .

  2. Beginnen Sie mit dem Einrichten eines einzelnen langen Vektors, der alle Stufen der Sequenz darstellt, und fügen Sie dann einige Schichten von CNNs hinzu, auch mit dropoutund / oder flattening.

Dies erfordert einige Erkundungen und Optimierungen, um herauszufinden, was am besten funktioniert, und Sie müssen mit Bewertungsmetriken auswählen, für die Sie optimieren möchten (z. B. Präzision / Rückruf).

Der Grund, warum ich ein CNN vorschlage, ist, dass CNNs in bestimmten Fällen eine ähnliche Leistung wie ein wiederkehrendes Modell bieten können, jedoch zu einem Bruchteil der Kosten. Leider ist es schwierig, mit wenig bis gar keinen Informationen über Ihre Daten zu sagen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.