Desplegar modelo de detección de objetos YOLOv5

Este wiki introducirá cómo entrenar el modelo oficial de detección de objetivos YOLOv5 y desplegar el modelo entrenado en dispositivos Grove Vision AI(V2)
o XIAO ESP32S3
.
Preparación del conjunto de datos
Se recomienda usar la plataforma roboflow para conjuntos de datos. Esta plataforma puede realizar anotación de conjuntos de datos y algunas estrategias de mejora de datos, y soporta la exportación de múltiples formatos de conjuntos de datos. Puedes ver la Introducción de preparación de conjuntos de datos yolov5
Clonar repositorio oficial de YOLOv5
- Por defecto, ya tienes el entorno python y la herramienta de gestión de paquetes pip y python>=3.8.
# Clonar repositorio oficial de YOLOv5
git clone https://github.com/ultralytics/yolov5
- Instalar el entorno requerido
# Cambiar a la carpeta YOLOv5
cd yolov5
# Usar pip para instalar dependencias requeridas
pip install -r requirements.txt
Entrenar
- Ejecuta el siguiente comando para comenzar a entrenar el modelo
python train.py --weights yolov5n.pt --data ${ruta del archivo yaml del conjunto de datos} --imgsz 192
Exportar modelo a tflite
- Después del entrenamiento, el modelo estará en la carpeta
runs/train/exp*/weights/
. Asegúrate de que los indicadores de evaluación de tu modelo cumplan con tus necesidades. - Primero exporta el modelo en formato saved_model usando el siguiente comando
python export.py --weights ${Ruta de tu modelo entrenado (formato .pt)} --imgsz 192 --include saved_model
- Luego usa el siguiente código para cuantificar y convertir el modelo saved_model exportado al formato de modelo tflite
import tensorflow as tf
import os.path as osp
converter = tf.lite.TFLiteConverter.from_saved_model(r'Ruta de tu carpeta saved_model')
tflite_model = converter.convert()
def representative_dataset():
for _ in range(100):
yield [
tf.random.uniform((1, 192, 192
, 3))
]
converter.optimizations = [
tf.lite.Optimize.DEFAULT
]
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS_INT8
]
converter.inference_input_type = tf.int8
converter.inference_output_type = tf.int8
converter.representative_dataset = representative_dataset
tflite_quant_model = converter.convert()
with open(osp.join(r'La ruta de ubicación donde se guardará','yolov5n_int8.tflite'), 'wb') as f:
f.write(tflite_quant_model)
- Después, verás un archivo de modelo
yolov5n_int8.tflite
bajo la carpeta de ruta de guardado del club. Este archivo de modelo puede ser desplegado en dispositivosGrove Vision AI(V2)
oXIAO ESP32S3
.
Optimización del grafo del modelo
- Grove Vision AI (V2) soporta modelos optimizados con vela y también puede acelerar la inferencia del modelo. Primero, ejecuta el siguiente comando para instalar la herramienta de línea de comandos vela (el dispositivo
XIAO ESP32S3
aún no es compatible).
pip3 install ethos-u-vela
- Después, necesitas descargar el archivo de configuración relacionado con
vela
, o copiar el siguiente contenido en un archivo, que puede llamarsevela_config.ini
; file: my_vela_cfg.ini ; -----------------------------------------------------------------------------
; Vela configuration file ; -----------------------------------------------------------------------------
; System Configuration
; My_Sys_Cfg
[System_Config.My_Sys_Cfg]
core_clock=400e6
axi0_port=Sram
axi1_port=OffChipFlash
Sram_clock_scale=1.0
Sram_burst_length=32
Sram_read_latency=16
Sram_write_latency=16
Dram_clock_scale=0.75
Dram_burst_length=128
Dram_read_latency=500
Dram_write_latency=250
OnChipFlash_clock_scale=0.25
OffChipFlash_clock_scale=0.015625
OffChipFlash_burst_length=32
OffChipFlash_read_latency=64
OffChipFlash_write_latency=64
; -----------------------------------------------------------------------------
; Memory Mode
; My_Mem_Mode_Parent
[Memory_Mode.My_Mem_Mode_Parent]
const_mem_area=Axi1
arena_mem_area=Axi0
cache_mem_area=Axi0
- Finalmente, usa el siguiente comando para optimizar el grafo
vela --accelerator-config ethos-u55-64 \
--config vela_config.ini \
--system-config My_Sys_Cfg \
--memory-mode My_Mem_Mode_Parent \
--output-dir ${Ruta de guardado del modelo optimizado} \
${La ruta del modelo tflite que necesita ser optimizado}
Desplegar
-
El archivo de modelo que necesita ser desplegado es el archivo
tflite
exportado arriba. Puedes grabar el archivo de modelo en el dispositivo objetivo según el siguiente tutorial. -
Recomendamos encarecidamente usar nuestra herramienta web para grabar el modelo tflite entrenado en el dispositivo. Las operaciones detalladas se proporcionan en el Tutorial de Despliegue
Nota:
Dado que el dispositivo ESP32S3
no soporta el despliegue de modelos después de la optimización del grafo vela
, no necesitas realizar la optimización del grafo del modelo tflite
si quieres desplegar el modelo en el dispositivo XIAO ESP32S3
.