Рубрики
Без рубрики

Создание решения распознавания изображений с Azure IoT Edge Edge и Azure Cognitive Services

Используйте Azure Custom Vision и Azure IoT Edge, чтобы построить опыт проверки самообслуживания для людей с нарушениями зрения. Помечено с Azure, Edge IoT, Python, компьютерное зрение.

Решение Создание решения распознавания изображений с Azure IoT Edge Edge и Azure Cognitive Services
Документация ПРОЧТИ МЕНЯ
Платформа Azure IoT Edge
Документация Azure Iot Edge, Azure Custom Vision, Azure Speech Services, Azure Функции на краю, Azure Stream Analytics, Azure Machine Услуги обучения
Видео обучение Включить краевой интеллект с Azure IoT Edge
Язык программирования Питон
Дата Как в апреле 2019 года

Raspberry Pi 3A + работает Azure IoT Edge Edge Classier

  • Требуется детали
  • Краткое руководство по установке для Raspberry Pi
  • Обзор решения
  • Azure IoT Edge в действии
  • Решение архитектурных соображений
  • Создание модели классификации фруктов
  • Экспорт модели зрительного видения Azure
  • Azure речи службы
  • Понимание структуры проекта
  • Создание раствора
  • Развертывание решения
  • Мониторинг раствора на устройстве Edge IoT
  • Мониторинг решения из лазурного краевого лезвия

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

Требуется детали

  1. Raspberry Pi 3B или лучше, USB-камера и динамик.

    Примечание. Решение будет работать на Raspberry Pi 3A +, он имеет достаточно мощности обработки, но устройство ограничено 512 МБ ОЗУ. Я бы порекомендовал Raspberry Pi 3B +, так как у него есть 1 ГБ ОЗУ и быстрее, чем старая модель 3B. Azure IoT Edge требует ARM32V7 или лучшего процессора. Он не будет работать на процессоре ARM32V6, найден в Raspberry Pi Zer.

  2. Кроме того, вы можете запустить решение на рабочем столе Linux – например, Ubuntu 18.04. Это решение требует, чтобы камера USB проходила в контейнер Docker, а также поддержку краевой поддержки Azure IoT. Так что на данный момент это Linux.

Краткое руководство по установке для Raspberry Pi

Если вы не хотите загружать и построить решение, вы можете использовать пребультацию Azure IoT Edge Configuration от My Github Репозиторий и используйте связанные изображения докера.

  1. Настроить Распресская растяжка Lite на Raspberry Pi. Обязательно настройте правильный Код страны В вашем wpa_supplicant.conf файл.
  2. Если у вас еще нет аккаунта Azure, а затем подпишитесь на Бесплатный аккаунт Azure . Если вы студент, немедленно подпишитесь на Azure для студентов Учетная запись без кредитной карты не требуется.
  3. Следуйте этим инструкциям Чтобы создать Azure IoT Hub и устройство Azure IoT-устройства.
  4. Установка Azure Iot Edge Runtime на Raspberry Pi
  5. Загрузите файл конфигурации развертывания, который описывает краевые модули Azure IoT и маршруты для этого решения. Открыть Развертывание.arm32v7.json Ссылка и сохраните развертывание .ARM32V7.json в известном месте на вашем компьютере.
  6. Установите . Azure Cli. и Расширение IOT для Azure CLI инструменты командной строки. Для получения дополнительной информации см. Развернуть модули Azure IoT Edge с Azure CLI
  7. Откройте консоль/терминал командной строки/терминала и измените каталог на место, где вы сохранили файл Deployment.ARM32V7.JSON.
  8. Наконец, из командной строки запустите следующую команду, обязательно замените [Устройство ID] и значения [HUB Name].
az iot edge set-modules --device-id [device id] --hub-name [hub name] --content deployment.arm32v7.json
  1. Модули теперь начнут развертываться в своей Raspberry Pi, светодиод Raspberry Pi Green Active будет мерцать до завершения развертывания. Примерно 1,5 ГБ модулей докеров будут загружены и распакованы на Raspberry Pi. Это разовая операция.

Обзор решения

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

Раствор проходит на Azure Iot Edge и состоит из ряда услуг.

  1. Модуль захвата камеры обрабатывает элементы сканирования с помощью камеры. Затем он вызывает модуль классификации изображения для идентификации элемента, затем вызов в модуле «Text to Shoe для преобразования этикетки элемента к речи, а имя отсканированного элемента воспроизводится на прилагаемом динамике.

  2. Модуль классификации изображений Запускает модель обучения машины Tensorflow, которая была обучена изображениями фруктов. Он обрабатывает классификацию отсканированных предметов.

  3. Текст в речевой модуль Преобразует название элемента, отсканированного из текста в речь, используя Azure Speech Services.

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

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

  6. Azure IoT. Хаб (Free Wier) используется для управления, развертывания и отчетности Azure IoT Edvents Edvents, выполняющих решение.

  7. Azure Speech Services (свободный уровень) используется для создания очень естественной речи, рассказывая покупателя, что они только что отсканировали.

  8. Azure Custom Vision Service использовался для создания модели фруктов, используемой для классификации изображений.

