Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Вывод машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25

Ambarella создает SoC компьютерного зрения (систему на чипах) на основе очень эффективной архитектуры микросхем ИИ и CVflow, которая обеспечивает обработку Deep Neural Network (DNN), необходимую для таких сценариев использования, как интеллектуальный домашний мониторинг и интеллектуальные камеры наблюдения. Разработчики преобразуют модели, обученные с помощью фреймворков (таких как TensorFlow или MXNET), в формат Ambarella CVflow, чтобы иметь возможность запускать эти модели на периферийных устройствах. Amazon SageMaker Edge интегрировала набор инструментов Ambarella в свой рабочий процесс, что позволяет легко преобразовывать и оптимизировать модели для платформы.

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

Пример использования смарт-камеры

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

Процессоры Ambarella CVx, основанные на собственной архитектуре CVflow, обеспечивают высокую производительность логического вывода DNN при очень низком энергопотреблении. Такое сочетание высокой производительности и низкого энергопотребления делает их идеальными для устройств, которым требуются интеллектуальные функции на периферии. Модели машинного обучения необходимо оптимизировать и скомпилировать, чтобы целевая платформа могла работать на периферии. SageMaker Edge играет ключевую роль в оптимизации и преобразовании моделей машинного обучения в наиболее популярные платформы, чтобы их можно было запускать на периферийных устройствах.

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

Наше решение для интеллектуальных камер видеонаблюдения реализует оптимизацию модели машинного обучения и конфигурацию компиляции, работу во время выполнения, тестирование логических выводов и оценку на пограничном устройстве. SageMaker Edge обеспечивает оптимизацию и преобразование модели для периферийных устройств, чтобы они работали быстрее без потери точности. Модель машинного обучения может быть в любой среде, которую поддерживает SageMaker Edge. Для получения дополнительной информации см. Поддерживаемые платформы, устройства, системы и архитектуры.

Интеграция SageMaker Edge с инструментами Ambarella CVflow предоставляет дополнительные преимущества разработчикам, использующим SoC Ambarella:

  • Разработчикам не нужно заниматься обновлениями и обслуживанием набора инструментов компилятора, поскольку набор инструментов интегрирован и непрозрачен для пользователя.
  • Слои, которые не поддерживает CVflow, автоматически компилируются для запуска на ARM компилятором SageMaker Edge.

Следующая диаграмма иллюстрирует архитектуру решения:
Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Шаги по реализации решения следующие:

  1. Подготовьте пакет модели.
  2. Настройте и запустите задание компиляции модели для Ambarella CV25.
  3. Поместите упакованные артефакты модели на устройство.
  4. Проверьте вывод на устройстве.

Подготовьте пакет модели

Для целей Ambarella для SageMaker Edge требуется пакет модели, который содержит файл конфигурации модели с именем amba_config.json, калибровочные изображения и файл обученной модели машинного обучения. Этот файл пакета модели представляет собой сжатый файл TAR (*.tar.gz). Вы можете использовать Амазонка Мудрец ноутбука для обучения и тестирования моделей машинного обучения, а также для подготовки файла пакета модели. Чтобы создать экземпляр записной книжки, выполните следующие действия:

  1. На консоли SageMaker в ноутбук на панели навигации выберите Экземпляры ноутбуков.
    Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  2. Выберите Создать блокнот.
  3. Введите имя для вашего экземпляра и выберите мл.т2.средняя как тип экземпляра.

Этого экземпляра достаточно для тестирования и подготовки модели.

  1. Что касается Роль IAM, создать новый Управление идентификацией и доступом AWS (IAM), чтобы разрешить доступ к Простой сервис хранения Amazon (Amazon S3) или выберите существующую роль.
  2. Оставьте другие конфигурации по умолчанию и выберите Создать блокнот.

Когда статус InService, вы можете начать использовать свой новый экземпляр блокнота Sagemaker.

  1. Выберите Откройте JupyterLab для доступа к вашему рабочему пространству.

