Практическое руководство: развертывание веб-приложения пространственного анализа

В этой статье вы узнаете, как развернуть веб-приложение, которое будет собирать данные пространственного анализа из Центра Интернета вещей и визуализировать их. Это позволяет выполнять полезные задачи в широком спектре сценариев и отраслей. Например, если компании нужно оптимизировать использование своего пространства на своей недвижимости, она может быстро создать решение для различных сценариев.

Из этого учебного курса вы узнаете следующее:

  • Развертывание контейнера пространственного анализа
  • Настройка работы и камеры
  • Настройка подключения Центра Интернета вещей в веб-приложении
  • Развертывание и тестирование веб-приложения

В этом приложении будут рассмотрены следующие сценарии:

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

Предварительные требования

Развертывание контейнера пространственного анализа

Выполните инструкции по настройке главного компьютера и подключите устройство IOT Edge к Центру Интернета вещей Azure.

Развертывание службы Центра Интернета вещей Azure в подписке

Сначала создайте экземпляр службы Центра Интернета вещей Azure с ценовой категорией "Стандартный" (S1) или "Бесплатный" (S0). Выполните инструкции ниже, чтобы создать экземпляр с помощью Azure CLI.

Укажите обязательные параметры.

  • Подписка: имя или идентификатор подписки Azure.
  • Группа ресурсов: создайте имя группы ресурсов.
  • Имя Центра Интернета вещей: создайте название Центра Интернета вещей.
  • Имя Центра Интернета вещей: созданное вами название Центра Интернета вещей.
  • Имя пограничного устройства: создайте имя для своего пограничного устройства.
az login
az account set --subscription <name or ID of Azure Subscription>
az group create --name "<Resource Group Name>" --location "WestUS"

az iot hub create --name "<IoT Hub Name>" --sku S1 --resource-group "test-resource-group"

az iot hub device-identity create --hub-name "<IoT Hub Name>" --device-id "<Edge Device Name>" --edge-enabled

Развертывание контейнера в Azure IoT Edge на главном компьютере

Далее нужно выполнить развертывание контейнера для пространственного анализа в качестве модуля IoT на главном компьютере посредством Azure CLI. Для процесса развертывания требуется файл манифеста развертывания, который описывает необходимые контейнеры, переменные и конфигурации для развертывания. Пример манифеста развертывания можно найти здесь (DeploymentManifest.json). Он содержит предварительно созданные конфигурации для всех сценариев.

Настройка переменных среды

Основная часть переменных среды для модуля IoT Edge уже заданы в примере файла DeploymentManifest.json по ссылке выше. В файле найдите указанные ниже переменные среды ENDPOINT и APIKEY. Замените значения на URI конечной точки и созданный ранее ключ API. Для параметра EULA (лицензионное соглашение) должно быть установлено значение "accept" (принять).

"EULA": { 
    "value": "accept"
},
"BILLING":{ 
    "value": "<Use the endpoint from your Computer Vision resource>"
},
"APIKEY":{
    "value": "<Use a key from your Computer Vision resource>"
}

Настройка параметров работы

Если вы используете образец DeploymentManifest.json, в котором уже есть все необходимые конфигурации (операции, URL-адреса записанных видеофайлов и зоны и т. д.), можно перейти к разделу Выполнение развертывания.

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

Сначала нужно внести изменения в файл DeploymentManifest.json и настроить режим работы. Например, ниже показана конфигурация для cognitiveservices.vision.spatialanalysis-personcount:

"personcount": {
    "operationId": "cognitiveservices.vision.spatialanalysis-personcount",
    "version": 1,
    "enabled": true,
    "parameters": {
        "VIDEO_URL": "<Replace RTSP URL here>",
        "VIDEO_SOURCE_ID": "<Replace with friendly name>",
        "VIDEO_IS_LIVE":true,
        "DETECTOR_NODE_CONFIG": "{ \"gpu_index\": 0 }",
        "SPACEANALYTICS_CONFIG": "{\"zones\":[{\"name\":\"queue\",\"polygon\":[<Replace with your values>], \"events\": [{\"type\":\"count\"}], \"threshold\":<use 0 for no threshold.}]}"
    }
},

После обновления манифеста развертывания установите камеру с помощью инструкций производителя, настройте ее URL-адрес, а также имя пользователя и пароль.

Затем для параметра VIDEO_URL задайте URL-адрес RTSP камеры и укажите учетные данные для подключения к ней.

Если на пограничном устройстве установлено более одного GPU, выберите тот GPU, на котором будет выполняться данная операция. Не забудьте сбалансировать нагрузку для операций таким образом, чтобы на одном GPU выполнялось не более 8 операций одновременно.

