ResNet18 :使用MindStudio进行MindX SDK应用开发
我的博客写的比较详细,大家可以根据目录查看自己需要的内容😁
文章目录
1 写在最前面
这是一篇基于昇腾众智“ResNet18 for pytorch”代码的MindX SDK应用开发经验帖。原始项目代码可以从Ascend/ModelZoo-PyTorch - Gitee.com仓库中找到,根据原始项目代码,我们可以在MindStudio上快速实现一个ImageNet2012数据集1000分类应用的开发。
整个过程中,MindStudio昇腾论坛上的教程基于MindStudio的MindX SDK应用开发全流程_MindStudio_昇腾_华为云论坛 (huaweicloud.com)也提供了很大的帮助。
2 ResNet18简介
ResNet是ImageNet竞赛中分类问题效果较好的网络,它引入了残差学习的概念,通过增加直连通道来保护信息的完整性,解决信息丢失、梯度消失、梯度爆炸等问题,让很深的网络也得以训练。ResNet有不同的网络层数,常用的有18-layer、34-layer、50-layer、101-layer、152-layer。ResNet18的含义是指网络中有18-layer。
3 工具简介
3.1 MindX SDK介绍
MindX SDK是华为昇腾AI处理器加速的AI软件开发套件(SDK), 提供了大量丰富的API,可以快速完成AI应用的开发
3.2 MindStudio
MindStudio提供了一个AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务
依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助开发者在一个工具上就能高效便捷地完成AI应用开发
MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能
官网地址:MindStudio-昇腾社区 (hiascend.com)
4 环境搭建与配置
因为我使用的Windows系统环境,所以这里提供Windows环境下MindStdio环境搭建和配置的全流程,其它系统可以查看安装方案-安装指南-MindStudio-文档首页-昇腾社区 (hiascend.com)
4.1 MindStudio 安装(Windows版本)
-
安装前的说明
MindStudio可以单独安装在Windows上。在安装MindStudio前需要在Linux服务器上安装部署好Ascend-cann-toolkit开发套件包,之后在Windows上安装MindStudio,安装完成后通过配置远程连接的方式建立MindStudio所在的Windows服务器与Ascend-cann-toolkit开发套件包所在的Linux服务器的连接,实现全流程开发功能。
我所采用的是windows共部署的方法
-
下载安装MindStudio
前往MindStudio下载-昇腾社区 (hiascend.com)页面进行MindStudio软件包的下载,并且参照安装MindStudio-安装操作(Windows)完成MindStudio的安装。
4.2 SSH连接
在进行共部署之前,先确认SSH服务器连接成功
![image-20220729112740866](https://i-blog.csdnimg.cn/blog_migrate/d43af9a7e97fda37247543fc72541a08.png)
![image-20220729112829999](https://i-blog.csdnimg.cn/blog_migrate/96e3396ff0e79349c98656195b831b4d.png)
按照上面图中所示,依次配置之后,点击Test Connection,显示下图就表示连接成功。
![image-20220729112923000](https://i-blog.csdnimg.cn/blog_migrate/bf7c5d1ea3f4bebebf60b9281b876a78.png)
4.3 MindX SDK安装
-
远端环境MindX SDK安装
Windows 场景下基于 MindStuido 的 SDK 应用开发,请先确保远端环境上 MindX SDK 软件包已安装完成,安装方式请参见《mxManufacture 用户指南》和 《mxVision 用户指南》的“使用命令行方式开发”>“安装 MindX SDK 开发套件” 章节。
-
本地 CANN 安装
①:在 Windows 本地打开 MindStudio,点击 Customize > Allsettings…,如下图所示:
②:进入设置页面,点击 Appearance & Behavior > System Settings > CANN 进入 CANN 管理界面。
完成后的状态如下图所示:
-
本地 MindX SDK安装
与步骤 2 开始一致,进入设置页面,点击 Appearance & Behavior > System Settings > MindX SDK 进入 MindX SDK 管理界面。界面中 MindX SDK Location 为软件包的默认安装路径,默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。 单击 Install SDK 进入 Installation settings 界面。
参数 说明 Remote Connection 远程连接的用户及 IP Remote CANN Location 远端环境上 CANN 开发套件包的路 径,请配置到版本号一级 Remote SDK Location 远端环境上 SDK 的路径,请配置到 版本号一级。IDE 将同步该层级下的 include、opensource、python、 samples 文件夹到本地 Windows 环境 Local SDK Location 同步远端环境上 SDK 文件夹到本地 的路径。默认安装路径为“C:\Users\ 用户名\Ascend\mindx_sdk”
5 推理开发运行流程
使用 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++版本的应用工程,则需要进行远端编译,远端编译时,会对工 程文件夹进行目录拷贝到远端连接的环境,编译成功后即可运行。
6 业务开发
业务开发将按照python版和C++版分别进行介绍
6.1 Python版本开发
6.1.1 新建一个项目
- 首先创建一个项目,选择一个自己喜欢的位置,比如图中所示,将在D:\Codes\python\Ascend\MyApp位置下创建自己的项目。选择好了后,点击下一步
![新建一个项目](https://i-blog.csdnimg.cn/blog_migrate/6984fef1c16420f56b9615163e7f71cc.png)
-
选择MindX SDK Project(Python)
如图所示,被圈出来的4个项目,上面两个是空模板,在这里面创建我们自己的工程项目,因为我们要创建Python版的应用,所以选箭头指的这个;下面两个是官方给出的样例项目,如果对目录结构和应该写哪些代码不太熟悉的话,也可以创建一个样例项目先学习一下。
选择完成后,点击Finish完成项目的创建
6.1.2 代码目录结构
Python版本的SDK项目大概有哪些文件呢?我们其实可以先打开一个官方样例项目先看看
![image-20220728211202984](https://i-blog.csdnimg.cn/blog_migrate/ccfd407e3e2ba54c061aecfaba32e7bf.png)
左边是我们自己创建的项目,右边是官方样例项目,对比之下我们可以发现,右边的样例项目主要有models(用于存储模型文件)、pipeline(流程编排文件)、python(项目python代码)和streamserver(实际开发中没用上)。
PS: 其实也不一定要按照这个目录结构存放代码,只是这样结构更加清晰一些。
我的工程目录文件是这样
![image-20220728212723792](https://i-blog.csdnimg.cn/blog_migrate/6b524987ee18d22f422869e0e4e7f798.png)
其中data用来存放数据图片
6.1.3 模型转换
-
下载模型
首先我们先在ModelZoo-昇腾社区 (hiascend.com)中下载ResNet18模型和代码
选Pytorch版
分别下载模型脚本和模型
其中模型脚本在“pipeline文件编排”和“main.py文件编写”章节得到应用
解压后,我们只要这个onnx模型,同时,我们将names标签数据也一起放进models文件夹
-
模型转换
点击这个工具,进入模型转换界面