Библиотека распознавания лиц

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

В настоящее время я использую OpenCV для обнаружения граней и грубой Eigenface алгоритм распознавания. Но я думал, что должно быть что-то там с лучшей производительностью, чем самозаписываемый алгоритм Eigenface. Я не говорю о скорости как производительности, я ищу библиотеку с лучшими результатами, чем простой подход Eigenface.

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

Я доволен библиотекой в ​​Python, Java, С++, C или что-то в этом роде. Лучше всего было бы, если бы его можно было запустить на компьютере под управлением Windows, потому что на данный момент я полагаюсь на какой-то внешний код Windows.

Ответ 1

Вот список коммерческих поставщиков, которые предоставляют готовые пакеты для распознавания лиц, которые запускаются в Windows:

Ответ 2

Update

OpenCV 2.4.2 теперь поставляется с очень новым cv:: FaceRecognizer. Пожалуйста, ознакомьтесь с очень подробной документацией по адресу:

Оригинальное сообщение

Я выпустил libfacerec, современную библиотеку распознавания лиц для OpenCV С++ API (лицензия BSD). libfacerec не имеет дополнительных зависимостей и реализует метод Eigenfaces, метод Fisherfaces и гистограммы локальных бинарных шаблонов. Части библиотеки будут включены в OpenCV 2.4.

Последняя версия libfacerec доступна по адресу:

Библиотека была написана для OpenCV 2.3.1 с учетом предстоящего OpenCV 2.4, поэтому я не поддерживаю версии OpenCV раньше 2.3.1. Этот проект поставляется в виде проекта CMake с хорошо документированным API, а также учебник по гендерной классификации. Вы можете увидеть HTML-версию документации по адресу:

Если вы хотите понять, как работают эти алгоритмы, вы можете прочитать мое руководство по распознаванию лиц (включая примеры Python и GNU Octave/MATLAB):

Также реализована реализация алгоритмов Python и GNU Octave/MATLAB в моем репозитории github. Оба проекта в facerec также включают несколько методов перекрестной проверки для оценки алгоритмов:

Соответствующие публикации:

  • Turk, M., and Pentland, A. Собственные признаки для распознавания. Журнал когнитивной нейронауки 3 (1991), 71-86.
  • Belhumeur, PN, Hespanha, J. и Kriegman, D. Собственные функции против Fisherfaces: распознавание с использованием линейной проекции класса. IEEE Transactions на анализ шаблонов и машинный интеллект 19, 7 (1997), 711-720.
  • Ahonen, T., Hadid, A., and Pietikainen, M. Распознавание лиц с локальными двоичными образцами. Computer Vision - ECCV 2004 (2004), 469-481.

Ответ 3

аутентификация с помощью pam-face модуль PAM для проверки подлинности лиц: но для этого потребуется какая-то работа для получения вы хотите. Быстрый тест показал, что скорость распознавания не так хороша, как скорость VeriLook от NeuroTechnology.

Malic - это другое программное обеспечение для распознавания лиц с открытым исходным кодом, которое использует дескрипторы Gabor Wavelet. Но последнее обновление для источника - 3 года.

С веб-сайта: "Malic - это программное обеспечение для распознавания лиц с открытым исходным кодом, которое использует вейвлет gabor. Это система распознавания лиц в реальном времени, основанная на системе оценки идентификации лица Malib и CSU (csuFaceIdEval). Использует библиотеку Malib для обработки изображений в реальном времени и некоторые из csuFaceIdEval для распознавания лиц."

Далее это может представлять интерес:

gaborboosting: Научная программа, применяемая для распознавания лиц с помощью алгоритма Габора Вейлета и АдаБоуста

Библиотека извлечения функций - FELib относится к "Аннотации лица с помощью трансдуктивного ядра Fisher Discriminant" ,

Ответ 4

Я бы подумал, что Eigenface, который вы уже делаете, - это путь, если вы хотите рассчитать расстояние между лицами. Вы можете попробовать различные подходы, такие как Поддержка векторной машины или Скрытая марковская модель. Я нашел страницу, в которой перечислены основные алгоритмы, которые могут быть использованы для распознавания лиц: Домашняя страница распознавания лиц.

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

Ответ 6

Вы должны посмотреть http://libccv.org/

Это довольно новый, но он предоставляет бесплатный API с открытым исходным кодом высокого уровня для обнаружения лиц.

(... и, смею сказать, довольно чертовски поразительно)

Edit: Стоит также отметить, что это одна из немногих библиотек, которые НЕ зависят от opencv и просто для пинков, вот копия кода для определения лица с страницы документации, чтобы дать вам представление о том, что участие:

#include <ccv.h>
int main(int argc, char** argv)
{
    ccv_dense_matrix_t* image = 0;
    ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
    ccv_bbf_classifier_cascade_t* cascade = ccv_load_bbf_classifier_cascade(argv[2]);         ccv_bbf_params_t params = { .interval = 8, .min_neighbors = 2, .accurate = 1, .flags = 0, .size = ccv_size(24, 24) };
    ccv_array_t* faces = ccv_bbf_detect_objects(image, &cascade, 1, params);
    int i;
    for (i = 0; i < faces->rnum; i++)
    {
        ccv_comp_t* face = (ccv_comp_t*)ccv_array_get(faces, i);
        printf("%d %d %d %d\n", face->rect.x, face->rect.y, face->rect.width, face->rect.y);
    }
    ccv_array_free(faces);
    ccv_bbf_classifier_cascade_free(cascade);
    ccv_matrix_free(image);
    return 0;
} 

Ответ 7

Я знаю, что прошло какое-то время, но для кого-то еще заинтересованного есть проект Faint, который в комплекте много (обнаружение, распознавание и т.д.) в хороший пакет программного обеспечения.

Ответ 8

Мы используем OpenCV. В нем также есть много предметов, не связанных с распознаванием лиц, но, будьте уверены, он действительно распознает лицо.

Ответ 9

Вы можете попробовать открыть библиотеку MVG, ее также можно использовать для нескольких интерфейсов.

Ответ 10

Следующим шагом будет FisherFaces. Попробуйте и проверьте, работают ли они на вас. Здесь хорошее сравнение.