Я пытаюсь сгруппировать лица в папке, используя opencv.
Я играю с примером собственного лица в http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html. но не могу найти ничего, чтобы решить мою проблему.
I have a set of faces in my face database: A,B,C,D,E,F,G,H,I
As a result I try to get;
- A,B,D are person1
- C,E,F are person2
- G,H are person3
- I is person4
Я думаю, что процесс должен быть похожим;
sampleFace = A
while
mode.train(faces,labels) // trains face database
model.predict(sampleFace, &predict, &confidence) // get the prediction
using the confidence and similarity percentage decide A,B,D faces are person1
remove A,B,D from face database and remove the labels of these images also
if faces.size=1 exit loop
sampleFace = C
end of loop
Чтобы получить такой результат, я думаю, что мне нужно установить порог для моей модели в образце собственных граней. И нужно использовать значение доверия.
На самом деле я хочу установить показатель сходства, например,% 80, затем я хочу получить изображения, которые имеют показатель сходства больше, чем% 80, с заданным образцом лица. Выборка собственных граней дает только одно подобное лицо с доверительным значением. Мне нужно получить несколько лиц с доверительным значением для каждого, а затем я могу сравнить оценки сходства. Также в образце eigenfaces я не знаю пределов достоверности, мне нужно процентное значение для каждого лица.
Любая помощь, совет или пример кода будет принята с благодарностью.
Метод, который вы пытаетесь сделать, основан на неконтролируемом обучении, которое не будет хорошо работать на изображениях лиц. Если у вас есть достаточное количество образцов на человека, вам лучше обучить классификатор хотя бы с одним изображением человека; затем найдите ближайший класс для каждого изображения в вашем наборе данных.
Других решений пока нет …