使用MindStudio进行MindX SDK ESRGAN应用开发

基于MindStudio的MindX SDK应用开发全流程

  • MindStudio介绍与安装

相关课程:昇腾全流程开发工具链(MindStudio)

本课程主要介绍MindStudio在昇腾AI开发中的使用,作为昇腾AI全栈中的全流程开发工具链,提供覆盖训练模型、推理应用和自定义算子开发三个场景下端到端工具,极大提高开发效率。

建议开发前,学习该课程的第1章和第3章,可以少走很多弯路!!!

  1. MindStudio介绍

MindStudio提供您在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助您在一个工具上就能高效便捷地完成AI应用开发。MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能。

  1. 功能简介
  1. 针对安装与部署,MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大便利。
  2. 针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率。
  3. 针对算子开发,MindStudio提供包含UT测试、ST测试、TIK算子调试等的全套算子开发流程。支持TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发。
  4. 针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。
  1. 功能框架

MindStudio功能框架如图1-1所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。

图1-1 工具链功能架构

  1. 工具功能

MindStudio工具中的主要几个功能特性如下:

  1. 工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。
  2. SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。
  3. 应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成MindX SDK的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。
  4. 自定义算子开发:提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。
  5. 离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。
  6. 日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。
  7. 性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。
  8. 设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。
  9. 精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运算结果,以便用来确认神经网络运算误差发生的原因。
  10. 开发工具包的安装与管理:为开发者提供基于昇腾AI处理器的相关算法开发套件包Ascend-cann-toolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等。

  1. MindStudio安装

具体安装操作请参考:MindStudio安装指南  MindStudio环境搭建指导视频

  1. 场景介绍
  1. 纯开发场景(分部署形态):在非昇腾AI设备上安装MindStudio和Ascend-cann-toolkit开发套件包。可作为开发环境仅能用于代码开发、编译等不依赖于昇腾设备的开发活动(例如ATC模型转换、算子和推理应用程序的纯代码开发)。如果想运行应用程序或进行模型训练等,需要通过MindStudio远程连接功能连接已部署好运行环境所需软件包的昇腾AI设备。
  2. 开发运行场景(共部署形态):在昇腾AI设备上安装MindStudio、Ascend-cann-toolkit开发套件包、npu-firmware安装包、npu-driver安装包和AI框架(进行模型训练时需要安装)。作为开发环境,开发人员可以进行普通的工程管理、代码编写、编译、模型转换等功能。同时可以作为运行环境,运行应用程序或进行模型训练。
  1. 软件包介绍
  1. MindStudio:提供图形化开发界面,支持应用开发、调试和模型转换功能,同时还支持网络移植、优化和分析等功能。
  2. Ascend-cann-toolkit:开发套件包。为开发者提供基于昇腾AI处理器的相关算法开发工具包,旨在帮助开发者进行快速、高效的模型、算子和应用的开发。开发套件包只能安装在Linux服务器上,开发者可以在安装开发套件包后,使用MindStudio开发工具进行快速开发。

  • MindX SDK介绍与安装
  1. MindX SDK介绍

MindX SDK提供昇腾AI处理器加速的各类AI软件开发套件(SDK),提供极简易用的API,加速AI应用的开发。

应用开发旨在使用华为提供的SDK和应用案例快速开发并部署人工智能应用,是基于现有模型、使用pyACL提供的Python语言API库开发深度神经网络应用,用于实现目标识别、图像分类等功能。

图2-1 MindX SDK总体结构

通过MindStudio实现SDK应用开发分为基础开发与深入开发,通常情况下用户关注基础开发即可,基础开发主要包含如何通过现有的插件构建业务流并实现业务数据对接,采用模块化的设计理念,将业务流程中的各个功能单元封装成独立的插件,通过插件的串接快速构建推理业务。

