Saltar para o conteúdo

Guia de início rápido: Raspberry Pi com Ultralytics YOLO11

Este guia abrangente fornece um passo a passo detalhado para a implantação do Ultralytics YOLO11 em dispositivos Raspberry Pi. Além disso, apresenta benchmarks de desempenho para demonstrar as capacidades do YOLO11 nestes pequenos e poderosos dispositivos.



Ver: 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 a utilização deste guia em dispositivos Raspberry Pi mais antigos, como o Raspberry Pi 3, funcione 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 automatizaçã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 3 Raspberry Pi 4 Raspberry Pi 5
CPU Broadcom BCM2837, SoC Cortex-A53 64Bit Broadcom BCM2711, SoC Cortex-A72 64Bit Broadcom BCM2712, SoC Cortex-A76 64Bit
CPU Frequência máxima 1,4 GHz 1.8GHz 2,4 GHz
GPU Videocore IV Videocore VI Núcleo de vídeo VII
GPU Frequência máxima 400Mhz 500Mhz 800Mhz
Memória 1GB LPDDR2 SDRAM 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM 4GB, 8GB LPDDR4X-4267 SDRAM
PCIe N/A N/A Interface 1xPCIe 2.0
Consumo máximo de energia 2,5A@5V 3A@5V 5A@5V (PD ativado)

O que é o Raspberry Pi OS?

O Raspberry Pi OS (anteriormente conhecido como Raspbian) é um sistema operativo 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 optimizado para o Raspberry Pi com CPUs ARM e usa um ambiente de trabalho LXDE modificado com o gestor de janelas de empilhamento Openbox. O Raspberry Pi OS está em desenvolvimento ativo, com ênfase na melhoria da 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 deitar as mãos a um Raspberry Pi é fazer flash de um cartão micro-SD com o Raspberry Pi OS, inseri-lo no dispositivo e arrancar com o SO. Siga a documentação detalhada de introdução do Raspberry Pi para preparar o seu dispositivo para a primeira utilização.

Configurar Ultralytics

Existem duas formas de configurar o pacote Ultralytics no Raspberry Pi para construir o seu próximo projeto de Visão Computacional. Pode utilizar qualquer uma delas.

Comece com o Docker

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

Execute o comando abaixo para puxar o contentor Docker e correr no 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 fazer isto, passe à secção Utilizar NCNN no Raspberry Pi.

Iniciar sem o Docker

Instalar o pacote Ultralytics

Aqui vamos instalar o pacote Ultralytics no Raspberry Pi com dependências opcionais para que possamos exportar os modelos PyTorch modelos para outros formatos diferentes.

  1. Atualizar a lista de pacotes, instalar o pip e atualizar para a versão mais recente

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

    pip install ultralytics[export]
    
  3. Reiniciar o dispositivo

    sudo reboot
    

Utilizar NCNN no Raspberry Pi

De todos os formatos de exportação de modelos suportados por Ultralytics, NCNN oferece o melhor desempenho de inferência quando se trabalha com dispositivos Raspberry Pi porque NCNN está altamente optimizado para plataformas móveis/embutidas (como a arquitetura ARM). Por conseguinte, recomendamos a utilização do NCNN com o Raspberry Pi.

Converter o modelo para NCNN e executar a inferência

O modelo YOLO11n no formato PyTorch é convertido para NCNN para efetuar 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, visite a página de documentaçãoUltralytics sobre opções de implantação.

Raspberry Pi 5 YOLO11 Benchmarks

YOLO11 Os testes de referência foram executados pela equipa Ultralytics em nove formatos de modelos diferentes, medindo a velocidade e a precisão: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN. Os testes de referência foram executados num Raspberry Pi 5 com precisão FP32 e um tamanho de imagem de entrada predefinido de 640.

Gráfico de comparação

Apenas incluímos 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 no RPi 5
Comparação de desempenho com Ultralytics 8.3.39

Tabela de comparação pormenorizada

A tabela abaixo representa os resultados do teste de referência 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

