Перейти к содержимому
Compvision.ru
Smorodov

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

Recommended Posts

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

PCA_Recognition.jpg

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нашел еще хорошую статью по этому поводу:

http://www.rusdoc.ru/articles/raspoznavani...igenface/18804/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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; ??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
И еще вопрос там в прогармме есть параметры

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

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

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; ??

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я делал так:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

holmes

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Очень нужно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

PCA_recognition.rar

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

PCA_recognition.rar

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь есть еще один пример с исходниками и описанием (англ.):

http://www.cognotics.com/opencv/servo_2007_series/part_5/index.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В строках

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.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь есть еще один пример с исходниками и описанием (англ.):

http://www.cognotics.com/opencv/servo_2007_series/part_5/index.html

Хороший пример. XML очень кстати!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

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

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×