Salta para o conteúdo

Coral Edge TPU num Raspberry Pi com Ultralytics YOLOv8 🚀

Computador de placa única Raspberry Pi com acelerador USB Edge TPU

O que é um Coral Edge TPU?

O Coral Edge TPU é um dispositivo compacto que adiciona um coprocessador Edge TPU ao teu sistema. Permite a inferência ML de baixo consumo e alto desempenho para modelos TensorFlow Lite. Lê mais na página inicial do Coral Edge TPU .

Melhora o desempenho do modelo Raspberry Pi com Coral Edge TPU

Muitas pessoas querem executar os seus modelos num dispositivo incorporado ou móvel, como um Raspberry Pi, uma vez que são muito eficientes em termos energéticos e podem ser utilizados em muitas aplicações diferentes. No entanto, o desempenho da inferência nestes dispositivos é geralmente fraco, mesmo quando se utilizam formatos como onnx ou openvino. O Coral Edge TPU é uma óptima solução para este problema, uma vez que pode ser usado com um Raspberry Pi e acelerar bastante o desempenho da inferência.

Edge TPU no Raspberry Pi com TensorFlow Lite (Novo)⭐.

O guia existente do Coral sobre como usar o Edge TPU com um Raspberry Pi está desatualizado, e as compilações atuais do Coral Edge TPU não funcionam mais com as versões atuais do runtime TensorFlow Lite. Para além disso, Google parece ter abandonado completamente o projeto Coral, e não houve quaisquer actualizações entre 2021 e 2024. Este guia irá mostrar-te como colocar o Edge TPU a funcionar com as versões mais recentes do runtime TensorFlow Lite e um runtime Coral Edge TPU atualizado num computador de placa única (SBC) Raspberry Pi.

Pré-requisitos

Guia de instalação

Este guia assume que já tens uma instalação do Raspberry Pi OS a funcionar e que já instalaste ultralytics e todas as dependências. Para obteres ultralytics instalado, visita a página guia de início rápido para te preparares antes de continuares.

Instalando o tempo de execução do Edge TPU

Primeiro, precisas de instalar o tempo de execução do Edge TPU . Existem muitas versões diferentes disponíveis, pelo que tens de escolher a versão correcta para o teu sistema operativo.

Raspberry Pi OS Modo de alta frequência Versão para descarregar
Bullseye 32bit Não libedgetpu1-std_ ... .bullseye_armhf.deb
Bullseye 64bit Não libedgetpu1-std_ ... .bullseye_arm64.deb
Bullseye 32bit Sim libedgetpu1-max_ ... .bullseye_armhf.deb
Bullseye 64bit Sim libedgetpu1-max_ ... .bullseye_arm64.deb
Verme do livro 32bit Não libedgetpu1-std_ ... .bookworm_armhf.deb
Verme dos livros 64bit Não libedgetpu1-std_ ... .bookworm_arm64.deb
Verme do livro 32bit Sim libedgetpu1-max_ ... .bookworm_armhf.deb
Verme dos livros 64bit Sim libedgetpu1-max_ ... .bookworm_arm64.deb

Descarrega a versão mais recente a partir daqui.

Depois de transferires o ficheiro, podes instalá-lo com o seguinte comando:

sudo dpkg -i path/to/package.deb

Depois de instalares o runtime, tens de ligar o teu Coral Edge TPU a uma porta USB 3.0 do teu Raspberry Pi. Isto porque, de acordo com o guia oficial, um novo udev A regra tem de entrar em vigor após a instalação.

Importante

Se já tiveres o tempo de execução do Coral Edge TPU instalado, desinstala-o utilizando o seguinte comando.

# If you installed the standard version
sudo apt remove libedgetpu1-std

# If you installed the high frequency version
sudo apt remove libedgetpu1-max

Exporta o teu modelo para um modelo compatível com o Edge TPU

Para utilizar o Edge TPU, tens de converter o teu modelo para um formato compatível. Recomenda-se que executes a exportação em Google Colab, máquina Linux x86_64, usando o contentor oficial Ultralytics Docker, ou usando Ultralytics HUB, uma vez que o compilador Edge TPU não está disponível em ARM. Vê o Modo de exportação para os argumentos disponíveis.

Exportação

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/model.pt")  # Load an official model or custom model

# Export the model
model.export(format="edgetpu")
yolo export model=path/to/model.pt format=edgetpu  # Export an official model or custom model

