Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/krisnasantosa15/realtime-bisindo-classification
The objective of this project is to classify the BISINDO (Bahasa Isyarat Indonesia) alphabet in real-time using hand landmarks detection and machine learning.
https://github.com/krisnasantosa15/realtime-bisindo-classification
bisindo classification computer-vision machine-learning mediapipe mediapipe-hands opencv python sign-language-recognition
Last synced: 18 days ago
JSON representation
The objective of this project is to classify the BISINDO (Bahasa Isyarat Indonesia) alphabet in real-time using hand landmarks detection and machine learning.
- Host: GitHub
- URL: https://github.com/krisnasantosa15/realtime-bisindo-classification
- Owner: KrisnaSantosa15
- License: mit
- Created: 2024-10-24T14:04:39.000Z (24 days ago)
- Default Branch: main
- Last Pushed: 2024-10-25T06:40:12.000Z (23 days ago)
- Last Synced: 2024-10-25T17:44:16.952Z (23 days ago)
- Topics: bisindo, classification, computer-vision, machine-learning, mediapipe, mediapipe-hands, opencv, python, sign-language-recognition
- Language: Jupyter Notebook
- Homepage: https://realtime-bisindo-classification.streamlit.app/
- Size: 21.4 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐ค Real-time BISINDO (Bahasa Isyarat Indonesia) Classification
![Banner](images/banner.png)
## ๐ Project Overview
Welcome to the Real-time BISINDO (Bahasa Isyarat Indonesia) Classification project! In this project, I built a machine learning model to classify the BISINDO alphabet in real-time using hand landmarks detection. I used the mediapipe library to extract hand landmarks from the images and trained a Random Forest model to classify the alphabet.
## ๐ก Demo
You can check out the demo of the project on Streamlit [Here]((https://realtime-bisindo-classification.streamlit.app/))
[https://realtime-bisindo-classification.streamlit.app/](https://realtime-bisindo-classification.streamlit.app/)
But streamlit is not supported for real-time video, so you can run the project locally to see the real-time classification. As an alternative, you can upload an image to classify the BISINDO alphabet.
![Demo](images/static.png)
## ๐ฏ Objective
The objective of this project is to classify the BISINDO (Bahasa Isyarat Indonesia) alphabet in real-time using hand landmarks detection and machine learning.
## ๐งช Dataset
I use the [Bahasa Isyarat Indonesia (BISINDO) Alphabets](https://www.kaggle.com/datasets/achmadnoer/alfabet-bisindo) dataset from Kaggle. This dataset contains 26 classes of images, each representing a letter in the BISINDO alphabet.
The data files contain 1:1 scaled images of Indonesian sign language, from A to Z.
There are three backgrounds used in taking the image, namely a plain white shirt, a white wall, and a white dot-patterned shirt. The point of view of the image taken is the front view with the distance between the object and the lens approximately 70 cm.
During the shooting process, four images were obtained for each background, which means 12 images for each alphabet. The total images from letters A to Z obtained are 312 images.
## ๐ฅ๏ธ Implementation
this project uses Python with the following key libraries:
- scikit-learn for machine learning algorithms and metrics
- numpy for numerical operations
- pandas for data manipulation
- matplotlib and seaborn for data visualization
- imgaug for image augmentation
- mediapipe for hand landmarks detection
- opencv-python for image processingHere's the workflow of the project:
1. Load the dataset and preprocess the images
2. Augment the images using imgaug with 50 images each
3. Extract hand landmarks from the images using mediapipe
4. Extract features from the hand landmarks
5. Train and evaluate machine learning models
6. Compare the models and choose the best one
7. Use OpenCV to capture real-time video and classify the BISINDO alphabet![mediapipe](images/hand-landmarks.png)
## ๐ Results
I evaluated each model with accuracy as main metric. Here are the results:
![Execution Time](images/comparison.png)
Check out my detailed analysis and visualizations in the Jupyter notebook!
Here's the result I get with the best model (Random Forest, 99%):
![Confusion Matrix](images/cf.png)
Here's some screenshots of the real-time classification:
![Real-time Classification](images/s.png)
![Real-time Classification](images/a.png)
![Real-time Classification](images/p.png)
![Real-time Classification](images/i.png)## ๐ Limitation
Here are some limitations of the project:
- The system is very slow because of the hand landmarks detection, and model classification
- The model is not very accurate because of the small dataset (Only use augmented images)## ๐ Future Work
Here are some ideas for future work:
- Use more real dataset (Not only augmented images)
- Improve speed and accuracy of the model
- Implement the model on a mobile app
- experiment with removing `z axis` from the hand landmarks## ๐ Getting Started
1. Clone this repository:
```
git clone https://github.com/KrisnaSantosa15/realtime-bisindo-classification.git
```2. Install the required packages:
```
pip install -r requirements.txt
```3. Run the Jupyter notebook
4. Run `streamlit run dashboard/dashboard.py` to run the Streamlit dashboard
## ๐ค Contribute
Feel free to fork this repository and submit pull requests. All contributions are welcome!
## ๐ Learn More
For a detailed walkthrough of the code and methodology, check out the Jupyter notebook in this repository.
## ๐ License
This project is [MIT](LICENSE) licensed.
---
If you find this project interesting, don't forget to give it a star! โญ