Skip to main content

Benchmark de Inferencia Multistream en Raspberrypi 5 con Hailo8

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 Hailo8 se utiliza para acelerar la velocidad de inferencia, con un rendimiento de IA de 26 TOPS.

Este wiki muestra el benchmarking de YOLOv8m para detección de objetos en Raspberry Pi 5 con hailo8. Todas las pruebas utilizan el mismo modelo (YOLOv8m), cuantizado a int8, con un tamaño de entrada de resolución 640x640, tamaño de lote establecido en 8.

Preparar Hardware

reComputer AI R2140reComputer Industrial R20xxreComputer Industrial R21xx

Instalar kit de IA en RPi5

Por favor consulte esto

Preparar software

actualizar el sistema

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
sudo apt update
sudo apt full-upgrade

Descargar software hailo en la web oficial de hailo

Nota: necesitas una cuenta oficial de Hailo y asegurarte de estar conectado. Haz clic en este enlace para descargar las librerías necesarias como sigue:

pir

Instalar hailort_4.19.0_arm64.deb en respberrypi5

sudo dpkg -i hailort_4.19.0_arm64.deb 

sudo reboot

Instalar dkms

sudo apt-get install dkms

Instalar hailort-pcie-driver_4.19.0_all.deb

sudo dpkg -i hailort-pcie-driver_4.19.0_all.deb 
sudo reboot

Crear y activar un entorno virtual de Python

python -m venv hailo_env
source hailo_env/bin/activate

Instalar hailort-4.19.0-cp311-cp311-linux_aarch64.whl

pip install hailort-4.19.0-cp311-cp311-linux_aarch64.whl 

Verificar si el software está instalado

hailortcli fw-control identify

El resultado se muestra como sigue:

ain@pi5-hailo:~ $ hailortcli fw-control identify
Executing on device: 0000:01:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 4.19.0 (release,app,extended context switch buffer)
Logger Version: 0
Board Name: Hailo-8
Device Architecture: HAILO8
Serial Number: HLLWM2B225100548
Part Number: HM218B1C2FAE
Product Name: HAILO-8 AI ACC M.2 M KEY MODULE EXT TEMP

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 Tapps

Instalar librerías necesarias

sudo apt-get install -y rsync ffmpeg x11-utils python3-dev python3-pip python3-setuptools python3-virtualenv python-gi-dev libgirepository1.0-dev gcc-12 g++-12 cmake git libzmq3-dev

sudo apt-get install -y libopencv-dev python3-opencv

sudo apt-get install -y libcairo2-dev libgirepository1.0-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio gcc-12 g++-12 python-gi-dev

sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0

Configurar hailo_pci force_desc_page_size

sudo nano /etc/modprobe.d/hailo_pci.conf

Y luego ingresa el siguiente contenido.

options hailo_pci force_desc_page_size=4096

Finalmente, presiona Ctrl+X, escribe Y, y presiona Enter para guardar el archivo

Y luego reinicia el raspberrypi5

sudo reboot

Descargar Tapps

git clone --depth 1 https://github.com/hailo-ai/tappas.git

Descargar hailort a tapps

cd tappas
mkdir hailort
git clone https://github.com/hailo-ai/hailort.git hailort/sources

Cambiar common.py

nano downloader/common.py

Y cambiar el contenido como se muestra abajo, agregar RaspberryPI5 = 'rpi5' en common.py:

class Platform(Enum):
X86 = 'x86'
ARM = 'arm'
IMX8 = 'imx8'
Rockchip = 'rockchip'
RaspberryPI = 'rpi'
RaspberryPI5 = 'rpi5'

ANY = 'any'

def __str__(self):
return self.value

Instalar tappas

./install.sh --skip-hailort --target-platform rpi5

Cambiar tamaño de lote a 8

cd ./apps/h8/gstreamer/general/multistream_detection/
nano multi_stream_detection.sh

Agregar readonly DEFAULT_BATCH_SIZE=8 a la línea 14 como sigue:

readonly DEFAULT_NETWORK_NAME="yolov5"
readonly DEFAULT_BATCH_SIZE=8
readonly MAX_NUM_OF_DEVICES=4

Agregar batch_size=$DEFAULT_BATCH_SIZE a la línea 19 como sigue:

network_name=$DEFAULT_NETWORK_NAME
batch_size=$DEFAULT_BATCH_SIZE
num_of_src=12

Agregar batch-size=$batch_size a la línea 154 como sigue:

queue name=hailo_pre_infer_q_0 leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \
hailonet hef-path=$hef_path batch-size=$batch_size device-count=$device_count scheduling-algorithm=0 nms-score-threshold=0.3 nms-iou-threshold=0.45 output-format-type=HAILO_FORMAT_TYPE_FLOAT32 ! \
queue name=hailo_postprocess0 leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \

Finalmente Ctrl+X e ingresa Y para guardar el archivo.

Ejecutar inferencia multistream

sudo chmod +x multi_stream_detection.sh
./multi_stream_detection.sh --network yolov8 --num-of-sources 8 --show-fps

Resultado

Todos los resultados se basan en inferencia con un tamaño de entrada del modelo de 640x640, tamaño de lote de 8, y una resolución de video de 1280x760, que es 720p.

Cantidad de CanalesRendimiento PCIE Gen2Rendimiento PCIE Gen3
1 canal stream39.82FPS76.99FPS
2 canales streams19.86FPS38.21FPS
4 canales streams8.45FPS16.94FPS
8 canales streams3.85FPS8.15FPS
12 canales streams2.94FPS5.43FPS

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 atender diferentes preferencias y necesidades.

Loading Comments...