使用Mindstudio进行RCAN模型ONNX推理

本次实验在MindStudio上进行,请先按照教程 配置环境,安装MindStudio。

MindStudio是一款基于Intellij Platform的集成开发环境(IDE),支持Python、C/C++语言进行代码开发、编译、调试、运行等基础功能。作为昇腾AI全栈中的全流程开发工具链,提供覆盖训练模型、推理应用和自定义算子开发三个场景下端到端工具,极大提高开发效率。该IDE上功能很多,涵盖面广,可以进行包括网络模型训练、移植、应用开发、推理运行及自定义算子开发等多种任务。MindStudio除了具有工程管理、编译、调试、运行等一般普通功能外,还能进行模型转换、性能分析,算子比对,可以有效提高工作人员的开发效率。除此之外,MIndStudio具有远端环境,运行任务在远端实现,对于近端的个人设备的要求不高,用户交互体验很好,可以让我们随时随地进行使用。

一、概述

RCAN设计了一个残差中的残差(RIR)结构来构造深层网络,每个 RIR 结构由数个残差组(RG)以及长跳跃连接(LSC)组成,每个 RG 则包含一些残差块和短跳跃连接(SSC)。RIR结构允许丰富的低频信息通过多个跳跃连接直接进行传播,使主网络专注于学习高频信息。此外,我们还提出了一种通道注意力机制(CA),通过考虑通道之间的相互依赖性来自适应地重新调整特征。解决了过深的网络却难以训练。低分辨率的输入以及特征包含丰富的低频信息,但却在通道间被平等对待,因此阻碍了网络的表示能力的问题。

二、服务器端推理环境准备

2.1 获取Pytorch onnx推理项目源代码仓

gitee源代码仓:https://gitee.com/ascend/ModelZoo-PyTorch.git 

使用命令:git clone https://gitee.com/ascend/ModelZoo-PyTorch.git  获取源代码仓

使用Mindstudio进行RCAN模型ONNX推理_第1张图片

2.2 获取RCAN模型的github开源仓

github源代码仓:https://github.com/yulunzhang/RCAN.git 

使用命令:git clone https://github.com/yulunzhang/RCAN.git  获取RCAN模型源代码仓

使用Mindstudio进行RCAN模型ONNX推理_第2张图片

2.3 当前目录结构

使用Mindstudio进行RCAN模型ONNX推理_第3张图片

2.4 配置conda环境、安装依赖包

依赖名称

版本

ONNX

1.7.0

Pytorch

1.8.0

TorchVision

0.9.0

numpy

1.21.5

Pillow

7.2.0

2.5 获取模型pth权重文件,将pth文件放入文件夹RCAN中

RCAN 预训练权重文件:https://pan.baidu.com/s/1bkoJKmdOcvLhOFXHVkFlKA 

文件名:RCAN_BIX2.pt

Md5sum:f567f8560fde71ba0973a7fe472a42f2

使用Mindstudio进行RCAN模型ONNX推理_第4张图片

2.6 获取数据集,本模型使用Set5数据集中的五张图片作为测试集

数据集获取:https://github.com/yulunzhang/RCAN/tree/master/RCAN_TestCode/OriginalTestData/Set5

选择5张验证集进行测试,图片数据放在./dataset/Set5

使用Mindstudio进行RCAN模型ONNX推理_第5张图片

使用Mindstudio进行RCAN模型ONNX推理_第6张图片

三、客户端Mindstudio

3.1 安装和配置环境

按照Mindstudio用户手册中的安装指南—>安装操作来安装Mindstudio。

推理环境在远端服务器上已经配置完成。

3.2 创建工程

点击File->New->Project 新建工程

使用Mindstudio进行RCAN模型ONNX推理_第7张图片

选择Ascend App 项目,填写项目名,选择CANN version、项目位置

其中CANN版本应选择远端服务器,点击change

使用Mindstudio进行RCAN模型ONNX推理_第8张图片

使用Mindstudio进行RCAN模型ONNX推理_第9张图片

点击+,添加远程服务器

使用Mindstudio进行RCAN模型ONNX推理_第10张图片

填写远端服务器信息,测试连接,连接成功后,选择CANN目录。

使用Mindstudio进行RCAN模型ONNX推理_第11张图片

点击完成。

使用Mindstudio进行RCAN模型ONNX推理_第12张图片

等待本地同步远端服务器CANN文件。

同步成功后,选择ACL Project(python)项目,点击完成,完成新建项目。

使用Mindstudio进行RCAN模型ONNX推理_第13张图片

3.3 配置Mindstudio project structure

点击File -> Project structure

使用Mindstudio进行RCAN模型ONNX推理_第14张图片

选择project -> project sdk -> add python SDK

使用Mindstudio进行RCAN模型ONNX推理_第15张图片

选择ssh interpreter

使用Mindstudio进行RCAN模型ONNX推理_第16张图片

