Skip to main content

Tutorial del 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 de modelos más popular de estimación de pose y detección de objetos en tiempo real. Se basa en las fortalezas de sus predecesores al introducir 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 red neuronal de 13 tera-operaciones por segundo (TOPS) basado en el chip Hailo-8L.

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

Preparar el hardware

Para Hailo8L 13 TOPS

Raspberry Pi5 8GBRaspberry Pi AI Kit

Para Hailo8 26 TOPS

reComputer AI R2130

Instalar hardware

Por favor, consulta esto

En la computadora anfitriona

note

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

Instalar Ultralytics y entrenar el modelo:

Instala python3.11

sudo apt install python3.11

Crea un entorno virtual llamado yolo_env

python3.11 -m venv yolo_env

Activa el entorno

source yolo_env/bin/activate

Instala ultralytics

pip install ultralytics

Entrena YOLOv8n usando el conjunto de datos COCO. Si deseas 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

Convierte el modelo .pt a .onnx.

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

El resultado es como sigue:

pir

Instalar el software de Hailo:

Instala python 3.8

cd ~
sudo apt install python3.8

Crea un entorno virtual llamado hailo_env

python3.8 -m venv hailo_env

Activa el entorno

source hailo_env/bin/activate

Instala 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 

Instala 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 

Prueba si hailo_model_zoo funciona correctamente.

hailomz -h

pir

Instala el archivo de github hailo_model_zoo

cd yolomodel/runs/detect/retrain_yolov8n/weights

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

Instala el 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

Usa hailo_model_zoo para analizar el modelo:

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

pir

Usa hailo_model_zoo para optimizar el modelo:

note

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

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

pir

Usa 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, que puedes usar para desplegar en Raspberry Pi 5 con AI kit.

ls

pir

En Raspberry Pi5

Actualiza el sistema:

sudo apt update
sudo apt full-upgrade

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

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

# Habilitar el conector PCIe externo

dtparam=pciex1

# Forzar velocidades Gen 3.0

dtparam=pciex1_gen=3
note

Si deseas usar gen2, comenta dtparam=pciex1_gen=3

Instalar hailo-all y reiniciar:

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

sudo apt install hailo-all
sudo reboot

Verificar Software y Hardware:

Abre la terminal en Raspberry Pi 5, y ingresa el siguiente comando para verificar si hailo-all ha sido instalado.

hailortcli fw-control identify

El resultado correcto es el siguiente:

pir

Abre la terminal en Raspberry Pi 5, y ingresa el siguiente comando para verificar si hailo-8L está conectado.

lspci | grep Hailo

El resultado correcto es el siguiente:

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 Raspberry Pi 5:

Crea un directorio llamado hailomodel

mkdir hailomodel
note

El comando a continuación debe ejecutarse en tu computadora anfitriona, no en tu Raspberry Pi 5. Asegúrate de que tanto tu computadora anfitriona como Raspberry Pi 5 estén conectados 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 el código

Busca la línea 105 y 106 en object-detection-hailo.py, y cambia el código como sigue:

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

Busca la línea 172 en object-detection-hailo.py, y cambia el código como sigue:

    parser.add_argument("--network", default="yolov8n", choices=['yolov6n', 'yolov8s', 'yolox_s_leaky'], help="Qué red usar, por defecto es 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 Raspberry Pi 5. Establecimos el tamaño de lote en 8, el tamaño de entrada en 640x640 y la tasa de cuadros de video de entrada en 240 fps. La velocidad de inferencia alcanzada es de 136.7 fps, lo cual es excepcionalmente rápido para la mayoría de los escenarios de aplicación.

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.

Loading Comments...