Hand gesture recognition using Deep learning
6 views (last 30 days)
Show older comments
I have extracted feature matrix for hand gestures. How can recognition be done using Deep learning with input as the feature matrix?
0 Comments
Answers (3)
Raynier Suresh
on 18 Jan 2021
If you have a data set of numeric features, then you can train a deep learning network using a feature input layer. The below code is a simple example on how to use the feature input layer.
XTrain = [0 0;0 1;1 0;1 1]; % Input Features (Number of Observations x Number of Features)
YTrain = categorical({'Action1';'Action2';'Action2';'Action3'}); % Output Labels for each observation
numClasses = numel(categories(YTrain));
numFeatures = size(XTrain,2);
layers = [
featureInputLayer(numFeatures)
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer]; % Define the Layers
options = trainingOptions('sgdm');
net = trainNetwork(XTrain,YTrain,layers,options); % Train the network
classify(net,[0 1])
Refer the below link for more information:
Train Network with Numeric Features : https://www.mathworks.com/help/deeplearning/ref/trainnetwork.html?s_tid=doc_ta#mw_fcd828cc-de80-4922-8cc2-806c07deb31a
3 Comments
Raynier Suresh
on 25 Jan 2021
For a deep learning network every input image is considered as a matrix of numbers, So in place of an image you can also feed your feature matrix and train the network only things is the feature matrix must to reshaped to a proper size so that the imageInputLayer accepts it. The below code will give you an example
XTrain = [0 0;0 1;1 0;1 1]; % Input Features (Number of Observations x Number of Features)
XTrain = reshape(XTrain',[1 2 1 4]); % Reshape the XTrain (1 x Number of Features x 1 x Number of Observation)
YTrain = categorical({'Action1';'Action2';'Action2';'Action3'}); % Output Labels for each observation
options = trainingOptions('sgdm','MaxEpochs',150);
inputSize = [1 2 1]; % set the input size as (1 x Number of Features x 1)
outputSize = numel(categories(YTrain)); % Number of output categories
layers = [imageInputLayer(inputSize);fullyConnectedLayer(outputSize);softmaxLayer;classificationLayer];
net = trainNetwork(XTrain,YTrain,layers,options); % Train the network
classify(net,[1 1])
2 Comments
Raynier Suresh
on 28 Jan 2021
Check whether you have changed the input size of data you fed into the classify function. I have modified the same code for your input size.
XTrain = rand(100,20); % Input Features (Number of Observations x Number of Features)
XTrain = reshape(XTrain',[1 20 1 100]); % Reshape the XTrain (1 x Number of Features x 1 x Number of Observation)
YTrain = categorical(randi(10,[1,100])'); % Output Labels for each observation
options = trainingOptions('sgdm','MaxEpochs',150);
inputSize = [1 20 1]; % set the input size as (1 x Number of Features x 1)
outputSize = numel(categories(YTrain)); % Number of output categories
layers = [imageInputLayer(inputSize);fullyConnectedLayer(outputSize);softmaxLayer;classificationLayer];
net = trainNetwork(XTrain,YTrain,layers,options); % Train the network
classify(net,rand(1,20))
See Also
Categories
Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!