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

Область применения:IoT Edge 1.4 checkmark IoT Edge 1.4

Важно!

IoT Edge 1.4 является поддерживаемым выпуском. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

Azure IoT Edge может сделать решение Интернета вещей более эффективным, перемещая рабочие нагрузки из облака в пограничную систему. Эта возможность хорошо подходит для служб, обрабатывающих большие объемы данных, таких как модели компьютерного зрения. Azure AI Пользовательское визуальное распознавание позволяет создавать пользовательские классификаторы изображений и развертывать их на устройствах в качестве контейнеров. Вместе эти две службы позволяют находить информацию из изображений или видеопотоков, не перенося все данные с сайта. Пользовательское визуальное распознавание предоставляет классификатор, сравнивающий изображение с обученной моделью для создания аналитических данных.

Например, Пользовательское визуальное распознавание на устройстве Edge IoT может определить, присутствует ли на шоссе более высокий или низкий уровень транспорта, чем обычно, или имеется ли в гараже парковочные места в ряду. Эти сведения можно использовать совместно с другой службой для принятия мер.

В этом руководстве описано следующее:

  • Создание классификатора изображений с помощью Пользовательского визуального распознавания.
  • Разработка модуля IoT Edge, который запрашивает веб-сервер Пользовательского визуального распознавания на вашем устройстве.
  • Отправка результатов классификатора изображений в Центр Интернета вещей.

Diagram - Tutorial architecture, stage and deploy classifier

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Необходимые компоненты

Совет

Это руководство представляет собой упрощенную версию примера проекта пользовательского визуального распознавания и Azure IoT Edge в Raspberry Pi 3. Это руководство предназначено для работы на облачной виртуальной машине и использует статические образы для обучения и тестирования классификатора изображений, что полезно для тех, кто только начинает оценивать пользовательское визуальное распознавание в IoT Edge. В примере проекта используется физическое оборудование и настраивается веб-канал динамической камеры для обучения и тестирования классификатора изображений, что полезно для тех, кто хочет опробовать более подробный реальный сценарий.

  • Настройте среду для разработки контейнеров Linux, выполнив инструкции по разработке модулей IoT Edge с помощью Visual Studio Code. После завершения работы с руководством необходимо иметь следующие предварительные требования, доступные в среде разработки:

    • Центр Интернета вещей ценовой категории "Бесплатный" или "Стандартный" в Azure.
    • Устройство, на котором выполняется Azure IoT Edge с контейнерами Linux. Вы можете воспользоваться краткими руководствами для настройки устройства Linux или Windows.
    • реестр контейнеров, например Реестр контейнеров Azure;
    • Visual Studio Code, настроенный с помощью расширений Azure IoT Edge и Центр Интернета вещей Azure. Средства Azure IoT Edge для расширения Visual Studio Code в режиме обслуживания.
    • Скачайте и установите совместимую систему управления контейнерами Docker на компьютере разработки. Настройте его для запуска контейнеров Linux.
  • Для разработки модуля IoT Edge со службой "Пользовательское визуальное распознавание" установите на компьютере разработки следующие дополнительные компоненты:

Создание классификатора изображений с помощью Пользовательского визуального распознавания

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

После создания и обучения классификатора изображений можно экспортировать его как контейнер Docker и развернуть на устройстве IoT Edge.

Создание нового проекта

  1. В веб-браузере перейдите на веб-страницу Пользовательской службы визуального распознавания.

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

  3. Выберите Создать проект.

  4. Создайте проект со следующими значениями:

    Поле Значение
    Имя. Укажите имя проекта, например EdgeTreeClassifier.
    Description Необязательное описание проекта.
    Ресурс Выберите одну из групп ресурсов Azure, включающую ресурс службы "Пользовательское визуальное распознавание", или создайте группу, если вы ее еще не добавили.
    Типы проектов Категория
    Типы классификации Multiclass (single tag per image) (Многоклассовая классификация (один тег на изображение))
    Домены General (compact) (Общий (компактный))
    Возможности экспорта Основные платформы (Tensorflow, CoreML, ONNX и т. д.)
  5. Выберите Создать проект.

Загрузка изображений и обучение классификатора

