YOLO Vision 2026:

Краткое руководство: Raspberry Pi и Ultralytics YOLO26#

Raspberry Pi — это маленький недорогой компьютер, на котором работает Ultralytics YOLO26 для обнаружения объектов в реальном времени на периферийных устройствах без использования GPU. В этом руководстве подробно описано развертывание YOLO26 на Raspberry Pi 4 и 5: запись ОС, установка Ultralytics, экспорт в NCNN для максимально быстрой инференса на ARM, а также запуск предсказаний по видеопотоку с камеры. Кроме того, здесь приведены тесты производительности для восьми форматов экспорта, чтобы ты мог выбрать оптимальное соотношение скорости и точности для своего железа.

Перейти к настройке Ultralytics, экспорту в NCNN и запуску инференции, бенчмаркам или инференции с камеры.



Watch: Raspberry Pi 5 updates and improvements.
Примечание

Это руководство было протестировано на Raspberry Pi 4 и Raspberry Pi 5 под управлением актуальной версии Raspberry Pi OS Bookworm (Debian 12). Ожидается, что использование этого руководства для более старых моделей, таких как Raspberry Pi 3, также будет работать при условии установки той же Raspberry Pi OS Bookworm.

Что такое Raspberry Pi?#

Raspberry Pi — это небольшой и доступный одноплатный компьютер. Он стал популярен для широкого спектра проектов и приложений, от любительской автоматизации дома до промышленного использования. Платы Raspberry Pi способны работать с различными операционными системами и оснащены контактами GPIO (General Purpose Input/Output), которые позволяют легко подключать датчики, приводы и другие аппаратные компоненты. Они выпускаются в различных моделях с разными характеристиками, но все они разделяют общую концепцию: быть недорогими, компактными и универсальными.

Сравнение серии Raspberry Pi#

Raspberry Pi 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837, Cortex-A53 64-битный SoCBroadcom BCM2711, Cortex-A72 64-битный SoCBroadcom BCM2712, Cortex-A76 64-битный SoC
Макс. частота CPU1.4 ГГц1.8 ГГц2.4 ГГц
GPUVideocore IVVideocore VIVideoCore VII
Макс. частота GPU400 МГц500 МГц800 МГц
Память1 ГБ LPDDR2 SDRAM1 ГБ, 2 ГБ, 4 ГБ, 8 ГБ LPDDR4-3200 SDRAM4 ГБ, 8 ГБ LPDDR4X-4267 SDRAM
PCIeН/ДН/Д1xPCIe 2.0 интерфейс
Максимальное энергопотребление2.5A@5V3A@5V5A@5V (с поддержкой PD)

Что такое Raspberry Pi OS?#

Raspberry Pi OS (ранее известная как Raspbian) — это Unix-подобная операционная система на базе дистрибутива Debian GNU/Linux для семейства компактных одноплатных компьютеров Raspberry Pi, распространяемых фондом Raspberry Pi Foundation. Raspberry Pi OS глубоко оптимизирована для процессоров ARM в Raspberry Pi и использует модифицированную среду рабочего стола LXDE с оконным менеджером Openbox. Raspberry Pi OS находится в активной разработке с упором на повышение стабильности и производительности максимально возможного числа пакетов Debian для Raspberry Pi.

Установка Raspberry Pi OS на Raspberry Pi#

Первое, что нужно сделать, получив Raspberry Pi, — это записать образ Raspberry Pi OS на карту micro-SD, вставить ее в устройство и загрузиться. Следуй подробному руководству по началу работы от Raspberry Pi, чтобы подготовить устройство к первому использованию.

Настройка Ultralytics#

Ты можешь настроить пакет Ultralytics на Raspberry Pi двумя способами для своего следующего проекта в области Computer Vision:

Начать с Docker#

Самый быстрый способ начать работу с Ultralytics YOLO26 на Raspberry Pi — запустить готовый Docker-образ для Raspberry Pi.

Выполни следующую команду, чтобы загрузить Docker-контейнер и запустить его на Raspberry Pi. Он основан на Docker-образе arm64v8/ubuntu, в котором установлена Ubuntu 24.04 в среде Python3.

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

В Docker-образ уже включен Ultralytics, поэтому ты можешь сразу перейти к экспорту своей модели в NCNN.

Начать без Docker#

Установка пакета Ultralytics#

Здесь мы установим пакет Ultralytics на Raspberry Pi с дополнительными зависимостями, чтобы можно было экспортировать модели PyTorch в другие форматы.

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

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

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

    sudo reboot

