Ir al contenido

Coral Edge TPU en una Raspberry Pi con Ultralytics YOLO11 🚀

Ordenador monoplaca Raspberry Pi con acelerador USB Edge TPU

¿Qué es un borde de coral TPU?

Coral Edge TPU es un dispositivo compacto que añade un coprocesador Edge TPU a su sistema. Permite una inferencia ML de bajo consumo y alto rendimiento para modelos TensorFlow modelos Lite. Más información en la página de inicio de Coral Edge TPU .



Observa: Cómo ejecutar Inference en Raspberry Pi utilizando Google Coral Edge TPU

Aumenta el rendimiento del modelo Raspberry Pi con Coral Edge TPU

Mucha gente quiere ejecutar sus modelos en un dispositivo embebido o móvil, como una Raspberry Pi, ya que consumen muy poca energía y pueden utilizarse en muchas aplicaciones diferentes. Sin embargo, el rendimiento de la inferencia en estos dispositivos suele ser deficiente, incluso cuando se utilizan formatos como ONNX o OpenVINO. Coral Edge TPU es una gran solución a este problema, ya que puede utilizarse con una Raspberry Pi y acelerar enormemente el rendimiento de la inferencia.

Edge TPU en Raspberry Pi con TensorFlow Lite (Nuevo)⭐

La guía existente de Coral sobre cómo utilizar Edge TPU con una Raspberry Pi está obsoleta, y las compilaciones actuales del tiempo de ejecución de Coral Edge TPU ya no funcionan con las versiones actuales del tiempo de ejecución TensorFlow Lite. Además de eso, Google parece haber abandonado completamente el proyecto Coral, y no ha habido ninguna actualización entre 2021 y 2024. Esta guía le mostrará cómo conseguir que Edge TPU funcione con las últimas versiones del tiempo de ejecución TensorFlow Lite y un tiempo de ejecución actualizado de Coral Edge TPU en un ordenador monoplaca (SBC) Raspberry Pi.

Requisitos previos

Guía de instalación

Esta guía asume que usted ya tiene una instalación de trabajo Raspberry Pi OS y han instalado ultralytics y todas las dependencias. Para obtener ultralytics instalado, visite la página guía de inicio rápido para configurarlo antes de continuar aquí.

Instalación del runtime Edge TPU

First, we need to install the Edge TPU runtime. There are many different versions available, so you need to choose the right version for your operating system. The high frequency version runs the Edge TPU at a higher clock speed, which improves performance. However, it might result in the Edge TPU thermal throttling, so it is recommended to have some sort of cooling mechanism in place.

Sistema operativo Raspberry Pi Modo de alta frecuencia Versión para descargar
Bullseye 32 bits No libedgetpu1-std_ ... .bullseye_armhf.deb
Bullseye 64 bits No libedgetpu1-std_ ... .bullseye_arm64.deb
Bullseye 32 bits libedgetpu1-max_ ... .bullseye_armhf.deb
Bullseye 64 bits libedgetpu1-max_ ... .bullseye_arm64.deb
Ratón de biblioteca 32 bits No libedgetpu1-std_ ... .bookworm_armhf.deb
Ratón de biblioteca 64 bits No libedgetpu1-std_ ... .bookworm_arm64.deb
Ratón de biblioteca 32 bits libedgetpu1-max_ ... .bookworm_armhf.deb
Ratón de biblioteca 64 bits libedgetpu1-max_ ... .bookworm_arm64.deb

Descargue la última versión desde aquí.

Después de descargar el archivo, puede instalarlo con el siguiente comando:

sudo dpkg -i path/to/package.deb

Después de instalar el runtime, necesitas conectar tu Coral Edge TPU a un puerto USB 3.0 de tu Raspberry Pi. Esto se debe a que, según la guía oficial, un nuevo udev debe entrar en vigor después de la instalación.

Importante

Si ya tiene instalado el tiempo de ejecución de Coral Edge TPU , desinstálelo utilizando el siguiente comando.

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

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

Export to Edge TPU

Para utilizar Edge TPU, necesita convertir su modelo a un formato compatible. Se recomienda ejecutar la exportación en Google Colab, máquina Linux _64, utilizando el contenedor Docker oficial Ultralytics , o utilizando Ultralytics HUB, ya que el compilador Edge TPU no está disponible en ARM. Ver el Modo de Exportación para los argumentos disponibles.

Exportar el modelo

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

El modelo exportado se guardará en el archivo <model_name>_saved_model/ con el nombre <model_name>_full_integer_quant_edgetpu.tflite. Es importante que su modelo termine con el sufijo _edgetpu.tflite, otherwise ultralytics doesn't know that you're using an Edge TPU model.

Ejecución del modelo

Antes de poder ejecutar el modelo, deberá instalar las bibliotecas adecuadas.

Si tensorflow está instalado, desinstale tensorflow con el siguiente comando:

pip uninstall tensorflow tensorflow-aarch64

