В свое время мной был реализован проект вывода в веб геометрического положения всех сотрудников с анализом, кто сколько отработал в офисе: //infostart.ru/public/237336/. На входе этого решения - база данных событий засвета карточек СКУД (а также базы ЗУП, и ActiveDirectory). И это обстоятельство мешает сделать решение универсальным: в каждом офисном центре своя система СКУД с жестким ограничением прав на доступ. При всем желании руководства видеть на экране смартфона, кто где находится, прав на чтение данных СКУДа они могут и не дать человеку, которого они не знают лично, например. А сделать решение коробкой мешает тот факт, что баз СКУД существует большое множество - то есть нужно получать доступ и настраивать запросы на их таблицы.
Теперь, с развитием опен-сорсных технологий распознавания, родилась идея создать распознающий сервер, генерирующий базу данных событий по типу базы данных СКУДа. Это бы гарантировало универсальность решения. Но, забегая вперед, надо сказать, что это решение не может пока являться полной заменой СКУДу - ни одна технология распознавания не обеспечивает даже 99% точности. Но в любом случае это вопрос времени: комбинируя распознавание лица с распознаванием походки, например, в будущем смогут достигнуть точности 99,9% например и это уже будет выше, чем точность СКУДа. Поясню: я работал в реальном бизнес-парке и могу сказать, что постоянно есть поток ошибок, который "разгребается" вручную. У ошибок разные причины, но они всегда есть: как правило, это что-то типа "Иванов с Петровым случайно перепутали карты", или глюк оборудования, либо человек забыл карту, ему выдали гостевую, но в ней неправильно прописали фамилию. В общем, можно смело говорить, что реальная точность карточного СКУД не превышает 99,9%. Так что, по сути, когда-то наступит время, когда от карточного СКУДА откажутся по этой причине.
Технология распознавания лиц развивается (есть коммерческие решения, но они почему-то заоблачно дорогие, несмотря на существование открытого решения OpenFace), но под 1С еще ничего нет. Надо восполнить этот пробел. Наверное, многие видели публикацию на habrahabr "Обучение машины — забавная штука .." (https://habrahabr.ru/post/306568/). В сети есть куча проектов на основе OpenFace, взял некий шаблон за основу и его допилил под свои нужды. Прежде всего, необходима была интеграция с 1С для того, чтобы формировать базу данных событий типа "Камера А, лицо Б, время В". То есть по сути, то же самое, что мы видим в базе данных СКУД (откуда строится мое веб-решение (//infostart.ru/public/237336/), показывающее, кто где находится и сколько кто отработал в офисе.
Из всех версий Openface была выбрана одна, в которой реализуется распознавание онлайн по 2д-ландмаркам - его скомпилированная версия выложена тут в качетсве демки. Вы можете поиграться с этой версией и увидеть, насколько хорошо она осуществляет захват лиц. Я доработал проект так, что генерация события происходит только при появлении лица в кадре. Так же доработан был вывод информации о лице, таким образом, чтобы можно было интегрировать с 1С - каждое новое событие это новый файл. Для ускорения работы этот файловый поток размещен на виртуальном диске, очистка файлов выполняется алгоритмом из 1С, после того как проведен анализ и загружен лучший кадр в базу данных. Результат вы можете увидеть на прилагаемом видео (https://youtu.be/N3-OOevjkMc).
Для наглядности в 1С внедрен запуск звукового файла, соответствующего опознаному пользователю - компьютер говорит, кого видит (при просмотре звук в колонках сделайте потише, чтобы не испугаться).
Что мы получаем в итоге: система распознавания уже сейчас может быть создана на основе бесплатных технологий и может быть внедрена за небольшие деньги в любом бизнес-центре или бизнес-территории. Единственное ограничение - система не может быть использована как единственная и основная, она должна ставиться параллельно с карточным СКУДом. Со временем, с развитием опен-сорс проекта, наступит такой момент, что ее можно будет использовать как единственную, но практика показала, что пока этот момент не настал.
Отдельно следует написать про нейросетевое распознавание, ибо за ним будущее. Если вы провели мониторинг проекта OpenFace, то вы наверняка увидели его реализацию с нейросетью на Docker. Все это уже сейчас отлично работает и бесплатно, вопреки распространенному мнению, что это все должно очень дорого стоить. Если посмотреть на коммерческие реализации - это и MS Azure и отечественные фирмы (не помню название, да и не хочу им делать рекламу) - они предлагают решения в стиле "абонентская плата от 1000 уе" что необоснованно дорого (решение на Azure при этом в разы дешевле). Проблема тут не в том, что обученная нейросеть является ноу-хау, - как я написал выше, есть ее бесплатный вариант, проблема в интеграции. С Azure боятся иметь дело из-за отвратительной политики микрософта "сегодня работает - завтра нет, и бесполезно звонить на линию поддержки", а OpenFace работает в Docker под Ubuntu, и найти специалиста, чтобы он грамотно все это внедрил - это сложная проблема. Видимо, этим всем и объясняется высокая стоимость предлагаемых ныне коммерческих решений. Хотя понятно, что эти времена "срубания бабла на нейросетях" закончатся, тем быстрее, чем больше мы, простые программисты, будем внедрять за_недорого эти все удивительные, пока, технологии. Этой публикацией хотелось бы открыть обсуждение практических реализаций (на платформе 1С) систем распознавания на базе опен-сорсных технологий. Позже выложу ролики реальной эксплуатации этой системы в реальном офисе.