From c0dcedac25542f40337b10eed68a71a7fee747b5 Mon Sep 17 00:00:00 2001 From: Yafen Date: Fri, 17 Oct 2025 11:25:41 +0800 Subject: [PATCH] RPi: Hailo AI --- README.en.md | 1 + README.md | 1 + documents/RaspberryPi.md | 1 + documents/raspberrypi/HailoAI.md | 131 +++++++++++++++++++++++++++++++ 4 files changed, 134 insertions(+) create mode 100644 documents/raspberrypi/HailoAI.md diff --git a/README.en.md b/README.en.md index a0ca48a..b1f3373 100644 --- a/README.en.md +++ b/README.en.md @@ -62,6 +62,7 @@ You can get introduction of openEuler SBC SIG from [sig-SBC](https://gitee.com/o - [Building openEuler image for Raspberry Pi](documents/raspberrypi/openEuler镜像的构建.md) - [Cross-compile the kernel](documents/raspberrypi/交叉编译内核.md) - [Emulate Raspberry Pi with QEMU](documents/raspberrypi/QEMU启动树莓派.md) + - [Hailo AI](documents/raspberrypi/HailoAI.md) - [Rockchip and other SoCs](documents/Rockchip.md) - [Getting started with Rockchip and other SoCs](documents/Rockchip.md) - [Building openEuler image for Rockchip development boards](documents/rockchip/openEuler镜像的构建.md) diff --git a/README.md b/README.md index 4f12098..3fa2da4 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ SIG 组基本信息位于 [sig-SBC](https://gitee.com/openeuler/community/tree/m - [openEuler 镜像的构建](documents/raspberrypi/openEuler镜像的构建.md) - [交叉编译内核](documents/raspberrypi/交叉编译内核.md) - [QEMU 启动树莓派](documents/raspberrypi/QEMU启动树莓派.md) + - [Hailo AI](documents/raspberrypi/HailoAI.md) - [瑞芯微等其他开发板](documents/Rockchip.md) - [瑞芯微等快速入门](documents/Rockchip.md) - [openEuler镜像的构建](documents/rockchip/openEuler镜像的构建.md) diff --git a/documents/RaspberryPi.md b/documents/RaspberryPi.md index 26d2711..e80dcf8 100644 --- a/documents/RaspberryPi.md +++ b/documents/RaspberryPi.md @@ -31,6 +31,7 @@ - [openEuler 镜像的构建](raspberrypi/openEuler镜像的构建.md) - [交叉编译内核](raspberrypi/交叉编译内核.md) - [QEMU 启动树莓派](raspberrypi/QEMU启动树莓派.md) + - [Hailo AI](raspberrypi/HailoAI.md) - [openEuler 20.03 LTS SP2 更新日志](raspberrypi/changelog/changelog-20.03-LTS-SP2.md) - [openEuler 20.03 LTS SP2 内测版(UKUI 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-20.03-LTS-SP2-UKUI.md) - [openEuler 20.03 LTS SP2 内测版(DDE 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-20.03-LTS-SP2-DDE.md) diff --git a/documents/raspberrypi/HailoAI.md b/documents/raspberrypi/HailoAI.md new file mode 100644 index 0000000..b0b216a --- /dev/null +++ b/documents/raspberrypi/HailoAI.md @@ -0,0 +1,131 @@ +# 介绍 +[Hailo](https://hailo.ai/) 是一家领先的高性能 AI 处理器制造商,专注于为边缘计算设备设计和开发高性能、低功耗的人工智能(AI)处理器(AI 芯片)和配套软件解决方案。 + +[Raspberry Pi AI HAT+](https://www.raspberrypi.com/documentation/accessories/ai-hat-plus.html) 是一款内置 [Hailo AI](https://hailo.ai/products/ai-accelerators/hailo-8-m2-ai-acceleration-module/) 加速器的扩展板,专为 Raspberry Pi 5 设计。 + +AI HAT+ 基于 Hailo-8L 和 Hailo-8 神经网络推理加速器,分别提供 13 和 26 TOPS 两种算力型号。其中,13 TOPS 型号适用于中等工作量,性能与 [Raspberry Pi AI Kit](https://www.raspberrypi.com/documentation/accessories/ai-kit.html) 相当;26 TOPS 型号可以支持更大规模的神经网络,推理速度更快,并能更高效地并发运行多个模型。 + +AI HAT+ 通过 Raspberry Pi 5 的 PCIe 接口进行通信。系统启动后,Raspberry Pi 5 会自动检测板载 Hailo 加速器,并将支持的 AI 计算任务交由 NPU(神经网络处理器)执行。 + +基于 [Raspberry Pi 官方镜像](https://www.raspberrypi.com/software/operating-systems/) 安装和使用 Hailo NPU 相对简单,具体操作可参考 [AI Kit 与 AI HAT+ 软件](https://www.raspberrypi.com/documentation/computers/ai.html)。本文档重点介绍如何在 Raspberry Pi 的 openEuler 系统中安装并使用 Hailo NPU。 + +# 先决条件 +本文档需要以下内容: +1. [Raspberry Pi 5](https://www.raspberrypi.com/products/raspberry-pi-5/) +2. [Raspberry Pi AI HAT+](https://www.raspberrypi.com/documentation/accessories/ai-hat-plus.html) +3. 支持 Raspberry Pi 5 的含桌面环境的 openEuler 操作系统,这里使用 [内核版本为 6.6 的 openEuler 24.03 LTS SP2 含 GNOME 桌面环境的系统镜像](https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-SP2-GNOME-raspi-aarch64-alpha1.img.xz) +4. Raspberry Pi 官方摄像头,本文档中使用的是 [Raspberry Pi AI 摄像头](https://www.raspberrypi.com/documentation/accessories/ai-camera.html) + +# 安装软件 +Raspberry Pi Hailo AI 相关组件主要包含 hailofw、hailort、hailo-tappas-core、libcamera、rpicam-apps 五部分,下面分别介绍其编译安装过程。 + +## 1. hailofw +我们将 Raspberry Pi 官方软件源中 hailofw 软件包中的文件重新打包成可以直接安装到 openEuler 操作系统的 RPM 包:[hailofw-4.20.0-1.aarch64.rpm]()。安装该包后需要重启系统。 + +```bash +wget https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/rpms/hailofw-4.20.0-1.aarch64.rpm +rpm -i hailofw-4.20.0-1.aarch64.rpm +reboot +``` + +## 2. hailort +1. 安装依赖 `dnf install -y gcc gcc-c++ make cmake libatomic gstreamer1-plugins-base-devel` + +2. 下载源码 `git clone -b master-openEuler https://github.com/woqidaideshi/hailort.git && cd hailort` + 这里使用的是适配到 openEuler 的 hailort 源码:,其上游源码:。 + +3. 编译安装 `cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DHAILO_BUILD_GSTREAMER=1 && cmake --build build --config release --target install` + +4. 安装 python3-hailort + 1. 安装依赖 + ```bash + dnf install cmake python3 pybind11-devel python3-setuptools python3-wheel python3-devel + wget https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/rpms/python3-verboselogs-1.7-1.noarch.rpm + rpm -i python3-verboselogs-1.7-1.noarch.rpm + ``` + 2. 编译 + ```bash + cd hailort/libhailort/bindings/python/platform + python3 setup.py bdist_wheel + ``` + 编译结束会在 `hailort/libhailort/bindings/python/platform/dist` 下生成 `.whl` 文件,例如这里生成文件 `hailort-5.0.0-cp311-cp311-linux_aarch64.whl`。 + 3. 安装 `pip install dist/hailort-5.0.0-cp311-cp311-linux_aarch64.whl` + +## 3. hailo-tappas-core +1. 安装依赖 `dnf install -y python3 ffmpeg xorg-x11-utils python3-devel python3-pip python3-setuptools python3-virtualenv gcc gcc-c++ pygobject3-devel gobject-introspection-devel pkgconf cairo-devel gstreamer1-devel cmake gstreamer1-plugins-base-devel gstreamer1-plugins-base zeromq-devel rsync git gstreamer1-plugins-good gstreamer1-plugins-bad-free-devel gstreamer1-plugins-bad-free gstreamer1-libav opencv gstreamer1 rapidjson-devel cairo-gobject-devel cppzmq-devel` + +2. 下载源码 + ```bash + git clone -b master-openEuler git@github.com:woqidaideshi/tappas.git && cd tappas + mkdir hailort + git clone -b master-openEuler https://github.com/woqidaideshi/hailort.git hailort/sources + ``` + + 这里使用的是适配到 openEuler 的 hailo-tappas-core 源码 ,其上游源码:。 + +3. 环境准备 + ```bash + cd /usr/bin/ + ln -sf gcc gcc-12 + ln -sf g++ g++-12 + ``` + +4. 编译 `./install.sh --skip-hailort` + +## 4. libcamera +1. 安装依赖 + ```bash + dnf install -y python3-pip git python3-jinja2 boost-devel gnutls-devel openssl libtiff-devel pybind11-devel qt5-qtbase-devel meson cmake python3-yaml python3-ply glib2-devel gstreamer1-plugins-base-devel graphviz libdrm-devel elfutils-devel libevent-devel gstreamer1-devel gtest-devel libjpeg-devel lttng-ust-devel python3-devel SDL2-devel systemd-devel libyaml-devel meson pkgconf python3-sphinx + wget https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/rpms/libyuv-20240704-1.aarch64.rpm + wget https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/rpms/libyuv-devel-20240704-1.aarch64.rpm + rpm -i libyuv-*.rpm + ``` + +2. 下载源码 `git clone -b main https://github.com/woqidaideshi/libcamera.git && cd libcamera` + +3. 配置构建环境 `meson setup build --buildtype=release -Dpipelines=rpi/vc4,rpi/pisp -Dipas=rpi/vc4,rpi/pisp -Dv4l2=enabled -Dgstreamer=enabled -Dtest=false -Dlc-compliance=disabled -Dcam=disabled -Dqcam=disabled -Ddocumentation=disabled -Dpycamera=enabled` + +4. 编译 `ninja -C build` + +5. 安装 `sudo ninja -C build install` + +## 5. rpicam-apps +1. 安装依赖 `dnf install -y meson pkgconf python3 boost-devel libdrm-devel libepoxy-devel libexif-devel libjpeg-turbo-devel libpng-devel libtiff-devel libX11-devel qt5-qtbase-devel opencv ffmpeg-devel` + +2. 下载源码 `git clone https://github.com/raspberrypi/rpicam-apps.git && cd rpicam-apps` + +3. 设置环境变量 PKG_CONFIG_PATH + ```bash + echo 'export export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/:$PKG_CONFIG_PATH' >> ~/.bashrc + source ~/.bashrc + ``` + +4. 配置 `meson setup build -Denable_libav=enabled -Denable_drm=enabled -Denable_egl=enabled -Denable_qt=enabled -Denable_opencv=enabled -Denable_tflite=disabled -Denable_hailo=disabled` + +5. 编译 `meson compile -C build` + +6. 安装 `sudo meson install -C build` + +7. 设置环境变量 LD_LIBRARY_PATH + ```bash + echo 'export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc + source ~/.bashrc + ``` +8. 查看安装结果 `rpicam-still --version` + +9. 手动添加 opencv data 相关文件 + ```bash + git clone -b 4.x https://github.com/opencv/opencv.git + cd opencv + mkdir -p /usr/local/share/OpenCV/ + cp -r data/haarcascades /usr/local/share/OpenCV/ + ``` + +10. 设置 cma + `vi /boot/config.txt` 修改以下内容后重启系统 `reboot`。 + ``` + dtoverlay=vc4-kms-v3d-pi5,cma-512 + max_framebuffers=2 + ``` + +11. 人脸识别:`rpicam-hello -t 0 --lores-width 128 --lores-height 96 --post-process-file /usr/local/share/rpi-camera-assets/face_detect_cv.json` \ No newline at end of file -- Gitee