Для создания классификатора изображений требуется набор обучающих образов и тестовых образов.

  1. Клонируйте или скачайте примеры изображений из репозитория Cognitive-CustomVision-Windows на локальном компьютере разработки.

    git clone https://github.com/Microsoft/Cognitive-CustomVision-Windows.git
    
  2. Вернитесь к проекту Пользовательского визуального распознавания и щелкните Добавить изображения.

  3. Перейдите в репозиторий git, клонированный локально, и перейдите к первой папке изображений Cognitive-CustomVision-Windows / Samples / Images / Hemlock. Выберите все 10 изображений в папке, а затем откройте.

  4. Добавьте тэг hemlock для этой группы изображений и нажмите клавишу ВВОД для применения тега.

  5. Нажмите кнопку Upload 10 files (Передать 10 файлов).

    Upload hemlock tagged files to Custom Vision

  6. Когда изображения успешно загрузятся, нажмите кнопку Готово.

  7. Щелкните Добавить изображения снова.

  8. Перейдите ко второй папке изображений Cognitive-CustomVision-Windows / Samples / Images / Japanese Cherry. Выберите все 10 изображений в папке, а затем откройте.

  9. Добавьте тэг japanese cherry для этой группы изображений и нажмите клавишу ВВОД для применения тега.

  10. Нажмите кнопку Upload 10 files (Передать 10 файлов). Когда изображения успешно загрузятся, нажмите кнопку Готово.

  11. Когда оба набора изображений помечены и загружены, выберите Обучение для обучения классификатора.

Экспорт классификатора

  1. После тренировки классификатора щелкните Экспортировать на странице производительности классификатора.

    Export your trained image classifier

  2. Выберите DockerFile в качестве платформы.

  3. Укажите Linux при выборе версии.

  4. Выберите Экспорт.

    Export as DockerFile with Linux containers

  5. После завершения экспорта нажмите кнопку Скачать и сохраните ZIP-пакет локально на вашем компьютере. Извлеките все файлы из пакета. Эти файлы используются для создания модуля IoT Edge, содержащего сервер классификации изображений.

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

Создание решения IoT Edge

Теперь у вас есть файлы для версии контейнера вашего классификатора изображений на компьютере разработчика. В этом разделе вы настраиваете контейнер классификатора образов для запуска в качестве модуля Edge IoT. Вы также создаете второй модуль, развернутый вместе с классификатором изображений. Второй модуль выполняет запросы к классификатору и отправляет результаты в виде сообщений в Центр Интернета вещей.

Создание нового решения

Решение — это логический способ разработки и организации нескольких модулей для одного развертывания IoT Edge. Решение содержит код для одного или нескольких модулей и манифест развертывания, который объявляет, как настроить их на устройстве IoT Edge.

  1. В Visual Studio Code выберите представление>палитры команд, чтобы открыть палитру команд Visual Studio Code.

  2. В палитре команд введите и выполните команду Azure IoT Edge: New IoT Edge solution. В палитре команд укажите следующие сведения для создания решения:

    Поле значение
    Выбрать папку Выберите расположение на компьютере разработчика для Visual Studio Code, чтобы создать файлы решения.
    Введите название решения. Введите описательное имя для решения, например CustomVisionSolution, или примите значение по умолчанию.
    Выбор шаблона модуля Выберите Модуль Python.
    Указание имени модуля Присвойте модулю имя classifier.

    Важно, чтобы имя этого модуля было строчным. При обращении к модулям IoT Edge учитывается регистр. В этом решении используется библиотека, которая форматирует все запросы в нижнем регистре.
    Указание репозитория изображений Docker для модуля Репозиторий изображений включает в себя имя реестра контейнеров и имя образа контейнера. Образ контейнера предварительно заполняется на последнем шаге. Замените localhost:5000 значением сервера входа из реестра контейнеров Azure. Вы можете узнать сервер входа на странице "Обзор" реестра контейнеров на портале Azure.

    Окончательная строка выглядит так: <имя реестра>.azurecr.io/classifier.

    Provide Docker image repository

После этого окно VS Code открывает рабочую область решения IoT Edge.

Добавление учетных данных реестра

Файл среды хранит учетные данные для реестра контейнеров и совместно использует их со средой выполнения IoT Edge. Среде выполнения нужны эти учетные данные, чтобы извлечь частный образ на устройство IoT Edge.

