Реализация распознавания / распознавания лиц в C ++ - PullRequest
4 голосов
/ 27 сентября 2011

Я бы подумал, что Google может ответить на этот вопрос, но мне не повезло.

Кто-нибудь знает о каких-либо реализациях C ++ с открытым исходным кодом любых алгоритмов обнаружения лиц, кроме метода Виолы-Джонса (усиленные каскады хаароподобных функций)?

Также существует ли открытыйисточник C ++ реализация Fisherfaces в любом месте?

Спасибо.

1 Ответ

14 голосов
/ 23 октября 2011

Это сообщение привлекает к себе внимание, поэтому я бы хотел его обновить.Я предоставил библиотеку распознавания лиц, которую я написал для OpenCV, которая включает гистограммы Eigenfaces, Fisherfaces и Local Binary Pattern.Таким образом, OpenCV 2.4.2 теперь поставляется со всем, чтобы начать, см. Очень подробную документацию:

Теперь оригинальный ответ.

Я автор статьи, ссылки на которую есть в сообщении Кевина.Обратите внимание, что вам нужно найти собственные значения несимметричной матрицы S_ {W} ^ {- 1} S_ {B} для Fisherfaces, я прямо не упомянул об этом в своем блоге.OpenCV имеет только решатель для симметричных матриц в своей текущей версии;поскольку собственные значения и сингулярные значения не эквивалентны для несимметричных матриц, вы также не можете использовать SVD.Для своего проекта я адаптировал JAMA-решатель для C ++ для решения проблемы собственных значений для несимметричных матриц, поэтому нет необходимости использовать для этого внешнюю библиотеку.CMakeLists.txt настроен, поэтому Eigen также можно использовать, поэтому у вас есть выбор.

Теперь я наконец нашел несколько минут для реализации метода Fisherfaces с OpenCV2 C ++ API и вставил код в мою учетную запись github по адресу:

main.cpp показывает вамкак использовать класс Fisherfaces и как использовать линейный дискриминантный анализ с тем же примером, что и в: http://www.bytefish.de/wiki/pca_lda_with_gnu_octave. Он поставляется как проект CMake, поэтому компиляция так же проста, как и ввод:

philipp@mango:~/some/dir$ mkdir build; cd build
philipp@mango:~/some/dir/build$ cmake ..
philipp@mango:~/some/dir/build$ make
philipp@mango:~/some/dir/build$ ./lda

Я не знаю, является ли это предпочтительным способом Stackoverflow для размещения кода в ответе, но я думаю, что это слишком долго для публикации.

Обратите внимание на две вещи.(1) Я читаю изображения из файла CSV ( точно так же как этот ), вам не нужно заботиться о порядке меток.(2) Я храню собственные векторы по столбцам, в то время как PCA в OpenCV сохраняет их по строкам.Это просто вопрос личного вкуса, но я никогда не видел такого для любого другого решателя, поэтому решил хранить их по столбцам.

...