Recognize American Sign Language (ASL) using Machine Learning.
Currently, the following algorithms are supported:
The training images were retrieved from a video, filmed at 640x480
resolution using a smartphone camera.
Setup:
- Install
Python3
(last tested on Python3.7). - Install pipenv.
- In the project root directory, execute
pipenv sync
.
Usage:
You can directly start classifying new images using the pre-trained models (the .pkl
files in data/generated/output/<model_name>/
) trained using the above dataset:
python predict_from_file.py <model-name>
Note that the pre-generated model files do not contain the file for knn
due to its large size.
If you want to use knn
, then download it separately from here and place it in data/generated/output/knn/
.
The models available by default are svm
and logistic
.
The above workflow can be executed using run_quick.sh
.
However, if you wish to use your own dataset, do the following steps:
- Put all the training and testing images in a directory and update their paths in the config file
code/common/config.py
.
(Or skip to use the default paths which should also work).
Optionally, you can generate the images in real-time from webcam -python capture_from_camera.py
. - Generate image-vs-label mappings for all the training images -
python generate_images_labels.py train
. - Apply the image-transformation algorithms to the training images -
python transform_images.py
. - Train the model -
python train_model.py <model-name>
. Model names can besvm
/knn
/logistic
. - Generate image-vs-label mapping for all the test images -
python generate_images_labels.py test
. - Test the model -
python predict_from_file.py <model-name>
.
Optionally, you can test the model on a live video stream from a webcam -python predict_from_camera.py
.
(If recording, then make sure to have the same background and hand alignment as in the training images.)
All the python commands above have to be executed from the code/
directory.
The above workflow can be executed using run.sh
.
To-Do:
- Improve the command-line-arguments input mechanism.
Add progress bar while transforming images.Add logger.