В этом посте мы используем предварительно обученную модель TFLite для компиляции и развертывания на пограничном устройстве. Выбранная модель представляет собой предварительно обученную модель обнаружения объектов SSD из зоопарка моделей TensorFlow в наборе данных COCO.

  1. Скачать преобразованная модель TFLite.

Теперь вы готовы загрузить, протестировать и подготовить пакет модели.

  1. Создайте новый блокнот с ядром conda_tensorflow2_p36 на панели запуска.
  2. Импортируйте необходимые библиотеки следующим образом:
    import cv2
    import numpy as np
    from tensorflow.lite.python.interpreter import Interpreter

  3. Сохраните следующий пример изображения как street-frame.jpg, создайте папку с именем calib_img в папке рабочей области и загрузите изображение в текущую папку.
  4. Загрузите содержимое загруженного пакета модели в текущую папку.
    Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  5. Выполните следующую команду, чтобы загрузить предварительно обученную модель TFLite и распечатать ее параметры, которые нам нужны для настройки нашей модели для компиляции:
    interpreter = Interpreter(model_path='ssd_mobilenet_v1_coco_2018_01_28.tflite')
    interpreter.allocate_tensors() input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()
    height = input_details[0]['shape'][1]
    width = input_details[0]['shape'][2] print("Input name: '{}'".format(input_details[0]['name']))
    print("Input Shape: {}".format(input_details[0]['shape'].tolist()))

    Вывод содержит имя ввода и форму ввода:

    Input name: 'normalized_input_image_tensor'
    Input Shape: [1, 300, 300, 3]

  6. Используйте следующий код, чтобы загрузить тестовое изображение и выполнить вывод:
    image = cv2.imread("calib_img/street-frame.jpg")
    image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    imH, imW, _ = image.shape
    image_resized = cv2.resize(image_rgb, (width, height))
    input_data = np.expand_dims(image_resized, axis=0) input_data = (np.float32(input_data) - 127.5) / 127.5 interpreter.set_tensor(input_details[0]['index'], input_data)
    interpreter.invoke() boxes = interpreter.get_tensor(output_details[0]['index'])[0]
    classes = interpreter.get_tensor(output_details[1]['index'])[0]
    scores = interpreter.get_tensor(output_details[2]['index'])[0]
    num = interpreter.get_tensor(output_details[3]['index'])[0]

  7. Используйте следующий код, чтобы визуализировать обнаруженные ограничивающие рамки на изображении и сохранить полученное изображение как street-frame_results.jpg:
    with open('labelmap.txt', 'r') as f: labels = [line.strip() for line in f.readlines()] for i in range(len(scores)): if ((scores[i] > 0.1) and (scores[i] <= 1.0)): ymin = int(max(1, (boxes[i][0] * imH))) xmin = int(max(1, (boxes[i][1] * imW))) ymax = int(min(imH, (boxes[i][2] * imH))) xmax = int(min(imW, (boxes[i][3] * imW))) cv2.rectangle(image, (xmin, ymin), (xmax, ymax), (10, 255, 0), 2) object_name = labels[int(classes[i])] label = '%s: %d%%' % (object_name, int(scores[i]*100)) labelSize, baseLine = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.7, 2) label_ymin = max(ymin, labelSize[1] + 10) cv2.rectangle(image, (xmin, label_ymin-labelSize[1]-10), (xmin + labelSize[0], label_ymin+baseLine-10), (255, 255, 255), cv2.FILLED) cv2.putText(image, label, (xmin, label_ymin-7), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 0), 2) cv2.imwrite('street-frame_results.jpg', image)

  8. Используйте следующую команду, чтобы показать изображение результата:
    Image(filename='street-frame_results.jpg') 

Вы получите результат вывода, подобный следующему изображению.
Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Наша предварительно обученная модель TFLite обнаруживает объект автомобиля из кадра камеры видеонаблюдения.

Мы закончили тестирование модели; Теперь давайте упакуем модель и файлы конфигурации, которые требуются Amazon Sagemaker Neo для целей Ambarella.

  1. Создайте пустой текстовый файл с именем amba_config.json и используйте для него следующий контент:
    { "inputs": { "normalized_input_image_tensor": { "shape": "1, 300, 300, 3", "filepath": "calib_img/" } }
    }

