[嵌入式AI从0开始到入土]2_下载昇腾案例并运行

[嵌入式AI从0开始到入土]嵌入式AI系列教程

注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。

第1期 昇腾Altas 200 DK上手
第2期 下载昇腾案例并运行
第3期 官方模型适配工具使用
第4期 炼丹炉的搭建(基于Ubuntu23.04 Desktop)
第5期 炼丹炉的搭建(基于wsl2_Ubuntu22.04)
第6期 Ubuntu远程桌面配置
第7期 下载yolo源码及样例运行验证
第8期 在线Gpu环境训练(基于启智ai协作平台)
第9期 转化为昇腾支持的om离线模型
第10期 jupyter lab的使用
第11期 yolov5在昇腾上推理
第12期 yolov5在昇腾上应用
未完待续…



前言

注:本文基于Altas 200 DK编写,Altas 200I Dk A2可能可能在目录结构上存在差异
下文主要以开发环境和运行环境合设的场景进行编写,个人感觉这种场景更适合初学者上手,而分立环境更适合后期开发。关于两种环境的不同请看下图。
在这里插入图片描述

一、安装CANN软件(镜像内自带,后期报错再回来安装也行)

可以先到/usr/local/Ascend/Ascend-toolkit/latest/下查看是否有东西。有的话可以跳过,后面环境变量配置这个路径就可以(好像镜像里已经配好了)。
系统启动后,我确实看到了镜像自带的CANN软件的安装路径,看起来应该也是全的,但是当我把这个路径添加到MindStudio时,却提示我找不到。后面我还是又安装了一次。运行案例应该可以跳过这一步的。

1、下载合适的CANN软件包

1、确认当前固件所支持的最高CANN软件版本号

务必注意版本配套关系,Altas 200 DK最高仅支持6.0.0
以下为Altas 200 Dk的版本配套关系表,如果你使用的是上一篇文章中提到的一键制卡工具,那么你的驱动和固件版本号应该是1.0.13.alpha。
在这里插入图片描述

2、下载CANN软件

如果你和我一样,就直接点这里下载,其他版本的点击这里跳转到下载地址。
下载完成后,通过SSH等工具上传到开发板的任意目录。然后在当前目录运行以下命令进行安装。

chmod +x Aseend-canntoolkit 6.0.RC1 inuxaareh64.run
./Aseend-canntoolkit 6.0.RC1 inuxaareh64.run --install#没事别瞎改
#默认安装路径为$HOME/Ascend,如需修改请看下一行
./Aseend-canntoolkit 6.0.RC1 inuxaareh64.run --install-path=/home/HwHiAiUser/Ascend

2、设置环境变量

如果没有修改安装路径,照抄

vi ~/.bashrc
#在最后添加下一行内容
./home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh    
:wq#保存退出
source ~/.bashrc

二、准备依赖文件

如果使用CANN默认路径安装,照抄。分设环境就需要手动把下面5个文件复制到开发的机子上。

vi ~/.bashrc
#最后添加下一行内容
export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest
:wq
source ~/.bashrc
mkdir -p ${INSTALL_DIR}/driver
cp /usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/      
cp /usr/lib64/libslog.so ${INSTALL_DIR}/driver/            
cp /usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/           
cp /usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/            
cp /usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/

三、运行案例

镜像内~/sample目录下有案例,但是可能没有gitee仓库上的新,所以我选择直接rm -rf ~/sample/sample,然后git clone https://gitee.com/ascend/samples.git,没有git的话直接删除链接后缀.git,访问仓库,下载zip压缩包,上传解压。
这些是官方推荐案例
在这里插入图片描述
这是仓库结构
在这里插入图片描述

接下来我贴两个案例运行步骤,每个案例都有说明文档,照做就可以。

1、sampleResnetDVPP(python)

1、切换到案例目录

大家注意这个我的路径,我下载到了home目录下的sample文件夹内,除了sample-master是我下载的,其他都是自带的
在这里插入图片描述

cd ~/sample/samples-master/inference/modelInference/sampleResnetDVPP/python/

在这里插入图片描述

2、安装第三方依赖

pip3 install opencv-python
pip3 install numpy

3、运行

首先我们需要获取案例用于识别的图片,当然你也可以换成自己的。

cd data
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg

也就是这张图
在这里插入图片描述
接着我们需要下载模型和权重文件,并将其转换成昇腾处理器支持的离线模型。

cd ../model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50_DVPP/aipp.cfg
atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=Ascend310  --insert_op_conf=aipp.cfg

atc转换这一步需要几分钟,期间终端没有输出。
接着设置环境变量(想偷懒就直接写到~/.bashrc里)

export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

最后我们运行程序,查看结果

cd ../scripts/
su#因为权限问题,sudo没法用,所以我们需要切换到root用户
bash sample_run.sh

这是我的运行结果
在这里插入图片描述

2、sampleYOLOV7Multilnput

