Сегодня затраты на внедрение технологий безопасности и аналитики не всегда легко обосновывать даже в очень крупных компаниях.
Юрий Годына, основатель компании видеоаналитики Facemetric
Сегодня затраты на внедрение технологий безопасности и аналитики не всегда легко обосновывать даже в очень крупных компаниях. Однако это не взаимоисключающие задачи, и обе крайне важны для конкретных отделов — маркетинга и службы безопасности.
Когда мы соединяем функционально разные задачи по принципу «2 в 1», то у организаций появляется возможность сэкономить и «пошерить» высвобожденные средства на другие отделы (как минимум, внедрение подобной идеи гораздо проще защитить на совете директоров).
Специально для SecurityLab мы расскажем о том, как «в одной коробке» соединить два главных сценария — задачу безопасности и задачу аналитики, с технической точки зрения.
Представьте камеру, установленную в определенной зоне — на стене над входом. Камера снимает видеопоток и отправляет его на распознавание. Затем за дело берется специальный детектор — программный модуль “парсер”. Он перебирает кадры из видеопотока, и в каждом из них ищет лицо.
Следом за детектором идет еще один модуль — трекер. Его задача в том, чтобы из последовательности кадров выбрать удачные и собрать на человека “трек”, условное досье, которое расскажет о перемещении человека в кадре.
Например, человек попадает в объектив камеры. Это всего пара секунд — но их достаточно, чтобы камера сделала примерно 20 кадров. Трекер связывает кадры и собирает на этого человека трек — набор изображений его лица от первого до последнего момента появления в кадре.
В итоге мы имеем 20 кадров лица, из которых выбираются идеальные с технической точки зрения ракурсы: с удачным расположением головы, такие, где человек не отвернулся, не наклонился, где лицо не размазано и так далее. Некоторые даже удачные ракурсы технология может доработать дополнительно: например, довернуть голову в нужную нам сторону, максимально близко к анфасу.
И здесь наступает распознавание — то есть из картинки с лицом выделяется вектор признаков (набор байт, который характеризует это лицо), по которому мы ищем в базе данных похожие вектора.
Векторы размещаются в векторном пространстве. Условно можно представить их как множество точек на плоскости. Если точки располагаются близко друг к другу (расстояние между векторами минимально), то можно сделать вывод, что эти вектора характеризуют один и тот же объект.
Если же точки разнесены далеко, то скорее всего они никак друг с другом не связаны и характеризуют разные объекты.
Если нужно распознать эмоции, к описанному выше пайплайну просто добавятся новые шаги. После того, как лицо найдено, технология его классифицирует — прогоняет по одному или нескольким классификаторам.
Каждый классификатор дает нам информацию о человеке: один — о его возрасте, другой — о поле, третий — об эмоциональном состоянии, четвертый — о его прическе, пятый - о наличии защитной маски на лице и так далее. Чем больше классификаторов, тем более детальную характеристику мы получаем.
Технологии распознавания лиц решают две основные задачи: задачу безопасности и задачу аналитики посетителей/людей/прохожих.
Например, у нас есть сеть супермаркетов формата “у дома”. В одном из них у входа стоит камера. В день в точке проходит около 5000 человек, и среди них нам нужно “отлавливать” посетителей из “черного списка”, в который входит всего 30 человек. Это могут быть воришки, которые орудуют в ближайших магазинах, или преступники, которые находятся в оперативном розыске (обычно такие списки составляются сотрудниками сил безопасности магазина по своим данным или по данным федеральной службой исполнения наказаний либо МВД). Или, наоборот, это могут быть VIP-клиенты — то есть какое-то ограниченное количество лиц. Получается, что в задаче безопасности мы всегда работаем с условно короткими списками, их размер ограничен, наполнение регламентировано.
Вторая задача технологии распознавания — анализ потока людей. Нам важно узнать, сколько людей приходит, новые это или “возвращающиеся” клиенты, какого они пола и возраста.
Также у технологии распознавания текста есть и другие прикладные задачи: например, когда нам нужно опознать человека в системе контроля и управления доступом (СКУД) или системе учета рабочего времени (СУРВ). Подобные системы внедряются в бизнес-центрах, на предприятиях, скоро будут внедряться в московском метро — люди смогут без прикладывания билета, по распознаванию лица проходить через турникеты. Такую же систему можно интегрировать в домофон.
В процессе распознавания выделяются 2 вида ошибок — “ошибка первого рода” и “ошибка второго рода”. Эти статистические термины пришли из военной практики: при противовоздушной обороне ошибка первого рода — это когда зенитная батарея не определяет летящий самолет, как вражеский (опровержение верной гипотезы) — и самолет пролетает мимо и бомбит наш тыл. То есть “ошибка первого рода” — это “мы должны были его сбить врага, но не сбили, т.к. приняли за своего”.
“Ошибка первого рода”, это когда зенитная батарея видит самолет, принимает его за вражеский и сбивает — а потом оказывается, что это был свой самолет, т.е. произошло принятие ложной гипотезы. Это “мы сбили и обознались, но зато сняли риск уничтожения нашего тыла”.
В статистике эти ошибки есть всегда, и их уровень связан друг с другом. Поэтому при решении прикладных задач важно выбрать правильное соотношение ошибок первого и второго рода, достигая оптимального уровня вероятности совершения ошибки второго рода при допустимом уровне значимости (вероятности получения ошибки первого рода).
При распознавании в целях безопасности мы можем себе позволить иметь относительно высокое значение ошибки второго рода (выдать ложную сигнализацию о том, что зашел человек из черного списка, однако на самом деле это будет не он). Но мы максимально должны снизить возможность ошибки первого рода. Потому что для безопасности самое главное — не пропустить человека из черного списка.
В аналитике, наоборот, нам важнее допускать как можно меньше ошибок второго рода. Потому что если мы в каждом десятом человеке будем видеть кого-то другого, то мы будем выдавать недостоверную статистику.
Обычно эти задачи решаются порознь, даже с использованием разных аппаратных средств.
Однако часто заказчики приходят с просьбой решить обе этих проблемы одновременно. Обычно это ритейл компании с несколькими подразделениями: службе безопасности нужно искать воришек, а службе маркетинга — анализировать поток.
Мы нашли пути, как объединить решение двух задач, не потеряв качество распознавания: а именно — настроили оборудование так, чтобы использовать разные пороги похожести (то самое расстояние между векторами).
Для задачи безопасности (где мы снижаем вероятность ошибки первого рода и вынуждены считаться с ростом вероятности ошибок второго рода) мы используем один порог похожести — он заниженный. В случае с задачей аналитики порог похожести гораздо выше, чем в первом случае — а за счет постпроцессинга мы “вытягиваем” ошибку первого рода (тут уже появляется третий уровень порога).
Когда мы объединяем две разные задачи, мы просто используем разные пороги для разных задач и на разных этапах — чтобы убить двух зайцев сразу. При этом мы можем использовать дублирующие камеры (чтобы повысить вероятность обнаружения человека из черного списка) для безопасности, и они не несут погрешности в систему подсчета, создавая дубли.
Как правило, мы отталкиваемся от первой задачи — изначально мы решали задачу подсчета, затем перед нами появилась новая — подготовить систему так, чтобы она решала еще и задачу безопасности без потери качества первой.
Именно так совмещаются «в одной коробке» два главных сценария. Тема сейчас в тренде, потому что, во-первых, совмещение сейчас актуально для всех сфер. Во-вторых, зная принцип совмещения, можно перенести их и на другие инженерные решения. И, конечно, это позволит компании убить двух зайцев: сократить расходы, не исключая вопросы безопасности и аналитики.
Одно найти легче, чем другое. Спойлер: это не темная материя