Error using num2str Input to num2str must be numeric. Error in face_recognition_model (line 59) categoryNames = cellstr(num2str(uniqueLabels));
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
%Face Recognition using LRR
%% Load a dataset of grayscale face images
Dataset = imageDatastore('ExtendedYaleB', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
%% Split the data into training and testing sets
[trainImgs, testImgs] = splitEachLabel(Dataset, 0.7, 'randomized');
%% Extract local patches from the training images using the extractLBPFeatures function
numNeighbors = 8;
radius = 1;
numBins = numNeighbors*(numNeighbors-1)+3;
trainFeatures = cell(numel(trainImgs.Files),1);
for i = 1:numel(trainImgs.Files)
img = readimage(trainImgs,i);
trainFeatures{i} = LBPFeatures(img, numNeighbors, radius, numBins);
end
%% Train the local ridge regression model using the fitrlinear function and local ridge regression
lambda = 1;
span = 0.5;
for i = 1:numel(trainImgs.Files)
features = trainFeatures{i};
label = double(trainImgs.Labels(i));
idx = setdiff(1:numel(trainFeatures),i);
neighbors = vertcat(trainFeatures{idx});
neighborLabels = double(trainImgs.Labels(idx));
mdl = fitrlinear(neighbors,neighborLabels,'Learner','leastsquares','Lambda',lambda);
yhat = zeros(size(features));
for j = 1:size(features,1)
patch = features(j,:);
pred = predict(mdl,patch);
dist = pdist2(patch,neighbors);
w = exp(-dist.^2/(2*span^2));
yhat(j) = sum(w.*pred)/sum(w);
end
trainFeatures{i} = yhat;
end
trainFeatures = cell2mat(trainFeatures);
%% Train the linear regression model on the modified LBP features
mdl = fitrlinear(trainFeatures,double(trainImgs.Labels),'Learner','leastsquares','Lambda',lambda);
%% Save the model to a file
save('face_recognition_model.mat', 'mdl');
%% Extract local patches from the testing images and make predictions using the predict function
testFeatures = cell(numel(testImgs.Files),1);
for i = 1:numel(testImgs.Files)
img = readimage(testImgs,i);
testFeatures{i} = LBPFeatures(img, numNeighbors, radius, numBins);
end
testFeatures = cell2mat(testFeatures);
predictions = predict(mdl,testFeatures);
%% Evaluate the performance of the model using the confusionmat and classificationReport functions
confMat = confusionmat(testImgs.Labels,predictions);
classificationReport = classificationReport(testImgs.Labels,predictions);
%% Load the saved model from a file
load('face_recognition_model.mat');
%% Use the loaded model for prediction
testImg = imread('test_image.jpg');
testFeatures = extractLBPFeatures(testImg, numNeighbors, radius, numBins);
prediction = predict(mdl,testFeatures);
11 Kommentare
Walter Roberson
am 6 Aug. 2023
I already showed you in https://www.mathworks.com/matlabcentral/answers/2004402-undefined-function-extractlbp-for-input-arguments-of-type-uint8#comment_2839377 the syntax you need to use.
Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!