Расширение IoT Edge пытается извлечь учетные данные реестра контейнеров из Azure и заполняет их в файле среды. Проверьте, включены ли ваши учетные данные. В противном случае добавьте их:

  1. В обозревателе Visual Studio Code откройте env-файл.
  2. Обновите поля с именем пользователя и паролем, скопированные из своего реестра контейнера Azure.
  3. Сохраните этот файл.

Примечание.

При работе с этим руководством используются учетные данные администратора для Реестра контейнеров Azure, что удобно для сценариев разработки и тестирования. Но после перехода в рабочую среду рекомендуется использовать для проверки подлинности вариант с минимальными правами, например субъект-службу. Дополнительные сведения см. в разделе Управление доступом к реестру контейнеров.

Выбор целевой архитектуры

Сейчас Visual Studio Code позволяет разрабатывать модули для устройств Linux AMD64 и Linux ARM32v7. Для каждого решения вам нужно выбрать одну целевую платформу, так как сборка и запуск контейнера для разных архитектур различается. По умолчанию используется Linux AMD64, который используется для этого руководства.

  1. Откройте палитру команд и найдите Azure IoT Edge: задайте целевую платформу по умолчанию для решения Edge или щелкните значок ярлыка в боковой строке в нижней части окна.

  2. В палитре команд выберите целевую архитектуру из списка параметров. В этом руководстве мы используем виртуальную машину Ubuntu в качестве устройства IoT Edge, поэтому сохраняйте значение amd64 по умолчанию.

Добавление классификатора изображений

Шаблон модуля Python в Visual Studio Code содержит пример кода, который можно запустить для тестирования IoT Edge. Этот код не будет использоваться в этом сценарии. Вместо этого выполните действия, описанные в этом разделе, чтобы заменить пример кода контейнером классификатора изображений, который был экспортирован ранее.

  1. В обозревателе файлов перейдите к скачанному и извлеченному пакету Пользовательского визуального распознавания. Скопируйте все содержимое из извлеченного пакета. Это должны быть две папки, app и azureml, и два файла, Dockerfile и README.

  2. В обозревателе файлов перейдите в каталог, в котором вы сообщили Visual Studio Code создать решение Edge IoT.

  3. Откройте папку модуля классификатора. Если вы использовали предложенные имена в предыдущем разделе, структура папок будет выглядеть так: CustomVisionSolution / modules / classifier.

  4. Вставьте файлы в папку classifier.

  5. Вернитесь к окну Visual Studio Code. В рабочей области решения теперь должны отображаться файлы классификатора изображений в папке модуля.

    Solution workspace with image classifier files

  6. Откройте файл module.json в папке классификатора.

  7. Обновите параметр платформы, чтобы он указывал на добавленный новый Dockerfile, и удалите все параметры, кроме AMD64, которая является единственной архитектурой, используемой в этом руководстве.

    "platforms": {
        "amd64": "./Dockerfile"
    }
    
  8. Сохранение изменений.

Создание моделируемого модуля камеры

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

