Beaucoup de progrès et de recherches en IA ont été faites pour aider les personnes sourdes et muettes. L'apprentissage profond et la vision par ordinateur peuvent également être utilisés pour avoir un impact sur cette cause.
Ce projet consiste à créer un modèle capable de classifier les lettres de l'alphabet de la langue des signes à partir d'une photo ou d'une vidéo. Afin d'entrainer notre modèle de classfication nous avons fabriqué un dataset de 800 images constitué de nos propres photos et d'images trouvé sur le net.
Nous commençons par vouloir construire un dataframe au format csv constitué de 3 colonnes :
- Nom de l'image
- Path de l'image
- Son label
Le notebook est disponible ici
Afin de classifier nos images par lettre de l'alphabet nous utiliserons les coordonnées relatives de la main droite (comprenant la position des doitgs). Pour ceci, nous utiliserons la librairie MediaPipe de Google.
Pour chaque image, nous complètons le dataframe précèdemment créé avec les coordonnées x, y, z des 21 points de la main.
Le notebook est disponible ici.
Afin de classifier nos images, nous utilisons un modèle RandomForestClassifier de la librairie ScikitLearn. Afin de contre-balancer le déséquilibre du nombre d'image pour chaque classe, nous utilisons la cross validation avec StratifiedKFold afin d'avoir une bonne repartition des nos classes pendant l'entrainemenet.
Les modèles de forêts d'arbres décisionnels présentent des performances très moyennes avec une précision de 58 et 36%. La méthode avec StratifiedKFold obtient un écart assez important de précision par rapport train_test_split(). Nous nous tournerons donc vers un réseau de neuronnes afin d'obtenir de meilleurs resultats.
Nous formerons notre modèle grâce à la librairie Keras. Il sera composé de 2 couches Denses
, 3 Dropout
afin d'éviter l'overfiting, et une dernière Dense
avec une activation softmax
afin d'obtenir la probabilité de chacunes des 26 classes.
Nous rajoutons également un callback Checkpoint afin de conserver le meilleurs modèle au cours de l'entrainement que présentera la plus faible perte sur les données de validations.
Nous obtenons une précision de 70,9%. Nous garderons donc ce modèle pour notre application de détection de language des signes.
Accuracy :
Loss :
Le notebook est disponible ici
Pour tester l'application de detection de language des signes : app.py