mxManufacture & mxVision关键特性:

  1. 配置文件快速构建AI推理业务。
  2. 插件化开发模式,将整个推理流程“插件化”,每个插件提供一种功能,通过组装不同的插件,灵活适配推理业务流程。
  3. 提供丰富的插件库,用户可根据业务需求组合Jpeg解码、抠图、缩放、模型推理、数据序列化等插件。
  4. 基于Ascend Computing Language(ACL),提供常用功能的高级API,如模型推理、解码、预处理等,简化Ascend芯片应用开发。
  5. 支持自定义插件开发,用户可快速地将自己的业务逻辑封装成插件,打造自己的应用插件。

  1. MindX SDK安装

步骤1 Windows场景下基于MindStuido的SDK应用开发,请先确保远端环境上MindX SDK软件包已安装完成,安装方式请参见《mxManufacture 用户指南》 《mxVision 用户指南》 的“使用命令行方式开发”>“安装MindX SDK开发套件”章节。

步骤2 在Windows本地进入工程创建页面,工具栏点击File > Settings > Appearance & Behavior > System Settings > MindX SDK进入MindX SDK管理界面。界面中MindX SDK Location为软件包的默认安装路径,默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。单击Install SDK进入Installation settings界面,如图2-2。

图2-2 MindX SDK管理界面

如图2-3所示,为MindX SDK的安装界面,各参数选择如下:

  1. Remote Connection:远程连接的用户及IP。
  2. Remote CANN Location:远端环境上CANN开发套件包的路径,请配置到版本号一级。
  3. Remote SDK Location:远端环境上SDK的路径,请配置到版本号一级。IDE将同步该层级下的include、opensource、python、samples文件夹到本地Windows环境,层级选择错误将导致安装失败。
  4. Local SDK Location:同步远端环境上SDK文件夹到本地的路径。默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。

图2-3 MindX SDK安装界面

图2-4 安装完成后的MindX SDK管理界面

步骤3 单击OK结束,返回SDK管理界面,可查看安装后的SDK的信息,如图2-4所示,可单击OK结束安装流程。

  • 可视化流程编排介绍
  1. SDK基础概念

通过stream(业务流)配置文件,Stream manager(业务流管理模块)可识别需要构建的element(功能元件)以及element之间的连接关系,并启动业务流程。Stream manager对外提供接口,用于向stream发送数据和获取结果,帮助用户实现业务对接。

Plugin(功能插件)表示业务流程中的基础模块,通过element的串接构建成一个stream。Buffer(插件缓存)用于内部挂载解码前后的视频、图像数据,是element之间传递的数据结构,同时也允许用户挂载Metadata(插件元数据),用于存放结构化数据(如目标检测结果)或过程数据(如缩放后的图像)。

图4-1 SDK业务流程相关基础单元

  1. 可视化流程编排

MindX SDK实现功能的最小粒度是插件,每一个插件实现特定的功能,如图片解码、图片缩放等。流程编排是将这些插件按照合理的顺序编排,实现负责的功能。可视化流程编排是以可视化的方式,开发数据流图,生成pipeline文件供应用框架使用。图 4-2 为推理业务流Stream配置文件pipeline样例。配置文件以json格式编写,用户必须指定业务流名称、元件名称和插件名称,并根据需要,补充元件属性和下游元件名称信息。

步骤1 进入工程创建页面,用户可通过以下方式开始流程编排。在顶部菜单栏中选择Ascend>MindX SDK Pipeline,打开空白的pipeline绘制界面绘制,也可打开用户自行绘制好的pipeline文件,如图4-3。

绘制界面分为左侧插件库、中间编辑区、右侧插件属性展示区,具体参考pipeline绘制 。

步骤2 在左侧编辑框选择插件,拖动至中间编辑框,按照用户的业务流程进行连接。如果拖动错误插件或者错误连线,选中错误插件或者错误连线单击键盘Del键删除。用户自定义的流水线绘制完成后,选中流水线中的所有插件,右键选择Set Stream Name设置Stream名称,如果有多条流水线则需要对每一条流水线设置Stream名称。绘制完成单击Save保存。

图4-2 Detection and Classification配置pipeline样例

图4-3 pipeline绘制界面

  • ESRGAN介绍