Этот файл является файлом конфигурации компиляции для Ambarella CV25. filepath ценность внутри amba_config.json должен соответствовать calib_img имя папки; несоответствие может привести к сбою.

Содержимое пакета модели готово.

  1. Используйте следующие команды, чтобы сжать пакет в файл .tar.gz:
    import tarfile
    with tarfile.open('ssd_mobilenet_v1_coco_2018_01_28.tar.gz', 'w:gz') as f: f.add('calib_img/') f.add('amba_config.json') f.add('ssd_mobilenet_v1_coco_2018_01_28.tflite')

  2. Загрузите файл в автоматически созданную SageMaker корзину S3 для использования в задании компиляции (или в указанную вами корзину S3):
    import sagemaker
    sess = sagemaker.Session()
    bucket = sess.default_bucket() print("S3 bucket: "+bucket)
    prefix = 'raw-models'
    model_path = sess.upload_data(path='ssd_mobilenet_v1_coco_2018_01_28.tar.gz', key_prefix=prefix)
    print("S3 uploaded model path: "+model_path)

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

Скомпилируйте модель для Ambarella CV25.

Для запуска задания компиляции выполните следующие шаги:

  1. На консоли SageMaker в вывод на панели навигации выберите Работа по компиляции.
    Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  2. Выберите Создать задание компиляции.
  3. Что касается Название работывведите имя.
  4. Что касается Роль IAM, создайте роль или выберите существующую роль, чтобы предоставить Amazon S3 разрешение на чтение и запись файлов моделей.
    Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  5. В Конфигурация входа раздел, для Расположение артефактов модели, введите путь S3 к загруженному файлу пакета модели.
  6. Что касается Конфигурация ввода данных, войти {"normalized_input_image_tensor":[1, 300, 300, 3]}, который является формой входных данных модели, полученной на предыдущих шагах.
  7. Что касается Фреймворк машинного обучения, выберите TFLite.
    Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  8. В Конфигурация выхода раздел, для Целевое устройство, выберите свое устройство (amba_cv25).
  9. Что касается S3 Расположение выхода, введите папку в корзине S3 для сохранения скомпилированной модели.
    Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  10. Выберите Отправить чтобы начать процесс компиляции.

Время компиляции зависит от размера вашей модели и архитектуры. Когда ваша скомпилированная модель будет готова в Amazon S3, Статус: столбец отображается как COMPLETED.

Если статус компиляции показывает FAILED, Ссылаться на Устранение ошибок Ambarella для отладки ошибок компиляции.

Поместите артефакты модели на устройство

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

В консоли Amazon S3 загрузите скомпилированный пакет модели, а затем извлеките и перенесите артефакты модели на свое устройство, чтобы начать использовать его с приложением для вывода периферийного машинного обучения.

Проверка вывода машинного обучения на устройстве

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

Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Заключение

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

В качестве следующего шага вы можете начать работу с SageMaker Edge и Ambarella CV25, чтобы включить машинное обучение для периферийных устройств. Вы можете расширить этот вариант использования с помощью функций разработки Sagemaker ML, чтобы создать сквозной конвейер, включающий пограничную обработку и развертывание.


Об авторах

Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Эмир Аяр — ведущий архитектор Edge Prototyping в команде AWS Prototyping. Он специализируется на оказании помощи клиентам в создании решений IoT, Edge AI и Industry 4.0, а также на внедрении лучших архитектурных практик. Он живет в Люксембурге и любит играть на синтезаторах.

Выводы машинного обучения на периферии с помощью Amazon SageMaker Edge и Ambarella CV25 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Динеш Баласубраманиам отвечает за маркетинг и поддержку клиентов семейства систем на кристалле безопасности Ambarella, обладая опытом в области системной инженерии, разработки программного обеспечения, сжатия видео и дизайна продуктов. Динеш Он получил степень магистра электроэнергетики в Техасском университете в Далласе, специализируясь на обработке сигналов.

Отметка времени:

Больше от Машинное обучение AWS