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应用开发。
- 在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服务器的连接,实现全流程开发功能。如下图所示:
- SSH连接远端环境
在本地打开MindStudio,依次点击Customize-All Settings,如下图所示:
打开设置页面之后,依次点击Appearance & Behavior - System Settings - CANN就可以进入CANN管理页面。如下图所示(由于我这里已经配置好了CANN,第一次打开的同学看不到图中关于CANN的信息,不用担心):
之后单击Change CANN就可以进行CANN的配置了。如下图所示:
点击右侧“+”号,出现如下图所示的界面:
参数说明:
参数 |
说明 |
Host |
远程服务器IP地址 |
Port |
远程服务器端口号 |
Username |
用户名 |
Authentication type |
验证类型 |
Password |
密码 |
把所需信息填写完毕后,记得点击一下“Test Connection”测试连接是否正常,如果显示下图所示界面,即表示配置成功。
接着我们就可以配置远端CANN开发套件包的路径了,在这里我填写的是“/usr/local/Ascend/ascend-toolkit/5.1.RC1”,然后点击“Finish”按钮,等待同步完成即可。
- 本地MindX SDK 安装
与上一步类似,先进入设置页面,依次点击Appearance & Behavior System Settings MindX SDK就可以进入MindX SDK管理页面。页面中“MindX SDK location”是本地的安装路径,默认为C:\Users\用户名\Ascend\mindx_sdk”,接下来我们单击“Install SDK”进入如下图所示的管理界面:
参数说明:
参数 |
说明 |
Remote Connection |
远程连接的用户及IP |
Remote CANN Location |
远端环境上 CANN 开发套件包的路 径,记得配置到版本号 |
Remote SDK Location |
远端环境上SDK的路径,记得配置到版本号。 |
Local SDK Location |
本地的SDK 路径。默认安装路径为“C:\Users\ 用户名\Ascend\mindx_sdk” |
安装完安装完毕后的界面如下图所示:毕后的界面如下图所示:
点击“OK”,即可完成配置安装流程。
在上面的安装过程中可能会出现SDK安装失败的错误,那是因为选错了路径,如下图所示:
出现这个错误,很可能是因为选到了版本号的父级文件夹,如下图所示:
记得要选择下方的那个。
- 推理开发运行流程
使用 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模型推理开发
- 创建一个新MindX SDK Project,如下图所示:
单击“Next”,进入模版选择界面:
如上图蓝框所示,我们选择Python版本的,之后点击“Finish”即可完成项目创建。
上图是我的文件层级,仅供参考。
2. 模型转换
先把下载好的DeepMar_npu.onnx放到models目录下,然后在菜单栏选择“Ascend Model Converter”,进入模型转换页面,选择模型文件路径后,会进入“Model Parsing”界面,如下图所示,等待即可。
等待加载完参数信息后会显示如下图所示的界面:
记得要选FP32。
之后点击Next和Finish就可以开始模型转换了。
稍等片刻,等到出现以下界面就表示转换完成:
将生成好的om文件移动到models文件夹下就可以开始下一步了。
3. pipeline流程编排
pipeline编排分为如下步骤:
初始化-分类-序列化-产出结果
可视化如下图所示:
我们只需要将下载下来的pipeline文件稍加修改就可以为我所用:
单击上图中的“Text”即可进入文字修改界面:
我们只需要将上图中的模型路径修改为我们的路径即可,修改后如下图所示:
接下来我们就可以开始编写main.py文件了。
4. main.py编写
通过下载好的文件,我们不难将数据处理流程抽象成如下几个函数:
上述的几个函数分别对传入的图片进行了缩放、归一化等处理,并生成将要送人推理流程的protobuf。
于是我们可以得到如下详细的main文件流程:
1. 引入相关库
2. 初始化stream
3. 创建stream
4. 使用前文提到的函数处理输入的图片数据
5. 将数据送入stream并开始推理流程
6. 获取推理结果并打印到控制台
7. 销毁stream,结束推理
1. 配置python环境
配置python interpreter
在顶部菜单栏中选择 File - Project Structure,在 Project Structure 窗口中,点 击 Platform Settings - SDKs,点击上方的“+”添加 Python SDK,从本地环境中 导入 Python3.9,如下图所示:
然后点击Project Settings - Project,选择上一步添加的Python SDK,如下图所示:
接着,点击 Project Settings - Modules,选中此项目,点击“+”后选择 Python:
点击OK即可完成配置。
2. 配置运行参数
依次点击“Run > Edit Configurations”,选择Ascend App并配置可执行文件路径,下图为我的示例:
单击Apply后点击OK退出配置界面。
3. 推理运行
测试输入的图片如下:
测试输出如下:
与peta.mat对比后发现结果一致,推理结果正确!下图为peta.mat中的ground truth:
由于屏幕显示有限,只能截取这么多,我做对比之后是一样的。
- 获取帮助
如果有任何疑问,都可以前往MindStudio昇腾论坛获取更多信息。
DeepMar-基于 MindStudio 的 MindX SDK 应用开发相关推荐
- 2D激光雷达:使用MindStudio进行MindX SDK任务开发
视频案例链接:2D激光雷达: 使用MindStudio进行MindX SDK任务开发_哔哩哔哩_bilibili 任务介绍 该项目基于DROW3和DR-SPAAM模型,实现了实时的2D激光雷达行人检测 ...
- 基于 MindStudio 的图像去噪 MindX SDK 后处理开发(ADNet模型)
ADNet图像降噪 (bilibili视频链接: https://www.bilibili.com/video/BV1te411g72h) 1 任务介绍 基于ADNet模型的图像降噪MindX S ...
- 基于MindStudio的Resnet50深度学习模型开发
基于MindStudio的MindX SDK应用开发全流程 目录 一.MindStudio介绍与安装 2 1 MindStudio介绍 2 2 MindSpore安装 4 二.MindX SDK介绍与 ...
- 基于MindX SDK的ChineseOCR文字识别教程
b站视频案例:https://www.bilibili.com/video/BV12W4y1j7Fq/ 目录 基于MindX SDK的ChineseOCR文字识别教程 1. 任务介绍 1.1. 任务场 ...
- 【云原生】设备云之基于FlexManager的C#SDK开发案例代码
文章目录 前言 一.C#SDK开发说明 1.软件版本 2.开发依赖 3.引入项目文件 二.示例代码 1.创建全局变量 2.创建IFBoxClientManager.ILogger实例并初始化. 3.开 ...
- 基于电商直播SDK快速实现一个淘宝直播APP【内附源码】
现在各大互联网APP都标配电商直播带货了,没有直播带货开发经验都感觉自己跟不上技术的进步.今天快速基于Java实现一个安卓端电商直播APP,深入理解整个电商直播开发流程.我们最终实现效果如下: 按照惯 ...
- 基于华为云会议SDK 24行代码打造企业专属会议室
华为已经有着超过20年的视频会议产品研发经验,拥有1000多项视频会议.音视频相关的国际和国内专利技术.华为云会议基于全开放的产品定位,将华为云会议的所有产品能力都开放给伙伴,伙伴可以通过集成华为云会 ...
- 【华为云技术分享】使用CloudIDE快速体验基于华为云ModelArts SDK的AI开发
华为云ModelArts一站式AI开发与管理平台,能够支撑开发者从数据到AI应用的全流程开发过程,包含数据处理.算法开发.模型训练.模型管理.部署等,支持图像分类.图像检测.视频分析.语音识别.产品推 ...
- 基于Unity3D 的Vuforia SDK开发基础教程
前言 增强现实技术是当前信息技术领域的一项重要的综合性技术,融合了模式识别.计算机图形学等多个学科的知识.今天我们就和大家一起来看一下,这个技术到底可以带给我们什么吧. 左边是通过手机观看图片,可 ...
最新文章
- YOU SAY THE RULE IS HERE,BUT I SAY WHY?
- 在.NET中从app.config或web.config读取设置
- 如何利用自定义注解放行 Spring Security 项目的接口
- queueing 优化_网站加载性能
- 机械系统计算机控制试卷及答案,机械系统设计试题及答案
- Linux6.8 ssh开启,CentOS 6.8升级 ssh到最新版SSH-8.2p1
- APUE学习笔记-守护进程的创建
- SVG和G语言的混合显示引擎
- C# RestClient查询Elasticsearch(附带账号密码)
- Mujoco制作模拟视频
- Android申请相机权限
- Java之阻塞和非阻塞以及同步和异步的区别
- 区块链技术在创造共享经济方面胜过互联网
- 无处安放的野心和能力
- 计算机 修改 虚拟ip,怎么样在电脑中设置虚拟IP地址?
- esclip直接快捷键构造函数_IntelliJ Idea 常用快捷键
- VSCode工具JS文件白色字体问题
- android 按钮 onClick 五种事件写法
- python论文结论_Python学习总结
- 使用手机可以在线拍照、翻译图片文字吗?