RaspberryPi5 And AI Hailo8L Tutorial

概述

Raspberry Pi 5 树莓派 AI 套件将树莓派 M.2 HAT+ 与 Hailo AI 加速模块捆绑在一起,用于树莓派 5。

环境准备

温度传感器

获取当前温度:
$ vcgencmd measure_temp

可以使用 stress 命令来手动增加 CPU 负载,观察 CPU 温度变化。
$ stress --cpu 4

Raspberry 的 Active Cooler 主动冷却器由固件主动控制:在 60°C 时,鼓风机风扇将打开,在 67.5°C 时风扇速度将增加,最后在 75°C 时风扇增加到全速。
当温度回落到这些限制以下时,鼓风机的风扇将自动停止旋转。

摄像头

在 RaspberryPi OS Lite 系统中使用第三方摄像头需要更改启动配置。首先更改 config.txt:
a. 关闭摄像头自动检测

1
2
# camera_auto_detect = 1
camera_auto_detect = 0

b. 设置 dtoverlay 为所使用的摄像头型号(以 imx219 为例):

1
dtoverlay=imx219

c. 测试
$ rpicam-hello

d. 使用 VLC 搭建实时视频流服务器

1
2
$ sudo apt-get install vlc
$

网络配置

安装 raspberry pi OS 时会提示进行网络配置,最后配置信息会写入:
/etc/NetworkManager/system-connections/preconfigured.nmconnection

配置路由优先级(使用 NetworkManager):

1
2
$  sudo nmcli d modify wlan0 ipv4.route-metric 100
$ sudo nmcli d modify eth0 ipv4.route-metric 800

硬件相关,使用 ethtool 工具:

1
$ sduo ethtool eth0  # 查看网卡的信息 

网络测速

参考 Raspberry Pi5 网卡测试

远程桌面

a. 使用 raspi-config 使能 VNC,打开 VNC 服务器。
b. 在客户机安装 tigervnc-viewer VNC 客户端。

AI 测试

硬件准备

a. 连接 Raspberry 5 开发板、摄像头以及 AI HAT+。注意在连接前,检查固件版本是否最最新的:$ sudo rpi-eeprom-update

b. 为了更好地利用 NPU 的性能,建议使能PCIe Gen 3.0

c. 安装 hailo AI 软件套件:$ sudo apt-get install hailo-all,这些软件包括:

  • Hailo 内核设备驱动和固件
  • HailoRT 中间层软件
  • Hailo Tappas 后处理核心库
  • demo 包

(注意,如果下载速度过慢,可以更换国内的 debian 镜像源)

d. 重启

e. 确认软硬件环境一切 OK:

1
2
3
4
5
6
7
8
9
10
11
$ hailortcli fw-control identify
Executing on device: 0000:01:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 4.20.0 (release,app,extended context switch buffer)
Logger Version: 0
Board Name: Hailo-8
Device Architecture: HAILO8L
Serial Number: <N/A>
Part Number: <N/A>
Product Name: <N/A>

后面三个编号为 <N/A>AI HAT+ 设备来说是正常的,不影响实际的功能。

如果得到下面的输出:

1
CHECK failed - Driver version (4.18.0) is different from library version (4.20.0)

则需要更新系统:

1
2
3
4
$ sudo apt update
$ sudo apt full-upgrade
$ sudo apt install hailo-all
$ reboot

Demo

rpicam-apps 软件套件实现了一个后处理框架(post-processing framework)

$ sudo apt update && sudo apt install rpicam-apps

对象检测(Object Detection)

该 demo 使用神经网络识别特定对象,并使用方框进行标记。下面以 YOLOv6 模型 为例:

1
$ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov6_inference.json

使用 YOLOv8 模型后实物检测和实例分割更准确:

1
$ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_inference.json

还可以使用 YOLOX 模型、 使用YOLOv5模型进行人脸识别:

1
$ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov5_personface.json

图像分割

使用 YOLov5 模型进行图像分割:

1
$ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov5_segmentation.json --framerate 20

如果输出未找到 /usr/share/hailo-models/yolov5seg.json,可以在 tappas-github 中另行下载。

姿态估计

下面的 demo 进行了 17 个点的人体姿态模拟:

1
$ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_pose.json

训练