Видеонаблюдение для всех | Кодементор

DJ Абрие, 26 августа 2019 г.

TL;DR

Используйте модели глубокого обучения с открытым исходным кодом и облачные инструменты для демократизации наблюдения и аналитики в любом масштабе.

Введение

В последнее время в средствах массовой информации широко освещались кажущиеся безграничными возможности распознавания лиц, цифрового наблюдения и отслеживания крупными технологическими компаниями и государственными учреждениями (Facebook, американское АНБ и британский GCHQ).

Распознавание лиц представляет особый интерес для более широкой аудитории, поскольку оно неразрывно связано с биографической информацией человека. Система, которая дает вам доступ к личным данным (именам, профессиям, родственным связям, криминальному прошлому и т. д.) и осуществляет поиск лиц из вашего социального или профессионального круга, может быть полезна многим людям по разным причинам.

Приложения на личном уровне могут варьироваться от домашних систем безопасности, которые уведомляют вас, когда незнакомец находится на вашей территории, до систем общественного наблюдения (т.е. личной идентификации), которые отслеживают движение на улицах пригорода. Коммерческие приложения для малого бизнеса могут включать наблюдение за типичным покупателем в магазине и, таким образом, помогать компании в проведении маркетинговых исследований.

Частному лицу или малому бизнесу может показаться, что масштабируемая отраслевая система распознавания лиц и поиска данных недосягаема, но это не так.

Облако спешит на помощь

Ни один человек или малый бизнес не сможет нанять целую армию инженеров-программистов размером с Facebook для разработки системы распознавания лиц. Тем не менее, нанять одного внештатного инженера-программиста вполне возможно.
Облачные инструменты
С появлением облачных технологий у проницательного инженера-программиста есть множество инструментов в его пресловутом поясе инструментов. Как и любой хороший торговец, инженер-программист должен знать, какой инструмент использовать в каком контексте. Если он сделает это правильно, он сможет использовать всю мощь тысяч компьютеров, петабайты хранения данных, технологии машинного обучения, а также высокоскоростные сети в интересах своего клиента.

Облачные провайдеры, такие как Google Cloud и Amazon Web Services, имеют тысячи инженеров, работающих день и ночь, чтобы обеспечить и поддерживать эту инфраструктуру и инструменты. Таким образом, несмотря на то, что фрилансер или небольшая группа фрилансеров ограничены в рабочей силе, они могут использовать работу многих других.

Глубокое обучение: наука против. Заявление

Крупные облачные провайдеры, такие как AWS и Google Cloud, также предоставляют услуги машинного обучения, такие как распознавание лиц. Распознавание лиц не так распространено, но есть несколько замечательных организаций, таких как OpenFace, которые сделали высокопроизводительные модели распознавания лиц с глубоким обучением бесплатными.
Глубокое обучение распознаванию лиц
Поэтому от инженера-программиста не всегда требуется быть экспертом в области науки о данных или машинного обучения, чтобы использовать возможности этих моделей. Уже разработанные и обученные модели с открытым исходным кодом можно использовать в специальном наборе данных для получения впечатляющих результатов.

Приложив немного усилий, эти пользовательские модели можно преобразовать для работы в облачных функциях Google, которые предлагают масштабируемое и не требующее обслуживания решение для запуска этих моделей при больших рабочих нагрузках.

Компоненты нашего Скайнета

В этой статье мы подробно расскажем о системном проектировании масштабируемой и мощной системы распознавания лиц и хранения/поиска, которую может создать один инженер-программист за несколько недель. Мы будем использовать инструменты в Google Cloud вместе с моделями машинного обучения с открытым исходным кодом. Поскольку модели находятся в свободном доступе, а у Google Cloud есть бесплатный уровень для многих своих продуктов, наше программное обеспечение не будет стоить нам много (если вообще что-нибудь!), В то время как наша пропускная способность распознавания лиц невелика.

Аппаратное обеспечение

Мы предполагаем, что имеется какое-то оборудование для получения потока изображений, содержащих лица, в корзину Google Cloud Storage. Это можно сделать с помощью современных систем видеонаблюдения, настроив цифровой видеорегистратор для загрузки изображений в облако. В качестве альтернативы можно использовать парк RasberryPis, каждый со своей собственной веб-камерой или PiCam для одного и того же конца. См. его пример на распознавание лиц с помощью RasberryPi с PiCamили на как распознавать лица с помощью веб-камеры.

