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, таких как 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.4GHz1.8GHz2.4GHz
GPUVideocore IVVideocore VIVideoCore VII
Макс. частота GPU400Mhz500Mhz800Mhz
Память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 тщательно оптимизирована для работы на Raspberry Pi с процессорами ARM и использует измененную среду рабочего стола 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 двумя способами для своего следующего проекта по компьютерному зрению:

Начать с 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. Зависимости экспорта для таких форматов, как NCNN, устанавливаются автоматически при первом экспорте модели PyTorch, поэтому здесь требуется только базовый пакет.

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

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
  2. Установи pip-пакет ultralytics

    pip install ultralytics
  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 не поставляет никаких колес (wheels) 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 Camera.

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

Выполни следующую команду после подключения камеры к 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 в режиме непрерывной работы 24x7 рекомендуется использовать твердотельный накопитель (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 mode) для получения дополнительных параметров инференции, режим экспорта (Export mode) для дополнительных форматов развертывания или руководство по NVIDIA Jetson, если тебе требуется большая вычислительная мощность на периферии. Полную документацию можно найти в документации Ultralytics YOLO26.

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

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

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

FAQ#

  • Чтобы настроить 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
    3. Перезагрузи устройство, чтобы применить изменения:
      sudo reboot

    Подробные инструкции см. в разделе Начать без использования Docker.

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

  • Ты можешь конвертировать модель 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.

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

    • 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 для инференса 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")

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

Комментарии