J'essaie de construire un système de reconnaissance des gestes pour classer les gestes ASL (American Sign Language) , donc mon entrée est censée être une séquence d'images provenant d'une caméra ou d'un fichier vidéo, puis elle détecte la séquence et la mappe à sa correspondance cours (dormir, aider, manger, courir, etc.)
Le problème est que j'ai déjà construit un système similaire mais pour les images statiques (aucun mouvement inclus), il était utile pour traduire des alphabets uniquement dans lesquels la construction d'un CNN était une tâche simple, car la main ne bouge pas tellement et la la structure de l'ensemble de données était également gérable car j'utilisais des keras et je prévoyais peut-être toujours de le faire (chaque dossier contenait un ensemble d'images pour un signe particulier et le nom du dossier est le nom de classe de ce signe ex: A, B, C , ..)
Ma question ici, comment puis-je organiser mon ensemble de données pour pouvoir le saisir dans un RNN en keras et quelles fonctions dois-je utiliser pour entraîner efficacement mon modèle et tous les paramètres nécessaires, certaines personnes ont suggéré d'utiliser la classe TimeDistributed mais je ne le fais pas avoir une idée claire sur la façon de l'utiliser en ma faveur et prendre en compte la forme d'entrée de chaque couche du réseau.
considérant également que mon ensemble de données serait composé d'images, j'aurai probablement besoin d'une couche convolutionnelle, comment serait-il possible de combiner la couche conv dans la couche LSTM (je veux dire en termes de code).
Par exemple, j'imagine que mon ensemble de données ressemble à ceci
Le dossier nommé 'Run' contient 3 dossiers 1, 2 et 3, chaque dossier correspond à son cadre dans la séquence
Donc Run_1 contiendra un ensemble d'images pour la première image, Run_2 pour la deuxième image et Run_3 pour la troisième, l'objectif de mon modèle est d'être formé avec cette séquence pour sortir le mot Run .
la source
Réponses:
D'après ma compréhension, cela semble se résumer à un problème de classification multi-classes (chaque ensemble / séquence de gestes de la main correspondant finalement à un mot / symbole). Une architecture RNN / LSTM / GRU est un excellent point de départ, mais sera coûteux en calcul et plutôt lent à former. Cependant, si vous en avez absolument besoin, cela dépend de la structure de vos données et de la possibilité de traiter vos images comme un ensemble plutôt que comme une séquence.
Voici quelques idées potentielles:
Commencez par configurer une couche CNN pour chaque dossier "RUN_ *", avec
dropout
et / ouflattening
entre chaque couche.Commencez par configurer un seul vecteur long représentant toutes les étapes de la séquence, puis ajoutez quelques couches de CNN, également avec
dropout
et / ouflattening
.Cela prendra un peu d'exploration et de réglage de votre côté pour voir ce qui fonctionne le mieux, et vous devrez choisir avec les mesures d'évaluation que vous souhaitez optimiser (par exemple, précision / rappel)
La raison pour laquelle je suggère un CNN est que, dans certains cas, les CNN peuvent fournir des performances similaires à un modèle récurrent, mais à une fraction du coût. Malheureusement, il est difficile de dire avec peu ou pas d'informations sur vos données.
la source