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 (см. Также мой предыдущий блог)
Архитектура проекта представлена ниже.