Затем настройте зону, в которой нужно подсчитать пользователей. Чтобы настроить многоугольник зоны, сначала с помощью инструкций производителя получите кадр с камеры. Чтобы определить каждую вершину многоугольника, выберите точку на кадре, возьмите координаты x и y точки относительно левого верхнего угла кадра и разделите их на соответствующие размеры кадра. Задайте результаты в качестве координат x и y вершины. Настроить конфигурацию многоугольников зоны можно в поле SPACEANALYTICS_CONFIG.

Это образец видеокадра, где показано, как вычисляются координаты вершин для кадра размером 1920:1080. Sample video frame

Вы также можете выбрать пороговое значение достоверности для подсчета обнаруженных людей и создания событий. Если вы хотите выводить все события, установите пороговое значение 0.

Выполнение развертывания

Теперь, когда манифест развертывания готов, используйте эту команду в Azure CLI для развертывания контейнера на главном компьютере в качестве модуля IoT Edge.

az login
az extension add --name azure-iot
az iot edge set-modules --hub-name "<IoT Hub name>" --device-id "<IoT Edge device name>" --content DeploymentManifest.json -–subscription "<subscriptionId>"

Укажите обязательные параметры.

  • Имя центра Интернета вещей: ваше имя центра Интернета вещей Azure
  • DeploymentManifest.json: имя вашего файла развертывания
  • Имя устройства IoT Edge: имя устройства IoT Edge вашего главного компьютера
  • Подписка: идентификатор или имя вашей подписки

Эта команда начнет развертывание, и вы сможете просмотреть его состояние в экземпляре Центра Интернета вещей Azure на портале Azure. До тех пор, пока устройство не закончит загрузку образов контейнеров и не начнет работать, может отображаться состояние 417 — конфигурация развертывания устройства не задана.

Проверка успешности развертывания

Найдите параметр Состояние среды выполнения в разделе "Параметры модуля IoT Edge" для модуля пространственного анализа в своем экземпляре Центра Интернета вещей на портале Azure. Убедитесь, для параметров Требуемое значение и Сообщаемое значение для состояния среды выполнения указано значение Running. Ниже показано, как это будет выглядеть на портале Azure.

Example deployment verification

На этом этапе контейнер пространственного анализа выполняет операцию. Он генерирует данные ИИ для операций и направляет эти сведения в качестве телеметрии в ваш экземпляр Центра Интернета вещей Azure. Чтобы настроить дополнительные камеры, можно обновить файл манифеста развертывания и выполнить развертывание еще раз.

Веб-приложение пространственного анализа

Веб-приложение пространственного анализа позволяет разработчикам быстро настроить учебное веб-приложение, разместить его в среде Azure и использовать для проверки событий E2E.

Создание образа Docker

Воспользуйтесь этими инструкциями для создания и отправки образа в реестр контейнеров Azure в подписке.

Шаги настройки

Чтобы установить контейнер, создайте новую Службу приложений Azure и введите необходимые параметры. Затем перейдите на вкладку Docker и выберите Один контейнер, а затем — Реестр контейнеров Azure. Используйте свой экземпляр Реестра контейнеров Azure, в который отправили образ выше.

Enter image details

Указав параметры выше, щелкните Проверка и создание и создайте приложение.

Настройка приложения

Дождитесь завершения установки и перейдите к ресурсу на портале Azure. В разделе Конфигурация добавьте следующие два параметра приложения.

  • EventHubConsumerGroup — строковое имя группы потребителей из Центра Интернета вещей Azure; вы можете создать новую группу потребителей в Центре Интернета вещей или использовать группу по умолчанию.
  • IotHubConnectionString — строка подключения к Центру Интернета вещей Azure; ее можно получить из раздела ключей в ресурсе Центра Интернета вещей Azure Configure Parameters

Добавив два эти параметра, нажмите кнопку Сохранить. Затем в меню навигации слева щелкните Проверка подлинности и авторизация и задайте требуемый уровень проверки подлинности. Рекомендуем использовать вариант Azure Active Directory (Azure AD) Express.

Тестирование приложения

Перейдите в службу Azure и убедитесь, что развертывание прошло успешно, а веб-приложение работает. Перейдите по настроенному URL-адресу (<yourapp>.azurewebsites.net) для проверки работающего приложения.

Test the deployment

Получение исходного кода PersonCount

Если вы хотите просмотреть или изменить исходный код для этого приложения, его можно найти на сайте GitHub.

Дальнейшие действия