Библиотека распознавания лиц
Я ищу бесплатную библиотеку распознавания лиц для университетского проекта. Я не ищу распознавания лиц. Я ищу фактическое признание. Это означает поиск изображений, которые содержат указанные лица или библиотеки, которые рассчитывают расстояния между определенными лицами.
В настоящее время я использую OpenCV для обнаружения лиц и грубый алгоритм Eigenface для распознавания. Но я подумал, что должно быть что-то с лучшей производительностью, чем самописанный алгоритм Eigenface. Я не говорю о скорости как о производительности, я ищу библиотеку с лучшими результатами, чем простой подход Eigenface.
Я взглянул на Faint, но, похоже, библиотека не очень многократно используется для моих собственных приложений.
Я доволен библиотекой на Python, Java, C++, C или чем-то в этом роде. Лучше всего было бы, если бы его можно было запустить на компьютере с Windows, потому что в данный момент я полагаюсь на некоторый внешний код только для Windows.
11 ответов
Вот список коммерческих поставщиков, которые предоставляют готовые пакеты для распознавания лиц, которые работают в Windows:
Cybula - информация об их распознавании лиц SDK. Это компания, основанная профессором университета, и их сайт выглядит непрофессионально. Там нет информации о ценах или демо, которые вы можете скачать. Вам нужно связаться с ними для получения информации о ценах.
NeuroTechnology - информация об их распознавании лица SDK. Эта компания имеет как предварительную информацию о ценах, так и фактическую 30-дневную пробную версию своего SDK.
Распознавание образов Питтсбурга - (приобретено Google) Информация об их SDK для отслеживания и распознавания лиц. Демонстрации, которые они предоставляют, помогут вам оценить их технологию, но не их SDSK. Вам нужно связаться с ними для получения информации о ценах.
Sensible Vision - информация об их SDK. Их сайт позволяет легко получить ценовое предложение, а также вы можете заказать оценочный комплект, который поможет вам оценить их технологию.
Обновить
OpenCV 2.4.2 теперь поставляется с очень новым cv:: FaceRecognizer. Пожалуйста, смотрите очень подробную документацию по адресу:
Оригинальный пост
Я выпустил libfacerec, современную библиотеку распознавания лиц для API OpenCV C++ (лицензия BSD). libfacerec не имеет дополнительных зависимостей и реализует метод Eigenfaces, метод Fisherfaces и гистограммы Local Binary Patterns. Части библиотеки будут включены в OpenCV 2.4.
Последняя версия libfacerec доступна по адресу:
Библиотека была написана для OpenCV 2.3.1 с учетом предстоящего OpenCV 2.4, поэтому я не поддерживаю версии OpenCV ранее 2.3.1. Этот проект представляет собой проект CMake с хорошо документированным API, также есть учебник по гендерной классификации. Вы можете увидеть HTML-версию документации по адресу:
Если вы хотите понять, как работают эти алгоритмы, вы можете прочитать мое Руководство по распознаванию лиц (включая примеры Python и GNU Octave/MATLAB):
В моем репозитории github есть также реализация алгоритмов Python и GNU Octave/MATLAB. Оба проекта в Facerec также включают несколько методов перекрестной проверки для оценки алгоритмов:
Соответствующие публикации:
- Тюрк М. и Пентланд А. Собственные лица за признание., Журнал когнитивной нейронауки 3 (1991), 71–86.
- Belhumeur, PN, Hespanha, J., и Kriegman, D. Eigenfaces против Fisherfaces: распознавание с использованием специфической для класса линейной проекции., Операции IEEE по анализу образов и машинному интеллекту 19, 7 (1997), 711–720.
- Ахонен, Т., Хадид, А., Пиетикайнен, М. Распознавание лиц с помощью локальных двоичных структур., Computer Vision - ECCV 2004 (2004), 469–481.
http://code.google.com/p/pam-face-authentication/ - модуль PAM для аутентификации лица: но для того, чтобы получить то, что вам нужно, потребуется определенная работа. Быстрый тест показал, что скорость распознавания не так хороша, как у VeriLook от NeuroTechnology.
Malic - еще одно открытое программное обеспечение для распознавания лиц, которое использует дескрипторы Gabor Wavelet. Но последнему обновлению источника исполнилось 3 года.
С веб-сайта: " Malic - это программное обеспечение для распознавания лиц с открытым исходным кодом, использующее вейвлет gabor. Это система распознавания лиц в реальном времени, основанная на Malib и CSU. Система оценки идентификации лиц (csuFaceIdEval). Использует библиотеку Malib для обработки изображений в реальном времени и некоторые из csuFaceIdEval для лица признание. "
Далее это может представлять интерес:
gaborboosting: научная программа, применяемая для распознавания лиц с использованием алгоритма Gabor Wavelet и AdaBoost
Библиотека извлечения признаков - FELib относится к "аннотации лица с помощью дискриминанта Фишера с трансдуктивным ядром"
Я думаю, что Eigenface, который вы уже делаете, это путь, если вы хотите рассчитать расстояние между лицами. Вы можете попробовать разные подходы, такие как опорная векторная машина или скрытая марковская модель. Я нашел страницу, на которой перечислены основные алгоритмы, которые можно использовать для распознавания лиц: Домашняя страница распознавания лиц.
Кроме того, когда вы говорите "лучшая производительность", вы подразумеваете скорость или точность? Какие у вас проблемы? Насколько различны данные? Являются ли они в основном фронтальным лицом или имеют профили?
Если ваш проект снят в кино или на ТВ, или на чем-то, что имеет сценарий, похоже, что вы определенно хотите посмотреть на работу Марка Эверингема и соавторов ., Программное обеспечение доступно, как и результаты в эпизоде Баффи.
Вы должны посмотреть на http://libccv.org/
Это довольно новый, но он предоставляет бесплатный API высокого уровня с открытым исходным кодом для обнаружения лиц.
(... и, осмелюсь сказать, чертовски удивительно)
Изменить: Стоит также отметить, что это одна из немногих библиотек, которая не зависит от 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;
}
Я знаю, что это было давно, но для всех, кто интересуется, есть проект Faint, который объединил многие из этих функций (обнаружение, распознавание и т. Д.) В хороший программный пакет.
Мы используем OpenCV. Там также есть много вещей, не способных распознавать лица, но, будьте уверены, они действительно распознают лица.
Вы можете попробовать открыть библиотеку MVG, она также может быть использована для нескольких интерфейсов.
Не совсем то, что вы ищете, но это может быть полезно для вас. Алгоритмы обнаружения лица / компьютерного зрения в MATLAB.
Следующим шагом будет FisherFaces. Попробуйте и проверьте, работают ли они на вас. Вот хорошее сравнение.