Quick Start Guide: Raspberry Pi with Ultralytics YOLO11
This comprehensive guide provides a detailed walkthrough for deploying Ultralytics YOLO11 on Raspberry Pi devices. Additionally, it showcases performance benchmarks to demonstrate the capabilities of YOLO11 on these small and powerful devices.
Смотри: Обновления и улучшения Raspberry Pi 5.
Примечание
Это руководство было протестировано на Raspberry Pi 4 и Raspberry Pi 5 под управлением последней версии Raspberry Pi OS Bookworm (Debian 12). Использование этого руководства для более старых устройств Raspberry Pi, таких как Raspberry Pi 3, будет работать при условии, что установлена та же самая Raspberry Pi OS Bookworm.
Что такое Raspberry Pi?
Raspberry Pi - это маленький, доступный по цене одноплатный компьютер. Он стал популярным для широкого спектра проектов и приложений, от домашней автоматизации для хоббистов до промышленного использования. Платы Raspberry Pi могут работать под управлением различных операционных систем, на них есть выводы GPIO (General Purpose Input/Output), которые позволяют легко интегрировать их с датчиками, исполнительными механизмами и другими аппаратными компонентами. Они выпускаются в разных моделях с различными техническими характеристиками, но все они имеют одну и ту же основную философию дизайна - быть недорогими, компактными и универсальными.
Сравнение серий Raspberry Pi
Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
---|---|---|---|
CPU | Broadcom BCM2837, Cortex-A53 64Bit SoC | Broadcom BCM2711, 64-разрядная SoC Cortex-A72 | Broadcom BCM2712, 64-разрядная SoC Cortex-A76 |
CPU Максимальная частота | 1.4 ГГц | 1,8 ГГц | 2,4 ГГц |
GPU | Videocore IV | Videocore VI | Видеоядро VII |
GPU Максимальная частота | 400 МГц | 500 МГц | 800 МГц |
Память | 1GB LPDDR2 SDRAM | 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
PCIe | N/A | N/A | Интерфейс 1xPCIe 2.0 |
Максимальная потребляемая мощность | 2,5A@5V | 3A@5V | 5A@5V (PD включен) |
Что такое Raspberry Pi OS?
Raspberry Pi OS (ранее известная как Raspbian) - это Unix-подобная операционная система, основанная на дистрибутиве Debian GNU/Linux для семейства компактных одноплатных компьютеров Raspberry Pi, распространяемых компанией Raspberry Pi Foundation. Raspberry Pi OS сильно оптимизирована для Raspberry Pi с процессорами ARM и использует модифицированное окружение рабочего стола LXDE с стекинг-оконным менеджером Openbox. Raspberry Pi OS находится в стадии активной разработки, при этом особое внимание уделяется повышению стабильности и производительности как можно большего количества пакетов Debian на Raspberry Pi.
Прошивка Raspberry Pi OS на Raspberry Pi
Первое, что нужно сделать после получения в руки Raspberry Pi, - прошить карту micro-SD с ОС Raspberry Pi, вставить в устройство и загрузиться в ОС. Следуй подробной документации по началу работы с Raspberry Pi, чтобы подготовить устройство к первому использованию.
Настройка Ultralytics
There are two ways of setting up Ultralytics package on Raspberry Pi to build your next Computer Vision project. You can use either of them.
Начни с Docker
The fastest way to get started with Ultralytics YOLO11 on Raspberry Pi is to run with pre-built docker image for Raspberry Pi.
Выполни приведенную ниже команду, чтобы вытащить Docker-контейнер и запустить его на Raspberry Pi. Он основан на докер-образе arm64v8/debian, который содержит Debian 12 (Bookworm) в окружении Python3.
После того как это будет сделано, переходи к разделу "Использование NCNN на Raspberry Pi".
Запуск без Docker
Установи пакет Ultralytics
Here we will install Ultralytics package on the Raspberry Pi with optional dependencies so that we can export the PyTorch models to other different formats.
-
Обнови список пакетов, установи pip и обновись до последней версии
-
Установи
ultralytics
Пакет pip с дополнительными зависимостями -
Перезагрузите устройство
Используй NCNN на Raspberry Pi
Из всех форматов экспорта моделей, поддерживаемых Ultralytics, NCNN обеспечивает наилучшую производительность логических выводов при работе с устройствами Raspberry Pi, поскольку NCNN оптимизирован для мобильных/встраиваемых платформ (например, архитектуры ARM). В связи с этим мы рекомендуем использовать NCNN с Raspberry Pi.
Преобразуй модель в NCNN и выполни вывод
The YOLO11n model in PyTorch format is converted to NCNN to run inference with the exported model.
Пример
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Наконечник
Более подробно о поддерживаемых вариантах экспорта можно узнать на странице документацииUltralytics , посвященной вариантам развертывания.
Raspberry Pi 5 YOLO11 Benchmarks
YOLO11 benchmarks were run by the Ultralytics team on nine different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on a Raspberry Pi 5 at FP32 precision with default input image size of 640.
Сравнительная таблица
We have only included benchmarks for YOLO11n and YOLO11s models because other models sizes are too big to run on the Raspberry Pis and does not offer decent performance.
Подробная сравнительная таблица
The below table represents the benchmark results for two different models (YOLO11n, YOLO11s) across nine different formats (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN), running on a Raspberry Pi 5, giving us the status, size, mAP50-95(B) metric, and inference time for each combination.
Производительность
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.61 | 524.828 |
TorchScript | ✅ | 10.5 | 0.6082 | 666.874 |
ONNX | ✅ | 10.2 | 0.6082 | 181.818 |
OpenVINO | ✅ | 10.4 | 0.6082 | 530.224 |
TF SavedModel | ✅ | 25.8 | 0.6082 | 405.964 |
TF GraphDef | ✅ | 10.3 | 0.6082 | 473.558 |
TF Lite | ✅ | 10.3 | 0.6082 | 324.158 |
PaddlePaddle | ✅ | 20.4 | 0.6082 | 644.312 |
NCNN | ✅ | 10.2 | 0.6106 | 93.938 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.7526 | 1226.426 |
TorchScript | ✅ | 36.5 | 0.7416 | 1507.95 |
ONNX | ✅ | 36.3 | 0.7416 | 415.24 |
OpenVINO | ✅ | 36.4 | 0.7416 | 1167.102 |
TF SavedModel | ✅ | 91.1 | 0.7416 | 776.14 |
TF GraphDef | ✅ | 36.4 | 0.7416 | 1014.396 |
TF Lite | ✅ | 36.4 | 0.7416 | 845.934 |
PaddlePaddle | ✅ | 72.5 | 0.7416 | 1567.824 |
NCNN | ✅ | 36.2 | 0.7419 | 197.358 |
Воспроизведи наши результаты
Чтобы воспроизвести приведенные выше Ultralytics бенчмарки на всех форматах экспорта, запусти этот код:
Пример
Учти, что результаты бенчмарков могут отличаться в зависимости от точной аппаратной и программной конфигурации системы, а также от текущей загруженности системы на момент запуска бенчмарков. Для получения наиболее достоверных результатов используй набор данных с большим количеством изображений, то есть data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val изображений).
Используй камеру Raspberry Pi
When using Raspberry Pi for Computer Vision projects, it can be essentially to grab real-time video feeds to perform inference. The onboard MIPI CSI connector on the Raspberry Pi allows you to connect official Raspberry PI camera modules. In this guide, we have used a Raspberry Pi Camera Module 3 to grab the video feeds and perform inference using YOLO11 models.
Наконечник
Узнай больше о различных модулях камер, предлагаемых Raspberry Pi, а также о том, как начать работу с модулями камер Raspberry Pi.
Примечание
В Raspberry Pi 5 используются более компактные разъемы CSI, чем в Raspberry Pi 4 (15-контактные против 22-контактных), поэтому для подключения к камере Raspberry Pi тебе понадобится кабель-переходник с 15-контактного на 22-контактный.
Проверь камеру
Выполни следующую команду после подключения камеры к Raspberry Pi. Ты должен увидеть прямую трансляцию видео с камеры в течение примерно 5 секунд.
Наконечник
Узнай больше о rpicam-hello
Использование в официальной документации по Raspberry Pi
Умозаключение с помощью камеры
There are 2 methods of using the Raspberry Pi Camera to inference YOLO11 models.
Использование
Мы можем использовать picamera2
which comes pre-installed with Raspberry Pi OS to access the camera and inference YOLO11 models.
Пример
import cv2
from picamera2 import Picamera2
from ultralytics import YOLO
# Initialize the Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
while True:
# Capture frame-by-frame
frame = picam2.capture_array()
# Run YOLO11 inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the resulting frame
cv2.imshow("Camera", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) == ord("q"):
break
# Release resources and close windows
cv2.destroyAllWindows()
Нам нужно инициировать TCP-поток с помощью rpicam-vid
с подключенной камеры, чтобы потом использовать URL-адрес этого потока в качестве входных данных при составлении выводов. Выполни следующую команду, чтобы запустить TCP-поток.
Узнай больше о rpicam-vid
Использование в официальной документации по Raspberry Pi
Наконечник
Если ты хочешь изменить тип входного сигнала изображения/видео, посмотри наш документ об источниках вывода.
Лучшие практики при использовании Raspberry Pi
There are a couple of best practices to follow in order to enable maximum performance on Raspberry Pis running YOLO11.
-
Используй твердотельный накопитель
При постоянном использовании Raspberry Pi в режиме 24x7 рекомендуется использовать SSD для системы, потому что SD-карта не выдержит непрерывной записи и может выйти из строя. Благодаря встроенному разъему PCIe на Raspberry Pi 5 теперь ты можешь подключать SSD-накопители с помощью адаптера, например NVMe Base for Raspberry Pi 5.
-
Флеш без графического интерфейса
При прошивке Raspberry Pi OS ты можешь не устанавливать окружение рабочего стола (Raspberry Pi OS Lite), и это поможет немного сэкономить оперативную память устройства, оставив больше места для обработки компьютерного зрения.
Следующие шаги
Congratulations on successfully setting up YOLO on your Raspberry Pi! For further learning and support, visit Ultralytics YOLO11 Docs and Kashmir World Foundation.
Благодарности и цитаты
Изначально это руководство было создано Дааном Элтинком для Kashmir World Foundation, организации, занимающейся использованием YOLO для сохранения исчезающих видов животных. Мы признаем их новаторскую работу и образовательную направленность в области технологий обнаружения объектов.
Чтобы узнать больше о деятельности Kashmir World Foundation, ты можешь посетить их сайт.
ВОПРОСЫ И ОТВЕТЫ
How do I set up Ultralytics YOLO11 on a Raspberry Pi without using Docker?
To set up Ultralytics YOLO11 on a Raspberry Pi without Docker, follow these steps:
- Обнови список пакетов и установи
pip
: - Установи пакет Ultralytics с дополнительными зависимостями:
- Перезагрузи устройство, чтобы применить изменения:
Подробные инструкции смотри в разделе " Запуск без Docker ".
Why should I use Ultralytics YOLO11's NCNN format on Raspberry Pi for AI tasks?
Ultralytics YOLO11's NCNN format is highly optimized for mobile and embedded platforms, making it ideal for running AI tasks on Raspberry Pi devices. NCNN maximizes inference performance by leveraging ARM architecture, providing faster and more efficient processing compared to other formats. For more details on supported export options, visit the Ultralytics documentation page on deployment options.
How can I convert a YOLO11 model to NCNN format for use on Raspberry Pi?
You can convert a PyTorch YOLO11 model to NCNN format using either Python or CLI commands:
Пример
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Подробнее об этом читай в разделе " Использование NCNN на Raspberry Pi ".
What are the hardware differences between Raspberry Pi 4 and Raspberry Pi 5 relevant to running YOLO11?
Основные отличия:
- CPU: В Raspberry Pi 4 используется 64-битная SoC Broadcom BCM2711, Cortex-A72, а в Raspberry Pi 5 - 64-битная SoC Broadcom BCM2712, Cortex-A76.
- Максимальная частота CPU : Максимальная частота Raspberry Pi 4 составляет 1,8 ГГц, тогда как у Raspberry Pi 5 она достигает 2,4 ГГц.
- Память: Raspberry Pi 4 предлагает до 8 Гб памяти LPDDR4-3200 SDRAM, а Raspberry Pi 5 - LPDDR4X-4267 SDRAM, доступную в вариантах 4 и 8 Гб.
These enhancements contribute to better performance benchmarks for YOLO11 models on Raspberry Pi 5 compared to Raspberry Pi 4. Refer to the Raspberry Pi Series Comparison table for more details.
How can I set up a Raspberry Pi Camera Module to work with Ultralytics YOLO11?
There are two methods to set up a Raspberry Pi Camera for YOLO11 inference:
-
Использование
picamera2
:import cv2 from picamera2 import Picamera2 from ultralytics import YOLO picam2 = Picamera2() picam2.preview_configuration.main.size = (1280, 720) picam2.preview_configuration.main.format = "RGB888" picam2.preview_configuration.align() picam2.configure("preview") picam2.start() model = YOLO("yolo11n.pt") while True: frame = picam2.capture_array() results = model(frame) annotated_frame = results[0].plot() cv2.imshow("Camera", annotated_frame) if cv2.waitKey(1) == ord("q"): break cv2.destroyAllWindows()
-
Использование TCP-потока:
Подробные инструкции по настройке можно найти в разделе " Inference with Camera ".