Salta para o conteúdo

Guia de iniciação rápida: Raspberry Pi com 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.



Observa: Actualizações e melhorias do Raspberry Pi 5.

Nota

Este guia foi testado com Raspberry Pi 4 e Raspberry Pi 5 executando a última versão do Raspberry Pi OS Bookworm (Debian 12). Espera-se que este guia funcione em dispositivos Raspberry Pi mais antigos, como o Raspberry Pi 3, desde que o mesmo Raspberry Pi OS Bookworm esteja instalado.

O que é o Raspberry Pi?

O Raspberry Pi é um computador de placa única, pequeno e económico. Tornou-se popular para uma vasta gama de projectos e aplicações, desde a automação doméstica para amadores até às utilizações industriais. As placas Raspberry Pi são capazes de executar uma variedade de sistemas operativos e oferecem pinos GPIO (General Purpose Input/Output) que permitem uma fácil integração com sensores, actuadores e outros componentes de hardware. Existem diferentes modelos com especificações variadas, mas todos partilham a mesma filosofia de conceção básica de serem de baixo custo, compactos e versáteis.

Comparação da série Raspberry Pi

Raspberry Pi 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837, SoC Cortex-A53 64BitBroadcom BCM2711, SoC Cortex-A72 64BitBroadcom BCM2712, SoC Cortex-A76 64Bit
CPU Frequência máxima1,4 GHz1.8GHz2,4 GHz
GPUVideocore IVVideocore VIVideoCore VII
GPU Frequência máxima400Mhz500Mhz800Mhz
Memória1GB LPDDR2 SDRAM1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM4GB, 8GB LPDDR4X-4267 SDRAM
PCIeN/AN/AInterface 1xPCIe 2.0
Consumo máximo de energia2,5A@5V3A@5V5A@5V (PD ativado)

O que é o Raspberry Pi OS?

Raspberry Pi OS (anteriormente conhecido como Raspbian) é um sistema operacional do tipo Unix baseado na distribuição Debian GNU/Linux para a família Raspberry Pi de computadores compactos de placa única distribuídos pela Raspberry Pi Foundation. O Raspberry Pi OS é altamente otimizado para o Raspberry Pi com CPUs ARM e usa um ambiente de trabalho LXDE modificado com o gerenciador de janelas de empilhamento Openbox. O Raspberry Pi OS está em desenvolvimento ativo, com ênfase em melhorar a estabilidade e performance de tantos pacotes Debian quanto possível no Raspberry Pi.

Flash Raspberry Pi OS para Raspberry Pi

A primeira coisa a fazer depois de pores as mãos num Raspberry Pi é flashear um cartão micro-SD com o Raspberry Pi OS, inseri-lo no dispositivo e arrancar com o OS. Segue a documentação detalhada de iniciação do Raspberry Pi para preparares o teu dispositivo para a primeira utilização.

Prepara-te 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.

Começa com o Docker

A maneira mais rápida de começar a usar o Ultralytics YOLO11 no Raspberry Pi é correr com uma imagem docker pré-construída para o Raspberry Pi.

Executa o comando abaixo para puxar o contentor Docker e correr na Raspberry Pi. Isto é baseado na imagem docker arm64v8/debian que contém Debian 12 (Bookworm) num ambiente Python3.

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

Depois de fazeres isto, passa para a secção Usar NCNN no Raspberry Pi.

Começa sem o Docker

Instala o pacote 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. Actualiza a lista de pacotes, instala o pip e actualiza para a versão mais recente

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Instala ultralytics pacote pip com dependências opcionais

    pip install ultralytics[export]
    
  3. Reinicia o dispositivo

    sudo reboot
    

Utiliza NCNN no Raspberry Pi

De todos os formatos de exportação de modelos suportados por Ultralytics, NCNN oferece o melhor desempenho de inferência ao trabalhar com dispositivos Raspberry Pi porque NCNN é altamente optimizado para plataformas móveis/embutidas (como a arquitetura ARM). Por isso, recomendamos que utilizes o NCNN com o Raspberry Pi.

Converte o modelo para NCNN e executa a inferência

O modelo YOLO11n no formato PyTorch é convertido para NCNN para executar a inferência com o modelo exportado.

Exemplo

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'

Dica

Para obter mais detalhes sobre as opções de exportação suportadas, visita a página de documentaçãoUltralytics sobre opções de implementação.

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.

Gráfico de comparação

Incluímos apenas benchmarks para os modelos YOLO11n e YOLO11s porque os tamanhos dos outros modelos são demasiado grandes para serem executados nos Raspberry Pis e não oferecem um desempenho decente.

YOLO11 benchmarks on RPi 5

Tabela de comparação detalhada

A tabela abaixo representa os resultados do benchmark para dois modelos diferentes (YOLO11n, YOLO11s) em nove formatos diferentes (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN), executados num Raspberry Pi 5, dando-nos o estado, o tamanho, a métrica mAP50-95(B) e o tempo de inferência para cada combinação.

Desempenho

FormatoEstadoTamanho no disco (MB)mAP50-95(B)Tempo de inferência (ms/im)
PyTorch5.40.61524.828
TorchScript10.50.6082666.874
ONNX10.20.6082181.818
OpenVINO10.40.6082530.224
TF SavedModel25.80.6082405.964
TF GraphDef10.30.6082473.558
TF Leve10.30.6082324.158
PaddlePaddle20.40.6082644.312
NCNN10.20.610693.938
FormatoEstadoTamanho no disco (MB)mAP50-95(B)Tempo de inferência (ms/im)
PyTorch18.40.75261226.426
TorchScript36.50.74161507.95
ONNX36.30.7416415.24
OpenVINO36.40.74161167.102
TF SavedModel91.10.7416776.14
TF GraphDef36.40.74161014.396
TF Leve36.40.7416845.934
PaddlePaddle72.50.74161567.824
NCNN36.20.7419197.358

