Ответы пользователя по тегу ООП
  • Как распознавать человека на чистом Javascript или Node.JS?

    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 модели лица.
    Ответ написан
    1 комментарий