Convertir modelo a formato Edge TPU TFlite para Google Coral
Introducción
El Coral M.2 Accelerator con Dual Edge TPU es un módulo M.2 que trae dos coprocesadores Edge TPU a sistemas y productos existentes con un slot M.2 E-key disponible. Tensorflow y Pytorch son los marcos de aprendizaje profundo más populares. Por lo tanto, para usar el Edge TPU, necesitamos compilar el modelo al formato de Edge TPU.
Este artículo de wiki te guiará a través del proceso de compilar un modelo y ejecutarlo en el Google Coral TPU, permitiéndote aprovechar sus capacidades para aplicaciones de aprendizaje automático de alto rendimiento.
Preparar el hardware
Raspberry Pi 5 8GB | Raspberry Pi M.2 HAT+ | Coral M.2 Accelerator B+M key |
---|---|---|
![]() | ![]() | ![]() |
Instalar hardware
Convertir modelo
Antes de comenzar, asegúrate de haber instalado el Google Coral TPU en la Pi 5 siguiendo la guía de instalación.
- Para modelo de Tensorflow
- Para modelo de Pytorch
- Para modelo Yolo
Y todo el proceso ha sido probado en Python 3.11.9.
Instalar Tensorflow
pip install tensorflow
Verificar tflite_converter
tflite_convert -h
El resultado debería ser algo como esto:
2024-07-23 10:41:03.750087: I tensorflow/core/platform/cpu_feature_guard.cc:182] Este binario de TensorFlow está optimizado para usar las instrucciones de CPU disponibles en operaciones críticas de rendimiento.
Para habilitar las siguientes instrucciones: AVX2 FMA, en otras operaciones, recompila TensorFlow con los indicadores del compilador apropiados.
2024-07-23 10:41:04.276520: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Advertencia: No se pudo encontrar TensorRT
uso: tflite_convert [-h] --output_file OUTPUT_FILE [--saved_model_dir SAVED_MODEL_DIR | --keras_model_file KERAS_MODEL_FILE] [--saved_model_tag_set SAVED_MODEL_TAG_SET]
[--saved_model_signature_key SAVED_MODEL_SIGNATURE_KEY] [--enable_v1_converter] [--experimental_new_converter [EXPERIMENTAL_NEW_CONVERTER]]
[--experimental_new_quantizer [EXPERIMENTAL_NEW_QUANTIZER]]
Herramienta de línea de comandos para ejecutar el conversor de TensorFlow Lite.
argumentos opcionales:
-h, --help muestra este mensaje de ayuda y sale
--output_file OUTPUT_FILE
Ruta completa del archivo de salida.
--saved_model_dir SAVED_MODEL_DIR
Ruta completa del directorio que contiene el SavedModel.
--keras_model_file KERAS_MODEL_FILE
Ruta completa del archivo HDF5 que contiene el modelo tf.Keras.
--saved_model_tag_set SAVED_MODEL_TAG_SET
Conjunto de etiquetas separadas por comas que identifican el MetaGraphDef dentro del SavedModel a analizar. Todas las etiquetas deben estar presentes. Para pasar un conjunto de etiquetas vacío, pasa "". (predeterminado "serve")
--saved_model_signature_key SAVED_MODEL_SIGNATURE_KEY
Clave que identifica el SignatureDef que contiene entradas y salidas. (predeterminado DEFAULT_SERVING_SIGNATURE_DEF_KEY)
--enable_v1_converter
Habilita el conversor de TensorFlow V1 en 2.0
--experimental_new_converter [EXPERIMENTAL_NEW_CONVERTER]
Bandera experimental, sujeta a cambios. Habilita la conversión basada en MLIR en lugar de la conversión TOCO. (predeterminado True)
--experimental_new_quantizer [EXPERIMENTAL_NEW_QUANTIZER]
Bandera experimental, sujeta a cambios. Habilita el cuantificador basado en MLIR en lugar de la conversión flatbuffer. (predeterminado True)
Convertir modelo de Tensorflow a modelo TFlite
tflite_convert --saved_model_dir=TU_RUTA_DE_MODELO --output_file=TU_NOMBRE_DE_MODELO.tflite
Convertir modelo TFlite a modelo Edge TPU
Debes optimizar tu modelo antes de convertir el modelo tflite a modelo Edge TPU, por favor consulta la Optimización del modelo Tensorflow
Instalar compilador edgetpu
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
sudo apt-get update
sudo apt-get install edgetpu-compiler
Transformar modelo TFlite a modelo Edge TPU
edgetpu_compiler TU_NOMBRE_DE_MODELO.tflite
Y entonces deberías obtener un nuevo archivo llamado TU_NOMBRE_DE_MODELO_edgetpu.tflite
No recomendamos este enfoque porque existen muchos paquetes conflictivos en el proceso actual. Y TensorFlow Lite admite un conjunto limitado de operaciones, algunas operaciones de Pytorch pueden no ser compatibles.
Convertir modelo Pytorch a modelo tflite
Instalar dependencias
pip install -r https://github.com/google-ai-edge/ai-edge-torch/releases/download/v0.1.1/requirements.txt
pip install ai-edge-torch==0.1.1
Convertir
import ai_edge_torch
import numpy
import torch
import torchvision
resnet18 = torchvision.models.resnet18(torchvision.models.ResNet18_Weights.IMAGENET1K_V1).eval()
sample_inputs = (torch.randn(1, 3, 224, 224),)
torch_output = resnet18(*sample_inputs)
edge_model = ai_edge_torch.convert(resnet18.eval(), sample_inputs)
edge_model.export('resnet.tflite')
Obtendrás resnet.tflite
Verificar tflite_converter
Debes optimizar tu modelo antes de convertir el modelo tflite a modelo Edge TPU, por favor consulta la Optimización del modelo Tensorflow
tflite_convert -h
El resultado debería ser algo como esto:
2024-07-23 10:41:03.750087: I tensorflow/core/platform/cpu_feature_guard.cc:182] Este binario de TensorFlow está optimizado para usar las instrucciones de CPU disponibles en operaciones críticas de rendimiento.
Para habilitar las siguientes instrucciones: AVX2 FMA, en otras operaciones, recompila TensorFlow con los indicadores del compilador apropiados.
2024-07-23 10:41:04.276520: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Advertencia: No se pudo encontrar TensorRT
uso: tflite_convert [-h] --output_file OUTPUT_FILE [--saved_model_dir SAVED_MODEL_DIR | --keras_model_file KERAS_MODEL_FILE] [--saved_model_tag_set SAVED_MODEL_TAG_SET]
[--saved_model_signature_key SAVED_MODEL_SIGNATURE_KEY] [--enable_v1_converter] [--experimental_new_converter [EXPERIMENTAL_NEW_CONVERTER]]
[--experimental_new_quantizer [EXPERIMENTAL_NEW_QUANTIZER]]
Convertir modelo TFlite a modelo Edge TPU
Instalar compilador edgetpu
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
sudo apt-get update
sudo apt-get install edgetpu-compiler
Transformar modelo TFlite a modelo Edge TPU
edgetpu_compiler resnet18.tflite
Y entonces deberías obtener un nuevo archivo llamado resnet18_edgetpu.tflite
Instalar Ultralytics
pip install ultralytics
Convertir modelo YOLO a modelo Edge TPU
# Por ejemplo, si quieres convertir yolov8n.pt a yolov8n_integer_quant_edgetpu.tflite
yolo export model=yolov8n.pt format=edge int8=True
El resultado debería ser algo como esto:
jiahao@PC:~/yolov8s_saved_model$ ls
assets saved_model.pb yolov8s_float32.tflite yolov8s_full_integer_quant.tflite
fingerprint.pb variables yolov8s_full_integer_quant_edgetpu.log yolov8s_int8.tflite
metadata.yaml yolov8s_float16.tflite yolov8s_full_integer_quant_edgetpu.tflite yolov8s_integer_quant.tflite
El yolov8s_full_integer_quant_edgetpu.tflite
es el modelo que necesitas.
Puedes convertir otros modelos tflite a modelos Edge TPU usando el siguiente comando:
# Por ejemplo, puedes convertir yolov8s_int8.tflite a modelo Edge TPU
edgetpu_compiler yolov8s_int8.tflite
Soporte técnico y discusión de productos
¡Gracias por elegir nuestros productos! Estamos aquí para proporcionarte el soporte necesario para asegurarnos de que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.