В то время как другие датчики просто передают изображения и кадры, 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")
В процессе экспорта будет создана модель 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 ты можешь указать различные аргументы:
Ключ | Значение | Описание |
---|---|---|
format | imx | Формат, в который нужно экспортировать (imx) |
int8 | True | Включи квантование INT8 для модели (по умолчанию: True ) |
imgsz | 640 | Размер изображения для входа в модель (по умолчанию: 640 ) |
После экспорта модели Ultralytics YOLOv8n в формат IMX500 ее можно развернуть на Raspberry Pi AI Camera для получения выводов.
Убедись, что у тебя есть перечисленное ниже оборудование:
Подключи камеру 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 -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>
После этого ты сможешь увидеть живые результаты умозаключений в следующем виде
YOLOv8 Бенчмарки, приведенные ниже, были выполнены командой Ultralytics на Raspberry Pi AI Camera с imx
Формат модели, измеряющий скорость и точность.
Модель | Формат | Статус | Размер (Мб) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 66.66 |
Примечание
Валидация для вышеупомянутого бенчмарка была проведена с помощью набора данных coco8.
Model Compression Toolkit (MCT) от Sony - это мощный инструмент для оптимизации моделей глубокого обучения с помощью квантования и обрезки. Он поддерживает различные методы квантования и предоставляет продвинутые алгоритмы для уменьшения размера модели и вычислительной сложности без существенного ущерба для точности. MCT особенно полезен для развертывания моделей на устройствах с ограниченными ресурсами, обеспечивая эффективность выводов и уменьшение задержек.
MCT от Sony предлагает ряд функций, предназначенных для оптимизации нейросетевых моделей:
MCT поддерживает несколько методов квантования для уменьшения размера модели и повышения скорости вывода:
MCT также поддерживает различные схемы квантования для весов и активаций:
MCT представляет структурированную, аппаратно-ориентированную обрезку моделей, предназначенную для конкретных аппаратных архитектур. Эта техника использует возможности целевой платформы по обработке одной инструкции и нескольких данных (SIMD) путем обрезки SIMD-групп. Это уменьшает размер и сложность модели, оптимизируя использование каналов, согласованное с SIMD-архитектурой для целевого использования ресурсов весовой памяти. Доступно через API Keras и PyTorch .
Инструмент IMX500 Converter Tool является неотъемлемой частью набора инструментов IMX500, позволяя составлять модели для развертывания на сенсоре Sony IMX500 (например, в камерах Raspberry Pi AI Cameras). Этот инструмент облегчает переход Ultralytics YOLOv8 моделей, обработанных через программное обеспечение Ultralytics , гарантируя их совместимость и эффективную работу на указанном оборудовании. Процедура экспорта после квантования модели включает в себя генерацию бинарных файлов, в которых заключены основные данные и конфигурации, специфичные для конкретного устройства, что упрощает процесс развертывания на Raspberry Pi AI Camera.
Экспорт в формат IMX500 имеет широкое применение в разных отраслях. Вот несколько примеров:
Экспорт моделей Ultralytics YOLOv8 в формат Sony IMX500 позволяет тебе развернуть свои модели для эффективного вывода на камерах на базе IMX500. Используя передовые методы квантования, ты можешь уменьшить размер модели и повысить скорость вычислений без существенного ущерба для точности.
За дополнительной информацией и подробными рекомендациями обращайся на сайт Sony IMX500.
Чтобы экспортировать модель 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 тебе понадобятся:
Аппаратное обеспечение:
Программное обеспечение:
sudo apt install imx500-all imx500-tools
)picamera2
(sudo apt install python3-opencv python3-munkres
)Основано на бенчмарках Ultralytics на Raspberry Pi AI Camera:
Это демонстрирует, что формат IMX500 обеспечивает эффективные выводы в реальном времени, сохраняя при этом хорошую точность для приложений краевого ИИ.
После экспорта в формат IMX500:
Используй инструмент упаковщика, чтобы создать RPK-файл:
Клонируй и установи picamera2:
Запускай вывод, используя сгенерированный RPK-файл: