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

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.

t=ultralytics/ultralytics:latest-arm64 && sudo docker pull $t && sudo docker run -it --ipc=host $t

После того как это будет сделано, переходи к разделу "Использование 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.

  1. Обнови список пакетов, установи pip и обновись до последней версии

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Установи ultralytics Пакет pip с дополнительными зависимостями

    pip install ultralytics[export]
    
  3. Перезагрузите устройство

    sudo reboot
    

Используй 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")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn  # creates 'yolo11n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolo11n_ncnn_model' source='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.

YOLO11 benchmarks on RPi 5

Подробная сравнительная таблица

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 бенчмарки на всех форматах экспорта, запусти этот код:

Пример

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

# Benchmark YOLO11n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco8.yaml imgsz=640

Учти, что результаты бенчмарков могут отличаться в зависимости от точной аппаратной и программной конфигурации системы, а также от текущей загруженности системы на момент запуска бенчмарков. Для получения наиболее достоверных результатов используй набор данных с большим количеством изображений, то есть data='coco8.yaml' (4 val images), ordata='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 5 используются более компактные разъемы CSI, чем в Raspberry Pi 4 (15-контактные против 22-контактных), поэтому для подключения к камере Raspberry Pi тебе понадобится кабель-переходник с 15-контактного на 22-контактный.

Проверь камеру

Выполни следующую команду после подключения камеры к Raspberry Pi. Ты должен увидеть прямую трансляцию видео с камеры в течение примерно 5 секунд.

rpicam-hello

Умозаключение с помощью камеры

There are 2 methods of using the Raspberry Pi Camera to inference YOLO11 models.

Использование

Мы можем использовать picamera2which 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 -n -t 0 --inline --listen -o tcp://127.0.0.1:8888

Узнай больше о rpicam-vid Использование в официальной документации по Raspberry Pi

Пример

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolo11n.pt source="tcp://127.0.0.1:8888"

Наконечник

Если ты хочешь изменить тип входного сигнала изображения/видео, посмотри наш документ об источниках вывода.

Лучшие практики при использовании Raspberry Pi

There are a couple of best practices to follow in order to enable maximum performance on Raspberry Pis running YOLO11.

  1. Используй твердотельный накопитель

    При постоянном использовании Raspberry Pi в режиме 24x7 рекомендуется использовать SSD для системы, потому что SD-карта не выдержит непрерывной записи и может выйти из строя. Благодаря встроенному разъему PCIe на Raspberry Pi 5 теперь ты можешь подключать SSD-накопители с помощью адаптера, например NVMe Base for Raspberry Pi 5.

  2. Флеш без графического интерфейса

    При прошивке 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:

  1. Обнови список пакетов и установи pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Установи пакет Ultralytics с дополнительными зависимостями:
    pip install ultralytics[export]
    
  3. Перезагрузи устройство, чтобы применить изменения:
    sudo reboot
    

Подробные инструкции смотри в разделе " Запуск без 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")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn  # creates 'yolo11n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolo11n_ncnn_model' source='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:

  1. Использование 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()
    
  2. Использование TCP-потока:

    rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
    
    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    results = model("tcp://127.0.0.1:8888")
    

Подробные инструкции по настройке можно найти в разделе " Inference with Camera ".


📅 Created 11 months ago ✏️ Updated 0 days ago

Комментарии