Atlas 200DK+CANN 5.1.RC2+MindStudio5.0.RC2+MindX SDK 3.0玩转攻略12

举报
张辉 发表于 2022/08/23 01:27:52 2022/08/23
【摘要】 Atlas 200DK+CANN 5.1.RC2+MindStudio5.0.RC2+MindX SDK 3.0玩转攻略

十二、使用MindStudio 5.0.RC2 Windows版跑通MMNet样例工程

1、准备MMNet的工程文件

张小白最近看到 其他开发者的帖子,比如这篇:https://bbs.huaweicloud.com/forum/thread-0267963813181180009-1-1.html

MMNet是关于人像分割的神经网络。

我们可以打开 https://www.hiascend.com/zh/developer/mindx-sdk/case-studies/1383ce0c-240c-4a96-a932-e6492a0db2c2

看到详情:

image.png


点击上面的Gitee,进入代码仓:

https://gitee.com/ascend/mindxsdk-referenceapps/tree/master/contrib/MMNET

由于这是一个mindxsdk的工程。我们需要先下载代码仓:

在Windows的cmd中切换到L:盘,执行:

git clone https://gitee.com/ascend/mindxsdk-referenceapps.git

同时,为了得到离线om模型,我们同时在200DK上也同时做同样的操作:

git clone https://gitee.com/ascend/mindxsdk-referenceapps.git

在200DK上切换到 工程的模型目录:cd ~/mindxsdk-referenceapps/contrib/MMNET/model

wget https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps /contrib/MMNET/mmnet.pb --no-check-certificate


模型转换:

atc --model=mmnet.pb --framework=3 --output=mmnet --soc_version=Ascend310 --insert_op_conf=mmnet.aippconf --input_shape="input_x:1,256,256,3"

转换成功后,将其下载到windows同样目录下:

L:\mindxsdk-referenceapps\contrib\MMNET\model


打开MindStudio windows版应用,并打开 L:\mindxsdk-referenceapps\contrib\MMNET 工程。

Ascend->Convert to Ascend Project

选择 Ascend MindX SDK App,点击OK。

将应用案例中的图片另存到 L:mindxsdk-referenceappscontribMMNET 目录下:

好像又有点问题。这个图片依然是png格式。

使用画图打开后另存为jpg格式:



2、在200DK上安装MindX SDK 3.0.RC2 aarch64版

打开 https://www.hiascend.com/zh/software/mindx-sdk/mxVision/community

对于200DK而言,需要安装mindx sdk的arm版本:

wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/MindX/MindX%203.0.RC2/Ascend-mindxsdk-mxvision_3.0.RC2_linux-aarch64.run

根据手册 https://www.hiascend.com/document/detail/zh/mind-sdk/30rc2/quickstart/visionquickstart/visionquickstart_0003.html

安装的方法也很简单:

chmod +x *.run

./Ascend-mindxsdk-mxvision_3.0.RC2_linux-aarch64.run --install

同样的,修改.bashrc文件,增加 . /home/HwHiAiUser/mxVision/set_env.sh

并且source ~/.bashrc使其生效:


3、配置Mind SDK

打开Ascend->MindX SDK Manager,点击Import SDK,分别输入 CANN的路径和MindX SDK的路径:

CANN Location选择:/home/HwHiAiUser/Ascend/ascend-toolkit/5.1.RC2

SDK Location选择:/home/HwHiAiUser/mxVision-3.0.RC2

要精确到具体的版本号,点击OK:

cke_359340.png

系统会将SDK的配置同步到本地:C:\Users\xishu\Ascend\mindx_sdk\ 

cke_466869.png

可以使用资源管理器看到这些文件。但是这些都不需要动。

同步完毕后,会显示如下信息:

cke_556696.png

MindStudio已经识别出了 arm版的 mxVision 3.0.RC2版本。

点击OK继续。


4、配置Python

打开 File->Project Structure

