DeepMar-基于 MindStudio 的 MindX SDK 应用开发

DeepMar-基于 MindStudio 的 MindX SDK 应用开发

  • MindX SDK 简介

MindX SDK应用开发是使用华为提供的开发套件完成模型的迅速开发以及部署人工智能应用。本文将通过一个利用MindStudio开发应用的例子来向大家展示如何通过现有的插件构建业务流并实现对接,将业务单元封装起来,通过封装好的插件进行推理流程业务。

本文基于MindStudio昇腾论坛上的教程《MindX SDK 应用开发全流程》,并将我自己的个人经验整理成图文形式记录下来。

  • DeepMar模型简介

论文中为了更好地利用属性间的关联性,提出了统一多属性联合学习模型(DeepMar)来同时学习所有属性,该论文的基本模型结构由一个输入图像、一个共享网络和35个输出节点组成。利用数据集PETA来训练网络和进行精度测试。PETA是目前最具挑战性的行人属性数据集。它包含19000张行人图像,由真正的摄像头拍摄。目前广泛采用的实验协议是将数据集随机分成三部分:9500用于训练,1900用于验证,7600用于测试。

  • 环境配置

本文的示例所处环境为Windows10,针对DeepMar多分类模型,并基于MindStudio的MindX应用开发。

  1. 在Windows操作系统上安装MindStudio

MindStudio可以单独安装在Windows上,我们可以在MindStudio下载官网地址下载该软件。

不过,在安装前,我们需要现在电脑上安装好相关依赖。比如Python3.7.5、MinGW、Cmake等,具体安装目录以及安装方式参考《Windows安装MindStuido》。

在安装MindStudio前需要在Linux服务器上安装部署好Ascend-cann- toolkit开发套件包,之后在Windows上安装MindStudio,安装完成后通过配置远程连接的方式建立 MindStudio所在的Windows服务器与Ascend-cann-toolkit开发套件包所在的Linux服务器的连接,实现全流程开发功能。如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第1张图片

 

  1. SSH连接远端环境

在本地打开MindStudio,依次点击Customize-All Settings,如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第2张图片

 

打开设置页面之后,依次点击Appearance & Behavior - System Settings - CANN就可以进入CANN管理页面。如下图所示(由于我这里已经配置好了CANN,第一次打开的同学看不到图中关于CANN的信息,不用担心):

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第3张图片

 

之后单击Change CANN就可以进行CANN的配置了。如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第4张图片

 

点击右侧“+”号,出现如下图所示的界面:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第5张图片参数说明:

 

参数

说明

Host

远程服务器IP地址

Port

远程服务器端口号

Username

用户名

Authentication type

验证类型

Password

密码

把所需信息填写完毕后,记得点击一下“Test Connection”测试连接是否正常,如果显示下图所示界面,即表示配置成功。

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第6张图片

 

接着我们就可以配置远端CANN开发套件包的路径了,在这里我填写的是“/usr/local/Ascend/ascend-toolkit/5.1.RC1”,然后点击“Finish”按钮,等待同步完成即可。

  1. 本地MindX SDK 安装

与上一步类似,先进入设置页面,依次点击Appearance & Behavior  System Settings  MindX SDK就可以进入MindX SDK管理页面。页面中“MindX SDK location”是本地的安装路径,默认为C:\Users\用户名\Ascend\mindx_sdk”,接下来我们单击“Install SDK”进入如下图所示的管理界面:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第7张图片

 

参数说明:

参数

说明

Remote Connection

远程连接的用户及IP

Remote CANN Location

远端环境上 CANN 开发套件包的路 径,记得配置到版本号

Remote SDK Location

远端环境上SDK的路径,记得配置到版本号。

Local SDK Location

本地的SDK 路径。默认安装路径为“C:\Users\ 用户名\Ascend\mindx_sdk”

安装完安装完毕后的界面如下图所示:毕后的界面如下图所示:DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第8张图片

 

点击“OK”,即可完成配置安装流程。

在上面的安装过程中可能会出现SDK安装失败的错误,那是因为选错了路径,如下图所示:

 

出现这个错误,很可能是因为选到了版本号的父级文件夹,如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第9张图片

 

记得要选择下方的那个。

  • 推理开发运行流程

使用 MindStudio 开发和运行推理业务步骤如下:

1) 确定业务流程:根据业务功能如目标检测、图像分类、属性识别等,将业务流程进行模块化。

