Hailo integration
- Support as of v0.11.0
SCAiLX supports accelerated workloads using Hailo-8 PCIe modules. This allows for up to 20 TOPs of AI inference.
Verify setup
Check that the Hailo device is recognized:
Check kernel driver:
root@scailx-ai:~# ls /dev/hailo* && lsmod | grep hailo && lspci
/dev/hailo0
hailo_pci 90112 0
00:00.0 PCI bridge: Synopsys, Inc. DWC_usb3 / PCIe bridge (rev 01)
01:00.0 Co-processor: Hailo Technologies Ltd. Hailo-8 AI Processor (rev 01)
Check hailortCLI:
root@scailx-ai:~# 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: HLLWME0214600081
Part Number: HM218B1C2KA
Product Name: HAILO-8 AI ACCELERATOR M.2 A+E KEY MODULE
Check GStreamer plugins:
root@scailx-ai:~# gst-inspect-1.0 | grep hailo
hailo: hailodevicestats: hailodevicestats element
hailo: hailonet: hailonet element
hailo: synchailonet: sync hailonet element
hailotools: hailoaggregator: hailoaggregator - Cascading
hailotools: hailocounter: hailocounter - postprocessing element
hailotools: hailocropper: hailocropper
hailotools: hailoexportfile: hailoexportfile - export element
hailotools: hailoexportzmq: hailoexportzmq - export element
hailotools: hailofilter: hailofilter - postprocessing element
hailotools: hailogallery: Hailo gallery element
hailotools: hailograytonv12: hailograytonv12 - postprocessing element
hailotools: hailoimportzmq: hailoimportzmq - import element
hailotools: hailomuxer: Muxer pipeline merging
hailotools: hailonv12togray: hailonv12togray - postprocessing element
hailotools: hailonvalve: HailoNValve element
hailotools: hailooverlay: hailooverlay - overlay element
hailotools: hailoroundrobin: Input Round Robin element
hailotools: hailostreamrouter: Hailo Stream Router
hailotools: hailotileaggregator: hailotileaggregator
hailotools: hailotilecropper: hailotilecropper - Tiling
hailotools: hailotracker: Hailo object tracking element
hailotracers: bitrate (GstTracerFactory)
hailotracers: buffer (GstTracerFactory)
hailotracers: bufferdrop (GstTracerFactory)
hailotracers: cpuusage (GstTracerFactory)
hailotracers: detections (GstTracerFactory)
hailotracers: framerate (GstTracerFactory)
hailotracers: graphic (GstTracerFactory)
hailotracers: interlatency (GstTracerFactory)
hailotracers: numerator (GstTracerFactory)
hailotracers: proctime (GstTracerFactory)
hailotracers: queuelevel (GstTracerFactory)
hailotracers: scheduletime (GstTracerFactory)
hailotracers: threadmonitor (GstTracerFactory)
Run examples
The example scripts are provided in the /opt/hailo/apps directory.
Note that the demo scripts download Hailo models and resources from the Hailo model CDN, as these models are too large to store in the main OS update image. Thus these demos need an active internet connection the first time they are run.
Detection Demo
go to detection demo folder:
cd /opt/hailo/apps/detection
Run the demo script
./imx8_detection.sh
# or to specify a sensor device:
./imx8_detection.sh -i /dev/video-isi-csi0
Open the Browser link printed from the script: http://scailx-ai.local:8091 (deafult)
LPR Demo
go to LPR demo folder:
cd /opt/hailo/apps/license_plate_recognition
The LPR demo can be run with a camera input (sensor) or a video file (.mp4) and is available as a python or bash script:
# Python script with sensor or video:
./scailx_hailo_lpr.py /dev/video-isi-csi0
./scailx_hailo_lpr.py ./resources/lpr.mp4
# bash demo with sensor or video:
./imx8_license_plate_recognition.sh --use-cam
./imx8_license_plate_recognition.sh
Open the browser link printed from the script: http://scailx-ai.local:8091 (default)
Click on the link: http://scailx-ai.local:8091
the LPR demo is trained only for number plates with yellow background and only numbers 0-9.
Known issues
Many Hailo online demos use OpenGL elements to scale or do colour conversion. These fail on SCAiLX without a display connected as the GPU is non-functional. The imx8 supports imxvideoconvert_g2d for most colour conversions and resizing.
GStreamer element “hailonet” not working with direct memory. Use “synchailonet”:
https://community.hailo.ai/t/unexpected-hailo-driver-fail-36-errors-occuring-with-hailort-4-19/6495