Решение построено на Azure IoT Edge который является частью службы HUB Azure IoT и используется для определения, защищенного и развертывания решения для краевого устройства. Он также обеспечивает облачный центральный мониторинг и отчетность пограничного устройства.

Основные компоненты для решения EDGE IOT являются: –

  1. IOT Edge Runtime который устанавливается на локальном краевом устройстве и состоит из двух основных компонентов. IOT Edge “Hub” , ответственный за коммуникации и IOT Edge “агент” , ответственный за бегать и модули мониторинга на краевом устройстве.

  2. Модули Отказ Модули – это единица развертывания. Модули представляют собой Docker Images, вытянутые из реестра, такого как Реестр контейнеров Azure или Docker Hub Отказ Модули могут быть разработаны на заказ, построены как Функции Azure или как экспортируемые услуги от Azure Custom Vision , Azure Machine Обучение или Azure Stream Analytics Отказ

  3. Маршруты. Маршруты определяют пути сообщений между модулями и с помощью ступицы Azure IoT.

  4. Характеристики. Вы можете установить «Желаемые» свойства для модуля из Hub Azure IoT. Например, вы можете установить пороговое свойство для предупреждения о температуре.

  5. Создание вариантов. Создание параметров Скажите Docker Runtime, какие параметры для запуска модуля. Например, вы, возможно, пожелаете открыть порты для порта для отдыха или портов отладки, определите пути к устройствам, таким как USB-камера, установите переменные среды, или включите режим привилегии для определенных аппаратных операций. Для получения дополнительной информации см. Докер API документация.

  6. Манифест развертывания Отказ Манифест развертывания все соединяет все вместе и сообщает Azure IoT Runtime Runtime, какие модули развертываются, откуда, плюс какие маршруты сообщений для настройки, а также что создают параметры для запуска каждого модуля.

Azure IoT Edge в действии

Решение архитектурных соображений

Таким образом, с этим обзором края Azure IoT здесь были мои соображения и ограничения для решения.

  1. Раствор должен масштабироваться от Raspberry Pi (работает Raspbian Linux) на ARM32V7, к моей среде разработки рабочего стола, к промышленному устройству Edge Iot, такое как те, которые были найдены в Certified IoT Edge Catalog Отказ

  2. Раствор нуждается в входе в камеру, я использовал USB WebCam для захвата изображения, поскольку он был поддерживаться на всех целевых устройствах.

  3. Модуль захвата камеры потребовал пропустить устройство USB Docker USB (не поддерживается Docker в Windows), так что Plus Targeting Rapberry Pi означал, что мне нужно, чтобы нацелить Azure Iot Edge на Linux.

  4. Я хотел, чтобы мой опыт разработчика отражал устройства, которые я ориентировал на плюс, что мне нужна поддержка докера для USB WebCam, поэтому я разработал решение в My Ubuntu 18.04 Desker Desktop. Смотри мой Ubuntu для Azure Developers гид.

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

Создание модели классификации фруктов

Azure Custom Vision Сервис – это простой способ создания модели обучения классификации изображений без необходимости быть наукой и экспертом по науке о машине. Вы просто загружаете несколько коллекций меченых изображений. Например, вы можете загрузить коллекцию банановых изображений и пометить их как «банана».

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

Экспорт модели зрительного видения Azure

Этот модуль «классификации изображений» включает в себя простую модель классификации фруктов, которая экспортировала из Azure Custom Vision. Для получения дополнительной информации прочитайте, как Экспортируйте свою модель для использования с мобильными устройствами . Важно выбрать один из доменов « Compact » с страницы настроек проекта В противном случае вы не сможете экспортировать модель.

Выполните следующие действия, чтобы экспортировать свою модель проекта Custom Vision.

  1. От Производительность Вкладка вашего проекта пользовательского видения Нажмите Экспорт Отказ

  2. Выберите DockerFile из списка доступных вариантов

  3. Затем выберите версию Linux DockerFile.

  1. Загрузите файл Docker и Unzip, и у вас есть готовый раствор докера с помощью API Python Flask API. Это было то, как я создал модуль классификации краев Azure IoT в этом решении. Слишком легко:)

Azure речи службы

Azure Speech Services Поддерживает как «речь для текста», так и «текст к речи». Для этого решения я использую текст до речи (F0) свободного уровня, который ограничен 5 миллионов символов в месяц. Вам нужно будет добавить речевую службу, используя портал Azure и «захватить ключ» из службы.