Использование NCNN на Raspberry Pi#

Из всех форматов экспорта моделей, поддерживаемых Ultralytics, NCNN обеспечивает лучшую производительность инференции на устройствах Raspberry Pi, так как он глубоко оптимизирован для мобильных и встраиваемых платформ, таких как архитектура ARM. Конвертируй свою модель YOLO26n PyTorch в NCNN, а затем запусти инференцию с использованием экспортированной модели:

Пример
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolo26n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Совет

Подробности о поддерживаемых вариантах экспорта см. в руководстве по развертыванию моделей.

Улучшения производительности YOLO26 по сравнению с YOLO11#

YOLO26 специально разработан для работы на устройствах с ограниченными аппаратными ресурсами, таких как Raspberry Pi 5. По сравнению с YOLO11n, YOLO26n обеспечивает ~15% прирост FPS (6.79 → 7.79) при одновременном повышении mAP (40.1 против 39.5) для размера входного изображения 640 с моделями, экспортированными в ONNX на Raspberry Pi 5. Таблица и график ниже демонстрируют это сравнение.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.14
Производительность
МодельmAP50-95(B)Время вывода (мс/из)
YOLO26n40.1128.42
YOLO26s47.8352.84
YOLO26m52.5993.78
YOLO26l54.41259.46
YOLO26x56.92636.26

Тестирование выполнено в Ultralytics 8.4.14.

Результаты тестов YOLO26 на Raspberry Pi 5#

Бенчмарки YOLO26 были запущены командой Ultralytics для восьми различных форматов моделей с измерением скорости и точности: PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch, LiteRT. Тестирование проводилось на Raspberry Pi 5 при точности FP32 и стандартном размере входного изображения 640.

Сравнительная диаграмма#

Мы включили результаты только для моделей YOLO26n и YOLO26s, так как модели других размеров слишком велики для запуска на Raspberry Pi и не обеспечивают приемлемой производительности.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.108

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

В таблице ниже представлены результаты бенчмарков для двух разных моделей (YOLO26n, YOLO26s) в восьми различных форматах (PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch, LiteRT) при работе на Raspberry Pi 5. Для каждой комбинации указаны статус, размер, метрика mAP50-95(B) и время инференса.

Производительность
ФорматСтатусРазмер на диске (МБ)mAP50-95(B)Время вывода (мс/из)
PyTorch5.30.4760299.09
TorchScript9.80.4734353.20
ONNX9.50.4734125.99
OpenVINO9.60.4734104.55
MNN9.40.474991.87
NCNN9.40.478467.03
ExecuTorch9.40.4772144.83
LiteRT9.80.4730123.30

Протестировано с помощью Ultralytics 8.4.108

Примечание

Время инференции не включает предобработку и постобработку.

Воспроизведи наши результаты#

Чтобы воспроизвести указанные тесты Ultralytics для всех форматов экспорта, запусти этот код:

Пример
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)

Обрати внимание, что результаты тестирования могут варьироваться в зависимости от конкретной конфигурации аппаратного и программного обеспечения системы, а также от текущей нагрузки на систему во время проведения тестов. Для получения наиболее надежных результатов используй набор данных с большим количеством изображений, например data='coco.yaml' (5000 изображений для валидации).

Экспорт в LiteRT выполняется вне устройства

Инструмент litert-converter не поставляется с wheel-пакетом Linux для aarch64, поэтому экспорт с помощью format=litert поддерживается только на Linux x86_64 и macOS, но не на самой Raspberry Pi. Выполни экспорт модели .tflite на машине с Linux x86_64 или Mac, скопируй ее на Raspberry Pi и используй Pi для инференса.

Использование камеры Raspberry Pi#

При использовании Raspberry Pi для проектов компьютерного зрения может потребоваться захват видео в реальном времени для выполнения инференса. Встроенный разъем MIPI CSI на Raspberry Pi позволяет подключать официальные модули камеры Raspberry Pi. В этом руководстве мы использовали Raspberry Pi Camera Module 3 для захвата видеопотока и выполнения инференса с помощью моделей YOLO26.

Совет
Примечание

Raspberry Pi 5 использует разъемы CSI меньшего размера, чем Raspberry Pi 4 (15-контактные против 22-контактных), поэтому тебе понадобится переходной кабель с 15 на 22 контакта для подключения камеры Raspberry Pi.

Тестирование камеры#

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

rpicam-hello
Совет

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

Инференс с помощью камеры#

Существует два способа использования камеры Raspberry Pi для запуска инференции на моделях YOLO26.

