扬子 · 10月11日 · 广东

【SiRider S1芯擎工业开发板测评】+运行yolov8算法

npu工具链体验

前言
近年来,国产神经处理单元(NPU)迅速崛起,成为推动人工智能发展的重要力量。这些NPU以高效的计算能力和能耗优势广泛应用于智能手机、自动驾驶、物联网等领域。目前,许多国内企业,如华为、寒武纪和百度等,已推出自主研发的NPU产品,并在市场上形成了一定的布局。周易也在该领域加码,推出了一系列面向不同算力需求的自研npu架构。

然而,国产NPU在发展过程中也面临着一些挑战。首先,AI软件栈的开放性问题仍然存在,许多NPU的开发环境和工具链相对封闭,导致开发者在使用时遇到障碍。这限制了NPU的生态系统扩展和应用的灵活性。

其次,软件适配问题也是一个亟待解决的难题。由于各家NPU在架构、指令集和性能特征上存在差异,开发者需要为不同的硬件平台进行优化和适配,增加了开发的复杂性和时间成本。为了提高国产NPU的竞争力,推动软件生态的成熟,将是未来发展的关键。

个人使用
首先还是先根据官方提供的教程文档,搭建好相关的部署工具SDK

周易 SDK 是一个全栈平台,可为用户提供快速上市的开发和部署能力
 title=
教程:https://docs.radxa.com/sirider/s1/app-development/zhouyi\_npu

1、安装conda虚拟环境隔离

$ conda --version
conda 23.10.0

如出现 conda: command not found, 则表示未安装 anaconda, 请参考 Anaconda 官网进行安装

创建 conda 环境

conda create -n aipu python=3.8

进入 aipu conda 环境

conda activate aipu

退出环境

conda deactivate

个人使用的是服务器,为x86架构的ubuntu20.04系统
 title=

在瑞莎下载站下载周易 Z2 SDK 安装包后解压安装

tar -xvf Zhouyi_Z2.tar.gz
cd Zhouyi_Z2 && bash +x SETUP.SH

进入安装的页面,会有一堆license条款,只要一直按y同意即可,中间提示输入安装路径就命名一个,并且同意新创建。等待安装完成
image.png
image.png

最后会提示一行文字表示安装成功
SiEngine AloT Zhouyi 22 Compass Software Package Install
Successful to /root/tool
image.png

安装后得到的完整 SDK 文件如下

AI610-SDK-r1p3-AIoT : ARM ZhouYi Z2 工具包

siengine : siengine 提供的 ARM ZhouYi Z2 模型编译(nn-compiler-user-case-example)及板子部署(nn-runtime-user-case-example)的 demos
提供了resnet50的部署示例代码
image.png

配置 nn-compiler 环境,等待pip包下载完成即可

cd AI610-SDK-r1p3-AIoT/AI610-SDK-r1p3-00eac0/Out-Of-Box/out-of-box-nn-compiler
pip3 install -r lib_dependency.txt

模型转换
模型转换工具,如nn-compiler,是连接高层深度学习框架与特定硬件加速平台的重要桥梁。它能够将TensorFlow、ONNX等框架中的模型转换为适合在周易AIPU等硬件上进行推理的格式。这一过程不仅提升了模型在特定硬件上的运行效率,还确保了深度学习模型能够充分利用硬件的并行计算能力,从而加速推理过程。

转换的必要性在于,不同的深度学习框架和硬件平台之间存在架构和实现上的差异,直接使用原始模型可能无法达到最佳性能。通过模型转换,可以优化模型结构、量化权重以及调整计算图,从而有效提升推理速度和降低能耗,使得在边缘设备和移动端的AI应用更加高效和实用。

进入 siengine nn-compiler-user-case-example 目录

如没配置好 nn-compiler 环境, 请按照 x86 PC 端安装 AIPU SDK进行配置

cd  siengine/nn-compiler-user-case-example/onnx

生成量化校准集

python3 generate_calibration_data.py

生成用于模型推理的照片文件

python3 generate_input_binary.py

文件在 ./resnet50/input_3_224_224.bin

(可选) 配置 build.cfg (开箱即用案例已提供)

vim ./resnet50/build.cfg

生成 aipu 模型

cd ./restnet50
aipubuild build.cfg

在 ./restnet50 中得到 aipu_mlperf_resnet50.bin
image.png

该二进制文件可以直接在板载进行推理。

在 x86 PC 端交叉编译二进制可执行文件
安装 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu 交叉编译工具链
link:https://releases.linaro.org/c...

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar
cp -r gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu /opt

编译 aiputest

修改 UMDSRC 变量

cd siengine/nn-runtime-user-case-example
vim CMakeLists.txt
#set(UMDSRC "${CMAKE_SOURCE_DIR}/../AI610-SDK-${AIPU_VERSION}-00eac0/AI610-SDK-1012-${AIPU_VERSION}-eac0/Linux-driver/driver/umd")
set(UMDSRC "${CMAKE_SOURCE_DIR}/../../AI610-SDK-${AIPU_VERSION}-AIoT/AI610-SDK-r1p3-00eac0/AI610-SDK-1012-${AIPU_VERSION}-eac0/Linux-driver/driver/umd")

image.png
交叉编译

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

image.png

编译生成的文件在 siengine/nn-runtime-user-case-example/out/linux/aipu_test

板端推理
在 Sirider S1 进行板端推理
使用ssh(板子ssh只有client,需要安装sshd server,直接安装会有版本冲突问题,安装对应版本后即可正常食用)将生成的 aipu_mlperf_resnet50.bin 模型文件,input_3_224_224.bin 照片文件,aipu_test 可执行文件,out/linux/libs 动态库文件夹复制到 Sirider S1 中

运行可执行文件、模型、以及输入即可得到推理的输出

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<your libs path>
./aipu_test aipu_mlperf_resnet50.bin input_3_224_224.bin

使用体验
整个工具链使用下来感觉较为易用,基本的功能都有还有相关demo示例,未来将多研究SDK的文档doc,进行更深入的开发。

运行yolov8工业检测
既然是工业场景的开发板,又具有一定的ai推理能力。
为了契合场景,就找了一个工业缺陷检测的项目,部署在S1开发板上。

先尝试在cpu上跑通,使用python
后面看能不能改成cpp实现,参考SDK上的yolodemo示例在npu上运行。
官方给的好像都是resnet的实现

clone代码 工业基建缺陷检测
https://github.com/Wh0rigin/y...
创建虚拟环境,使用arrch64 arm版本的miniconda,下载使用清华镜像。

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_23.11.0-1-Linux-aarch64.sh

image.png

创建虚拟环境 py3.8版本

将requirements里的包替换成,arm板卡上支持的版本
如pytorch

运行脚本

python crack_predict.py

推理成功
image.png

原图片
1703400963257.jpg
检测后的缺陷图
1703400963257.jpg

使用top查看cpu负载情况
image.png

后续再查看SDK的源码,看看怎么调用npu

推荐阅读
关注数
10419
内容数
80
搭载基于安谋科技自研“周易”NPU的芯擎科技工业级“龍鹰一号”SE1000-I处理器
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息