一开始 SDK为空,下拉后显示如下:

点击 Add Python SDK,并选择 SSH Interpreter:

系统会自动弹出右边的内容。

点击OK返回前一个窗口。

再点击 Modules

点击右边的+

选择Python

点击OK,关闭 Project Structure窗口。


5、配置Deployment

查看tools->Deployment->Configuration

Mappings:

这里似乎不需要任何配置,上个工程配置好的内容可以直接复用。


6、第一次运行失败的尝试

由于这是个Python工程,无需编译配置,直接进行运行配置:

点击Run-》Edit Run Configuration

将Executable改为 L:\mindxsdk-referenceapps\contrib\MMNET\main.py

image.png

运行下试试:Run

image.png

报Python版本中没有 _StreamManagerApi的包。难道200DK上的MindX SDK装的不对?

改下Run的配置:

打开run.sh 并写入MindX SDK的安装地址:

重新运行:

报错好像是一样的。

感觉MindX SDK还是一直没搞好。


7、升级Python 3.7.5到Python 3.9.7

经过跟MindStudio专家的沟通,CANN提供能力下,模型转换功能只支持python3.9.0-3.9.7。3.7.0-11 3.8.0-11,sdk2.0.4以后都只支持python3.9。

所以专家建议将Python切换到3.9再试试。

不过这个动作会非常大,几乎相当于要将Python,pip依赖包,CANN toolkit和MindX SDK等等全部重装了。

但是既然现在出了问题,就得解决。张小白折腾了一阵子,还是决定开始升级!

查看了Python的版本,专家建议使用Python3.9.7,虽然张小白很想用Python 3.9.13,但是想想还是听话吧!

cke_1363383.png

浏览器下载 https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz

将其传到200DK

tar -zxvf Python-3.9.7.tgz 解压:

cd Python-3.9.7

./configure --prefix=/usr/local/python3.9.7 --enable-loadable-sqlite-extensions --enable-shared --with-openssl=/home/HwHiAiUser/openssl-1.1.1q

...

make -j8

耐心等待编译结束。

image.png

sudo make install


修改~/.bashrc,将Python 3.7.5的地方改为Python 3.9.7

source ~/.bashrc 使得环境变量生效(不过最好重新登陆,不然会夹杂着Python 3.7.5的路径)

检查安装结果:

python3 --version

pip3 --version

看来还是需要 把安装之后生成的libpython3.9.so.1.0拷贝到/usr/lib64和/usr/lib下:

sudo cp libpython3.9.so.1.0 /usr/lib/ 

sudo cp libpython3.9.so.1.0 /usr/lib64/

pip3 --version

升级pip版本:

pip3 install --upgrade pip -i http://pypi.douban.com/simple --trusted-host pypi.douban.com --user


做个软链接:

sudo su -

ln -s /usr/local/python3.9.7/bin/python3.9 python

exit

python -V


把root用的下的.bashrc中的 Python 3.7.5 也改为Python 3.9.7

source ~/.bashrc后并进行验证

回到HwHiAiUser用户,安装pip依赖包:

pip3 install attrs numpy decorator sympy cffi pyyaml psutil protobuf scipy requests absl-py -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

。。。

pathlib包也需要安装:

pip3 install pathlib2 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

pip3 list


再补充安装两个包:

pip3 install grpcio -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

pip3 install pylint -i http://pypi.douban.com/simple --trusted-host pypi.douban.com


8、重装CANN Toolkit 5.1.RC2

先卸载CANN toolkit 5.1.RC2,然后再安装CANN toolkit 5.1.RC2

cd

./Ascend-cann-toolkit_5.1.RC2_linux-aarch64.run --uninstall

./Ascend-cann-toolkit_5.1.RC2_linux-aarch64.run --install --chip=Ascend310-minirc


9、重装MindX SDK 3.0.RC2

./Ascend-mindxsdk-mxvision_3.0.RC2_linux-aarch64.run --uninstall