Reproduzir os nossos resultados

Para reproduzir as referências Ultralytics acima em todos os formatos de exportação, executa este código:

Exemplo

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

Nota que os resultados dos testes de referência podem variar com base na configuração exacta de hardware e software de um sistema, bem como na carga de trabalho atual do sistema no momento em que os testes de referência são executados. Para obter os resultados mais fiáveis, utiliza um conjunto de dados com um grande número de imagens, ou seja data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 imagens val).

Usa a câmara 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.

Nota

O Raspberry Pi 5 usa conectores CSI mais pequenos do que o Raspberry Pi 4 (15 pinos vs 22 pinos), por isso vais precisar de um cabo adaptador de 15 pinos para 22 pinos para ligar a uma câmara Raspberry Pi.

Testa a câmara

Executa o seguinte comando depois de ligares a câmara ao Raspberry Pi. Deves ver um vídeo em direto da câmara durante cerca de 5 segundos.

rpicam-hello

Inferência com a câmara

Existem 2 métodos para utilizar a câmara Raspberry Pi para inferir modelos YOLO11.

Utilização

Podemos utilizar picamera2que vem pré-instalado com o Raspberry Pi OS para aceder à câmara e inferir os modelos YOLO11.

Exemplo

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()

Precisamos de iniciar um fluxo TCP com rpicam-vid da câmara ligada, para que possamos utilizar este URL de fluxo como entrada quando estivermos a inferir mais tarde. Executa o seguinte comando para iniciar o fluxo TCP.

rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888

Saber mais sobre rpicam-vid utilização na documentação oficial do Raspberry Pi

Exemplo

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"

Dica

Consulta o nosso documento sobre Fontes de Inferência se quiseres alterar o tipo de entrada de imagem/vídeo

Boas práticas ao utilizar o Raspberry Pi

Existem algumas práticas recomendadas a seguir para obteres o máximo desempenho nos Raspberry Pis com o YOLO11.

  1. Utiliza um SSD

    Quando utilizas a Raspberry Pi para uma utilização contínua 24x7, recomenda-se a utilização de um SSD para o sistema, uma vez que um cartão SD não será capaz de suportar gravações contínuas e poderá ficar danificado. Com o conetor PCIe integrado no Raspberry Pi 5, agora podes ligar SSDs usando um adaptador como a Base NVMe para Raspberry Pi 5.

  2. Flash sem GUI

    Ao fazeres o flash do Raspberry Pi OS, podes optar por não instalar o ambiente de trabalho (Raspberry Pi OS Lite) e isto pode poupar um pouco de RAM no dispositivo, deixando mais espaço para o processamento da visão computacional.

Próximos passos

Congratulations on successfully setting up YOLO on your Raspberry Pi! For further learning and support, visit Ultralytics YOLO11 Docs and Kashmir World Foundation.

Agradecimentos e citações

Este guia foi inicialmente criado por Daan Eeltink para a Kashmir World Foundation, uma organização dedicada à utilização do YOLO para a conservação de espécies em vias de extinção. Reconhecemos o seu trabalho pioneiro e o seu foco educacional no domínio das tecnologias de deteção de objectos.

Para mais informações sobre as actividades da Kashmir World Foundation, podes visitar o seu sítio Web.

FAQ

Como é que configuro o Ultralytics YOLO11 numa Raspberry Pi sem utilizar o Docker?

Para configurar o Ultralytics YOLO11 num Raspberry Pi sem Docker, segue estes passos:

  1. Actualiza a lista de pacotes e instala pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Instala o pacote Ultralytics com as dependências opcionais:
    pip install ultralytics[export]
    
  3. Reinicia o dispositivo para aplicar as alterações:
    sudo reboot
    

Para obter instruções detalhadas, consulta a secção Iniciar sem o Docker.

Por que razão devo utilizar o formato NCNN do Ultralytics YOLO11 no Raspberry Pi para tarefas de IA?

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.

Como posso converter um modelo YOLO11 para o formato NCNN para utilização no Raspberry Pi?

Podes converter um modelo PyTorch YOLO11 para o formato NCNN utilizando os comandos Python ou CLI :

Exemplo

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'

Para obter mais detalhes, consulte a secção Utilizar NCNN no Raspberry Pi.

Quais são as diferenças de hardware entre o Raspberry Pi 4 e o Raspberry Pi 5 relevantes para a execução do YOLO11?

As principais diferenças incluem:

  • CPU: Raspberry Pi 4 usa Broadcom BCM2711, Cortex-A72 64-bit SoC, enquanto Raspberry Pi 5 usa Broadcom BCM2712, Cortex-A76 64-bit SoC.
  • Frequência máxima CPU : O Raspberry Pi 4 tem uma frequência máxima de 1,8 GHz, enquanto o Raspberry Pi 5 atinge 2,4 GHz.
  • Memória: O Raspberry Pi 4 oferece até 8GB de LPDDR4-3200 SDRAM, enquanto o Raspberry Pi 5 apresenta LPDDR4X-4267 SDRAM, disponível em variantes de 4GB e 8GB.

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.

Como posso configurar um módulo de câmara Raspberry Pi para funcionar com Ultralytics YOLO11?

Existem dois métodos para configurar uma câmara Raspberry Pi para a inferência YOLO11:

  1. Utilizando 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. Usando um fluxo 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")
    

Para obter instruções de configuração detalhadas, visita a secção Inferência com câmara.

📅 C riado há 1 ano ✏️ Atualizado há 1 mês

Comentários