Добавление и настройка нового модуля

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

  1. В том же окне Visual Studio Code используйте палитру команд для запуска Azure IoT Edge: Add IoT Edge Module. В палитре команд укажите следующую информацию для нового модуля:

    Prompt Значение
    Выбор файла шаблона развертывания Выберите файл deployment.template.jsonв папке CustomVisionSolution.
    Выбор шаблона модуля Выберите Модуль Python.
    Указание имени модуля Назовите модуль cameraCapture.
    Указание репозитория изображений Docker для модуля Замените localhost: 5000 на значение сервера входа из реестра контейнеров Azure.

    Окончательная строка выглядит так: <registry name>.azurecr.io/cameracapture.

    Окно Visual Studio Code загружает новый модуль в рабочей области решения и обновляет файл deployment.template.json. Теперь вы должны увидеть две папки модуля: classifier и cameraCapture.

  2. Откройте файл main.py в папке modules / cameraCapture.

  3. Замените весь файл следующим кодом. Этот пример кода отправляет запросы POST в службу обработки изображений, работающую в модуле классификатора. Мы предоставляем этот модуль контейнера с примером изображения для использования в запросах. Затем он упаковывает ответ в качестве сообщения Центра Интернета вещей и отправляет его в выходную очередь.

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license. See LICENSE file in the project root for
    # full license information.
    
    import time
    import sys
    import os
    import requests
    import json
    from azure.iot.device import IoTHubModuleClient, Message
    
    # global counters
    SENT_IMAGES = 0
    
    # global client
    CLIENT = None
    
    # Send a message to IoT Hub
    # Route output1 to $upstream in deployment.template.json
    def send_to_hub(strMessage):
        message = Message(bytearray(strMessage, 'utf8'))
        CLIENT.send_message_to_output(message, "output1")
        global SENT_IMAGES
        SENT_IMAGES += 1
        print( "Total images sent: {}".format(SENT_IMAGES) )
    
    # Send an image to the image classifying server
    # Return the JSON response from the server with the prediction result
    def sendFrameForProcessing(imagePath, imageProcessingEndpoint):
        headers = {'Content-Type': 'application/octet-stream'}
    
        with open(imagePath, mode="rb") as test_image:
            try:
                response = requests.post(imageProcessingEndpoint, headers = headers, data = test_image)
                print("Response from classification service: (" + str(response.status_code) + ") " + json.dumps(response.json()) + "\n")
            except Exception as e:
                print(e)
                print("No response from classification service")
                return None
    
        return json.dumps(response.json())
    
    def main(imagePath, imageProcessingEndpoint):
        try:
            print ( "Simulated camera module for Azure IoT Edge. Press Ctrl-C to exit." )
    
            try:
                global CLIENT
                CLIENT = IoTHubModuleClient.create_from_edge_environment()
            except Exception as iothub_error:
                print ( "Unexpected error {} from IoTHub".format(iothub_error) )
                return
    
            print ( "The sample is now sending images for processing and will indefinitely.")
    
            while True:
                classification = sendFrameForProcessing(imagePath, imageProcessingEndpoint)
                if classification:
                    send_to_hub(classification)
                time.sleep(10)
    
        except KeyboardInterrupt:
            print ( "IoT Edge module sample stopped" )
    
    if __name__ == '__main__':
        try:
            # Retrieve the image location and image classifying server endpoint from container environment
            IMAGE_PATH = os.getenv('IMAGE_PATH', "")
            IMAGE_PROCESSING_ENDPOINT = os.getenv('IMAGE_PROCESSING_ENDPOINT', "")
        except ValueError as error:
            print ( error )
            sys.exit(1)
    
        if ((IMAGE_PATH and IMAGE_PROCESSING_ENDPOINT) != ""):
            main(IMAGE_PATH, IMAGE_PROCESSING_ENDPOINT)
        else: 
            print ( "Error: Image path or image-processing endpoint missing" )
    
  4. Сохраните файл main.py.

  5. Откройте файл requirements.txt.

  6. Добавьте новую строку для библиотеки, включаемой в контейнер.

    requests
    
  7. Сохраните файл requirements.txt .

Добавление тестового изображения в контейнер

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

  1. Выберите тестовое изображение, расположенное в каталоге по такому пути: Cognitive-CustomVision-Windows / Примеры / Изображения / Тестировать.

  2. Скопируйте файл test_image.jpg.

  3. Перейдите к каталогу решения Edge IoT и вставьте тестовое изображение в папкуmodules / cameraCapture. Изображение должно находиться в той же папке, что и основной файл main.py, который вы изменили в предыдущем разделе.

  4. В Visual Studio Code откройте файл Dockerfile.amd64 модуля cameraCapture.

  5. После строки, которая устанавливает рабочий каталог, WORKDIR /app, добавьте следующую строку кода:

    ADD ./test_image.jpg .
    
  6. Сохраните файл Dockerfile.

Подготовка манифеста развертывания

До сих пор в этом руководстве вы обучали модель Пользовательского визуального распознавания для классификации изображений деревьев и упаковали ее, как модуль Edge IoT. Затем был создан второй модуль, который может запросить сервер классификации изображений и сообщить о результатах обратно в Центр Интернета вещей. Теперь вы готовы создать манифест развертывания, который расскажет устройству Edge IoT о том, как запускать и выполнять эти два модуля вместе.

