1. Введение

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

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

В этом блоге создается возможность обнаруживать граффити в поездах с помощью Azure IoT Edge и Custom Vision AI. Это делается следующим образом:

  • Модель обнаружения граффити обучается с помощью Azure Custom Vision и экспортируется как модель TensorFlow.
  • Модель развернута как контейнер докеров на краю (камера, смоделированная виртуальной машиной Ubuntu)
  • Устройство Edge анализирует видео поездов на предмет граффити. Только при обнаружении граффити видео помещается в Blob on Edge и загружается в связанное хранилище Azure.
  • Когда видео находится в Azure, его можно обрабатывать в дальнейшем (извлекать текст из видео, отображать результаты на панели управления Power BI, см. Мой предыдущий блог)

Архитектуру проекта можно изобразить следующим образом:

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

  • 2. Создание и экспорт модели AI.
  • 3. Разверните модель AI как контейнер на периферийном устройстве.
  • 4. Вывод

2. Создание и экспорт модели AI.

Когнитивные службы Azure - это набор API-интерфейсов, которые можно внедрить в ваши приложения. Он содержит интеллектуальные алгоритмы распознавания речи, распознавания объектов в изображениях и языкового перевода. Также возможно создать свою собственную модель ИИ, расширив другую модель с помощью Custom Vision. Это можно рассматривать как добавление последнего настраиваемого слоя в нейронную сеть предварительно обученной модели распознавания изображений. В этом проекте предприняты следующие шаги:

  • 2а. Обучайте модель Custom Vision для обнаружения граффити в поездах.
  • 2b. Экспорт модели Custom Vision в виде файла докеров
  • 2c. Добавить экспортированную модель в проект Visual Studio Code

2а. Обучите и разверните индивидуальную модель зрения для обнаружения граффити в поездах

Перейдите на Веб-сайт Custom Vision и войдите в систему, используя свои учетные данные Azure AD. После входа в систему выберите создание проекта Custom Vision со свойствами классификация и мультикласс (один тег на изображение) ». Убедитесь, что вы выбрали General (compact) в качестве домена, иначе модель не может быть экспортирована как контейнер, см. Также ниже.

Затем загрузите следующие изображения в папку CognitiveServices / CustomVisionImages в следующем git-проекте:

https://github.com/rebremer/realtime_video_processing.git

В качестве первого шага добавьте в свой проект изображения граффити с тегами граффити. Во-вторых, добавьте изображения no_graffiti с тегом graffiti, а затем NEGATIVE в свой проект. Затем обучите модель, используя ускоренный курс, см. Также ниже.

Вы можете протестировать модель, нажав «Быстрый тест», а затем выбрав изображение из тестовой папки, используя проект git, который был загружен ранее.

2b. Экспорт модели Custom Vision в виде файла докеров

После обучения и тестирования модели вы можете создать конечную точку модели или экспортировать ее. В этом сценарии модель экспортируется как dockerfile. Перейдите в свой проект, выберите итерацию, которую вы хотите экспортировать, а затем выберите экспорт. Затем выберите экспорт модели в виде файла докеров, который содержит файл .pb TensorFlow.

В следующей главе модель добавляется в проект.

2c. Добавить экспортированную модель в проект Visual Studio Code

В этом проекте в качестве редактора используется Visual Studio Code. После его установки выберите Открыть папку, а затем выберите, чтобы открыть папку RealTime_Video_Processing из проекта github, который был клонирован на шаге 2а. Затем замените файлы model.pb и label.txt в папке EdgeCustomVision / modules / ImageClassifierService / app, см. Также ниже.

3. Разверните модель AI как контейнер на периферийном устройстве.

В этой части проект разворачивается на грани. В этой части блога расширяется следующий стандартный учебник Azure, и выполняются следующие шаги:

  • 3а. Установить предварительные версии
  • 3b. Установите пограничное устройство в IoT Hub
  • 3c. Установите модули на периферийное устройство

3а. Установить предварительные версии

Необходимо установить следующие предварительные версии:

  • Установите Azure Core Tools версии 2.x.
  • Установите Azure CLI. Для этого блога требуется Azure CLI версии 2.0 или более поздней. Запустите az --version, чтобы найти версию, которая у вас есть.
  • Установить Докер
  • Установите Расширение Azure IoT Edge: расширение, которое подключается к вашему Центру Интернета вещей и позволяет вам управлять устройствами Интернета вещей из Visual Studio Code.

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

az login
# Create resource group
az group create -n blog-rtvideoedge-rg -l westeurope
# Create storage account and container
az storage account create -n <stor name> -g blog-rtvideoedge-rg --sku Standard_LRS
az storage container create -n videoblob --account-name <stor name>
# Create IoT Hub
az iot hub create --resource-group blog-rtvideoedge-rg --name blog-rtvideoedge-iothub --sku F1
# Create Azure Container registry
az acr create -n <your unique acr name> -g blog-rtvideoedge-rg --sku Standard -l westeurope

