Распознавание лиц с использованием Computer Vision Toolbox (Viola Jones) в Matlab

У меня есть финальный проект по распознаванию лиц. Я решил выполнить этот проект с использованием Matlab и Computer Vision Toolbox, потому что, как вы знаете, этот набор инструментов использует алгоритм Виолы Джонса для обнаружения объектов.

Я написал код ниже, но код соответствует лицу с объектом без лица.

Вопрос
Как изменить код, чтобы он соответствовал только лицам?

clear all
clc

% Read input image
I = imread('C:\imageprocessingwithMatlab\Image001.jpg');
figure,imshow(I);

%% Detect Faces in the image
% Create a detector object
faceDetector = vision.CascadeObjectDetector('FrontalFaceCART');   

% Detect faces
bbox = step(faceDetector, I); 

% Draw boxes around detected faces and display results
IFaces = insertObjectAnnotation(I, 'rectangle', bbox, 'Face');
figure, imshow(IFaces), title('Detected Faces');

person yigitcannalci    schedule 26.11.2013    source источник
comment
В чем вопрос? Не могли бы вы уточнить?   -  person kkuilla    schedule 26.11.2013
comment
программа обнаруживает правильное лицо с другим другим объектом, и я просто хочу, чтобы программа обнаруживала только правильное лицо.   -  person yigitcannalci    schedule 26.11.2013
comment
большое спасибо kkuilla.   -  person yigitcannalci    schedule 26.11.2013


Ответы (1)


К сожалению, нет гарантированного способа устранить все ложные срабатывания. Однако вы можете настроить некоторые параметры, чтобы функция распознавания лиц лучше работала на вашем конкретном изображении.

Первое, что я сделаю, это посмотрю на ваши ложные срабатывания. Если они имеют тенденцию быть больше или меньше типичного лица на вашем изображении, вы можете попробовать настроить параметры MinSize и MaxSize, чтобы избавиться от них.

Вы также можете попробовать использовать другую модель, т.е. е. FrontalFaceLBP вместо FrontalFaceCART.

Если это не сработает, вы можете попробовать более хитрый трюк. Сначала определите верхнюю часть тела людей, используя модель классификации «UpperBody». Затем определите лица и сохраните только те лица, которые содержатся в верхней части тела. Это, вероятно, сократит количество ложных срабатываний, но вы также рискуете пропустить настоящие лица.

Наконец, вы можете обучить свой собственный детектор лиц с помощью функции trainCascadeObjectDetector. Но это определенно выходит за рамки вашего проекта.

person Dima    schedule 26.11.2013
comment
Спасибо большое, Дима, я поменял модель классификации, и она сработала. Я так рада, еще раз спасибо ^^ - person yigitcannalci; 26.11.2013
comment
@yigitcannalci Не могли бы вы проголосовать за принятый ответ, а также принять его, пожалуйста. - person kkuilla; 27.11.2013