Перейти к содержимому

Sony IMX500 Экспорт для Ultralytics YOLOv8

В этом руководстве рассказывается об экспорте и развертывании моделей Ultralytics YOLOv8 в ИИ-камеры Raspberry Pi, оснащенные сенсором Sony IMX500.

Развертывание моделей компьютерного зрения на устройствах с ограниченной вычислительной мощностью, таких как Raspberry Pi AI Camera, может оказаться непростой задачей. Использование формата модели, оптимизированного для более быстрой работы, имеет огромное значение.

Формат модели IMX500 разработан таким образом, чтобы потреблять минимум энергии, обеспечивая при этом высокую производительность нейронных сетей. Он позволяет оптимизировать твои Ultralytics YOLOv8 модели для высокоскоростных и маломощных выводов. В этом руководстве мы расскажем тебе о том, как экспортировать и развернуть твои модели в формат IMX500, облегчив тем самым их работу на Raspberry Pi AI Camera.

Камера искусственного интеллекта Raspberry Pi

Почему тебе стоит экспортировать в IMX500

Интеллектуальный датчик зрения IMX500 от Sony - это переломное оборудование в области обработки краевого ИИ. Это первый в мире интеллектуальный датчик зрения с возможностями искусственного интеллекта на кристалле. Этот датчик помогает преодолеть множество проблем в области краевого ИИ, включая узкие места в обработке данных, проблемы конфиденциальности и ограничения производительности.
В то время как другие датчики просто передают изображения и кадры, IMX500 рассказывает целую историю. Он обрабатывает данные непосредственно на датчике, позволяя устройствам генерировать выводы в режиме реального времени.

Экспортная камера Sony IMX500 для моделей YOLOv8

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

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

IMX500 Ключевые особенности:

  • Вывод метаданных: Вместо того чтобы передавать только изображения, IMX500 может выводить как изображения, так и метаданные (результат вывода), а также может выводить только метаданные, чтобы минимизировать размер данных, уменьшить пропускную способность и снизить затраты.
  • Решает проблемы конфиденциальности: Обрабатывая данные на устройстве, IMX500 решает проблемы конфиденциальности, что идеально подходит для человекоориентированных приложений, таких как подсчет людей и отслеживание занятости.
  • Обработка в реальном времени: Быстрая обработка данных на датчиках поддерживает принятие решений в реальном времени, что идеально подходит для приложений с краевым ИИ, таких как автономные системы.

Прежде чем начать: Чтобы добиться наилучших результатов, убедись, что твоя модель YOLOv8 хорошо подготовлена к экспорту, следуя нашему руководству по подготовке модели, руководству по подготовке данных и руководству по настройке гиперпараметров.

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

Экспортируй модель Ultralytics YOLOv8 в формат IMX500 и проведи расчеты с экспортированной моделью.

Примечание

Здесь мы делаем вывод, чтобы убедиться, что модель работает так, как ожидалось. Однако для развертывания и проведения анализа на камере Raspberry Pi AI Camera переходи к разделу "Использование экспорта IMX500" в разделе "Развертывание".

Пример

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="imx")  # exports with PTQ quantization by default

# Load the exported model
imx_model = YOLO("yolov8n_imx_model")

# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolov8n.pt format=imx

# Run inference with the exported model
yolo predict model=yolov8n_imx_model source='https://ultralytics.com/images/bus.jpg'

В процессе экспорта будет создана модель ONNX для проверки квантования, а также каталог с именем <model-name>_imx_model. В эту директорию войдут packerOut.zip файл, который необходим для упаковки модели для развертывания на оборудовании IMX500. Кроме того, файл <model-name>_imx_model В папке будет находиться текстовый файл (labels.txt), в котором перечислены все метки, связанные с моделью.

yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt

Аргументы

При экспорте модели в формат IMX500 ты можешь указать различные аргументы:

КлючЗначениеОписание
formatimxФормат, в который нужно экспортировать (imx)
int8TrueВключи квантование INT8 для модели (по умолчанию: True)
imgsz640Размер изображения для входа в модель (по умолчанию: 640)

Использование экспорта IMX500 в развертывании

После экспорта модели Ultralytics YOLOv8n в формат IMX500 ее можно развернуть на Raspberry Pi AI Camera для получения выводов.

Аппаратные предпосылки

Убедись, что у тебя есть перечисленное ниже оборудование:

  1. Raspberry Pi 5 или Raspberry Pi 4 Model B
  2. Камера искусственного интеллекта Raspberry Pi

Подключи камеру Raspberry Pi AI к 15-контактному разъему MIPI CSI на Raspberry Pi и включи питание Raspberry Pi.

Необходимые условия для работы с программным обеспечением

