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 el más popular de la serie YOLO 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 8GB | Raspberry Pi AI Kit |
---|---|
![]() | ![]() |
Para Hailo8 26 TOPS
reComputer AI R2130 |
---|
![]() |
Instalar Hardware
Por favor consulta esto
En la Computadora Host
Vamos a instalar el software de Hailo, asegúrate de tener una cuenta de Hailo.
Instalar Ultralytics y entrenar modelo
Instalar python3.11
sudo apt install python3.11
Crea 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
Entrena YOLOv8n usando el conjunto de datos COCO. Si quieres entrenar tu propio conjunto de datos, puedes consultar esto para obtener 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
Obtendrás el modelo best.pt
después de tu entrenamiento, como se muestra a continuación:
cd ./runs/detect/retrain_yolov8n/weights/
ls
Convierte el modelo .pt
a .onnx
.
yolo export model=./best.pt imgsz=640 format=onnx opset=11
Resultado como el siguiente:
Instalar software hailo
Instalar python 3.8
cd ~
sudo apt install python3.8
Crea hailo_env como tu entorno virtual
python3.8 -m venv hailo_env
Activar 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.
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.
pip install hailo_model_zoo-2.11.0-py3-none-any.whl
Prueba si hailo_model_zoo
está funcionando correctamente.
hailomz -h
Instalar 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
Instalar 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
Usar hailo_model_zoo
para analizar el modelo
hailomz parse --hw-arch hailo8l --ckpt ./best.onnx yolov8n
Usar hailo_model_zoo
para optimizar el modelo
Si ejecutas el siguiente comando, es posible que encuentres 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 de datos local.
hailomz optimize --hw-arch hailo8l --har ./yolov8n.har yolov8n
Usar hailo_model_zoo
para compilar el modelo
hailomz compile yolov8n --hw-arch hailo8l --har ./yolov8n.har
Después de todo obtendrás un modelo hef
, puedes usarlo para desplegarlo en raspberry pi5 con AI kit
ls
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)
Añade el siguiente texto a /boot/firmware/config.txt
#Enable the PCIe external connector
dtparam=pciex1
#Force Gen 3.0 speeds
dtparam=pciex1_gen=3
Si deseas usar gen2
, comenta la línea 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 se muestra a continuación para verificar si hailo-all ha sido instalado.
hailortcli fw-control identify
El resultado correcto se muestra a continuación:
Abre la terminal en la Raspberry Pi5, e ingresa el comando como se muestra a continuación para verificar si hailo-8L ha sido conectado.
lspci | grep Hailo
El resultado correcto se muestra a continuación:
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
Copia tu modelo al raspberry pi5
Crea un directorio llamado hailomodel
mkdir hailomodel
El siguiente comando debe ejecutarse en tu computadora anfitriona, no en tu Raspberry Pi 5. Asegúrate de que tanto tu computadora anfitriona 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 en 8, el tamaño de entrada en 640x640, y la velocidad de fotogramas del 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 escenarios de aplicación.
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.