[Сценарий] Детектор лиц на PHP без использования OpenCV

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

C_3AXAPOB
Сообщения: 510
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 101 раз

[Сценарий] Детектор лиц на PHP без использования OpenCV

Сообщение C_3AXAPOB » Чт июн 07, 2018 12:11 am

Дислеймер: это эксперимент!

Использованы материалы:
https://github.com/felixkoch/PHP-FaceDetector
https://www.ab-log.ru/smart-house/video ... -detection

Для определния лица используется метод Виолы—Джонса (англ. Viola–Jones object detection) — алгоритм, позволяющий обнаруживать объекты на изображениях в реальном времени. Подробней тут https://ru.wikipedia.org/wiki/%D0%9C%D0 ... 1%81%D0%B0 я так понял, что этот же метод использует OpenCV и файл haarcascade_frontalface_default.xml (о котором ниже) оттуда.

Сразу замечу, что метод не 100 процентный и работает по моим наблюдениям в ~80 процентах случаев.
У меня был случай когда за лицо был принят элемент обстановки.
Алгоритм может определять несколько лиц на снимке.

Нам понадобятся два файла:
FaceDetector.php - библиотека
haarcascade_frontalface_default.xml
скачать их можно тут: https://github.com/felixkoch/PHP-FaceDetector
поместить их надо в папку var/www/lib/

Так как я использую камеры подключенные через простые устройства то покажу на их примере. У меня камера привязана к датчику движения и при движении в комнате вызывается метод takeSnapshot.

Есть камера в простых устройствах -объект Camera01 у объекта есть метод takeSnapshot.
В методе takeSnapshot пишем

Код: Выделить всё

include("FaceDetector.php");
$dir='http://192.168.2.13/cms/images/'; //тут соответственно под себя переписываем
$snap=$dir.gg('Camera01.snapshot');
$detector = new FaceDetector();
$detector->scan($snap);
$faces = $detector->getFaces();
if(count($faces) > 0) {
say("Вижу лицо!",2); //count($faces) говорит о том сколько лиц на фото определено. Таким образом, можно определить сколько человек в комнате.
} else {
//say("Нет лиц!",2);
}
Далее лицо можно идентифицировать-распознать используя библиотеку FANN о том как это сделать написано тут https://www.ab-log.ru/smart-house/video ... -detection
О том как установить FANN смотрите в моей предыдущей теме.
За это сообщение автора C_3AXAPOB поблагодарили (всего 3):
xor (Чт июн 07, 2018 1:12 am) • savenko_egor (Чт июн 07, 2018 10:25 am) • directman66 (Чт июн 07, 2018 1:05 pm)
Рейтинг: 3.49%
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Детектор лиц на PHP без использования OpenCV

Сообщение xor » Чт июн 07, 2018 12:43 pm

Камера под потолком комнаты, при движении делает снимок 1280*960, общий план. Секунд 40 обрабатывает скрипт. В комнате много мест, которые опознаются как лица((. Людей ловит редко(
C_3AXAPOB
Сообщения: 510
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 101 раз

Re: Детектор лиц на PHP без использования OpenCV

Сообщение C_3AXAPOB » Чт июн 07, 2018 12:59 pm

Тут есть такой момент, распознавание проходит по модели haarcascade_frontalface_default.xml т.е. с небольшими вариациями лицо прямо смотрящего человека. Как например тут
face_track_frame.png
face_track_frame.png (249.85 КБ) 7168 просмотров
Теоретически можно попробовать подсунуть другие модели от opencv https://github.com/opencv/opencv/tree/m ... arcascades
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Детектор лиц на PHP без использования OpenCV

Сообщение xor » Чт июн 07, 2018 1:28 pm

Я попробую к домофону это прилепить, там наверняка крупнее лицо и алгоритм, пишут, требует не более 30 градусов поворота фэйса, что как раз
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Детектор лиц на PHP без использования OpenCV

Сообщение tarasfrompir » Чт июн 07, 2018 9:15 pm

xor писал(а):
Чт июн 07, 2018 12:43 pm
Камера под потолком комнаты, при движении делает снимок 1280*960, общий план. Секунд 40 обрабатывает скрипт. В комнате много мест, которые опознаются как лица((. Людей ловит редко(
А уменшить кратинку до 320\240 не можна ?. там ведь есть и настройка размера картинки...
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Детектор лиц на PHP без использования OpenCV

Сообщение tarasfrompir » Чт июн 07, 2018 9:18 pm

для C_3AXAPOB - Выложил ? Красавец... Да и хоть какое то решение уже есть....

есть еще одна библиотека , та побыстрее будет, но только одно лицо обрабатывает... зараз... хотя кто сказал что не можна определять лица до того момента пока движение кончится...
А со снапшота определять - не очень то и хорошо, лучше напрямую с потока это делать.
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Детектор лиц на PHP без использования OpenCV

Сообщение directman66 » Пт июн 08, 2018 6:40 am

А дальше? Нейросеть? По ссылке первого поста OpenCV, а в теме написано без использования OpenCV. Или задача только определить, есть ли лицо в объективе камеры?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
C_3AXAPOB
Сообщения: 510
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 101 раз

Re: Детектор лиц на PHP без использования OpenCV

Сообщение C_3AXAPOB » Пт июн 08, 2018 9:00 am

Дальше будет нейросеть. Opencv есть в реализации ab-log в приведенном мной примере он не используется.
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия
Благодарил (а): 3 раза
Поблагодарили: 154 раза

Re: Детектор лиц на PHP без использования OpenCV

Сообщение Aven » Пт июн 08, 2018 10:50 am

Сходная задача - распознавание номеров автотранспорта, считаю гораздо более простая, есть ли реализации? Хочу автоматически открывать ворота когда подъезжаю :) Есть конечно платный софт... но для дома сами понимаете :)
C_3AXAPOB
Сообщения: 510
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 101 раз

Re: Детектор лиц на PHP без использования OpenCV

Сообщение C_3AXAPOB » Пт июн 08, 2018 11:10 am

У opencv точно есть модель определения номера, опознать свой чужой можно через FANN.
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
Ответить