Система видеонаблюдения

Облачные компоненты



Мы будем использовать корзину облачного хранилища для хранения наших изображений. Хранение изображений в облаке позволяет получить к ним доступ из облачной функции.

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

Эта услуга имеет бесплатный уровень, который предлагает 5 ТБ хранилища данных бесплатно.


Логотип TensorFlow

С точки зрения моделей ML мы будем использовать реализация TensorFlow MTCNNдля качественного распознавания лиц. Тогда мы будем использовать OpenFaceреализации FaceNet от Google модель для распознавания лиц. Модель OpenFace — это реализация PyTorch, которая имеет системную зависимость от DLib — среды глубокого обучения на основе C++, которая доступна для функций Google Cloud. Поэтому мы преобразуем эту модель в модель TensorFlow. TensorFlow — это платформа глубокого обучения, разработанная Google и доступная для облачных функций.


Мы будем использовать Google Cloud Functions для запуска наших моделей глубокого обучения OpenFace Machine. Эти функции могут запускать JavaScript и Python и просты в развертывании, а Google обрабатывает масштабирование в фоновом режиме, чтобы убедиться, что функция может обрабатывать большие объемы. У этой службы есть бесплатный уровень, который предлагает первые 2 миллиона вызовов облачных функций (в месяц) бесплатно.



Google BigQuery — это мощная аналитическая база данных, которая отлично подходит для анализа данных в больших наборах данных. Мы будем использовать эту базу данных для хранения вложений лиц — набора чисел, однозначно характеризующих лицо. Мы также будем хранить метаданные с вложениями, такими как имена, геолокация, временные метки и т. д. Затем мы можем использовать SQL для запроса этих данных, чтобы найти нужные нам сведения. BigQuery взимает плату с пользователей в зависимости от объема данных, которые они запрашивают, а первый 1 ТБ запросов данных в месяц предоставляется бесплатно. Так как наши встраивания лиц будут занимать около 512 байт каждое, мы можем ежемесячно запрашивать около 244 миллионов вложений лиц бесплатно!



Вместе с BigQuery Google также бесплатно предлагает некоторое программное обеспечение для визуализации данных (называемое Data Studio). Мы можем использовать это для создания некоторых регулярных отчетов по нашим данным. Существует также полезный инструмент для визуализации данных о географическом местоположении на карте, который мы можем использовать, если изображения содержат метаданные о местоположении GPS.

Архитектура системы

Чтобы собрать все компоненты вместе, потребуются определенные навыки и тщательное тестирование. Схема высокого уровня для этой системы показана на диаграмме ниже.

Архитектура системы

Процесс работает следующим образом:

  1. Создавайте изображения на своем оборудовании и сохраняйте их в корзину Google Cloud Storage.

  2. Настройте облачную функцию для запуска новых изображений в корзине.
    а. Найдите лица на изображении с моделью MTCNN
    б. Преобразуйте лица, чтобы глаза и рот были в стандартном месте
    в. Для каждого лица извлеките встраивание лица FaceNet, используя преобразованную модель OpenFace.

  3. Сохраните встраивание и любые дополнительные метаданные обратно в файл в облачном хранилище.

  4. Загрузите встраивание и метаданные в BigQuery

  5. Составляйте отчеты из ваших данных в Google Data Studio

Возможные расширения

r информация для лиц

  • Автоматически группируйте вложения лиц, чтобы связать лица с одной и той же личностью.
  • Извлеките метаданные изображения (например, геолокацию) в облачную функцию и добавьте их в запись BigQuery.
  • Запустите несколько более продвинутых моделей для изображений, таких как определение возраста и пола.
    Кластеризация лиц

Вывод

Реализуя описанный выше дизайн, инженер-программист может использовать набор инструментов для реализации настраиваемого приложения распознавания лиц вместе с масштабируемой обработкой, хранением и извлечением данных. С бесплатными уровнями любой может начать работу только за стоимость оборудования.

Есть много интересных приложений для этой технологии

  • Защитите своих детей, сопоставив людей из ваших социальных кругов с публичными реестрами преступников или сексуальных преступников.
  • Помогите ритейлерам провести исследование рынка с помощью автоматизированного профилирования своих клиентов
  • Отправляйте себе оповещения, когда незнакомцы (неопознанные лица) появляются на вашем заднем дворе.

Мир возможностей ждет!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *