Hand gesture recognition using Deep learning
    조회 수: 8 (최근 30일)
  
       이전 댓글 표시
    
I have extracted feature matrix for hand gestures. How can recognition be done using Deep learning with input as the feature matrix?
댓글 수: 0
답변 (3개)
  Raynier Suresh
    
 2021년 1월 18일
        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
  Raynier Suresh
    
 2021년 1월 25일
        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
  Raynier Suresh
    
 2021년 1월 28일
				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)) 
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