O modelo exportado será guardado no ficheiro <model_name>_saved_model/ pasta com o nome <model_name>_full_integer_quant_edgetpu.tflite.

Executa o modelo

Depois de exportar o teu modelo, podes executar a inferência com ele utilizando o seguinte código:

Corre

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/edgetpu_model.tflite")  # Load an official model or custom model

# Run Prediction
model.predict("path/to/source.png")
yolo predict model=path/to/edgetpu_model.tflite source=path/to/source.png  # Load an official model or custom model

Encontra informações completas na página Prever para obteres todos os detalhes do modo de previsão.

Importante

Deves executar o modelo utilizando tflite-runtime e não tensorflow. Se tensorflow estiver instalado, desinstala o tensorflow com o seguinte comando:

pip uninstall tensorflow tensorflow-aarch64

Depois instala/atualiza tflite-runtime:

pip install -U tflite-runtime

Se quiseres um tflite-runtime roda para tensorflow 2.15.0 transfere-o a partir de aqui e instala-o utilizando pip ou o teu gestor de pacotes preferido.

FAQ

O que é um Coral Edge TPU e como é que melhora o desempenho do Raspberry Pi com Ultralytics YOLOv8 ?

O Coral Edge TPU é um dispositivo compacto concebido para adicionar um coprocessador Edge TPU ao teu sistema. Este coprocessador permite uma inferência de aprendizagem automática de baixo consumo e elevado desempenho, particularmente optimizada para modelos TensorFlow Lite. Quando utiliza um Raspberry Pi, o Edge TPU acelera a inferência de modelos ML, aumentando significativamente o desempenho, especialmente para modelos Ultralytics YOLOv8 . Podes ler mais sobre o Coral Edge TPU na sua página inicial.

Como é que instalo o tempo de execução do Coral Edge TPU num Raspberry Pi?

Para instalar o tempo de execução do Coral Edge TPU no teu Raspberry Pi, descarrega o ficheiro apropriado .deb para a tua versão do Raspberry Pi OS a partir de esta ligação. Uma vez descarregado, utiliza o seguinte comando para o instalar:

sudo dpkg -i path/to/package.deb

Certifica-te de que desinstalas todas as versões anteriores do Coral Edge TPU , seguindo os passos descritos na secção " Installation Walkthrough".

Posso exportar o meu modelo Ultralytics YOLOv8 para ser compatível com o Coral Edge TPU?

Sim, podes exportar o teu modelo Ultralytics YOLOv8 para ser compatível com o Coral Edge TPU. Recomenda-se que faças a exportação em Google Colab, numa máquina Linux x86_64 ou utilizando o contentor Docker Ultralytics . Também podes usar o Ultralytics HUB para exportar. Aqui está como podes exportar o teu modelo usando Python e CLI:

Exportação

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/model.pt")  # Load an official model or custom model

# Export the model
model.export(format="edgetpu")
yolo export model=path/to/model.pt format=edgetpu  # Export an official model or custom model

Para mais informações, consulta a documentação do Modo de Exportação.

O que devo fazer se TensorFlow já estiver instalado no meu Raspberry Pi mas eu quiser usar o tflite-runtime em vez dele?

Se tiveres TensorFlow instalado no teu Raspberry Pi e precisares de mudar para tflite-runtime, terás de desinstalar TensorFlow primeiro utilizando:

pip uninstall tensorflow tensorflow-aarch64

Depois, instala ou actualiza tflite-runtime com o seguinte comando:

pip install -U tflite-runtime

Para uma roda específica, como TensorFlow 2.15.0 tflite-runtime, podes descarregá-lo a partir de esta ligação e instala-o utilizando pip. Encontra instruções pormenorizadas na secção sobre a execução do modelo Executar o modelo.

Como é que executo a inferência com um modelo YOLOv8 exportado num Raspberry Pi utilizando o Coral Edge TPU?

Depois de exportar o modelo YOLOv8 para um formato compatível com o Edge TPU, é possível executar a inferência usando os seguintes trechos de código:

Corre

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/edgetpu_model.tflite")  # Load an official model or custom model

# Run Prediction
model.predict("path/to/source.png")
yolo predict model=path/to/edgetpu_model.tflite source=path/to/source.png  # Load an official model or custom model

Podes encontrar detalhes completos sobre as funcionalidades do modo de previsão na página Prever.



Criado em 2024-02-12, Atualizado em 2024-07-05
Autores: glenn-jocher (7), Skillnoob (1)

Comentários