• Stars
    star
    238
  • Rank 168,408 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unified learning approach for egocentric hand gesture recognition and fingertip detection.

Unified Gesture Recognition and Fingertip Detection 👋

GitHub stars GitHub forks GitHub issues Version GitHub license

A unified convolutional neural network (CNN) algorithm for both hand gesture recognition and fingertip detection at the same time. The proposed algorithm uses a single network to predict both finger class probabilities for classification and fingertips positional output for regression in one single evaluation. From the finger class probabilities, the gesture is recognized, and using both of the information fingertips are localized. Instead of directly regressing the fingertips position from the fully connected (FC) layer of the CNN, we regress an ensemble of fingertips position from a fully convolutional network (FCN) and subsequently take ensemble average to regress the final fingertips positional output.

Update 🔥

Included robust real-time hand detection using yolo for better smooth performance in the first stage of the detection system and most of the code has been cleaned and restructured for ease of use. To get the previous versions, please visit the release section.

Requirements 🐍

  • TensorFlow-GPU==2.2.0 pip install tensorflow-gpu==2.2.0
  • OpenCV==4.2.0 pip install opencv-python==4.2.0
  • ImgAug==0.2.6 pip install imgaug==0.2.6
  • Weights: Download the pre-trained weights files of the unified gesture recognition and fingertip detection model and put the weights/ folder in the working directory.

Downloads Downloads

The weights/ folder contains three weights files. The fingertip.h5 is for unified gesture recognition and fingertip detection. yolo.h5 and solo.h5 are for the yolo and solo method of hand detection. (what is solo?)

Paper 📚

Paper Paper

To get more information about the proposed method and experiments, please go through the Elsevier or ArXiv version of the paper. Cite the paper as:

@article{alam2022unified,
  title={Unified learning approach for egocentric hand gesture recognition and fingertip detection},
  author={Alam, Mohammad Mahmudul and Islam, Mohammad Tariqul and Rahman, SM Mahbubur},
  journal={Pattern Recognition},
  volume={121},
  pages={108200},
  year={2022},
  publisher={Elsevier}
}

Dataset 🗂️

Dataset

The proposed gesture recognition and fingertip detection model is trained by employing Scut-Ego-Gesture Dataset which has a total of eleven different single hand gesture datasets. Among the eleven different gesture datasets, eight of them are considered for experimentation. A detailed explanation about the partition of the dataset along with the list of the images used in the training, validation, and the test set is provided in the dataset/ folder. You can download 💾📁 the pre-processed dataset that was used for experimentation. The shared folder also contains two python scripts to load the dataset.

Network Architecture 🕸️

To implement the algorithm, the following network architecture is proposed where a single CNN is utilized for both hand gesture recognition and fingertip detection.

Prediction 👽

To get the prediction on a single image run the predict.py file. It will run the prediction in the sample image stored in the data/ folder. Here is the output for the sample.jpg image.

Real-Time! 📸

To run in real-time simply clone the repository and download the weights file and then run the real-time.py file.

directory > python real-time.py

In real-time execution, there are two stages. In the first stage, the hand can be detected by using either you only look once (yolo) or single object localization (solo) algorithm. By default, yolo will be used here. The detected hand portion is then cropped and fed to the second stage for gesture recognition and fingertip detection.

Output 🎨

Here is the output of the unified gesture recognition and fingertip detection model for all of the 8 classes of the dataset where not only each fingertip is detected but also each finger is classified.

Contact Me! 🐛📢🌎🚩🚧📬

If you have any queries or concerns, please feel free to contact me.

More Repositories

1

Automatic-Identification-and-Counting-of-Blood-Cells

Machine learning approach of automatic identification and counting of blood cells (RBC, WBC, and Platelet) with KNN and IOU based verification.
Python
90
star
2

A-Complete-Digital-Communication-System

A simulation of a complete digital communication system with different modulation schemes in MATLAB for transmitting and receiving text messages.
MATLAB
47
star
3

Complete-Blood-Cell-Count-Dataset

The complete blood count (CBC) dataset contains a total of 360 blood smear images of red blood cells (RBCs), white blood cells (WBCs), and Platelets with annotations.
44
star
4

Fingertip-Mixed-Reality

Affine transformation virtual 3D object using a finger gesture-based interactive system in the virtual environment.
Python
22
star
5

TI1K-Dataset

Thumb Index 1000 (TI1K) is a dataset of 1000 hand images with the hand bounding box, and thumb and index fingertip positions including the natural movement of thumb and index finger.
Python
14
star
6

Holographic-Reduced-Representations

Holographic Reduced Representations
Python
9
star
7

Heart-Rate-Tracking

Heart rate tracking using the window method and template matching.
MATLAB
8
star
8

Image-Classification-Using-CNN

A convolutional neural network approach to classify image using the CIFAR-10 image classification dataset.
Python
5
star
9

Probability-Distribution-Using-GUI

Calculate and visualize the probability distribution of univariate or bivariate data directly from an Excel file using MATLAB.
MATLAB
3
star
10

Object-Detection-Using-YOLO-Algorithm

Implementation of "you only look once" (YOLO) object detection algorithm employing the pre-trained weights.
Python
3
star
11

Recurrently-Semantic-Segmentation

Recurrent method of semantic segmentation using convolutional LSTM
Python
2
star
12

MATLAB-Code-EEE-212

MATLAB codes from Numerical Technique Laboratory (EEE 212) Course.
MATLAB
1
star
13

Object-Detection-Using-GPM

A novel real-time multi-class object detection algorithm by generating a 3D tensor of 2D Gaussian probabilistic model (GPM) using CNN.
Python
1
star