A continuación, instale/actualice tflite-runtime:

pip install -U tflite-runtime

Ahora puede ejecutar la inferencia utilizando el siguiente código:

Ejecución del modelo

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/<model_name>_full_integer_quant_edgetpu.tflite")  # Load an official model or custom model

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

En la página Predecir encontrará información completa sobre el modo de predicción.

Inferencia con múltiples TPU Edge

Si tiene varios TPU Edge, puede utilizar el siguiente código para seleccionar un TPU específico.

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/<model_name>_full_integer_quant_edgetpu.tflite")  # Load an official model or custom model

# Run Prediction
model.predict("path/to/source.png")  # Inference defaults to the first TPU

model.predict("path/to/source.png", device="tpu:0")  # Select the first TPU

model.predict("path/to/source.png", device="tpu:1")  # Select the second TPU

Puntos de referencia

Puntos de referencia

Tested with Raspberry Pi Os Bookworm 64-Bit and a USB Coral Edge TPU.

Nota

Shown is the inference time, pre-/postprocessing is not included.

Tamaño de la imagen Modelo Standard Inference Time (ms) High Frequency Inference Time (ms)
320 YOLOv8n 32.2 26.7
320 YOLOv8s 47.1 39.8
512 YOLOv8n 73.5 60.7
512 YOLOv8s 149.6 125.3
Tamaño de la imagen Modelo Standard Inference Time (ms) High Frequency Inference Time (ms)
320 YOLOv8n 22.2 16.7
320 YOLOv8s 40.1 32.2
512 YOLOv8n 53.5 41.6
512 YOLOv8s 132.0 103.3

On average:

  • The Raspberry Pi 5 is 22% faster with the standard mode than the Raspberry Pi 4B.
  • The Raspberry Pi 5 is 30.2% faster with the high frequency mode than the Raspberry Pi 4B.
  • The high frequency mode is 28.4% faster than the standard mode.

PREGUNTAS FRECUENTES

¿Qué es Coral Edge TPU y cómo mejora el rendimiento de Raspberry Pi con Ultralytics YOLO11 ?

El Coral Edge TPU es un dispositivo compacto diseñado para añadir un coprocesador Edge TPU a su sistema. Este coprocesador permite una inferencia de aprendizaje automático de bajo consumo y alto rendimiento, especialmente optimizada para los modelos TensorFlow Lite. Cuando se utiliza una Raspberry Pi, el Edge TPU acelera la inferencia de modelos ML, aumentando significativamente el rendimiento, especialmente para los modelos Ultralytics YOLO11 . Puede obtener más información sobre Coral Edge TPU en su página web.

¿Cómo se instala el runtime Coral Edge TPU en una Raspberry Pi?

Para instalar el tiempo de ejecución de Coral Edge TPU en su Raspberry Pi, descargue el archivo .deb para su versión del sistema operativo Raspberry Pi desde este enlace. Una vez descargado, utilice el siguiente comando para instalarlo:

sudo dpkg -i path/to/package.deb

Asegúrese de desinstalar cualquier versión anterior del tiempo de ejecución de Coral Edge TPU siguiendo los pasos descritos en la sección Guía de instalación.

¿Puedo exportar mi modelo Ultralytics YOLO11 para que sea compatible con Coral Edge TPU?

Sí, puede exportar su modelo Ultralytics YOLO11 para que sea compatible con Coral Edge TPU. Se recomienda realizar la exportación en Google Colab, una máquina Linux x86_64 o utilizando el contenedorUltralytics Docker. También puede utilizar Ultralytics HUB para exportar. A continuación se muestra cómo puede exportar su modelo utilizando Python y CLI:

Exportar el modelo

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 más información, consulte la documentación sobre el modo de exportación.

What should I do if TensorFlow is already installed on my Raspberry Pi, but I want to use tflite-runtime instead?

Si tiene TensorFlow instalado en su Raspberry Pi y necesita cambiar a tflite-runtime, tendrás que desinstalar TensorFlow primero usando:

pip uninstall tensorflow tensorflow-aarch64

A continuación, instale o actualice tflite-runtime con el siguiente comando:

pip install -U tflite-runtime

Para una rueda específica, como TensorFlow 2.15.0 tflite-runtimepuede descargarlo en este enlace e instalarlo utilizando pip. Encontrará instrucciones detalladas en la sección sobre el funcionamiento del modelo Ejecución del modelo.

¿Cómo se ejecuta la inferencia con un modelo exportado de YOLO11 en una Raspberry Pi utilizando Coral Edge TPU?

Después de exportar su modelo YOLO11 a un formato compatible con Edge TPU, puede ejecutar la inferencia utilizando los siguientes fragmentos de código:

Ejecución del modelo

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

Encontrará información detallada sobre todas las funciones del modo de predicción en la página Predecir.

Creado hace 11 meses ✏️ Actualizado hace 4 días

Comentarios