На выходе мы получили систему, которая узнает сотрудника, подошедшего к двери и, при разрешенном доступе, открывает дверь, а также записывает фото и время в журнал регистрации посещений. Система способна распознать одновременно несколько лиц в кадре и зарегистрировать всех разом.
Во-первых, система не умела распознавать "неизвестных". Но, так как в офисе могут присутствовать сотрудники подрядных организаций, хотелось бы контролировать и их посещения.
Во-вторых, скорость работы текущей системы была ограничена качеством снимка в Битрикс24, и, если лицо на фото нечеткое, то и распознавание происходило медленно, либо не происходило вообще.
В процессе эксплуатации новой системы возникла потребность в ее усовершенствовании.
Следовательно, требовалось реализовать функционал создания пользователя, который в дальнейшем будет идентифицироваться из записи в журнале о неизвестном лице. А для увеличения скорости работы необходимо, чтобы система обучалась на основе удачных и неудачных распознаваний.
В итоге система была значительно переработана. В качестве основы для построения моделей лиц была выбрана dlib. В отличии от предыдущей версии, в которой данные о моделях известных сотрудников хранились в оперативной памяти, и для обновления данных требовалась перезагрузка сервиса с загрузкой новых данных, в текущей системе все данные хранятся в СУБД PostgreSQL, и любое изменение данных о пользователе применяется моментально.
Таким образом, фоновые задачи изменяют данные о пользователях в режиме реального времени. Система приобрела модульную архитектуру, при проектировании которой мы следовали unix-way философии. Каждый модуль системы выполняет свою задачу, а результат выполнения передает другому модулю. Так у нас сформировалось несколько стандартных модулей, которые могут быть заменены или доработаны согласно потребностям.