Jump to content
Compvision.ru
Smorodov

Программа распознавания лиц методом главных компонент

Recommended Posts

Программа распознавания лиц методом главных компонент

PCA_Recognition.jpg

Архив здесь: PCA_recognition.rar

  • Like 1

Share this post


Link to post
Share on other sites

Здравствуйте. Не подскажите как правильно выбрать пороговое значение похожести, чтобы разделять лица на категории "лицо есть в базе" и "лица в базе нет" ? Читал, что это значение выбирается эмпирически, но вот механизма выбора не встретил. И еще интересно, влияет ли выбор классификатора (евклидово расстояние, Махалонобиса и т.п) на механизм выбора этого порогового значения?

Share this post


Link to post
Share on other sites
Здравствуйте. Не подскажите как правильно выбрать пороговое значение похожести, чтобы разделять лица на категории "лицо есть в базе" и "лица в базе нет" ? Читал, что это значение выбирается эмпирически, но вот механизма выбора не встретил. И еще интересно, влияет ли выбор классификатора (евклидово расстояние, Махалонобиса и т.п) на механизм выбора этого порогового значения?

Есть немного по этой теме здесь (в конце темы):

http://www.compvision.ru/forum/index.php?showtopic=81

Share this post


Link to post
Share on other sites

Извините за глупый вопрос. Но просматривая программму я не понял почему Кол-во векторов базиса =кол-ву изображений -1. И еще вопрос можно ли подавать на обучение по несколько фотографий одного лица?

Share this post


Link to post
Share on other sites

И еще вопрос там в прогармме есть параметры

//-----------------------------------

//-----------------------------------

CvTermCriteria Tc;

Tc.type=CV_TERMCRIT_NUMBER | CV_TERMCRIT_EPS;

Tc.max_iter=100;

Tc.epsilon=0.001;

параметр Tc.max_iter=100; я так понимаю это максимальное кол-во главных компонент

а что значит параметр Tc.epsilon=0.001; ??

Share this post


Link to post
Share on other sites
И еще вопрос там в прогармме есть параметры

//-----------------------------------

//-----------------------------------

CvTermCriteria Tc;

Tc.type=CV_TERMCRIT_NUMBER | CV_TERMCRIT_EPS;

Tc.max_iter=100;

Tc.epsilon=0.001;

параметр Tc.max_iter=100; я так понимаю это максимальное кол-во главных компонент

а что значит параметр Tc.epsilon=0.001; ??

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

Share this post


Link to post
Share on other sites

можно ли подавать на обучение по несколько фотографий одного лица?

Share this post


Link to post
Share on other sites

Можно. Вчера переписал на Delphi по-своему и тестировал, неплохо распознает в реал-тайм c вэб-камеры. Сорс на Delphi есть в топе cvCvtColor.

Share this post


Link to post
Share on other sites

Тоже решил переделать в реал-тайм но есть проблемы

Первая проблема это нахождение лица в кадре, с текущим алгоритмом конечно можно определить что есть лицо или нет но как определить его расположение в кадре?

Вторая проблема это получение изображения лица и приведение его к стандарту (одинаковому масштабу лица)?

может ответы и очевидны но я пока в этом деле не мастер :(

Прошу помочь заранее спасибо

Share this post


Link to post
Share on other sites

я делал так:

- нахожу при помощи каскадов Хаара самое крупное лицо

- корректирую размер полученного прямоугольника под соотношение сторон изображений в базе изображений

- ищу ближайшее совпадение

правда это все осталось на уровне теста, потому как точность меня не устроила. надо будет попробовать на hidden markov model.

завтра могу выложить получившийся код на дельфе.

Share this post


Link to post
Share on other sites

holmes

Я как бы уже разобрался (примерный алгоритм лежит в башке) но еще сам не реализовал (времени нет) пока почитываю про opencv в целом и математику. Однако спасибо за отклик. Может в дальнейшем обращусь за советами.

правда это все осталось на уровне теста, потому как точность меня не устроила.

ну насчет в реал-тайм я не знаю но с тестовыми фотками работает очень прилично. мне кажется основная причина: проблема привидение масштаба тестируемого изображения к масштабу эталонного изображения, под изображением понимается лицо на изображении (сори за товталогию :)).

Share this post


Link to post
Share on other sites

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

а точность действительно хромает. я в этих алгоритмах слабо разбираюсь, так что может чего и не докрутил.

по крайней мере он иногда меня с подругой путал (это уже ни в какие рамки ...)

Share this post


Link to post
Share on other sites

Добрый день, я в этом деле новичок. Хотелось бы узнать по примеру. Скачал готовый пример, библиотеки, прикрутил их и не могу скомпилировать.

Выдает: _fm_acos is not member of std

что мне делать?! я в с++ вообще не понимаю, хотя на object pascal пишу.

По учебе надо предоставить проогу - распознование лиц. В принципе можно брать и чужие, но знать надо как они работают.

p.s. может кто бы более опытнй мог сбросить *.ехе мне ?! чтоб ямог продемонстрировать и рассказать (по исходникам) принцип работы распознования по главным компонентам.

Share this post


Link to post
Share on other sites

В первом посте есть пример, и вроде с екзешником.

Чтобы работал надо скачать библиотеку версии 1.1pre1a там все дллки.

Share this post


Link to post
Share on other sites

В первом посте есть пример, и вроде с екзешником.

Чтобы работал надо скачать библиотеку версии 1.1pre1a там все дллки.

Хотел узнать есть ли пример этой или похожей программы на Delphi ?

Очень нужно

Share this post


Link to post
Share on other sites

Извините за глупый вопрос. Но просматривая программму я не понял почему Кол-во векторов базиса =кол-ву изображений -1. И еще вопрос можно ли подавать на обучение по несколько фотографий одного лица?

и все-таки вопрос остался открытым, почему же так numEvgen = numSample - 1;

почему кол-во векторов не равно количеству исходных изображений ?

Share this post


Link to post
Share on other sites

Здравствуйте. Скачал исходник программы. При запуске в С++Builder возникает ошибка External exception C000001D. Помогите. Не могу понять в чем причина.

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

Установил не помогает(((( Не знаю, что делать.

Вот программа в полной комплектации:

PCA_recognition.rar

На этой неделе раза 4 на разных компах запускал.

Share this post


Link to post
Share on other sites

Вот программа в полной комплектации:

PCA_recognition.rar

На этой неделе раза 4 на разных компах запускал.

Спасибо за исходники. Все равно не запускается. Попробую систему переустановить.

Share this post


Link to post
Share on other sites

В строках

cvConvertScale( eig_img[j], result_img,255.0/(max_val-min_val),-min_val);

и

cvLine(img_load_ch1,cvPoint(0,0),cvPoint(size.width,size.height),CV_RGB(255,0,0), 3, 4);

cvLine(img_load_ch1,cvPoint(size.width,0),cvPoint(0,size.height),CV_RGB(255,0,0), 3, 8);

выдает ошибку External exception C000001D.

Закоментировал - работает.

Не пойму почему выдает ошибку именно в этих строках.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×