Пару слов о том, что такое Simple UI и ActiveCV. Simple UI – это бесплатная платформа для быстрой разработки мобильных рабочих мест для учетных систем, а ActiveCV – специальный режим в ней, который позволяет перевести часть функций интерфейса в видеопоток – детектировать нужную информацию с камеры, отображать объекты на видеопотоке и делать все необходимое для бесшовного управления в режиме дополненной реальности. Например применительно к теме данной статьи она может подсветить рабочих, которые должны присутствовать на смене зелеными рамками, а посторонних – красными. Подробнее об этом режиме тут //infostart.ru/1c/articles/1427287/
Итак, эта штука нужна для того чтобы вписать идентификацию лиц в логику вашего приложения (в классические экраны или ActiveCV). Причем с точки зрения платформы это не отличается от например штрихкода или OCR – вы просто работаете с идентификатором объекта, в данном случае - лица. Можно настроить для авторизации по лицу (теперь работает фронтальная камера также), для авторизации получателя груза в перемещении по цеху, для контроля состава смены и т.д. и т.д. Пока QR коды не заставляют наносить на лоб(что безусловно облегчило бы идентификацию) приходится прибегать к различным CV-алгоритмам, но так как эти алгоритмы имеют параметры, да и вообще разнообразны, то иметь этот сервер где то в облаке или в какой то закрытой платформе нет смысла, конечно это это должен быть исходный код, который стоит у вас и вы что хотите то и делаете. Опять же хранение персональных данных - на вашем сервере а не где то там.
Схема работы такая же простая как с QR-кодом или штрихкодом – «определили в кадре лицо» -> «отослали на сервер распознавания» -> «получили идентификатор» , ну и дальше что то делаем с этим идентификатором в приложении. Приложение не насилует почем зря сервер бесконечно отправляя ему картинки – вместо этого оно осуществляет привязку к лицам – т.е. сопоставляет объект лица с полученным ID. Далее каждую секунду происходит уточнение по этому ID.
В качестве сервера распознавания используется простейший python-скрипт на OpenCV в оболочке Flask для организации REST API. В режиме обучения на сервер поступают картинки лиц (в бинарном виде, чтобы не заморачиваться на перекодирование) и идентификаторы лиц. Она их складывает в папочку (под каждое лицо своя папочка) и потом переобучает модель. Можно прерывать обучение, потом возобновлять.
Можно даже запустить этот скрипт на самом мобильном устройстве, тогда система будет автономной. Но обычно сервер делают как общий ресурс для разных рабочих мест. К тому же к подобному сервису можно подключить обычные или IP камеры.
О точности распознавания и плавности роаботы
Платформа берет на себя организацию инфраструктуры обучения и распознавания и обработку логики использования распознанных лиц - детектирование лиц в кадре, обработку и отображение в видеопотоке, обработчики событий и т.д. оставляя само распознавание за ее пределами в отдельном сервисе, который можно и нужно донастраивать под себя. Поэтому алгоритм который использован для примера – самый простой из возможных - канонический каскад Хаара. В той же инфраструктуре можно поменять на другие алгоритмы с использованием deep learning TensorFlow, FaceNet и т.д. Питон пожалуй самый подходящий инструмент для всего этого. Но на самом деле, все не так плохо с каскадом Хаара – он уверенно работает и скорость приличная.
С плавностью пришлось поработать более плотно - сейчас нет задержек и фризов даже на довольно слабых устройствах. Казалось бы - передача картинки через REST это долго, но нет - все работает не в UI-потоке, а в отдельных потоках и за счет разных ухищрений тормозов нет.
Установка и использование
Все необходимое включено в архив "Комплект разработчика" в основной статье. Саму платформу можно скачать из Goople Play или поставить через apk в комплекте разработчика.
Сервер распознавания
Самый лучший способ : 1)постаивть Python (например 3.7) 2) поставить все зависимости из файлика из архива с исходниками «pip install -r requirements.txt» 3) и запустить скрипт face.py из архива с исходниками. Этот способ лучше потому что 1) его можно дорабатывать 2) его можно запустить на любой платформе
Но если неохота это делать то можно разархивировать ДистрибутивWin64 и через cmd запустить face.exe
Приложение
Конфигурацию можно поставить из файлика РаспознаваниеЛиц.txt просто отправив на мобильное устройство и открыв с помощью SimpleUI или опубликовать через ваш сервис из Демо-базы в комплекте разработчика. Опять же из демо-базы лучше потому что конфигурацию можно дорабатывать. Но если нужно только посмотреть то сойдет и установка из файлика.
Далее в приложении надо указать адрес сервиса -IP машины на которой запущен скрипт и порт по образцу. После чего можно запускать обучение и потом распознавание.