Примечание

Это руководство было протестировано с Raspberry Pi OS Bookworm, запущенной на Raspberry Pi 5.

Шаг 1: Открой окно терминала и выполни следующие команды, чтобы обновить программное обеспечение Raspberry Pi до последней версии.

sudo apt update && sudo apt full-upgrade

Шаг 2: Установи прошивку IMX500, которая необходима для работы датчика IMX500, вместе с инструментом упаковщика.

sudo apt install imx500-all imx500-tools

Шаг 3: Установи необходимые условия для запуска picamera2 приложение. Это приложение мы будем использовать позже для процесса развертывания.

sudo apt install python3-opencv python3-munkres

Шаг 4: Перезагрузи Raspberry Pi, чтобы изменения вступили в силу.

sudo reboot

Упакуй модель и разверни на камеру искусственного интеллекта

После получения packerOut.zip После конвертации IMX500 ты можешь передать этот файл в инструмент упаковщика, чтобы получить RPK-файл. Затем этот файл можно развернуть непосредственно на AI-камере, используя picamera2.

Шаг 1: Упакуй модель в RPK-файл

imx500-package -i <path to packerOut.zip> -o <output folder>

Вышеописанное сгенерирует network.rpk файл в указанной выходной папке.

Шаг 2: Клонирование picamera2 Установи его и перейди к примеру imx500.

git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e .  --break-system-packages
cd examples/imx500

Шаг 3: Запусти обнаружение объектов YOLOv8 , используя файл labels.txt, который был создан во время экспорта IMX500.

python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy –labels <path to labels.txt>

После этого ты сможешь увидеть живые результаты умозаключений в следующем виде

Умозаключение по камере искусственного интеллекта Raspberry Pi

Бенчмарки

YOLOv8 Бенчмарки, приведенные ниже, были выполнены командой Ultralytics на Raspberry Pi AI Camera с imx Формат модели, измеряющий скорость и точность.

МодельФорматСтатусРазмер (Мб)mAP50-95(B)Время вывода (мс/им)
YOLOv8nimx2.90.52266.66

Примечание

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

Что находится под капотом?

Развертывание IMX500

Sony Model Compression Toolkit (MCT)

Model Compression Toolkit (MCT) от Sony - это мощный инструмент для оптимизации моделей глубокого обучения с помощью квантования и обрезки. Он поддерживает различные методы квантования и предоставляет продвинутые алгоритмы для уменьшения размера модели и вычислительной сложности без существенного ущерба для точности. MCT особенно полезен для развертывания моделей на устройствах с ограниченными ресурсами, обеспечивая эффективность выводов и уменьшение задержек.

Поддерживаемые функции MCT

MCT от Sony предлагает ряд функций, предназначенных для оптимизации нейросетевых моделей:

  1. Оптимизация графиков: Превращает модели в более эффективные версии, сворачивая такие слои, как пакетная нормализация, в предшествующие слои.
  2. Поиск параметров квантования: Минимизируй шум квантования, используя такие метрики, как средняя квадратичная ошибка, отсутствие клиппинга и средняя ошибка.
  3. Продвинутые алгоритмы квантования:
    • Коррекция отрицательного сдвига: Устраняет проблемы с производительностью, возникающие при симметричном квантовании активации.
    • Фильтрация выбросов: Используй z-score для обнаружения и удаления провалов.
    • Кластеризация: Использует неравномерные сетки квантования для лучшего согласования распределений.
    • Поиск со смешанной точностью: Назначай разную ширину битов квантования для каждого слоя в зависимости от чувствительности.
  4. Визуализация: Используй TensorBoard, чтобы наблюдать за производительностью модели, фазами квантования и конфигурациями битовой ширины.

Квантование

MCT поддерживает несколько методов квантования для уменьшения размера модели и повышения скорости вывода:

  1. Посттренировочная квантизация (PTQ):
    • Доступен через API Keras и PyTorch .
    • Сложность: Низкая
    • Вычислительные затраты: Низкая (CPU минут)
  2. Посттренировочная квантизация на основе градиента (GPTQ):
    • Доступен через API Keras и PyTorch .
    • Сложность: Средняя
    • Вычислительные затраты: Умеренные (2-3 GPU часа).
  3. Обучение с учетом квантования (QAT):
    • Сложность: высокая
    • Вычислительные затраты: высокие (12-36 GPU часов).

MCT также поддерживает различные схемы квантования для весов и активаций:

  1. Power-of-Two (дружественный к оборудованию)
  2. Симметричный
  3. Униформа

Структурированная обрезка

