使用MindStudio进行CSNLA模型onnx推理

此次离线推理过程基于MindStudio进行,请先前往MindStudio官网下载,并按照教程配置环境。

MindStudio 的是一套功能全面的 IDE 工具,基于华为自研昇腾 AI 处理器实 现模型训练、模型推理、应用开发等功能。该软件同时支持远程环境,可连接华 为云服务器使用,降低了对本地设备的要求。

一、概述

通过将新的CS-NL先验与强大的复发融合细胞中的局部和内尺度非局部先验相结合,我们可以在单个低分辨率(LR)图像中发现更多的跨尺度特征相关性。通过对所有可能的先验信息进行穷尽集成,可以显著提高SISR算法的性能。大量的实验证明了CS-NL模块的有效性,在多个SISR基准上设置了最新的技术水平。

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

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

昇腾社区下载源码包,并上传服务器,解压文件https://www.hiascend.com/zh/software/modelzoo/detail/1/32e2a3a03d2885639a

d4100e9d48421a

2.2获取CSNLA模型的github开源仓

git clone https://github.com/SHI-Labs/Cross-Scale-Non-Local-Attention.git -b master

当前目录结构

 

├── benchmark.aarch64 //离线推理工具(适用 ARM 架构)

├── benchmark.x86_64 //离线推理工具(适用 x86 架构)

├── CSNLN_postprocess.py //数据后处理脚本(包含输出精度)

├── CSNLN_preprocess.py //数据预处理脚本

├── csnln_x4.onnx //权重文件转化的 onnx 文件

├── csnln_x4_fix.onnx //fix 后的 onnx 文件

├── csnln_x4_sim.onnx //优化后的 onnx 文件

├── CSNLN_pth2onnx.py //pth 转 onnx 脚本

├── perf_softmax_transpose.py //用于优化 softmax 的性能

├── csnln_x4_perf.onnx //优化 softmax 后的 onnx 文件

├── csnln_x4_bs1.om //onnx 转化的 om 文件

├── fix_onnx_prelu.py //修改

├── model_x4.pt //权重文件

├── env.sh //环境变量

├── get_info.py //用于获取二进制数据集信息的脚本

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

依赖名称

版本

ONNX

1.9.0

Pytorch

1.8.0

TorchVision

0.9.0

onnx-simplifier

0.3.6

numpy

1.21.1

Pillow

7.2.0

pyyaml

5.3.1

opencv-python

4.2.0.34

scikit-image

0.18.1

2.4下载pth模型文件,放入文件夹Croos-Scale-Non-Local-Attention中。

2.5准备数据集,本模型使用Set5_x4数据集作为测试集。

 

HR中存放验证图片,LR_bicubic/X4中存放测试集。

 

 

 

三、客户端Mindstudio

3.1 安装和配置环境

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

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

3.2 创建工程

选择Ascend App 项目

 

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

 

添加远程服务器

 

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

 

点击完成。

 

等待本地同步远端服务器CANN文件。同步成功后,选择ACL Project(python)项目,点击完成,完成新建项目。

 

配置项目结构

 

选择add python SDK

 

选择ssh interpreter

 

添加远程服务器

 

选择python解释器

 

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

 

3.3运行项目

从远端服务器拉取代码

 

拉取代码成功

 

数据预处理

数据预处理将原始数据集转换为模型输入的数据,使用CSNLN_preprocess.py

 

 

“CSNLN_preprocess.py”:预处理脚本文件。

“./Set5/LR_bicubic/X4/”:数据集路径。

“prep_dataset”:数据预处理之后存放的路径。

数据预处理成功

 

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

 

“get_info.py”:脚本文件。

“./prep_dataset”:预处理后的数据文件的相对路径。

“./prep_bin.info”:生成的数据集文件保存的路径。

 

运行CSNLN_pth2onnx.py文件将pth文件导出为onnx文件

 

“CSNLN_pth2onnx.py”为执行脚本。

--pre_train:权重文件。

--save:生成的 onnx 文件。

获得“csnln_x4.onnx”文件。

 

onnx 转om

模型转换成功,此处注意 om 文件在服务器的保存路径,方便下一步操作。

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

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

 

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

 

将生成的om文件上传到服务器,执行benchmark命令

注意:需保持本地 MindStudio 项目文件与服务器端项目文件相同,否则会出现

本地与服务器同步情况,造成文件的丢失。

 

 

-model_type:模型类型

-om_path:om 文件路径

-device_id:NPU 设备编号

-batch_size:参数规模

-input_text_path:图片二进制信息

-input_width:输入图片宽度

-input_height:输入图片高度

-useDvpp:是否使用 Dvpp

-output_binary:输出二进制形式

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

 

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

 

精度评估结果

 

--hr:生成推理结果所在路径。

--res:标签数据。

--save_path:生成结果文件。

“datasets_path”:Set5 的路径。

“result/dumpOutput_device0”:推理结果目录。

“res_png”:保存推理完成之后的图片路径。

3.4 性能调优

性能使用 AOE 工具调优。配置环境变量

 

执行 AOE 调优

 

--model:为 ONNX 模型文件。

--framework:5 代表 ONNX 模型。

--output:输出的 OM 模型。

--input_format:输入数据的格式。

--input_shape:输入数据的 shape。

--job_type:调优模式(1:子图调优;2:算子调优)

得到 AOE 处理后模型,进行纯推理,测试性能

 

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

精度和性能均达标。

四、Q & A

1. Q:模型精度不达标

A:在使用ATC将onnx转换om时,操作命令加上--buffer_optimize=off_optimize

–precision_model=allow_fp32_to_fp16

2. Q:模型性能不达标

A:使用 AOE 工具进行性能调优

3. Q:MindStudio 连接服务器运行模型后,文件丢失

A: 需保持本地 MindStudio 项目文件与服务器端项目文件相同,否则会出现本

地与服务器同步情况,造成文件的丢失

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值