超分辨率生成对抗网络(SRGAN)是一项能够在单幅超分辨率图像中生成逼真纹理的开创性工作。 然而,产生幻觉的细节往往伴随着令人不快的伪影。 为了进一步提高视觉质量,我们深入研究了SRGAN的三个关键组成部分——网络结构、对抗损失和感知损失,并对它们进行改进,得到了一个增强的SRGAN (ESRGAN)。 特别地,ESRGAN引入了没有批处理规格化的残差-残差密集块(RRDB)作为基本网络构建单元。 此外,ESRGAN借鉴了GAN的思想,让鉴别器预测相对真实而不是绝对值。最后,ESRGAN利用激活前的特征来改善知觉损失,为亮度一致性和纹理恢复提供更强的监督。得益于这些改进,ESRGAN实现了比SRGAN更好的视觉质量和更真实和自然的纹理,并赢得了PIRM2018-SR挑战赛的第一名。如图所示,ESRGAN网络结构,如图4-1所示:

图4-1 ESRGAN网络结构

代码地址:

models: Models of MindSpore - Gitee.com

SDK相关工程目录结构,如图4-2所示:

图4-2 SDK相关工程目录结构

  • 代码文件、推理数据集及模型下载
  1. 代码文件下载

代码地址:

models: Models of MindSpore - Gitee.com

下载代码存放到本地,在本项目中只使用MindX SDK功能,所以只用到infer/sdk中的代码。

  1. 推理数据集下载

数据集使用的是Set5,在infer/sdk/目录下先创建两个文件夹“./Set5/HR/”, “./Set5/LR/”,将以“…HR.png”命名的图片保存到“./Set5/HR/”文件夹中, 以“…LR.png”命名的图片保存到“./Set5/LR/”文件夹中。

  1. 模型文件(*.ckpt)下载

https://download.mindspore.cn/model_zoo/r1.3/esrgan_ascend_v130_div2k_research_cv_bs16_set5psnr32.5_set14psnr26.34/esrgan_ascend_v130_div2k_research_cv_bs16_set5psnr32.5_set14psnr26.34.ckpt

先在910上导出air模型文件,保存到infer/sdk目录下。

  • 创建工程

步骤1在顶部菜单栏中选择File > open,选择如图所示,sdk这一级的目录,

步骤2 在顶部菜单栏中选择Ascend > Convert To Ascend Projec,进入如图6-1所示页面,各参数选择如图所示,点击OK,将该项目转换为Ascend MindX SDK App。

图6-1 转换为Ascend MindX SDK App

  • 模型转换功能介绍及操作步骤讲解

用户使用Caffe/TensorFlow等框架训练好的第三方模型,可通过ATC工具将其转换为昇腾AI处理器支持的离线模型(*.om文件),模型转换过程中可以实现算子调度的优化、权重数据重排、内存使用优化等,可以脱离设备完成模型的预处理,详细架构如图7-1所示。

图7-1 ATC工具功能架构

在本项目中,要将mindspore框架下训练好的模型(*.air文件),转换为昇腾AI处理器支持的离线模型(*.om文件),具体步骤如下:

步骤1 点击Ascend > Model Converter,进入模型转换界面,参数配置如图7-2所示,若没有CANN Machine,请参见第八章第一节CANN安装。

图7-2 模型转换界面1

各参数解释如下表所示:

CANN Machine

CANN的远程服务器

Model File

*.air文件的路径(可以在本地,也可以在服务器上)

Model Name

生成的om模型名字

Output Path

生成的om模型保存在本地的路径

图7-3 模型转换界面2

图7-4 模型转换界面3

步骤2 点击Next进入图7-3界面,该项目数据不需要预处理,直接点击Next,进入图7-4界面,再点击Finish开始模型转换。

步骤3 等待出现如图7-5所示的提示,模型转换成功

图7-5 模型转换成功

步骤4 双击转换成功的om模型文件,可以查看网络结构。如图7-6所示

图7-6 查看模型网络结构

  • 运行工程操作步骤讲解

