iLeonidze
@iLeonidze
xbooster.ru

Как распознавать человека на чистом Javascript или Node.JS?

Имеется HTML5-приложение на ходу распознающее лицо (или несколько лиц) с помощью HAAR Cascades object detection через вебкамеру. Используя координаты положения лица, можно отслеживать дальнейшее передвижение пользователя. Но вот незадача: хочется чтобы около каждого движущегося лица была подпись - кто это. Для этого можно создать своеобразную БД известных пользователей и при распознавании лица, получать его владельца из той самой БД. Сложность в том, что даже примерных решений не нашел :( Везде только обычные распознавалки положения лица и всё.

У Google+ есть функция "находить меня на фотографиях друзей". Собственно, реализована она наверное как-то так же.

Очень буду рад, если подскажете какие-нибудь решения на JavaScript или Node.js с OpenCV. Хотя, PHP с его OpenCV тоже подойдут :)
  • Вопрос задан
  • 4546 просмотров
Решения вопроса 1
barmaley_exe
@barmaley_exe
Если Вы умеете выделять области лиц на изображениях, то ваша задача сводится к классификации этих областей. Классификация — известная задача машинного обучения. А у OpenCV есть модуль для машинного обучения (если не знаете, какой выбрать, выбирайте Support Vector Machines).

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

Собственно, пайплайн сведётся к приблизительно следующему:
1. Находите область лица (тут используется ваш каскад Хаара)
2. По области строите какое-либо feature-представление лица (например, HoG-дескриптор, советую поискать в сети, какие фичи люди используют для лиц).
3. Это представлние скармливается обученному классификатору (обученому на таких же представлениях, разумеется)
4. Классификатор выдаёт желанный ответ.

Очень буду рад, если подскажете какие-нибудь решения на JavaScript или Node.js с OpenCV. Хотя, PHP с его OpenCV тоже подойдут
Известный мне OpenCV является библиотекой, написанной на C++, поэтому неясно, с чего бы биндинги для Node.JS отличались от биндингов для php. Хотя ни с теми, ни с другими я не встречался, могу ошибаться.

Если говорить о реализации, то я бы реализовал этот модуль целиком на C++, который бы скопилировал (хоть бы и как модуль Node.JS) и вызывал уже из ноды. Собственно, посмотрите туториалы OpenCV на эту тему, там что-то должно быть.

У Google+ есть функция "находить меня на фотографиях друзей". Собственно, реализована она наверное как-то так же.
Google и Facebook, вероятно, используют гораздо более крутые алгоритмы, чем я описал (ещё бы: ведь там работают лучшие из лучших). Например, Facebook'овый DeepFace строит 3D модели лица.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы