iLeonidze
@iLeonidze
xbooster.ru

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

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

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

Очень буду рад, если подскажете какие-нибудь решения на JavaScript или Node.js с OpenCV. Хотя, PHP с его OpenCV тоже подойдут :)
  • Вопрос задан
  • 4548 просмотров
Решения вопроса 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 модели лица.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 21:53
30000 руб./за проект
23 нояб. 2024, в 21:49
1000 руб./в час
23 нояб. 2024, в 20:48
40000 руб./за проект