步骤1 修改“sdk/config/esrgan.pipeline”中的参数,具体操作如图8-1所示;

图8-1 修改pipeline中*.om文件路径

步骤2  在MindStudio工程界面,依次选择“Run > Edit Configurations...”,进入运行配置页面。选择“Ascend App > 工程名”配置应用工程运行参数,图8-2为配置示例。配置完成后,单击“Apply”保存运行配置,单击“OK”,关闭运行配置窗口。

图8-2 工程推理工程运行参数配置

Deployment

远程服务器

Executable

运行文件

Command Arguments

运行参数

在本工程中,推理时运行文件选择main.py,运行参数为

--img_path [LR_path] --pipeline_path [pipeline_path] --infer_result_dir [result_path]

参数解释如下表:

参数

解释

我的设置

img_path

推理图片路径

./Set5/LR/

pipeline_path

Pipeline文件路径

./config/esrgan.pipeline

infer_result_dir

推理结果保存路径

./infer_result/

步骤3 点击运行,出现如图8-3所示提示,即为运行成功,infer_result文件夹中即为推理结果,保存为二进制形式。

图8-3 推理操作过程

步骤4 配置后处理运行程序,在MindStudio工程界面,依次选择“Run > Edit Configurations...”,进入运行配置页面,如图8-4所示,点击“+”,后选择Python(后处理可以直接在本地运行),如图8-5所示。

图8-4 运行配置界面

图8-5 选择本地Python解释器

图8-6 运行后处理相关配置

Script path

运行文件路径

Parameters

运行时的参数

如图8-6所示,运行文件为postprocess.py,运行参数为:

--HR_path [HR_image_path] --predict_result [infer_result] --result_path [save_image_path]

相关参数解释及设置

参数

解释

我的设置

HR_path

数据集中高分辨率图片

./Set5/HR/

predict_result

步骤3中的推理结果

./infer_result/

result_path

最终结果保存的目录

./sdk_result_img/

步骤5 点击运行,出现如图8-7所示提示,即为运行成功,sdk_result_img文件夹中即为最终结果,PSNR为推理生成的图片与原图片对比的指标。

图8-7 运行后处理程序

步骤6 结果分析,如图8-8所示,为ESRGAN生成的高分辨率图像与原图像对比,可以看到,在一些细节上生成的图像在细节和纹理上已经很清晰。

图8-8 ESRGAN生成的高分辨率图像与原图像对比

  • 遇见的问题

在使用MindStudio时,遇到问题,可以登陆MindStudio昇腾论坛进行互动,提出问题,会有专家老师为你解答。

  1. 模型转换时,没有CANN Machine

图9-1 CANN管理界面

解决方案:按以下步骤,重新安装CANN Machine

步骤1 点击File>Settings>Appearance & Behavior > System Settings > CANN,进入CANN管理界面,如图9-1所示:

步骤2 点击Change CANN,进入Remote CANN Setting界面,如图9-2所示重新安装CANN,点击Finish,安装CANN。

9-2 Remote CANN Setting界面

图9-3 安装CANN完成

参数解释如下表:

Remote Connection

远程服务器IP

Remote CANN location

远程服务器中CANN路径

步骤3 完成CANN安装,点击OK,重启MindStudio,如图9-3所示。

  1. MindStudio导入应用工程后,提示“No Python interpreter configured for the module”

解决方案:

步骤1 在顶部菜单栏中选择File > Project Structure,在Project Structure窗口中,点击Platform Settings > SDKs,点击上方的“+”添加Python SDK,从本地环境中导入Python,如图9-4所示。

图9-4 导入Python SDK

步骤2 点击Project Settings > Project,选择上一步添加的Python SDK,如图9-5所示。

图9-5 设置Project SDK

步骤3 点击Project Settings > Modules,选中“MyApp”,点击“+”后选择Python,为Python Interpreter选择上述添加的Python SDK。点击OK完成应用工程Python SDK配置,如图9-6所示。

图9-6 选择Python SDK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值