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

Hand Gesture Recognition with Python

Hand Gesture Recognition system received great attention in the recent few years because of its manifoldness applications and the ability to interact with machine efficiently through human-computer interaction.

The essential objective of building a hand gesture recognition model is to create a natural interaction between human and computer where the recognized gestures can be used to control a robot or transmit meaningful information.

The hand gesture recognition 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. I will start with importing the necessary libraries and reading the datasets that we need for this task:

In [1]:
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 I 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 I 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 I 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
Hand Gesture Recognition Datasets
Hand Gesture Dataset - 1 Hand Gesture Dataset - 2 Hand Gesture Dataset - 3 Hand Gesture Dataset - 4