Краткое руководство: 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 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
|---|---|---|---|
| CPU | Broadcom BCM2837, Cortex-A53 64-битный SoC | Broadcom BCM2711, Cortex-A72 64-битный SoC | Broadcom BCM2712, Cortex-A76 64-битный SoC |
| Макс. частота CPU | 1.4GHz | 1.8GHz | 2.4GHz |
| GPU | Videocore IV | Videocore VI | VideoCore VII |
| Макс. частота GPU | 400Mhz | 500Mhz | 800Mhz |
| Память | 1 ГБ LPDDR2 SDRAM | 1 ГБ, 2 ГБ, 4 ГБ, 8 ГБ LPDDR4-3200 SDRAM | 4 ГБ, 8 ГБ LPDDR4X-4267 SDRAM |
| PCIe | Н/Д | Н/Д | 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 в свои руки, — это записать образ 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, поэтому здесь требуется только базовый пакет.
-
Обнови список пакетов, установи pip и обнови его до последней версии
sudo apt update sudo apt install python3-pip -y pip install -U pip -
Установи pip-пакет
ultralyticspip install ultralytics -
Перезагрузи устройство
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. Таблица и график ниже демонстрируют это сравнение.
| Модель | mAP50-95(B) | Время вывода (мс/из) |
|---|---|---|
| YOLO26n | 40.1 | 128.42 |
| YOLO26s | 47.8 | 352.84 |
| YOLO26m | 52.5 | 993.78 |
| YOLO26l | 54.4 | 1259.46 |
| YOLO26x | 56.9 | 2636.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 и не обеспечивают приемлемой производительности.
Подробная сравнительная таблица#
В таблице ниже представлены результаты бенчмарков для двух разных моделей (YOLO26n, YOLO26s) в восьми различных форматах (PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch, LiteRT) при работе на Raspberry Pi 5. Для каждой комбинации указаны статус, размер, метрика mAP50-95(B) и время инференса.
| Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/из) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4760 | 299.09 |
| TorchScript | ✅ | 9.8 | 0.4734 | 353.20 |
| ONNX | ✅ | 9.5 | 0.4734 | 125.99 |
| OpenVINO | ✅ | 9.6 | 0.4734 | 104.55 |
| MNN | ✅ | 9.4 | 0.4749 | 91.87 |
| NCNN | ✅ | 9.4 | 0.4784 | 67.03 |
| ExecuTorch | ✅ | 9.4 | 0.4772 | 144.83 |
| LiteRT | ✅ | 9.8 | 0.4730 | 123.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-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, а также о том, как начать работу с модулями камер Raspberry Pi.
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.
Мы можем использовать 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.
-
Используй SSD
При использовании Raspberry Pi в режиме непрерывной работы 24x7 рекомендуется использовать твердотельный накопитель (SSD) для системы, так как карта SD не сможет выдержать постоянные циклы записи и может выйти из строя. Благодаря встроенному разъему PCIe на Raspberry Pi 5 теперь ты можешь подключать накопители SSD с помощью адаптера, такого как NVMe Base для Raspberry Pi 5.
-
Установка без графического интерфейса (GUI)
При установке Raspberry Pi OS ты можешь выбрать вариант без графической среды (Raspberry Pi OS Lite), что позволит сэкономить немного оперативной памяти на устройстве, освободив больше места для обработки компьютерного зрения.
-
Разгон Raspberry Pi
Если ты хочешь немного повысить производительность при запуске моделей Ultralytics YOLO26 на Raspberry Pi 5, ты можешь разогнать CPU с базовых 2.4 ГГц до 2.9 ГГц, а GPU — с 800 МГц до 1 ГГц. Если система станет нестабильной или начнет зависать, уменьшай значения разгона с шагом 100 МГц. Обеспечь надлежащее охлаждение, так как разгон увеличивает тепловыделение и может привести к троттлингу.
a. Обнови программное обеспечение
sudo apt update && sudo apt dist-upgradeb. Открой файл конфигурации для редактирования
sudo nano /boot/firmware/config.txtc. Добавь следующие строки в конец файла
arm_freq=3000 gpu_freq=1000 force_turbo=1d. Сохрани изменения и выйди, нажав 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, выполни следующие шаги:
- Обнови список пакетов и установи
pip:sudo apt update sudo apt install python3-pip -y pip install -U pip - Установи пакет Ultralytics:
pip install ultralytics - Перезагрузи устройство, чтобы применить изменения:
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:
-
Использование
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() -
Использование TCP-потока:
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("tcp://127.0.0.1:8888")
Подробные инструкции по настройке см. в разделе Инференция с камерой.
-