1、分析案例

这个案例稍微复杂一点,下面是流程图
在这里插入图片描述

管理线程:将线程和队列打包在一起,并完成进程创建、消息队列创建、消息发送和消息接收守护。
数据输入线程:对输入图片或视频进行解码。
数据预处理线程:对数据输入线程传过来的YUV图片进行处理(resize等操作)。
推理线程:使用YOLOV7模型进行推理。
数据后处理线程:分析推理结果,输出框点及标签信息。
数据输出线程:将框点及标签信息标识到输出数据上。
下面是案例的目录结构
在这里插入图片描述

2、安装依赖

设置环境变量(想偷懒就直接写到~/.bashrc里)

 export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
 export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
 export THIRDPART_PATH=${DDK_PATH}/thirdpart
 export LD_LIBRARY_PATH=${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH

接下来就是和网络斗智斗勇的时候,我们需要下载x264、ffmpeg、opencv、jsoncpp,下不动就迅雷下完上传到目录就好了。

 mkdir -p ${THIRDPART_PATH}
 cd ${HOME}
 git clone https://code.videolan.org/videolan/x264.git
 cd x264
 ./configure --enable-shared --disable-asm
 make
 sudo make install
 sudo cp /usr/local/lib/libx264.so.164 /lib
 cd ${HOME}
 wget http://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificate
 tar -zxvf ffmpeg-4.1.3.tar.gz
 cd ffmpeg-4.1.3
 ./configure --enable-shared --enable-pic --enable-static --disable-x86asm --enable-libx264 --enable-gpl --prefix=${THIRDPART_PATH}
 make -j8
 make install
 sudo apt-get install libopencv-dev
 # 安装完成后静态库在系统:/usr/include;动态库在:/usr/lib/x84_64-linux-gnu
sudo apt-get install libjsoncpp-dev 
sudo ln -s /usr/include/jsoncpp/json/ /usr/include/json

3、下载用于识别的数据和模型

这边我下载了官方的案例数据,我后面在B站上随便找了一个车子的视频,识别效果也不错。
还是老规矩,进入案例根目录

cd ~/sample/samples-master/inference/modelInference/sampleYOLOV7MultiInput/

进入data目录,下载或者上传数据

cd data
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/YOLOV3_carColor_sample/data/car0.mp4 --no-check-certificate

接着我们需要下载模型和权重文件,并将其转换成昇腾处理器支持的离线模型。

cd ../model
# 下载yolov7的原始模型文件及AIPP配置文件
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov7/yolov7x.onnx --no-check-certificate
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov7/aipp.cfg --no-check-certificate
atc --model=yolov7x.onnx --framework=5 --output=yolov7x --input_shape="images:1,3,640,640"  --soc_version=Ascend310  --insert_op_conf=aipp.cfg

atc转换这一步需要几分钟,期间终端没有输出。

4、编译程序

cd ../scripts
bash sample_build.sh

如果使用自己的视频,如果是640*640分辨率的,把名字改成car0.mp4,不用修改配置文件,否则修改scripts/test.json内的内容在编译。
需要等待几分钟。

5、运行程序,查看结果

su#因为权限问题,sudo没法用,所以我们需要切换到root用户
bash sample_run.sh

这是我的运行结果(视频就不放上来了,截个图吧)
在这里插入图片描述
这边我修改了参数,案例直接运行,标签很糊,看不清
可以修改src/dataOutput/dataOutput.cpp里的kOutputWidth和kOutputHeigth变量的值更改输出的分辨率,但会相应的增加推理所需的时间。
src/detectPostprocess/detectPostprocess.cpp里的kFountScale修改字体大小,我改成了1.5

问题

1、运行案例sample_run.sh报错

rm: cannot remove ‘/usr/lib64/aicpu_kernels/0/aicpu_kernels_device/sand_box’: Permission denied
在这里插入图片描述
因为HwHIAIUSer用户权限问题,我们需要使用su命令切换到root用户再次运行就可以了。

2、Sorry, user HwHiAiUser is not allowed to execute ‘/bin/bash sample_run.sh’ as root on davinci-mini.

使用su命令切换到root用户就可以。HwHiAiUser好像是考虑到安全问题,无法提权,但是可以改,但没必要。

3、开发板cd过去提示没有这个目录,ll命令发现除隐藏文件外全部消失

不知道是Mobaxterm的bug还是开发板ssh有问题,不要慌,重新连接就可以。

4、关于MindStudio在开发板上要不要安装

可以装,这样任意电脑只有有ssh工具就可以连接,写代码了,雀食方便。但是界面可能会有点糊,也不能使用汉化包,应该是缺少字体的原因。

总结

按着教程来,基本不会遇到问题,可惜官方文档里没有训练模型的步骤。截至2023.10.6,我自己的模型还是无法运行,还在找原因,后期会更新。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工具人呵呵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值