Расширение Edge IoT для Visual Studio Code предоставляет шаблон в каждом решении Edge IoT, помогающем создать манифест развертывания.

  1. Откройте файл deployment.template.json в папке решения.

  2. Найдите раздел modules, который должен содержать три модуля: два, которые вы создали (classifier и cameraCapture), и один, который включен по умолчанию (tempSensor).

  3. Удалите модуль SimulatedTemperatureSensor со всеми параметрами. Этот модуль включен для предоставления примеров данных для тестовых сценариев, но в этом развертывании он не нужен.

  4. Если дали модулю классификации изображений имя, отличное от classifier, проверьте имя и убедитесь, что все буквы строчные. Модуль cameraCapture вызывает модуль классификатора с помощью библиотеки запросов, которая форматирует все запросы в нижнем регистре, а Edge IoT учитывает регистр.

  5. Обновите параметр createOptions для модуля cameraCapture следующим кодом JSON. Эта информация создает переменные среды в контейнере модуля, которые извлекаются в процессе main.py. Включив эти сведения в манифест развертывания, можно изменить изображение или конечную точку без необходимости перестроения образа модуля.

    "createOptions": "{\"Env\":[\"IMAGE_PATH=test_image.jpg\",\"IMAGE_PROCESSING_ENDPOINT=http://classifier/image\"]}"
    

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

  6. В нижней части файла обновите параметр routes для модуля $edgeHub. Необходимо направить результаты прогнозирования из cameraCapture в Центр Интернета вещей.

        "routes": {
          "cameraCaptureToIoTHub": "FROM /messages/modules/cameraCapture/outputs/* INTO $upstream"
        },
    

    Если дали второму модулю имя, отличное от cameraCapture, обновите значение маршрута для соответствия.

  7. Сохраните файл deployment.template.json.

Создание и отправка решения IoT Edge

Если оба модуля созданы и настроен шаблон манифеста развертывания, можно создать образы контейнеров и передать их в реестр контейнеров.

После того как образ находятся в реестре, можно развернуть решение на устройстве IoT Edge. Модули на устройстве можно задать с помощью Центра Интернета вещей, однако доступ к Центру Интернета вещей и устройствам можно также получить через Visual Studio Code. В этом разделе описано, как настроить доступ к Центр Интернета вещей затем использовать Visual Studio Code для развертывания решения на устройстве IoT Edge.

Сначала создайте и передайте ваше решение в реестр контейнеров.

  1. В Visual Studio Code откройте интегрированный терминал, последовательно выбрав элементы Вид>Терминал.

  2. Войдите в Docker. Для этого введите представленную ниже команду в окне терминала. Выполните вход в систему, используя имя пользователя, пароль и сервер входа из реестра контейнеров Azure. Вы можете получить эти значения в разделе Ключи доступа в разделе реестра на портале Azure.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    

    Возможно, появится предупреждение системы безопасности, в котором рекомендуется использовать --password-stdin. Для рабочих сценариев это лучшая методика, но мы не будем рассматривать ее в этом учебнике. Дополнительные сведения см. в описании команды docker login в справочнике.

  3. В обозревателе Visual Studio Code щелкните правой кнопкой мыши файл deployment.template.json и выберите "Сборка и отправка решения IoT Edge".

    Эта команда сборки и отправки позволяет запустить три операции. Во-первых, в решении создается папка с именем config, которая содержит полный манифест развертывания на основе информации из шаблона развертывания и других файлов решения. Во-вторых, выполняется docker build для сборки образа контейнера на основе подходящего файла dockerfile для целевой архитектуры. В-третьих, выполняется docker push для отправки образа в реестр контейнеров.

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

Развертывание модулей на устройстве

Используйте обозреватель Visual Studio Code и расширение Azure IoT Edge для развертывания проекта модуля на устройстве IoT Edge. У вас уже есть манифест развертывания, подготовленный для вашего сценария (файл deployment.amd64.json в папке config). Теперь вам осталось выбрать устройство для получения развертывания.

