• For any query, contact us at
  • +91-9872993883
  • +91-8283824812
  • info@ris-ai.com

Hand Gesture Recognition with Python

Overview of hand gesture recognition using python

In the recent few years , Hand Gesture Recognition with Python is a system that can detect the gesture of hand in a real time video.Hand tracking and segmentation are the primary steps for any hand gesture recognition system.

This system has been applied for different applications in different fields including; translation into sign language , virtual environments, intelligent monitoring , robot control , medical systems , etc.

Now let’s see how to train a Machine Learning model in Hand Gesture Recognition with Python programming language. We will start with importing the necessary libraries and reading the datasets that we need for this task:

Hand Gesture Recognition with Python
In [1]:

import python libraries

import numpy as np # linear algebra
import pandas as pd # data processing

df0 = pd.read_csv("0.csv", header=None )
df1 = pd.read_csv("1.csv", header=None )
df2 = pd.read_csv("2.csv", header=None )
df3 = pd.read_csv("3.csv", header=None )
df = pd.concat([df0,df1,df2,df3], axis = 0)
In [2]:
x = df.loc[:,0:63]
y = df[64]
In [3]:
x.head()
Out[3]:
0 1 2 3 4 5 6 7 8 9 ... 54 55 56 57 58 59 60 61 62 63
0 26.0 4.0 5.0 8.0 -1.0 -13.0 -109.0 -66.0 -9.0 2.0 ... 21.0 -28.0 61.0 4.0 8.0 5.0 4.0 -7.0 -59.0 16.0
1 -47.0 -6.0 -5.0 -7.0 13.0 -1.0 35.0 -10.0 10.0 -4.0 ... -105.0 -25.0 47.0 6.0 6.0 5.0 13.0 21.0 111.0 15.0
2 -19.0 -8.0 -8.0 -8.0 -21.0 -6.0 -79.0 12.0 0.0 5.0 ... -128.0 -83.0 7.0 7.0 1.0 -8.0 7.0 21.0 114.0 48.0
3 2.0 3.0 0.0 2.0 0.0 22.0 106.0 -14.0 -16.0 -2.0 ... -54.0 -38.0 -11.0 4.0 7.0 11.0 33.0 39.0 119.0 43.0
4 6.0 0.0 0.0 -2.0 -14.0 10.0 -51.0 5.0 7.0 0.0 ... 60.0 38.0 -35.0 -8.0 2.0 6.0 -13.0 -24.0 -112.0 -69.0

5 rows × 64 columns

Now we will split the data into 75% training and 25% test set:

In [4]:
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=42)

Now We will rescale the data using Standard Scalar:

In [5]:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
x_train = pd.DataFrame(sc.fit_transform(x_train))
x_test = pd.DataFrame(sc.transform(x_test))

Now We will use the Random Forest Classifier to train a Hand Gesture Recognition model with Python:

In [6]:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

lr_grid = {'max_depth' : [4,8,16,32,64,128],
           'criterion' : ['entropy','gini']}

clf = RandomForestClassifier(n_estimators=100, max_features='sqrt', random_state=42)

gs = GridSearchCV(estimator = clf, param_grid=lr_grid,cv = 5)
gs.fit(x_train,y_train)
y_pred = gs.predict(x_test)
gs.best_params_
Out[6]:
{'criterion': 'entropy', 'max_depth': 32}

Now let’s check the accuracy of the model using the confusion matrix and print the classification report of our machine learning model:

In [7]:
from sklearn.metrics import classification_report
print('Classification Report: \n', classification_report(y_test,y_pred))
Classification Report: 
               precision    recall  f1-score   support

           0       0.94      0.97      0.95       719
           1       0.96      0.92      0.94       769
           2       0.91      0.95      0.93       703
           3       0.89      0.86      0.87       729

    accuracy                           0.92      2920
   macro avg       0.92      0.93      0.92      2920
weighted avg       0.92      0.92      0.92      2920

In [8]:
from sklearn.metrics import confusion_matrix
print('Confusion Matrix: \n', confusion_matrix(y_test,y_pred))
Confusion Matrix: 
 [[698   0   7  14]
 [  0 709  22  38]
 [  4   7 665  27]
 [ 43  25  33 628]]
In [11]:
from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_pred)
Out[11]:
0.9246575342465754
Download Hand Gesture Recognition Datasets
Hand Gesture Dataset - 1 Hand Gesture Dataset - 2 Hand Gesture Dataset - 3 Hand Gesture Dataset - 4

Resources You Will Ever Need