MCT представляет структурированную, аппаратно-ориентированную обрезку моделей, предназначенную для конкретных аппаратных архитектур. Эта техника использует возможности целевой платформы по обработке одной инструкции и нескольких данных (SIMD) путем обрезки SIMD-групп. Это уменьшает размер и сложность модели, оптимизируя использование каналов, согласованное с SIMD-архитектурой для целевого использования ресурсов весовой памяти. Доступно через API Keras и PyTorch .

IMX500 Converter Tool (компилятор)

Инструмент IMX500 Converter Tool является неотъемлемой частью набора инструментов IMX500, позволяя составлять модели для развертывания на сенсоре Sony IMX500 (например, в камерах Raspberry Pi AI Cameras). Этот инструмент облегчает переход Ultralytics YOLOv8 моделей, обработанных через программное обеспечение Ultralytics , гарантируя их совместимость и эффективную работу на указанном оборудовании. Процедура экспорта после квантования модели включает в себя генерацию бинарных файлов, в которых заключены основные данные и конфигурации, специфичные для конкретного устройства, что упрощает процесс развертывания на Raspberry Pi AI Camera.

Реальные примеры использования

Экспорт в формат IMX500 имеет широкое применение в разных отраслях. Вот несколько примеров:

  • Пограничный искусственный интеллект и IoT: Обеспечь обнаружение объектов на дронах или камерах слежения, где важна обработка данных в реальном времени на маломощных устройствах.
  • Носимые устройства: Разверни модели, оптимизированные для мелкомасштабной обработки ИИ, на носимых устройствах для мониторинга здоровья.
  • Умные города: Используй экспортированные с IMX500 модели YOLOv8 для мониторинга трафика и анализа безопасности с более быстрой обработкой и минимальной задержкой.
  • Аналитика розничной торговли: Усовершенствуй мониторинг в магазине, внедрив оптимизированные модели в системы точек продаж или умные полки.

Заключение

Экспорт моделей Ultralytics YOLOv8 в формат Sony IMX500 позволяет тебе развернуть свои модели для эффективного вывода на камерах на базе IMX500. Используя передовые методы квантования, ты можешь уменьшить размер модели и повысить скорость вычислений без существенного ущерба для точности.

За дополнительной информацией и подробными рекомендациями обращайся на сайт Sony IMX500.

ВОПРОСЫ И ОТВЕТЫ

Как экспортировать модель YOLOv8 в формат IMX500 для Raspberry Pi AI Camera?

Чтобы экспортировать модель YOLOv8 в формат IMX500, используй либо API Python , либо команду CLI :

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

В процессе экспорта будет создана директория, содержащая необходимые для развертывания файлы, в том числе packerOut.zip который можно использовать с инструментом IMX500 packager на Raspberry Pi.

Каковы ключевые преимущества использования формата IMX500 для развертывания краевого ИИ?

Формат IMX500 предлагает несколько важных преимуществ для пограничного развертывания:

  • ИИ-обработка на кристалле снижает задержки и энергопотребление
  • Выводит как изображение, так и метаданные (результат вывода), а не только изображения
  • Повышение конфиденциальности за счет локальной обработки данных без зависимости от облака
  • Возможности обработки данных в реальном времени идеально подходят для приложений, чувствительных ко времени
  • Оптимизированное квантование для эффективного развертывания моделей на устройствах с ограниченными ресурсами

Какие аппаратные и программные предпосылки необходимы для развертывания IMX500?

Для развертывания моделей IMX500 тебе понадобятся:

Аппаратное обеспечение:

  • Raspberry Pi 5 или Raspberry Pi 4 Model B
  • ИИ-камера Raspberry Pi с сенсором IMX500

Программное обеспечение:

  • Книжный червь ОС Raspberry Pi
  • Прошивка и инструменты для IMX500 (sudo apt install imx500-all imx500-tools)
  • Python пакеты для picamera2 (sudo apt install python3-opencv python3-munkres)

Какой производительности я могу ожидать от моделей YOLOv8 на IMX500?

Основано на бенчмарках Ultralytics на Raspberry Pi AI Camera:

  • YOLOv8n Время вывода на одно изображение составляет 66,66 мс
  • mAP50-95 0,522 на наборе данных COCO8
  • Размер модели после квантования составляет всего 2,9 Мб

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

Как упаковать и развернуть экспортированную модель на Raspberry Pi AI Camera?

После экспорта в формат IMX500:

  1. Используй инструмент упаковщика, чтобы создать RPK-файл:

    imx500-package -i <path to packerOut.zip> -o <output folder>
    
  2. Клонируй и установи picamera2:

    git clone -b next https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. Запускай вывод, используя сгенерированный RPK-файл:

    python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --labels <path to labels.txt>
    
📅 Created 8 days ago ✏️ Updated 6 days ago

Комментарии