CS 297 Deliverable 1

To Implement CNN for Static Sign Language Alphabets Detection

DESCRIPTION

This deliverable aimed at implementing the neural network to recognize alphabets of American Sign Language taking insights from LeNet-5.

Python Libraries Used: keras, numpy, panda, matplotlib

Tools and Technology : Google Colab, Computer Vision, Python

DATASET

The American Sign Language letter database of hand gestures represent a multi-class problem with 24 classes of letters (excluding J and Z which require motion).

ASL ALPHABETS

ASLAlphabets.png
It uses Sign Language MNIST dataset to train and test model.
The data is in CSV format with labels and pixel values in single rows.
Dataset Sample Preview:

        label  pixel1  pixel2  pixel3  ...  pixel781  pixel782  pixel783  pixel784
0          3     107     118     127  ...       206       204       203       202
1          6     155     157     156  ...       175       103       135       149
2          2     187     188     188  ...       198       195       194       195
3          2     211     211     212  ...       225       222       229       163
4         13     164     167     170  ...       157       163       164       179
...      ...     ...     ...     ...  ...       ...       ...       ...       ...
27450     13     189     189     190  ...       234       200       222       225
27451     23     151     154     157  ...       195       195       195       194
27452     18     174     174     174  ...       203       202       200       200
27453     17     177     181     184  ...        47        64        87        93
27454     23     179     180     180  ...       197       205       209       215

[27455 rows x 785 columns]


Each image of size 28*28 is represented in a single row having total 784 columns for pixels.
----------------------------------
Data Type       | (Rows, Columns)
----------------------------------
training images | (27455, 785)         
testing images  | (7172, 785)         
----------------------------------

LeNet-5 Model

 
Model: "sequential_13"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_26 (Conv2D)           (None, 28, 28, 6)         156       
_________________________________________________________________
max_pooling2d_26 (MaxPooling (None, 14, 14, 6)         0         
_________________________________________________________________
conv2d_27 (Conv2D)           (None, 10, 10, 16)        2416      
_________________________________________________________________
max_pooling2d_27 (MaxPooling (None, 5, 5, 16)          0         
_________________________________________________________________
flatten_13 (Flatten)         (None, 400)               0         
_________________________________________________________________
dense_39 (Dense)             (None, 120)               48120     
_________________________________________________________________
dense_40 (Dense)             (None, 25)                3025      
_________________________________________________________________
dense_41 (Dense)             (None, 25)                650       
=================================================================
Total params: 54,367
Trainable params: 54,367
Non-trainable params: 0
_________________________________________________________________
None

TRAINIG THE MODEL :

trainingmodel.png

RESULTS ON TESTING DATASET

PREDICTIN ON SAMPLE INPUT: Letter Y

sample input image to the model

sample input image to the model

DOWNLOAD SOURCE CODE - Jupyter Notebook

REFERENCE:

1. LeNet-5, convolutional neural networks by Yann LeCun

2. Lenet-5-a-classic-cnn-architecture