云湖 · 5 天前 · 重庆

【SiRider S1芯擎工业开发板测评】+ NPU使用

使用NPU进行resnet50识别分为两部分,第一部分为板上demo演示,第二部分为PC端部署模型后放入板上进行运行测试。

一、demo演示

首先在板上安装python3.8(版本不能错)及virtual env

sudo pip3 install virtualenv
sudo vitualenv aipu
source aipu/bin/activate //激活virtualenv
deactivate //退出virtualenv

安装完成后测试
 title=
下载demo包,并安装依赖

mkdir ~/tmp && cd ~/tmp
git clone https://github.com/zifeng-radxa/siriders1_NPU_example.git
cd siriders1_NPU_example
pip3 install -r requirements.txt

目录结构如下
 title=
生成推理文件,使用如下images.jpg图片
 title=
生成输入文件

 python3 input_gen.py --img_path ./images.jpg

 title=
添加动态库路径,执行demo

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/libs
./aipu_test aipu_mlperf_resnet50.bin input_3_224_224.bin

结果如下
 title=
fval最大值参考https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a#file-imagenet1000\\\\\_clsidx\\\\\_to\\\\\_labels-txt-L637,对应idx: 282: 'tabby, tabby cat'

二、PC部署模型

使用WSL Ubuntu22.04部署,首先安装conda

mkdir /usr/temp && cd /usr/temp
wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
bash Anaconda3-2024.06-1-Linux-x86_64.sh
export PATH="~/anaconda3/bin:$PATH"
source ~/.bashrc

配置完成如下
 title=
创建conda环境

conda create -n aipu python=3.8

关闭shell并重新打开
 title=
开启conda环境

conda activate aipu

 title=
下载Zhouyi\\\\\_Z2.tar.gz

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

进入安装目录安装依赖

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

 title=
模型转换

cd siengine/nn-compiler-user-case-example/onnx
python3 generate_calibration_data.py
python3 generate_input_binary.py
cd resnet50/
export PATH=$PATH:/root/.local/bin
aipubuild build.cfg

安装gcc-linaro-7.5.0-2019.12-x86\\\\\_64\\\\\_aarch64-linux-gnu

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

修改路径变量

cd siengine/nn-runtime-user-case-example
nano 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")

进行编译

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

得到以下文件,libs文件夹中生成libaipudrv.so文件为0KB,进行删除,其余文件拷贝至SiRider中

\Zhouyi_Z2\zy\siengine\nn-compiler-user-case-example\onnx\resnet50\aipu_mlperf_resnet50.bin        //模型文件
\Zhouyi_Z2\zy\siengine\nn-compiler-user-case-example\onnx\resnet50\input_3_224_224.bin            //照片文件
\Zhouyi_Z2\zy\siengine\nn-runtime-user-case-example\out\linux\aipu_test                            //执行文件
\Zhouyi_Z2\zy\siengine\nn-runtime-user-case-example\out\linux\libs                    //动态库文件夹

进入SiRider拷贝文件夹后进行推理

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/libs
chmod +x aipu_test
./aipu_test aipu_mlperf_resnet50.bin input_3_224_224.bin

输入图片如下
 title=
SiRider执行结果如下
 title=
fval最大值参考https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a#file-imagenet1000\\\\\_clsidx\\\\\_to\\\\\_labels-txt-L637,对应idx: 397: 'lionfish'

推荐阅读
关注数
0
文章数
2
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息