Запуск инференции с помощью камеры Raspberry Pi

Мы можем использовать picamera2, которая предустановлена в Raspberry Pi OS, для доступа к камере и запуска инференса моделей YOLO26.

Пример
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 YOLO26 model
model = YOLO("yolo26n.pt")

while True:
    # Capture frame-by-frame
    frame = picam2.capture_array()

    # Run YOLO26 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()
Совет

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

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

Существует пара лучших практик, которым стоит следовать для обеспечения максимальной производительности на Raspberry Pi при запуске YOLO26.

  1. Используй SSD

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

  2. Установка без графического интерфейса (GUI)

    При установке Raspberry Pi OS ты можешь выбрать вариант без графической среды (Raspberry Pi OS Lite), что позволит сэкономить немного оперативной памяти на устройстве, освободив больше места для обработки компьютерного зрения.

  3. Разгон Raspberry Pi

    Если ты хочешь немного повысить производительность при запуске моделей Ultralytics YOLO26 на Raspberry Pi 5, ты можешь разогнать CPU с базовых 2.4 ГГц до 2.9 ГГц, а GPU — с 800 МГц до 1 ГГц. Если система станет нестабильной или начнет зависать, уменьшай значения разгона с шагом 100 МГц. Обеспечь надлежащее охлаждение, так как разгон увеличивает тепловыделение и может привести к троттлингу.

    a. Обнови программное обеспечение

    sudo apt update && sudo apt dist-upgrade

    b. Открой файл конфигурации для редактирования

    sudo nano /boot/firmware/config.txt

    c. Добавь следующие строки в конец файла

    arm_freq=3000
    gpu_freq=1000
    force_turbo=1

    d. Сохрани изменения и выйди, нажав CTRL + X, затем Y, и нажми ENTER

    e. Перезагрузи Raspberry Pi

Дальнейшие шаги#

Ты успешно настроил YOLO26 на своем Raspberry Pi. Чтобы двигаться дальше, изучи режим Predict для получения дополнительных опций инференции, режим Export для дополнительных форматов развертывания или руководство по NVIDIA Jetson, если тебе нужно больше вычислительной мощности на периферии. Полную документацию можно найти в документации Ultralytics YOLO26.

Благодарности и цитирование#

Это руководство было изначально создано Daan Eeltink для Kashmir World Foundation, организации, занимающейся использованием YOLO для сохранения исчезающих видов животных. Мы признаем их новаторскую работу и образовательный вклад в области технологий обнаружения объектов.

Для получения дополнительной информации о деятельности Kashmir World Foundation ты можешь посетить их веб-сайт.

FAQ#

Как настроить Ultralytics YOLO26 на Raspberry Pi без использования Docker?#

Чтобы настроить Ultralytics YOLO26 на Raspberry Pi без Docker, выполни следующие шаги:

  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.

Почему стоит использовать формат NCNN в Ultralytics YOLO26 для задач ИИ на Raspberry Pi?#

Формат NCNN в Ultralytics YOLO26 глубоко оптимизирован для мобильных и встраиваемых платформ, что делает его идеальным для выполнения задач ИИ на устройствах Raspberry Pi. NCNN максимизирует производительность инференции за счет использования архитектуры ARM, обеспечивая более быструю и эффективную обработку по сравнению с другими форматами. Для получения дополнительной информации о поддерживаемых форматах экспорта см. опции экспорта моделей.

Как конвертировать модель YOLO26 в формат NCNN для использования на Raspberry Pi?#

Ты можешь конвертировать модель PyTorch YOLO26 в формат NCNN, используя Python или команды CLI:

Пример
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolo26n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")

Более подробную информацию см. в разделе Использование NCNN на Raspberry Pi.

Каковы аппаратные различия между Raspberry Pi 4 и Raspberry Pi 5, важные для запуска YOLO26?#

Основные различия:

  • 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 ГБ.

Эти улучшения способствуют более высоким показателям производительности для моделей YOLO26 на Raspberry Pi 5 по сравнению с Raspberry Pi 4. Обратись к таблице Сравнение серий Raspberry Pi для получения подробной информации.

Как настроить камеру Raspberry Pi Camera Module для работы с Ultralytics YOLO26?#

Есть два метода настройки камеры Raspberry Pi для инференса YOLO26:

  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("yolo26n.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("yolo26n.pt")
    results = model("tcp://127.0.0.1:8888")

Для получения подробных инструкций по настройке посети раздел Инференс с камерой.

Комментарии