3b. Установите пограничное устройство на IoT Hub

В этом блоге виртуальная машина Ubuntu будет служить устройством Edge. Выполните следующие команды

# Install extension
az extension add --name azure-cli-iot-ext
# Create VM that will serve as Edge device
az vm create --resource-group blog-rtvideoedge-rg --name blog-rtvideoedge-vm --image microsoft_iot_edge:iot_edge_vm_ubuntu:ubuntu_1604_edgeruntimeonly:latest --admin-username azureuser --generate-ssh-keys --size Standard_DS1_v2
# Open port such that video processing on Ubuntu VM can be seen in webbrowser
az network nsg rule create --resource-group blog-rtvideoedge-rg --nsg-name blog-rtvideoedge-vmNSG --name port_5012 --priority 1020 --destination-port-range 5012

Теперь добавьте виртуальную машину в качестве пограничного устройства в IoT Hub, используя следующие команды:

# Create edge registration in IoT Hub
az iot hub device-identity create --hub-name blog-rtvideoedge-iothub --device-id blog-rtvideoedge-vm --edge-enabled
# Retrieve keys from edge registration
az iot hub device-identity show-connection-string --device-id blog-rtvideoedge-vm --hub-name blog-rtvideoedge-iothub
# And add this key to your VM using the following command:
az vm run-command invoke -g blog-rtvideoedge-rg -n blog-rtvideoedge-vm --command-id RunShellScript --script "/etc/iotedge/configedge.sh '<device_connection_string from previous step>'"

Когда ваш Центр Интернета вещей и пограничное устройство будут созданы правильно, вы должны увидеть на портале следующее:

3c. Установите модули на периферийное устройство

В этой части блога на периферийное устройство будут установлены следующие модули:

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

Теперь найдите .env в папке EdgeCustomVision и заполните следующие переменные:

# Replace the value of these variables with your own container registry
                                            CONTAINER_REGISTRY_ADDRESS="<Your ACR address>"                       CONTAINER_REGISTRY_USERNAME="<Your ACR username>"                       CONTAINER_REGISTRY_PASSWORD="<Your ACR password>"                                               BLOB_STORAGE_CONNECTIONSTRING="<Your storage account key>"                       BLOB_STRORAGE_CONTAINER="videoblob"                                               PRIVATE_IP_VM="10.0.0.4"                                               LOCAL_STORAGE_NAME="localvideostor"                       LOCAL_STORAGE_KEY="<create string using https://generate.plus/en/base64?gp_base64_base%5Blength%5D=64>"

Затем выполните сборку всего решения, щелкнув файл deployment.edgecamera.template.json правой кнопкой мыши и выбрав Build and push IoT Edge Solution, см. Также ниже.

Если вы получили ошибку аутентификации, сначала выполните следующую команду в командной строке: az acr login --name <your acr> -g blog-rtvideoedge-rg

На следующем этапе создаются и отправляются два контейнера докеров (что может занять некоторое время) и создается новый config / deployment.edgecamera.json. Необходимо сделать следующие шаги:

  • Подключите его к своему Центру Интернета вещей из Visual Studio Code (для этого необходимо установить расширение IoT Edge, упомянутое в п. 2a)
  • Перейдите во вновь созданный config / deployment.edgecamera.jsonle, выберите Create Deployment for Single device и выберите граничное устройство, которое мы создали в 3b. Затем образы докеров будут созданы и развернуты на этом устройстве (что может занять некоторое время).

Если все прошло успешно, вы можете найти устройства на портале IoT, щелкнув IoT edge, см. Также ниже:

Впоследствии, когда вы просматриваете видео, анализируемое в реальном времени, посещая общедоступный IP-адрес виртуальной машины Ubuntu через порт 5012, см. Также ниже.

Обработку видео можно перезапустить с помощью ssh на вашей виртуальной машине с помощью ssh azureuser@<public ip ubuntu vm>и введите sudo docker start camera-capture. Для ведения журнала sudo docker logs camera-capture, journalctl -u iotedge и sudo systemctl status iotedge. Поскольку видео содержит граффити, оно помещается на край BLOB-объекта, который асинхронно загружает видео в прикрепленную учетную запись хранения BLOB-объектов. Затем его можно будет обработать дальше, как это сделать, смотрите в моем предыдущем блоге.

4. Вывод

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

  • Распознавание граффити осуществляется до края с использованием модели Custom Vision.
  • Только при обнаружении граффити видео добавляется в учетную запись хранилища Azure с помощью Blob on Edge.
  • Когда видео находится в Azure, идентификация номера выполняется с помощью OCR, а результаты отображаются в Power BI (см. Также мой предыдущий блог)

Архитектура проекта представлена ​​ниже.