./Ascend-mindxsdk-mxvision_3.0.RC2_linux-aarch64.run --install

cke_1892853.png

为了保险起见,把设备都重启下,以保证最新的环境变量生效。


现在可以重新到MindStudio做个MindX SDK的删除和重新import。方法前面已经有了,此处略过。


10、MindStudio重新配置Python

由于Python从3.7.5升级到3.9.7,所以需要按照”4、配置Python“的方法重新配置Python:

打开 File->Project Structure,具体方法参见前面章节,配置效果如下:

重新配置 Project Structure-》SDKs->SSH Interpreter:

顺手删掉原来的Python 3.7.5的配置、

相关的Project和Modules参数也对应修改成Python 3.9.7的


image.png


11、反复运行直到成功!

再运行试试:

cke_2675113.png

怎么还是报这个错?

再仔细看看:

切换到200DK终端上:

cke_3150458.png

确实没有这个StreamManagerApi库,奇怪,不应该啊,按理说装完MindX SDK之后就应该有这个库了啊。

但是acl库是有的,当然有,不然前面YoLoV3的样例工程就无法跑成功啊。


再仔细看看.bashrc

cke_3410039.png


原来发现了一个隐含的大BUG。

前面的set_env.sh都是通过.来执行的,最后一个MindX SDK的set_env.sh却是通过bash来执行的。貌似bash会新开一个shell执行,执行完毕后并不能将结果保留到当前shell。

所以貌似执行过 .bashrc后,MX_SDK_HOME还是空值。

不多分析了,赶紧改吧!

cke_4234677.png

再重新登陆看看:

cke_4300618.png

好像这些MindX SDK环境变量都有了。

再看看import行不行:

cke_58759.png

好像可以啊!张小白越来越有信心了!


再到MindStudio运行试试:

cke_200459.png

信心总是被打击得很快,不过张小白依然是不死小强。。


查看下protobuf的版本:4.21.5

pip install protobuf

cke_497106.png

上面说需要 3.20.x。。。

张小白也不知道该安装哪个版本,于是就乱写一个试试:

pip install protobuf==3.20.5

cke_830338.png

没有3.20.5版本。但是告诉我,有3.20.1版本,就是他了!

pip install protobuf==3.20.1

cke_1008461.png


再来运行:

cke_1061029.png

没装opencv,那就装吧:

pip3 install opencv-python -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

cke_1205580.png

再来运行:

cke_1249980.png

没装PIL,那就装吧!

pip3 install pillow -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

cke_1337290.png

再来运行:

cke_1396517.png

好像是文件名不对,仔细看代码main.py:

cke_1522023.png

图片要求的名称为test.jpg

那就将图片名称改为现在的名称吧!

cke_1806281.png

再重新运行:

cke_1881465.png

cke_1891606.png

程序成功执行完毕。

原始图片为:

cke_2060004.png

生成好的图片为:test-out.jpg

cke_2228560.png

终于执行完毕了,真不容易啊!!!


12、pipeline解读

因为MMNet是个Python的MindX SDK程序,它是有Pipeline的。我们点开pipeline目录下的MMNET.pipeline,先看看它的文本:

cke_3180200.png

文本有点绕,路径张小白都画出来了:appsrc0->mxpi_imagedecoder0 解码->mxpi_imageresize0 (resize)->mxpi_tensorinfer0  推理->appsink0

点击Pipeline Stream Editor看到具体的步骤及详情:

appsrc0:

cke_3796220.png

图片解码:输入图片格式要求为 jpg,BGR格式:

cke_4057961.png

resize:

cke_4100911.png

送进模型进行推理:

cke_4220126.png

结束:

cke_4257005.png

模型输出的结果,是通过main.py后面的脚本完成结果的读取和opencv的结果图写入的。

cke_4636422.png

变量之间的关系张小白也大致标出了。大概就是这样的流向~~


(未完待续)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。