Sony IMX500 Экспорт для Ultralytics YOLOv8
В этом руководстве рассказывается об экспорте и развертывании моделей Ultralytics YOLOv8 на камерах Raspberry Pi AI Cameras, оснащенных сенсором Sony IMX500.
Развертывание моделей компьютерного зрения на устройствах с ограниченной вычислительной мощностью, таких как Raspberry Pi AI Camera, может оказаться непростой задачей. Использование формата модели, оптимизированного для более быстрой работы, имеет огромное значение.
Формат модели IMX500 рассчитан на минимальное потребление энергии при высокой производительности нейронных сетей. Он позволяет оптимизировать ваши Ultralytics YOLOv8 модели для высокоскоростных и маломощных выводов. В этом руководстве мы расскажем вам об экспорте и развертывании ваших моделей в формат IMX500, а также о том, как сделать так, чтобы ваши модели хорошо работали на Raspberry Pi AI Camera.
Почему вы должны экспортировать в IMX500
Интеллектуальный датчик зрения IMX500 от Sony - это революционное оборудование в области обработки данных искусственного интеллекта. Это первый в мире интеллектуальный датчик зрения с возможностями искусственного интеллекта на кристалле. Этот датчик помогает преодолеть многие проблемы в области краевого ИИ, включая узкие места в обработке данных, проблемы конфиденциальности и ограничения производительности.
В то время как другие датчики просто передают изображения и кадры, IMX500 рассказывает целую историю. Он обрабатывает данные непосредственно на датчике, позволяя устройствам генерировать информацию в режиме реального времени.
Экспорт IMX500 от Sony для моделей YOLOv8
IMX500 призван изменить подход устройств к обработке данных непосредственно на датчике, без необходимости отправлять их в облако для обработки.
IMX500 работает с квантованными моделями. Квантование делает модели меньше и быстрее без потери точности. Она идеально подходит для ограниченных ресурсов пограничных вычислений, позволяя приложениям быстро реагировать на запросы за счет снижения задержек и быстрой обработки данных локально, без зависимости от облака. Локальная обработка также сохраняет конфиденциальность и безопасность пользовательских данных, поскольку они не отправляются на удаленный сервер.
IMX500 Ключевые особенности:
- Вывод метаданных: Вместо того чтобы передавать только изображения, IMX500 может выводить как изображения, так и метаданные (результат вывода), а также выводить только метаданные для минимизации размера данных, сокращения полосы пропускания и снижения затрат.
- Решение проблем конфиденциальности: Благодаря обработке данных на устройстве, IMX500 решает проблемы конфиденциальности, что идеально подходит для таких ориентированных на человека приложений, как подсчет людей и отслеживание присутствия людей.
- Обработка в реальном времени: Быстрая обработка данных с датчиков позволяет принимать решения в режиме реального времени, что идеально подходит для приложений с искусственным интеллектом, таких как автономные системы.
Прежде чем начать: Для получения наилучших результатов убедитесь, что ваша модель YOLOv8 хорошо подготовлена к экспорту, следуя нашим Руководству по подготовке модели, Руководству по подготовке данных и Руководству по настройке гиперпараметров.
Примеры использования
Экспорт модели Ultralytics YOLOv8 в формат IMX500 и проведение расчетов с использованием экспортированной модели.
Примечание
Экспорт IMX в настоящее время поддерживается только для модели YOLOv8n . Здесь мы выполняем вывод, чтобы убедиться, что модель работает так, как ожидалось. Однако для развертывания и проведения анализа на камере 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", data="coco8.yaml") # 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")
Аргументы экспорта
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
format |
str |
'imx' |
Целевой формат экспортируемой модели, определяющий совместимость с различными средами развертывания. |
imgsz |
int или tuple |
640 |
Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для получения конкретных размеров. |
int8 |
bool |
True |
Активирует квантование INT8, что еще больше сжимает модель и ускоряет вывод с минимальной потерей точности, в первую очередь для пограничных устройств. |
data |
str |
'coco8.yaml' |
Путь к набор данных файл конфигурации (по умолчанию: coco8.yaml ), необходимые для квантования. |
fraction |
float |
1.0 |
Указывает долю набора данных, которую следует использовать для калибровки квантования INT8. Позволяет проводить калибровку по подмножеству полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. Если не задано при включенном INT8, будет использоваться полный набор данных. |
device |
str |
None |
Указывает устройство для экспорта: GPU (device=0 ), CPU (device=cpu ). |
Наконечник
Если вы экспортируете данные на GPU с поддержкой CUDA , передайте аргумент device=0
для ускорения экспорта.
Более подробную информацию о процессе экспорта можно найти на странице документацииUltralytics , посвященной экспорту.
В процессе экспорта будет создана модель 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 при развертывании
После экспорта модели Ultralytics YOLOv8n в формат IMX500 она может быть развернута на камере Raspberry Pi AI Camera для получения выводов.
Необходимое оборудование
Убедитесь, что у вас есть указанное ниже оборудование:
- Raspberry Pi 5 или Raspberry Pi 4 Model B
- Камера искусственного интеллекта Raspberry Pi
Подключите камеру Raspberry Pi AI к 15-контактному разъему MIPI CSI на Raspberry Pi и включите питание Raspberry Pi
Программные предпосылки
Примечание
Это руководство было протестировано с Raspberry Pi OS Bookworm, работающей на Raspberry Pi 5
Шаг 1: Откройте окно терминала и выполните следующие команды, чтобы обновить программное обеспечение Raspberry Pi до последней версии.
Шаг 2: Установите прошивку IMX500, необходимую для работы датчика IMX500, вместе с программой-упаковщиком.
Шаг 3: Установите необходимые условия для запуска picamera2
приложение. Мы будем использовать это приложение позже для процесса развертывания.
Шаг 4: Перезагрузите Raspberry Pi, чтобы изменения вступили в силу
Упаковка модели и развертывание на камере искусственного интеллекта
После получения packerOut.zip
в процессе конвертации IMX500, вы можете передать этот файл в инструмент упаковщика, чтобы получить RPK-файл. Затем этот файл можно развернуть непосредственно на камере AI с помощью picamera2
.
Шаг 1: Упаковка модели в RPK-файл
Вышеуказанные действия создадут network.rpk
файл в указанной папке вывода.
Шаг 2: Клонирование picamera2
установите его и перейдите к примеру imx500.
git clone 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 17 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels path/to/labels.txt
После этого вы сможете увидеть живые результаты вычислений в следующем виде
Бенчмарки
YOLOv8 Приведенные ниже бенчмарки были выполнены командой Ultralytics на Raspberry Pi AI Camera с imx
формат модели, измеряющий скорость и точность.
Модель | Формат | Статус | Размер (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 58.82 |
Примечание
Валидация для вышеупомянутого эталона была проведена с помощью набора данных coco8
Что под капотом?
Sony Model Compression Toolkit (MCT)
Набор инструментов Sony Model Compression Toolkit (MCT) - это мощный инструмент для оптимизации моделей глубокого обучения с помощью квантования и обрезки. Он поддерживает различные методы квантования и предоставляет передовые алгоритмы для уменьшения размера модели и вычислительной сложности без существенного снижения точности. MCT особенно полезен для развертывания моделей на устройствах с ограниченными ресурсами, обеспечивая эффективность выводов и снижение задержек.
Поддерживаемые функции MCT
MCT от Sony предлагает ряд функций, предназначенных для оптимизации моделей нейронных сетей:
- Оптимизация графиков: Преобразует модели в более эффективные версии, сворачивая такие слои, как пакетная нормализация, в предшествующие слои.
- Поиск параметров квантования: Минимизирует шум квантования, используя такие метрики, как среднеквадратичная ошибка, отсутствие обрыва и среднеарифметическая ошибка.
- Расширенные алгоритмы квантования:
- Коррекция отрицательного сдвига: Решает проблемы производительности, возникающие при симметричном квантовании активации.
- Фильтрация выбросов: Использует z-score для обнаружения и удаления провалов.
- Кластеризация: Использует неравномерные сетки квантования для лучшего согласования распределений.
- Поиск со смешанной точностью: Назначает разную ширину битов квантования для каждого слоя в зависимости от чувствительности.
- Визуализация: Используйте TensorBoard для наблюдения за производительностью модели, фазами квантования и конфигурациями битовой ширины.
Квантование
MCT поддерживает несколько методов квантования для уменьшения размера модели и повышения скорости вывода:
- Квантование после обучения (PTQ):
- Доступно через API Keras и PyTorch .
- Сложность: Низкая
- Вычислительные затраты: Низкая (CPU минут)
- Посттренировочная квантизация на основе градиента (GPTQ):
- Доступно через API Keras и PyTorch .
- Сложность: Средняя
- Вычислительные затраты: Умеренные (2-3 GPU часа)
- Обучение с учетом квантования (QAT):
- Сложность: высокая
- Вычислительные затраты: высокие (12-36 GPU часов)
MCT также поддерживает различные схемы квантования для весов и активаций:
- Power-of-Two (дружественный к оборудованию)
- Симметричный
- Униформа
Структурированная обрезка
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?
Чтобы экспортировать модель 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 AI Camera с сенсором IMX500
Программное обеспечение:
- Raspberry Pi OS Bookworm
- Встроенное ПО и инструменты 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 достигает времени вывода 58,82 мс на одно изображение
- mAP50-95 0,522 на наборе данных COCO8
- Размер модели после квантования составляет всего 2,9 МБ.
Это свидетельствует о том, что формат IMX500 обеспечивает эффективные выводы в реальном времени, сохраняя при этом высокую точность для приложений краевого ИИ.
Как упаковать и развернуть экспортированную модель на Raspberry Pi AI Camera?
После экспорта в формат IMX500:
-
Используйте инструмент упаковщика для создания файла RPK:
-
Клонируйте и установите picamera2:
-
Запустите вывод с использованием сгенерированного файла RPK: