Skip to main content

Tutorial de AI Kit con Raspberry Pi 5 sobre detección de objetos YOLOv8n

Introducción

YOLOv8 (You Only Look Once versión 8) es la serie YOLO más popular de modelos de estimación de pose en tiempo real y detección de objetos. Se basa en las fortalezas de sus predecesores introduciendo varios avances en velocidad, precisión y flexibilidad. El Raspberry-pi-AI-kit se utiliza para acelerar la velocidad de inferencia, con un acelerador de inferencia de red neuronal de 13 TOPS construido alrededor del chip Hailo-8L.

Este wiki te guiará sobre cómo usar YOLOv8n para detección de objetos con AI Kit en Raspberry Pi 5, desde el entrenamiento hasta el despliegue.

Preparar Hardware

Para Hailo8L 13 TOPS

Raspberry Pi5 8GBRaspberry Pi AI Kit

Para Hailo8 26 TOPS

reComputer R1125reComputer AI R2130reComputer AI Industrial R2145
reComputer Industrial R20xxreComputer Industrial R21xx

Instalar Hardware

Por favor consulta esto

En la Computadora Host

note

Instalaremos el software hailo, asegúrate de tener una cuenta hailo.

Instalar Ultralytics y entrenar modelo

Instalar python3.11

sudo apt install python3.11

Crear yolo_env como tu entorno virtual

python3.11 -m venv yolo_env

Activar el entorno

source yolo_env/bin/activate

Instalar ultralytics

pip install ultralytics

Entrenar YOLOv8n usando el conjunto de datos COCO. Si quieres entrenar tu propio conjunto de datos, puedes consultar esto para instrucciones sobre cómo hacerlo.

mkdir yolomodel && cd yolomodel
yolo detect train data=coco128.yaml model=yolov8n.pt name=retrain_yolov8n epochs=100 batch=16

pir

Obtendrás el modelo best.pt después de tu entrenamiento, como se muestra a continuación:

cd ./runs/detect/retrain_yolov8n/weights/
ls

pir

Convertir el modelo .pt a .onnx.

yolo export model=./best.pt imgsz=640 format=onnx opset=11 

Resultado como el siguiente:

pir

Instalar software hailo

Instalar python 3.8

cd ~
sudo apt install python3.8

Crear hailo_env como tu entorno virtual

python3.8 -m venv hailo_env

Activar el entorno

source hailo_env/bin/activate

Instalar Hailo Dataflow Compiler 3.27, aquí necesitas registrarte en Hailo e iniciar sesión, y descargar el software.

pir

pip install hailo_dataflow_compiler-3.27.0-py3-none-linux_x86_64.whl 

Instalar Model zoo, aquí necesitas registrarte en Hailo e iniciar sesión, y descargar el software.

pir

pip install hailo_model_zoo-2.11.0-py3-none-any.whl 

Probar si hailo_model_zoo está funcionando correctamente.

hailomz -h

pir

Instalar archivo github de hailo_model_zoo

cd yolomodel/runs/detect/retrain_yolov8n/weights

git clone https://github.com/hailo-ai/hailo_model_zoo.git

Instalar conjunto de datos coco para evaluar/optimizar/compilar el modelo yolov8n

python hailo_model_zoo/datasets/create_coco_tfrecord.py val2017
python hailo_model_zoo/datasets/create_coco_tfrecord.py calib2017

Usar hailo_model_zoo para analizar el modelo

hailomz parse --hw-arch hailo8l --ckpt ./best.onnx yolov8n

pir

Usar hailo_model_zoo para optimizar el modelo

note

Si ejecutas el siguiente comando, puedes encontrar algunos errores. Sin embargo, puedes copiar ./hailo_model_zoo/hailo_model_zoo a tu biblioteca local. Si el error indica que no se puede encontrar el conjunto de datos, puedes navegar a ~/.hailomz, localizar el conjunto de datos, y copiarlo a tu directorio local de conjunto de datos.

hailomz optimize --hw-arch hailo8l --har ./yolov8n.har yolov8n

pir

Usar hailo_model_zoo para compilar el modelo

hailomz compile  yolov8n --hw-arch hailo8l --har ./yolov8n.har 

pir

Después de todo obtendrás un modelo hef, puedes usarlo para desplegar en raspberry pi5 con AI kit

ls

pir

En Raspberry Pi5

actualizar el sistema

sudo apt update
sudo apt full-upgrade

Configurar pcie a gen2/gen3 (gen3 es más rápido que gen2)

Agregar el siguiente texto a /boot/firmware/config.txt

#Enable the PCIe external connector

dtparam=pciex1

#Force Gen 3.0 speeds

dtparam=pciex1_gen=3

note

Si quieres usar gen2, por favor comenta dtparam=pciex1_gen=3

Instalar hailo-all y reiniciar

Abre la terminal en la Raspberry Pi 5 e ingresa el siguiente comando para instalar el software Hailo

sudo apt install hailo-all
sudo reboot

Verificar Software y Hardware

Abre la terminal en la Raspberry Pi5, e ingresa el comando como sigue para verificar si hailo-all ha sido instalado.

hailortcli fw-control identify

El resultado correcto se muestra a continuación:

pir

Abre la terminal en la Raspberry Pi5, e ingresa el comando como sigue para verificar si hailo-8L ha sido conectado.

lspci | grep Hailo

El resultado correcto se muestra a continuación:

pir

Clonar el proyecto

git clone https://github.com/Seeed-Projects/Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L.git
cd Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L

Copiar tu modelo a la raspberry pi5

Crear un directorio llamado hailomodel

mkdir hailomodel
note

El comando a continuación debe ejecutarse en tu computadora host, no en tu Raspberry Pi 5. Asegúrate de que tanto tu computadora host como la Raspberry Pi 5 estén conectadas a la misma red.

scp -r ./yolomodel/runs/detect/retrain_yolov8n/weights/yolov8n.hef username@ip /home/pi/Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L/hailomodel/

Cambiar código

Encuentra las líneas 105 y 106 en object-detection-hailo.py, y cambia el código como se muestra a continuación:

        elif args.network == "yolov8n":
self.hef_path = os.path.join(self.current_path, './hailomodel/yolov8n.hef')

Encuentra la línea 172 en object-detection-hailo.py, y cambia el código como se muestra a continuación:

    parser.add_argument("--network", default="yolov8n", choices=['yolov6n', 'yolov8s', 'yolox_s_leaky'], help="Which Network to use, defult is yolov6n")

Ejecutar el código

bash run.sh object-detection-hailo

Resultado

Aquí está el video en el que demostramos el proceso de entrenar el modelo YOLOv8n y desplegarlo en la Raspberry Pi 5. Configuramos el tamaño de lote a 8, el tamaño de entrada a 640x640, y la velocidad de fotogramas del video de entrada a 240 fps. La velocidad de inferencia lograda es de 136.7 fps, lo cual es excepcionalmente rápido para la mayoría de escenarios de aplicación.

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...