Guia de Início Rápido: Raspberry Pi com Ultralytics YOLO11
Este guia abrangente fornece um passo a passo detalhado para implementar o Ultralytics YOLO11 em dispositivos Raspberry Pi. Além disso, apresenta benchmarks de desempenho para demonstrar as capacidades do YOLO11 nesses dispositivos pequenos e poderosos.
Assista: Atualizações e melhorias do Raspberry Pi 5.
Nota
Este guia foi testado com Raspberry Pi 4 e Raspberry Pi 5 executando o Raspberry Pi OS Bookworm (Debian 12) mais recente. Espera-se que o uso deste guia para 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?
Raspberry Pi é um computador de placa única pequeno e acessível. Tornou-se popular para uma ampla gama de projetos e aplicações, desde automação residencial para amadores até usos industriais. As placas Raspberry Pi são capazes de executar uma variedade de sistemas operacionais e oferecem pinos GPIO (General Purpose Input/Output) que permitem fácil integração com sensores, atuadores e outros componentes de hardware. Eles vêm em diferentes modelos com especificações variadas, mas todos compartilham a mesma filosofia de design básico 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, Cortex-A53 64Bit SoC | Broadcom BCM2711, Cortex-A72 64Bit SoC | Broadcom BCM2712, Cortex-A76 64Bit SoC |
Frequência Máxima da CPU | 1.4GHz | 1,8 GHz | 2,4 GHz |
GPU | Videocore IV | Videocore VI | VideoCore VII |
Frequência Máxima da GPU | 400Mhz | 500Mhz | 800Mhz |
Memória | 1 GB LPDDR2 SDRAM | 1 GB, 2 GB, 4 GB, 8 GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
PCIe | N/A | N/A | 1x Interface PCIe 2.0 |
Consumo Máximo de Energia | 2,5A@5V | 3A@5V | 5A@5V (PD habilitado) |
O que é o Raspberry Pi OS?
O Raspberry Pi OS (anteriormente conhecido como Raspbian) é um sistema operacional semelhante ao 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 desktop LXDE modificado com o gerenciador de janelas de empilhamento Openbox. O Raspberry Pi OS está em desenvolvimento ativo, com ênfase na melhoria da estabilidade e desempenho do máximo de pacotes Debian possível no Raspberry Pi.
Instalar o Raspberry Pi OS no Raspberry Pi
O primeiro passo após adquirir um Raspberry Pi é gravar um cartão micro-SD com o Raspberry Pi OS, inseri-lo no dispositivo e inicializar o sistema operacional. Siga a Documentação de Introdução do Raspberry Pi para preparar seu dispositivo para o primeiro uso.
Configurar Ultralytics
Existem duas maneiras de configurar o pacote Ultralytics no Raspberry Pi para construir seu próximo projeto de Visão Computacional. Você pode usar qualquer um deles.
Comece com o Docker
A maneira mais rápida de começar a usar o Ultralytics YOLO11 no Raspberry Pi é executar com a imagem docker pré-construída para Raspberry Pi.
Execute o comando abaixo para extrair o contêiner Docker e executar no Raspberry Pi. Isso é baseado na imagem docker arm64v8/debian que contém o Debian 12 (Bookworm) em um ambiente Python3.
t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $t
Depois de feito isso, pule para a seção Usar NCNN no Raspberry Pi.
Comece sem o Docker
Instalar Pacote Ultralytics
Aqui, instalaremos o pacote Ultralytics no Raspberry Pi com dependências opcionais para que possamos exportar os modelos PyTorch para outros formatos diferentes.
-
Atualize a lista de pacotes, instale o pip e atualize para a versão mais recente
sudo apt update sudo apt install python3-pip -y pip install -U pip
-
Instalar
ultralytics
pacote pip com dependências opcionaispip install ultralytics[export]
-
Reinicie o dispositivo
sudo reboot
Use NCNN no Raspberry Pi
De todos os formatos de exportação de modelo suportados pela Ultralytics, o NCNN oferece o melhor desempenho de inferência ao trabalhar com dispositivos Raspberry Pi porque o NCNN é altamente otimizado para plataformas móveis/embarcadas (como a arquitetura ARM).
Converter Modelo para NCNN e Executar 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, visite a página de documentação da Ultralytics sobre opções de implementação.
Benchmarks YOLO11 do Raspberry Pi 5
Os benchmarks do YOLO11 foram executados pela equipe Ultralytics em dez formatos de modelo diferentes, medindo velocidade e precisão: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN. Os benchmarks foram executados em um Raspberry Pi 5 com precisão FP32 com tamanho de imagem de entrada padrão de 640.
Gráfico de Comparação
Incluímos apenas benchmarks para os modelos YOLO11n e YOLO11s porque outros tamanhos de modelos são grandes demais para serem executados nos Raspberry Pis e não oferecem um desempenho decente.