Убедитесь, что устройство IoT Edge работает.

  1. В обозревателе Visual Studio Code в разделе Центр Интернета вещей Azure разверните меню Устройства, чтобы отобразить список устройств Интернета вещей.

  2. Щелкните имя устройства IoT Edge правой кнопкой мыши, а затем выберите Create Deployment for Single Device (Создание развертывания для одного устройства).

  3. Выберите файл deployment.amd64.json в папке конфигурации и выберите манифест развертывания Edge. Не используйте файл deployment.template.json.

  4. Разверните меню Модули для своего устройства, чтобы просмотреть список развернутых и запущенных модулей. Нажмите кнопку обновления. Появятся новые модули classifier и cameraCapture, которые выполняются вместе с $edgeAgent и $edgeHub.

Кроме того, можно проверить, все ли модули отображаются и запущены на своем устройстве. На своем устройстве IoT Edge выполните следующую команду, чтобы увидеть состояние модулей.

iotedge list

На запуск модулей может потребоваться несколько минут. Среда выполнения IoT Edge должна получить новый манифест развертывания, извлечь образы модулей из среды выполнения контейнеров, а затем запустить каждый новый модуль.

Просмотр результатов классификации

Существует два способа просмотра результатов модулей: на самом устройстве, когда сообщения создаются и отправляются, или из Visual Studio Code по мере поступления сообщений в Центр Интернета вещей.

На устройстве просмотрите журналы модуля cameraCapture, чтобы просмотреть отправляемые сообщения и подтверждение того, что они были получены Центром Интернета вещей.

iotedge logs cameraCapture

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

admin@vm:~$ iotedge logs cameraCapture
Simulated camera module for Azure IoT Edge. Press Ctrl-C to exit.
The sample is now sending images for processing and will indefinitely.
Response from classification service: (200) {"created": "2023-07-13T17:38:42.940878", "id": "", "iteration": "", "predictions": [{"boundingBox": null, "probability": 1.0, "tagId": "", "tagName": "hemlock"}], "project": ""}

Total images sent: 1
Response from classification service: (200) {"created": "2023-07-13T17:38:53.444884", "id": "", "iteration": "", "predictions": [{"boundingBox": null, "probability": 1.0, "tagId": "", "tagName": "hemlock"}], "project": ""}

Вы также можете просматривать сообщения из Visual Studio Code. Щелкните имя устройства IoT Edge правой кнопкой мыши и выберите Start Monitoring Built-in Event Endpoint (Начать мониторинг встроенной конечной точки событий).

[IoTHubMonitor] [2:43:36 PM] Message received from [vision-device/cameraCapture]:
{
  "created": "2023-07-13T21:43:35.697782",
  "id": "",
  "iteration": "",
  "predictions": [
    {
      "boundingBox": null,
      "probability": 1,
      "tagId": "",
      "tagName": "hemlock"
    }
  ],
  "project": ""
}

Примечание.

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

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

Результаты модуля Пользовательское визуальное распознавание, отправляемые в виде сообщений из модуля cameraCapture, включают вероятность того, что изображение находится в виде дерева химблока или вишни. Так как на изображении находится болиголов, вы должны увидеть вероятность 1.0.

Очистка ресурсов

Если вы планируете перейти к следующей рекомендуемой статье, можно сохранить созданные и повторно используемые ресурсы и конфигурации. Это же устройство IoT Edge также можно использовать в качестве тестового устройства.

В противном случае вы можете удалить локальные конфигурации и ресурсы Azure, созданные в рамках этой статьи, чтобы избежать расходов.

Удаление ресурсов Azure

Удаление ресурсов и групп ресурсов Azure является необратимым. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы. Если вы создали центр Интернета вещей в группе ресурсов, содержащей ресурсы, которые нужно сохранить, удалите только ресурс Центра Интернета вещей, не удаляя всю группу ресурсов.

Удаление ресурсов:

  1. Войдите на портал Azure и щелкните Группы ресурсов.

  2. Выберите группу ресурсов, содержащую тестовые ресурсы IoT Edge.

  3. Просмотрите список ресурсов, содержащихся в группе ресурсов. Если вы хотите удалить их все, щелкните Удалить группу ресурсов. Если вы хотите удалить только некоторые из них, щелкните нужные ресурсы отдельно.

Следующие шаги

В этом руководстве вы обучили модель Пользовательского визуального распознавания и развернули ее как модуль на устройстве IoT Edge. Затем был создан второй модуль, который может запросить службу классификации изображений и сообщить о результатах обратно в Центр Интернета вещей.

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