Compare images with svm
2 views (last 30 days)
Show older comments
Hi,
I am trying to use SVM for comparison of two facial images based on extraction of various features. While SVM works fine for multi-class classification, comparing two images seems a bit more difficult. Basically, I have a set of pre-processed images of faces after detection and segmentation. The code is following:
%%Extract Features for training set
training=imageSet('Y:\Bazy biometryczne\Face\att', 'recursive');
for i=1:3
personA = 1;
Pa=read(training(personA),i);
Pa=Pa(:,:,1);
% normalization
Pa=double(Pa);
Pa=(Pa-min(Pa(:)))/(max(Pa(:))-min(Pa(:)));
% figure, imshow(Pa, [])
trainingFeatures(i,:) = extractLBPFeatures(Pa);
trainingLabel{i} = training(personA).Description;
end
for i=1:3
personB = 2;
Pb=read(training(personB),i);
Pb=Pb(:,:,1);
% normalization
Pb=double(Pb);
Pb=(Pb-min(Pb(:)))/(max(Pb(:))-min(Pb(:)));
% figure, imshow(Pb, [])
trainingFeatures(i+3,:) = extractLBPFeatures(Pb);
trainingLabel{i+3} = training(personB).Description;
end
%%train binary classification
% SVMModel = fitcsvm(X,Y,'KernelFunction','rbf','Standardize',true,'ClassNames',{'negClass','posClass'});
faceClassifier = fitcsvm(trainingFeatures,trainingLabel,'Standardize',true,'KernelFunction','linear' );
%%Test Images from Test Set
personA1 = 1;
queryImage = read(training(personA1),4);
% normalization
queryImage=double(queryImage(:,:,1));
queryImage=(queryImage-min(queryImage(:)))/(max(queryImage(:))-min(queryImage(:)));
figure, imshow (queryImage,[])
queryFeatures = extractLBPFeatures(queryImage);
[personLabel, score] = predict(faceClassifier,queryFeatures)
As you can see, I am training the classifier with two sets (face of two persons) of 3 images. At the end I check if the test image is from one of the classes. Everything works great when I use an image from training. The problem appears when I use image of the trained person which was not used for training - it does not point correct person.
Generally, I tried with various different features but with no results. What would you suggest to me?
0 Comments
Answers (1)
kurakula sairam
on 15 Dec 2017
hey dude i have run this program and it works good after changing 1:3 to 1:4 for i value and can you tell me how to proceed this for N persons
0 Comments
See Also
Categories
Find more on Get Started with Statistics and Machine Learning Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!