Tabela de Comparação Detalhada
A tabela abaixo representa os resultados de benchmark para dois modelos diferentes (YOLO11n, YOLO11s) em dez formatos diferentes (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN), executados em um Raspberry Pi 5, fornecendo o status, tamanho, métrica mAP50-95(B) e tempo de inferência para cada combinação.
Desempenho
Formato | Status | Tamanho no disco (MB) | mAP50-95(B) | Tempo de inferência (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.5101 | 387.63 |
TorchScript | ✅ | 10.5 | 0.5077 | 457.84 |
ONNX | ✅ | 10.2 | 0.5077 | 191.09 |
OpenVINO | ✅ | 10.4 | 0.5058 | 84.76 |
TF SavedModel | ✅ | 25.9 | 0.5077 | 306.94 |
TF GraphDef | ✅ | 10.3 | 0.5077 | 309.82 |
TF Lite | ✅ | 10.3 | 0.5077 | 425.77 |
PaddlePaddle | ✅ | 20.5 | 0.5077 | 463.93 |
MNN | ✅ | 10.1 | 0.5059 | 114.97 |
NCNN | ✅ | 10.2 | 0.5031 | 94.03 |
Formato | Status | Tamanho no disco (MB) | mAP50-95(B) | Tempo de inferência (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.5791 | 962.69 |
TorchScript | ✅ | 36.5 | 0.5782 | 1181.94 |
ONNX | ✅ | 36.3 | 0.5782 | 449.85 |
OpenVINO | ✅ | 36.4 | 0.5810 | 181.53 |
TF SavedModel | ✅ | 91.0 | 0.5782 | 660.62 |
TF GraphDef | ✅ | 36.4 | 0.5782 | 669.23 |
TF Lite | ✅ | 36.3 | 0.5782 | 1093.41 |
PaddlePaddle | ✅ | 72.6 | 0.5782 | 1140.61 |
MNN | ✅ | 36.2 | 0.5805 | 274.63 |
NCNN | ✅ | 36.2 | 0.5784 | 224.20 |
Testado com Ultralytics 8.3.152
Nota
O tempo de inferência não inclui o pré/pós-processamento.
Reproduzir Nossos Resultados
Para reproduzir os benchmarks 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 COCO128 dataset for all all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco128.yaml imgsz=640
Observe que os resultados de benchmarking podem variar com base na configuração exata de hardware e software de um sistema, bem como na carga de trabalho atual do sistema no momento em que os benchmarks são executados. Para obter os resultados mais confiáveis, use um conjunto de dados com um grande número de imagens, ou seja, data='coco.yaml'
(5000 imagens de validação).
Use a câmera Raspberry Pi
Ao usar o Raspberry Pi para projetos de Visão Computacional, pode ser essencial capturar feeds de vídeo em tempo real para realizar a inferência. O conector MIPI CSI integrado no Raspberry Pi permite conectar módulos de câmera oficiais do Raspberry PI. Neste guia, usamos um Módulo de Câmera Raspberry Pi 3 para capturar os feeds de vídeo e realizar a inferência usando modelos YOLO11.
Dica
Saiba mais sobre os diferentes módulos de câmera oferecidos pelo Raspberry Pi e também como começar a usar os módulos de câmera Raspberry Pi.
Nota
O Raspberry Pi 5 usa conectores CSI menores do que o Raspberry Pi 4 (15 pinos vs 22 pinos), então você precisará de um cabo adaptador de 15 pinos para 22 pinos para conectar a uma Câmera Raspberry Pi.
Testar a Câmera
Execute o seguinte comando após conectar a câmera ao Raspberry Pi. Você deverá ver um feed de vídeo ao vivo da câmera por cerca de 5 segundos.
rpicam-hello
Dica
Saiba mais sobre rpicam-hello
uso na documentação oficial do Raspberry Pi
Inferência com Câmera
Existem 2 métodos de usar a Câmera Raspberry Pi para inferir modelos YOLO11.
Utilização
Podemos usar picamera2
que vem pré-instalado com o Raspberry Pi OS para acessar a câmera e modelos de inferência 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 iniciar um fluxo TCP com rpicam-vid
da câmera conectada para que possamos usar este URL de stream como entrada quando estivermos fazendo inferência mais tarde. Execute o seguinte comando para iniciar o stream TCP.
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
Saiba mais sobre rpicam-vid
uso 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 nosso documento sobre Fontes de Inferência se você quiser alterar o tipo de entrada de imagem/vídeo
Melhores Práticas ao usar Raspberry Pi
Existem algumas práticas recomendadas a serem seguidas para permitir o máximo desempenho em Raspberry Pis executando YOLO11.
-
Use um SSD
Ao usar o Raspberry Pi para uso contínuo 24 horas por dia, 7 dias por semana, é recomendável usar um SSD para o sistema, pois um cartão SD não será capaz de suportar gravações contínuas e poderá ser danificado. Com o conector PCIe integrado no Raspberry Pi 5, agora você pode conectar SSDs usando um adaptador como o NVMe Base for Raspberry Pi 5.
-
Instalar sem GUI
Ao instalar o Raspberry Pi OS, você pode optar por não instalar o ambiente Desktop (Raspberry Pi OS Lite) e isso pode economizar um pouco de RAM no dispositivo, deixando mais espaço para o processamento de visão computacional.
-
Overclock Raspberry Pi
Se você quiser um pequeno aumento no desempenho ao executar modelos Ultralytics YOLO11 no Raspberry Pi 5, você pode fazer overclock da CPU de sua base de 2,4 GHz para 2,9 GHz e da GPU de 800 MHz para 1 GHz. Se o sistema se tornar instável ou travar, reduza os valores de overclock em incrementos de 100 MHz. Certifique-se de que o resfriamento adequado esteja em vigor, pois o overclock aumenta a geração de calor e pode levar à limitação térmica.
a. Atualize o software
sudo apt update && sudo apt dist-upgrade
b. Abrir para editar o arquivo de configuração
sudo nano /boot/firmware/config.txt
c. Adicione as seguintes linhas na parte inferior
arm_freq=3000 gpu_freq=1000 force_turbo=1
d. Salve e saia pressionando CTRL + X, depois Y e pressione ENTER
e. Reinicie o Raspberry Pi
Próximos Passos
Parabéns por configurar com sucesso o YOLO no seu Raspberry Pi! Para mais aprendizagem e suporte, 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 ao uso de YOLO para a conservação de espécies ameaçadas de extinção. Reconhecemos seu trabalho pioneiro e foco educacional no campo das tecnologias de detecção de objetos.
Para obter mais informações sobre as atividades da Kashmir World Foundation, você pode visitar o site deles.
FAQ
Como configurar o Ultralytics YOLO11 em um Raspberry Pi sem usar o Docker?
Para configurar o Ultralytics YOLO11 em um Raspberry Pi sem Docker, siga estes passos:
- Atualize a lista de pacotes e instale
pip
:sudo apt update sudo apt install python3-pip -y pip install -U pip
- Instale o pacote Ultralytics com dependências opcionais:
pip install ultralytics[export]
- Reinicie o dispositivo para aplicar as alterações:
sudo reboot
Para instruções detalhadas, consulte a seção Começar sem Docker.
Por que devo usar o formato NCNN do Ultralytics YOLO11 no Raspberry Pi para tarefas de IA?
O formato NCNN do Ultralytics YOLO11 é altamente otimizado para plataformas móveis e embarcadas, tornando-o ideal para executar tarefas de IA em dispositivos Raspberry Pi. O NCNN maximiza o desempenho da inferência, aproveitando a 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 suportadas, visite a página de documentação do Ultralytics sobre opções de implantação.
Como posso converter um modelo YOLO11 para o formato NCNN para uso no Raspberry Pi?
Você pode converter um modelo PyTorch YOLO11 para o formato NCNN usando 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 seção Usar NCNN no Raspberry Pi.
Quais são as diferenças de hardware entre Raspberry Pi 4 e Raspberry Pi 5 relevantes para executar o YOLO11?
As principais diferenças incluem:
- CPU: O Raspberry Pi 4 usa Broadcom BCM2711, Cortex-A72 SoC de 64 bits, enquanto o Raspberry Pi 5 usa Broadcom BCM2712, Cortex-A76 SoC de 64 bits.
- Frequência Máxima da 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é 8 GB de SDRAM LPDDR4-3200, enquanto o Raspberry Pi 5 apresenta SDRAM LPDDR4X-4267, disponível em variantes de 4 GB e 8 GB.
Esses aprimoramentos contribuem para melhores benchmarks de desempenho para 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âmera Raspberry Pi para funcionar com Ultralytics YOLO11?
Existem dois métodos para configurar uma Câmera Raspberry Pi para inferência YOLO11:
-
Usando
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()
-
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 instruções de configuração detalhadas, visite a seção Inferência com Câmera.