Откройте файл deployment.template.json и обновите Bingkey с помощью ключа, который вы скопировали из службы речи Azure.

  1. Клонировать этот репозиторий GitHUB.
   git clone https://github.com/gloveboxes/Creating-an-image-recognition-solution-with-Azure-IoT-Edge-and-Azure-Cognitive-Services.git
  1. Установите Azure Iot Runtime Runtime на рабочем столе или устройстве Linux (например, Raspberry Pi).

    Следуйте инструкциям на Разверните свой первый модуль EDGE IOT к устройству Linux X64 Отказ

  2. Установите следующие инструменты разработки программного обеспечения.

    1. Визуальный студийный код
    2. Плюс, Следующие расширения кода Visual Studio Code
      • Azure IoT Edge
      • JSON Tools Полезно для изменения «Создание параметров» для модуля.
    3. Docker Community Edition На вашей машине развития
  3. С Visual Studio Code откройте решение EDGE IOT, вы клонировали из GitHub к вашему разработчику Desktop.

Понимание структуры проекта

Ниже описано выделенные разделы проекта.

  1. Есть два модуля: CameracaptureOpencv и Imageclassifierservice.

  2. Файл Module.json определяет процесс сборки Docker, версию модуля и ваш реестр Docker. Обновление номера версии, нажатие обновленного модуля в реестр изображений, и обновление манифеста развертывания для устройства для краевого устройства, вызывающей среду Runtime Azure IoT, чтобы снять новый модуль на краевое устройство.

  3. Файл Deployment.template.json используется процессом сборки. Он определяет какие модули для создания, какие маршруты сообщений для настройки и какую версию Runtime Runtime IOT для запуска.

  4. Файл deployment.json генерируется из развертывания. Template.json и это Манифест развертывания

  5. Version.py в папке корневой папки проекта – это приложение HELPER, которое вы можете запустить на вашей машине разработки, которая обновляет номер версии каждого модуля. Полезно в качестве изменения номера версии – это то, что триггеры Azure Iot Edge Runtime, чтобы вытащить обновленный модуль, и легко забыть изменить номера версий модулей:)

Создание раствора

Вам необходимо убедиться, что изображение, которое вы планируете построить, соответствует, соответствуют целевой архитектуре процессора, указанную в файле Deployment.template.json.

  1. Укажите свой репозиторий Docker в файле Module.json для каждого модуля. Если вы используете поддерживаемую распределение EDGE Linux Azure IoT, например, Ubuntu 18.04 в качестве вашей машины для разработки, и у вас есть Azure IoT Edge, установленные локально, то я настоятельно рекомендую создать местный реестр Docker. Это значительно ускорит ваше развитие, развертывание и тестовый цикл.

    Чтобы создать местный реестр Docker для целей прототипирования и тестирования.

docker run -d -p 5000:5000 --restart always --name registry registry:2
  1. При нажатии изображения в локальный репозиторий докера Укажите Localhost: 5000.
"repository": "localhost:5000/camera-capture-opencv"
  1. Подтвердите архитектуру процессора, которую вы планируете построить. Из нижней панели кода Visual Studio Code Нажмите на выбранную в данный момент процессорную архитектуру, затем из всплывающего окна выберите нужную архитектуру процессора.

  2. Далее, постройте и нажимайте решение до Docker по правой мышке, щелкнув файл deployment.template.json и выберите « Build и push edge жрать ». Первая сборка будет медленной, так как Docker должен вытащить базовые слои в локальную машину. Если вы пересекаете ARM32V7, то первая сборка будет очень медленной, так как требования OpenC и Python должны быть скомпилированы. На быстрый процессор INTEL I7-8750H Crossor компиляции этого раствора займет около 40 минут.

Развертывание решения

Когда процесс сборки докера и Push завершили, выберите устройство HUB Azure IoT, вы хотите развернуть решение. Правая мышь щелкните файл deployment.json, найденный в папке конфигурации и выберите целевое устройство из раскрывающегося списка.

Мониторинг раствора на устройстве Edge IoT

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

iotedge list

Мониторинг решения из лазурного краевого лезвия

Вы можете отслеживать состояние модуля Edge Azure IoT из лезвия Hub Azure IoT на Azure Portal Отказ

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

Когда решение, наконец, развернуто на устройстве Edge IOT, система начнет рассказывать вам какие предметы, которые он думает, были отсканированы.

Поздравляем, вы развернули ваше первое решение Azure IoT-краевое решение!

Оригинал: “https://dev.to/azure/creating-an-image-recognition-solution-with-azure-iot-edge-and-azure-cognitive-services-4n5i”