注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。
第一章 昇腾Altas 200 DK上手
第二章 下载昇腾案例并运行
第三章 官方模型适配工具使用
第四章 炼丹炉的搭建(基于Ubuntu23.04 Desktop)
第五章 Ubuntu远程桌面配置
第六章 下载yolo源码及样例运行验证
第七章 转化为昇腾支持的om离线模型
第八章 jupyter lab的使用
第九章 yolov5在昇腾上推理
第十章 yolov5在昇腾上应用
未完待续…
注:本文基于Altas 200 DK编写,Altas 200I Dk A2可能可能在目录结构上存在差异
下文主要以开发环境和运行环境合设的场景进行编写,个人感觉这种场景更适合初学者上手,而分立环境更适合后期开发。关于两种环境的不同请看下图。
可以先到/usr/local/Ascend/Ascend-toolkit/latest/
下查看是否有东西。有的话可以跳过,后面环境变量配置这个路径就可以(好像镜像里已经配好了)。
系统启动后,我确实看到了镜像自带的CANN软件的安装路径,看起来应该也是全的,但是当我把这个路径添加到MindStudio时,却提示我找不到。后面我还是又安装了一次。运行案例应该可以跳过这一步的。
务必注意版本配套关系,Altas 200 DK最高仅支持6.0.0
以下为Altas 200 Dk的版本配套关系表,如果你使用的是上一篇文章中提到的一键制卡工具,那么你的驱动和固件版本号应该是1.0.13.alpha。
如果你和我一样,就直接点这里下载,其他版本的点击这里跳转到下载地址。
下载完成后,通过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
如果没有修改安装路径,照抄
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压缩包,上传解压。
这些是官方推荐案例
这是仓库结构
接下来我贴两个案例运行步骤,每个案例都有说明文档,照做就可以。
大家注意这个我的路径,我下载到了home目录下的sample文件夹内,除了sample-master是我下载的,其他都是自带的
cd ~/sample/samples-master/inference/modelInference/sampleResnetDVPP/python/
pip3 install opencv-python
pip3 install numpy
首先我们需要获取案例用于识别的图片,当然你也可以换成自己的。
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
管理线程:将线程和队列打包在一起,并完成进程创建、消息队列创建、消息发送和消息接收守护。
数据输入线程:对输入图片或视频进行解码。
数据预处理线程:对数据输入线程传过来的YUV图片进行处理(resize等操作)。
推理线程:使用YOLOV7模型进行推理。
数据后处理线程:分析推理结果,输出框点及标签信息。
数据输出线程:将框点及标签信息标识到输出数据上。
下面是案例的目录结构
设置环境变量(想偷懒就直接写到~/.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
这边我下载了官方的案例数据,我后面在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转换这一步需要几分钟,期间终端没有输出。
cd ../scripts
bash sample_build.sh
如果使用自己的视频,如果是640*640分辨率的,把名字改成car0.mp4
,不用修改配置文件,否则修改scripts/test.json
内的内容在编译。
需要等待几分钟。
su#因为权限问题,sudo没法用,所以我们需要切换到root用户
bash sample_run.sh
这是我的运行结果(视频就不放上来了,截个图吧)
这边我修改了参数,案例直接运行,标签很糊,看不清
可以修改src/dataOutput/dataOutput.cpp
里的kOutputWidth和kOutputHeigth变量的值更改输出的分辨率,但会相应的增加推理所需的时间。
在src/detectPostprocess/detectPostprocess.cpp
里的kFountScale修改字体大小,我改成了1.5
rm: cannot remove ‘/usr/lib64/aicpu_kernels/0/aicpu_kernels_device/sand_box’: Permission denied
因为HwHIAIUSer用户权限问题,我们需要使用su命令切换到root用户再次运行就可以了。
使用su命令切换到root用户就可以。HwHiAiUser好像是考虑到安全问题,无法提权,但是可以改,但没必要。
不知道是Mobaxterm的bug还是开发板ssh有问题,不要慌,重新连接就可以。
可以装,这样任意电脑只有有ssh工具就可以连接,写代码了,雀食方便。但是界面可能会有点糊,也不能使用汉化包,应该是缺少字体的原因。
按着教程来,基本不会遇到问题,可惜官方文档里没有训练模型的步骤。截至2023.10.6,我自己的模型还是无法运行,还在找原因,后期会更新。