2) 寻找合适插件:根据已有SDK插件的功能描述和规格限制来匹配业务功能,当 SDK 提供的插件无法满足功能需求时,用户可以开发自定义插件。

3) 准备推理模型文件与数据:准备输入图片和下载模型,使用 Model Convertor 模型转换工具将模型转换为 om 格式。

4) 流程编排:以可视化的方式,开发数据流图,生成pipeline文件供应用框

架使用,配置文件以 json 格式编写,必须指定业务流名称、元件名称和插件名称,并根据需要,补充元件属性和下游元件名称信息。

5) 业务集成:编写 C++程序或 Python 程序,调用业务流管理的 API (MxStreamManager),先进行初始化,再加载业务流配置文件 (*.pipeline),然后根据 stream 配置文件中的 StreamName 往指定 Stream获取输出数据,最后销毁 Stream。

6) 编译与运行应用:若新建的工程为Python版本的应用工程,不需要执行 编译应用工程,配置 Python 环境后,即可在远端服务器运行;若新建工 程为 C++版本的应用工程,则需要进行远端编译,远端编译时,会对工程文件夹进行目录拷贝到远端连接的环境,编译成功后即可运行。

  • DeepMar模型推理开发
  1. 创建一个新MindX SDK Project,如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第10张图片

 

单击“Next”,进入模版选择界面:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第11张图片

 

如上图蓝框所示,我们选择Python版本的,之后点击“Finish”即可完成项目创建。

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第12张图片

 

上图是我的文件层级,仅供参考。

2. 模型转换

先把下载好的DeepMar_npu.onnx放到models目录下,然后在菜单栏选择“Ascend  Model Converter”,进入模型转换页面,选择模型文件路径后,会进入“Model Parsing”界面,如下图所示,等待即可。

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第13张图片

 

等待加载完参数信息后会显示如下图所示的界面:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第14张图片

 

记得要选FP32。

之后点击Next和Finish就可以开始模型转换了。

稍等片刻,等到出现以下界面就表示转换完成:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第15张图片

 

将生成好的om文件移动到models文件夹下就可以开始下一步了。

3. pipeline流程编排

pipeline编排分为如下步骤:

初始化-分类-序列化-产出结果

可视化如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第16张图片

 

我们只需要将下载下来的pipeline文件稍加修改就可以为我所用:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第17张图片

 

单击上图中的“Text”即可进入文字修改界面:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第18张图片

 

我们只需要将上图中的模型路径修改为我们的路径即可,修改后如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第19张图片

 

接下来我们就可以开始编写main.py文件了。

4. main.py编写

通过下载好的文件,我们不难将数据处理流程抽象成如下几个函数:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第20张图片

 

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第21张图片

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第22张图片 

 

上述的几个函数分别对传入的图片进行了缩放、归一化等处理,并生成将要送人推理流程的protobuf。

于是我们可以得到如下详细的main文件流程:

1. 引入相关库

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第23张图片

 

2. 初始化stream

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第24张图片

 

3. 创建stream

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第25张图片

 

4. 使用前文提到的函数处理输入的图片数据

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第26张图片

 

5. 将数据送入stream并开始推理流程

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第27张图片

 

6. 获取推理结果并打印到控制台

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第28张图片

 

7. 销毁stream,结束推理

1. 配置python环境

 配置python interpreter

在顶部菜单栏中选择 File - Project Structure,在 Project Structure 窗口中,点 击 Platform Settings - SDKs,点击上方的“+”添加 Python SDK,从本地环境中 导入 Python3.9,如下图所示:DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第29张图片

 

然后点击Project Settings - Project,选择上一步添加的Python SDK,如下图所示:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第30张图片接着,点击 Project Settings - Modules,选中此项目,点击“+”后选择 Python:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第31张图片

点击OK即可完成配置。

2. 配置运行参数

依次点击“Run > Edit Configurations”,选择Ascend App并配置可执行文件路径,下图为我的示例:

DeepMar-基于 MindStudio 的 MindX SDK 应用开发_第32张图片单击Apply后点击OK退出配置界面。

 

3. 推理运行

测试输入的图片如下:

 

测试输出如下:

 

与peta.mat对比后发现结果一致,推理结果正确!下图为peta.mat中的ground truth:

 

由于屏幕显示有限,只能截取这么多,我做对比之后是一样的。

  • 获取帮助

如果有任何疑问,都可以前往MindStudio昇腾论坛获取更多信息。

你可能感兴趣的:(AI,python,人工智能,深度学习)