添加远程服务器

使用Mindstudio进行RCAN模型ONNX推理_第17张图片

选择本项目的python解释器

使用Mindstudio进行RCAN模型ONNX推理_第18张图片

使用Mindstudio进行RCAN模型ONNX推理_第19张图片

配置本地文件夹与远程服务器映射

使用Mindstudio进行RCAN模型ONNX推理_第20张图片

从远端服务器拉取源代码到本地

使用Mindstudio进行RCAN模型ONNX推理_第21张图片

拉取代码成功

使用Mindstudio进行RCAN模型ONNX推理_第22张图片

3.4 项目实施

3.4.1 数据预处理

数据预处理将原始数据集转换为模型输入的数据,使用rcan_preprocess.py脚本将图片转换成bin文件,命令如下:

python3 rcan_preprocess.py -s ./dataset/Set5/LR -d ./pred_data --size 256

-s: 测试集路径

-d: 测试集处理后保存路径

--size: 预处理后的图片大小

使用Mindstudio进行RCAN模型ONNX推理_第23张图片

使用Mindstudio进行RCAN模型ONNX推理_第24张图片

利用bin文件生成图像的info文件,由于benchmark推理需要输入图片数据集的info文件,用于获取数据集。使用gen_dataset_info.py脚本,输入已经获得的图片文件,输出生成图片数据集的info文件。

python3 gen_dataset_info.py bin ./pre_data ./rcan_prep_info 256 256

使用Mindstudio进行RCAN模型ONNX推理_第25张图片

第一个参数为生成的数据集文件格式,第二个参数为预处理后的数据文件的相对路径,第三个参数为生成的数据集文件保存的路径。运行成功后,在当前目录中生成rcan_prep_bin.info。

使用Mindstudio进行RCAN模型ONNX推理_第26张图片

运行rcan_pth2onnx文件将pth文件导出为onnx文件

python3 rcan_pth2onnx.py --pth RCAN_BIX2.pt --onnx rcan.onnx

--pth: model 权重文件

-- onnx: 生成的onnx文件

使用Mindstudio进行RCAN模型ONNX推理_第27张图片

使用Mindstudio进行RCAN模型ONNX推理_第28张图片

为了适配昇腾显卡,我们需要把onnx格式的模型文件转换为om格式的模型文件。我们将使用mindstudio中的ATC工具将onnx转换成om模型

Model File: 选择要进行ATC的onnx模型文件

Model Name: 填写转化om后的文件名

Target SoC Version: 选择SoC版本为310

Output Path: 选择输出路径

Input Format: 本模型为默认NCHW

Image: 将-1,3,256,256 改为1,3,256,256

使用Mindstudio进行RCAN模型ONNX推理_第29张图片

使用Mindstudio进行RCAN模型ONNX推理_第30张图片

使用Mindstudio进行RCAN模型ONNX推理_第31张图片

如上图所示,模型转换成功,并成功生成rcan.om文件。

开启SSH 会话,为推理做准备

使用Mindstudio进行RCAN模型ONNX推理_第32张图片

使用Mindstudio进行RCAN模型ONNX推理_第33张图片

转换om模型成功后,使用mindstudio remote终端执行benchmark推理

启动ssh session,切换conda环境、工作目录

使用Mindstudio进行RCAN模型ONNX推理_第34张图片

使用benchmark工具进行推理,配置benchmark工具需要的环境

执行benchmark命令

使用Mindstudio进行RCAN模型ONNX推理_第35张图片

推理成功,需要对推理结果进行后处理,通过rcan_postprocess.py进行后处理

使用Mindstudio进行RCAN模型ONNX推理_第36张图片

使用Mindstudio进行RCAN模型ONNX推理_第37张图片

后处理成功后,使用evaluate.py进行精度评估

使用Mindstudio进行RCAN模型ONNX推理_第38张图片

使用Mindstudio进行RCAN模型ONNX推理_第39张图片

精度评估结果

使用Mindstudio进行RCAN模型ONNX推理_第40张图片

310执行完毕,经该模型迁移至710,将上述流程在Ascend710上在执行一遍

精度和性能均达标。

四、Q&A

Q1:连接远端服务器后,点击remote terminal为空

A1:应该在Tools -> Start SSH Session建立会话,然后点击remote terminal才会显示

--

Q2:连接服务器后,Tools -> Deployment -> Download 从服务器端下载代码到本地有时不可点击

A2:右键点击项目进行下载

使用Mindstudio进行RCAN模型ONNX推理_第41张图片

Q3:迁移时若遇到性能比预期小

A3:应该进行Aoe性能调优,目前mindstudio暂时没有集成此项功能,我们可以在命令行中使用如下命令对onnx进行aoe 调优

aoe --frame_work 5 --model XX.onnx --output ./XX --job_type 1/2 --input_shape “image:1,3,256,256”

你可能感兴趣的:(深度学习,ai)