Formato Estado Tamanho no disco (MB) mAP50-95(B) Tempo de inferência (ms/im)
PyTorch 5.4 0.6100 405.238
TorchScript 10.5 0.6082 526.628
ONNX 10.2 0.6082 168.082
OpenVINO 10.4 0.6082 81.192
TF SavedModel 25.8 0.6082 377.968
TF GraphDef 10.3 0.6082 487.244
TF Leve 10.3 0.6082 317.398
PaddlePaddle 20.4 0.6082 561.892
MNN 10.1 0.6106 112.554
NCNN 10.2 0.6106 88.026
Formato Estado Tamanho no disco (MB) mAP50-95(B) Tempo de inferência (ms/im)
PyTorch 18.4 0.7526 1011.60
TorchScript 36.5 0.7416 1268.502
ONNX 36.3 0.7416 324.17
OpenVINO 36.4 0.7416 179.324
TF SavedModel 91.1 0.7416 714.382
TF GraphDef 36.4 0.7416 1019.83
TF Leve 36.4 0.7416 849.86
PaddlePaddle 72.5 0.7416 1276.34
MNN 36.2 0.7409 273.032
NCNN 36.2 0.7419 194.858

Comparação de desempenho com Ultralytics 8.3.39

Reproduzir os nossos resultados

Para reproduzir as referências Ultralytics acima em todos os formatos de exportação, execute 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

Note-se 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, utilize 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).

Utilizar a câmara Raspberry Pi

Quando se utiliza o Raspberry Pi para projectos de Visão por Computador, pode ser essencial obter imagens de vídeo em tempo real para efetuar inferências. O conetor MIPI CSI integrado no Raspberry Pi permite-lhe ligar módulos de câmara Raspberry PI oficiais. Neste guia, utilizámos um módulo de câmara Raspberry Pi 3 para captar as imagens de vídeo e efetuar a inferência utilizando os modelos YOLO11 .

Nota

O Raspberry Pi 5 utiliza conectores CSI mais pequenos do que o Raspberry Pi 4 (15 pinos vs 22 pinos), pelo que será necessário um cabo adaptador de 15 pinos para 22 pinos para ligar a uma câmara Raspberry Pi.

Testar a câmara

Execute o seguinte comando depois de ligar a câmara ao Raspberry Pi. Deverá ver uma transmissão de vídeo em direto da câmara durante cerca de 5 segundos.

rpicam-hello

Inferência com 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 YOLO11 modelos.

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. Execute o seguinte comando para iniciar o fluxo TCP.

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

Saiba 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

Consulte o nosso documento sobre Fontes de inferência se pretender alterar o tipo de entrada de imagem/vídeo

Boas práticas na utilização do Raspberry Pi

Existem algumas práticas recomendadas a serem seguidas para permitir o máximo desempenho em Raspberry Pis executando YOLO11.

  1. Utilizar um SSD

    Ao usar o Raspberry Pi para uso contínuo 24x7, recomenda-se usar um SSD para o sistema, porque um cartão SD não será capaz de suportar gravações contínuas e pode ficar quebrado. Com o conetor PCIe integrado no Raspberry Pi 5, agora é possível conectar SSDs usando um adaptador como a Base NVMe para Raspberry Pi 5.

  2. Flash sem GUI

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

Próximos passos

Parabéns por ter configurado com sucesso o YOLO no seu Raspberry Pi! Para mais aprendizagem e apoio, visite Ultralytics YOLO11 Docs e 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, visite o seu sítio Web.

FAQ

Como posso configurar Ultralytics YOLO11 num Raspberry Pi sem utilizar o Docker?

Para configurar Ultralytics YOLO11 em um Raspberry Pi sem Docker, siga estas etapas:

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

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

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

Ultralytics YOLO11O formato NCNN é altamente optimizado para plataformas móveis e incorporadas, o que o torna ideal para executar tarefas de IA em dispositivos Raspberry Pi. O NCNN maximiza o desempenho da inferência tirando partido da arquitetura ARM, proporcionando um processamento mais rápido e eficiente em comparação com outros formatos. Para obter mais detalhes sobre as opções de exportação compatíveis, visite a página de documentaçãoUltralytics sobre opções de implantação.

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

É possível 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 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: O Raspberry Pi 4 utiliza o Broadcom BCM2711, Cortex-A72 64-bit SoC, enquanto o Raspberry Pi 5 utiliza o 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.

Estas melhorias contribuem para melhores benchmarks de desempenho para os modelos YOLO11 no Raspberry Pi 5 em comparação com o Raspberry Pi 4. Consulte a tabela de comparação da série Raspberry Pi para obter mais detalhes.

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 YOLO11 inferência:

  1. Utilizar 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. Utilizar 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, visite a secção Inferência com câmara.

📅C riado há 1 ano ✏️ Atualizado há 8 dias

Comentários