Перейти к содержанию

Краткое руководство по началу работы: Raspberry Pi с Ultralytics YOLO26

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



Смотреть: Обновления и улучшения 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 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837, Cortex-A53 64Bit SoCBroadcom BCM2711, Cortex-A72 64Bit SoCBroadcom BCM2712, Cortex-A76 64Bit SoC
Максимальная частота CPU1.4GHz1.8GHz2.4GHz
GPUVideocore IVVideocore VIVideoCore VII
Максимальная частота GPU400Mhz500Mhz800Mhz
Память1GB LPDDR2 SDRAM1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM4GB, 8GB LPDDR4X-4267 SDRAM
PCIeН/ДН/Д1xPCIe 2.0 Interface
Максимальная потребляемая мощность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, — это прошить micro-SD карту с Raspberry Pi OS, вставить ее в устройство и загрузиться в ОС. Следуйте подробной документации по началу работы от Raspberry Pi, чтобы подготовить устройство к первому использованию.

Настройка Ultralytics

Существует два способа настройки пакета Ultralytics на Raspberry Pi для создания вашего следующего проекта в области компьютерного зрения. Вы можете использовать любой из них.

Начать с Docker

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

Выполните приведенную ниже команду, чтобы извлечь контейнер Docker и запустить его на Raspberry Pi. Он основан на образе Docker 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

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

  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 и запуск инференса

Модель 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")
# Export a YOLO26n PyTorch model to NCNN format
yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolo26n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'

Совет

Для получения более подробной информации о поддерживаемых опциях экспорта посетите страницу документации Ultralytics, посвященную вариантам развертывания.

Тесты Raspberry Pi 5 YOLO26

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

Сравнительная таблица

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

Тесты YOLO26 на RPi 5
Тестирование с помощью Ultralytics .4.1

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

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

Производительность

ФорматСтатусРазмер на диске (МБ)mAP50-95(B)Время инференса (мс/изобр.)
PyTorch5.30.4798302.15
TorchScript9.80.4764357.58
ONNX9.50.4764130.33
OpenVINO9.60.481870.74
TF SavedModel24.60.4764213.58
TF GraphDef9.50.4764213.5
TF Lite9.90.4764251.41
MNN9.40.478490.89
NCNN9.40.480567.69
ExecuTorch9.40.4764148.36
ФорматСтатусРазмер на диске (МБ)mAP50-95(B)Время инференса (мс/изобр.)
PyTorch19.50.5740836.54
TorchScript36.80.56651032.25
ONNX36.50.5665351.96
OpenVINO36.70.5654158.6
TF SavedModel92.20.5665507.6
TF GraphDef36.50.5665525.64
TF Lite36.90.5665805.3
MNN36.40.5644236.47
NCNN36.40.5697168.47
ExecuTorch36.50.5665388.72

Тестирование с помощью Ultralytics .4.1

Примечание

Время логического вывода не включает предварительную/постобработку.

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

Чтобы воспроизвести вышеуказанные бенчмарки 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)
# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
yolo benchmark model=yolo26n.pt data=coco128.yaml imgsz=640

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

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

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

Примечание

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

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

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

rpicam-hello

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

Существует 2 метода использования камеры 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()

Нам нужно инициировать 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 YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

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

Совет

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

Рекомендации по использованию Raspberry Pi

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

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

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

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

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

Следующие шаги

Вы успешно настроили YOLO на вашем Raspberry Pi. Для дальнейшего обучения и поддержки посетите документацию Ultralytics YOLO26 и Kashmir World Foundation.

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

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

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

Часто задаваемые вопросы

Как настроить 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, обеспечивая более быструю и эффективную обработку по сравнению с другими форматами. Для получения дополнительной информации о поддерживаемых параметрах экспорта посетите страницу документации Ultralytics по вариантам развертывания.

Как преобразовать модель 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")
# Export a YOLO26n PyTorch model to NCNN format
yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolo26n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'

Для получения более подробной информации см. раздел Использование NCNN на Raspberry Pi.

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

Ключевые различия включают:

  • CPU: Raspberry Pi 4 использует Broadcom BCM2711, Cortex-A72 64-bit SoC, а Raspberry Pi 5 использует Broadcom BCM2712, Cortex-A76 64-bit SoC.
  • Максимальная частота 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 для работы с 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")
    

Для получения подробных инструкций по настройке посетите раздел Логический вывод с помощью камеры.



📅 Создано 2 лет назад ✏️ Обновлено 5 дней назад
glenn-jocherlakshanthadlakshanthadpderrengerLaughing-qerfan-zekriMatthewNoyceUltralyticsAssistantRizwanMunawarIvorZhu331

Комментарии