Sign-Language-Translator
This project is aimed at developing a Neural Network using LSTM and Dense layers to translate any sign language into text. It provides a user-friendly way for individuals to train their own Neural Network model and enables real-time predictions as well as grammar correction of predicted sentences.
Key Features:
- User-friendly data collection process for creating custom sign language datasets.
- Training of a Neural Network model using LSTM and Dense layers.
- Real-time predictions of hand gestures based on hand landmarks.
- Integration of language_tool_python library to perform grammar correction.
- Incorporation of MediaPipe Holistic pipeline for accurate hand tracking.
Description
This project provides an opportunity for people to train their own Neural Network by recording their own dataset of hand gestures in an intuitive and simple manner.
The whole project can be split into three main parts:
- Data collection.
- Model training.
- Real time predictions.
Data Collection
In order for a user to collect data and create their own dataset, the data_collection.py is used. The script is organized in a way that it would be easy to configure your own preferences and options, such as the signs the user would like to add to their dataset, the number of sequences for each sign, the number of frames for each sequence, and the path where the user would like to store the dataset. Once these parameters were set and the script is running, the user can start recording the data. It is recommended that the user records a substantial number of sequences changing the position of their hands. This way the user can ensure data diversity which helps to obtain a generalized model.
MediaPipe Holistic pipeline was used to record the data from the user's hands. Using MediaPipe Holistic instead of MediaPipe Hands opens doors to future extensions and possibilities of this script. The pipeline processes each frame sent through it and results in the pose, face, left hand, and right hand components neatly stored in a variable. Each of the components can be represented by landmarks (these components' coordinates). In this case, only the hands' components' landmarks are being extracted resulting in overall 126 data entries (21 landmarks per hand with , , coordinates per landmark).