使用MindStudio进行SAST_ResNet50_vd 模型在昇腾环境离线推理

本文主要介绍通过 MindStudio 全流程开发工具链,将 PaddlePaddle 模型转成 om 模型,并在昇腾环境上进行推理的流程。

一、模型介绍

本文开发的模型为基于 PaddlePaddle 的模型库 PaddleOCR 中的SAST_ResNet50_vd模型。静态分析安全测试(SAST)是指不运行被测程序本身,仅通过分析或者检查源程序的语法、结构、过程、接口等来检查程序的正确性。相比于动态分析或运行时测试方案,它们能在开发阶段,而不是开发完成之后,探测出源码中的安全漏洞,从而大大降低修复安全问题的成本。它们还能找到许多动态分析工具通常无法找到的漏洞。而且,得益于其自动化的特性,SAST 工具能在成百上千款应用间实现伸缩,而这是仅靠人为分析方法无法企及的。
开发流程示意图如图1.1:
在这里插入图片描述
图1.1

二、MindStudio环境搭建

通过 MindStudio 官网介绍可以学习了解 MindStudio 的功能,以及按照MindStudio 用户手册进行安装和使用。
官网链接:https://www.hiascend.com/zh/software/mindstudio
用户手册: https://www.hiascend.com/document/detail/zh/mindstudio/50RC2/progressiveknowledge/index.html

通过官网连接步骤安装好Mindstudio后,点击桌面快捷方式启动 MindStudio,选择不导入配置,点击“OK”,如图2.1。
在这里插入图片描述
图2.1

在 Projects 标签下点击“New Project”创建一个新的工程。选择 Ascend App,输入工程名、和工程目录,点击“Change”选择或者添加CANN 版本,如图2.2。
在这里插入图片描述
图2.2

点击 Remote CANN Setting 对话框中的加号,弹出 SSH Configurations 对话框,然后点击其中的加号,填写红框中的服务器信息,点击“Test Connection” 弹出连接成功对话框,如图2.3。
在这里插入图片描述
图2.3
依次点击“OK”完成 Remote Connection 配置。

点击文件夹图标,在弹出的对话框中选择 CANN 安装路径,点击“OK”,如图2.4。
在这里插入图片描述
图2.4

点击Finish后,开始同步远程 CANN 版本资源,如图2.5。
在这里插入图片描述
图2.5

同步完成后点击“Next”,如图2.6。
在这里插入图片描述
图2.6

选择 ACL Project,点击“Finish”,如图2.7。
在这里插入图片描述
图2.7

此时成功创建了一个空的工程,如图2.8。
在这里插入图片描述
图2.8

点击“Tools”->“Start SSH session”,选择远程环境,启动远程终端窗口。如图2.9。
在这里插入图片描述
图2.9

点击“Tools”->“Deployment”->“Configuration”,按图2.10所示,配置远端映射路径。依次点击“OK”完成配置。
在这里插入图片描述
图2.10

快捷键Ctrl+Alt+Shift+S 打开Project Structure 页面,如图2.11所示,点击“SDKs”,点击加号,点击“Add Python SDC…”。
在这里插入图片描述
图2.11

点击“SSH Interpreter”,自动识别远程 Python 环境信息,点击“OK”,如图2.12所示。
在这里插入图片描述
图2.12

点击“Project”,选择创建的 SDK,点击“OK”,如图2.13所示。
在这里插入图片描述
图2.13

点击“Modules”->“Dependence”,选择创建的 SDK,点击“OK”,如图2.14所示。
在这里插入图片描述
图2.14

点击“Tools”-> “Deployment”->“Automatic Upload”。 选择远程服务器,可自动上传修改并保存的文件。 如图2.15所示。在这里插入图片描述
图2.15

至此 MindStudio 开发环境搭建完成。

三、模型获取

3.1 获取源码及数据集

a.在本地终端中通过 git 命令获取源码,参考命令如下:

git clone -b release/2.5 https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
git reset --hard a40f64a70b8d290b74557a41d869c0f9ce4959d5 
cd .. 

b.获取原始数据集
CDAR 2015 数据集包含1000张训练图像和500张测试图像。参考PaddleOCR数据集数据处理方式,ICDAR 2015 数据集可以点击链接进行下载,首次下载需注册。注册完成登陆后,下载图3.1中红色框标出的部分。
在这里插入图片描述
图3.1

在PaddleOCR文件夹下创建如下路径:
train_data/icdar2015/text_localization 并将下载好的数据集 ch4_test_images.zip 解压后放在以上路径下,并获取标签文件test_icdar2015_label.txt 如图3.2所示。
在这里插入图片描述
图3.2

c.改模型配置文件
配置不使用 gpu 和以及确认Eval中数据集路径,如图3.3,图3.4。
在这里插入图片描述
图3.3

在这里插入图片描述
图3.4

然后将PaddleOCR同步到远程服务器,如图3.5所示在这里插入图片描述
图3.5

3.2安装依赖

通过 pip 命令在环境中安装依赖。先执行cd PaddleOCR 命令将目录转到requirement.txt所在文件夹,然后执行命令如下([–user]为可选参数,普通用户需要添加使用):

pip3 install -r requirements.txt --user 

如图3.6所示:
在这里插入图片描述
图3.6
通过以上步骤,成功获取SAST_ResNet50_vd模型的源代码框架,以及配置成完全运行依赖环境。

四、数据预处理

4.1添加数据预处理脚本

在工程中添加数据预处理脚本,该脚本主要对图片进行归一化操作并转成二进制文件保存如图4.1所示。
在这里插入图片描述
图4.1

4.2 设置可执行命令。

如图4.2所示,点击下拉按钮,选择“Edit Configurations…”,
在这里插入图片描述
图4.2

如图4.3所示,点击加号,选择“Ascend App”。
在这里插入图片描述
图4.3

如图4.4所示,输入命令名称,选择可执行脚本,点击“OK”。
在这里插入图片描述
图4.4

如图4.5所示,添加如下命令参数,点击“OK”。

 --config=PaddleOCR/configs/det/det_r50_vd_east.yml 
 --opt=bin_data=./icdar2015_bin

–config:模型配置文件;–opt:bin文件保存路径。
在这里插入图片描述
图4.5

点击执行按钮,进行数据预处理,如图4.6。
在这里插入图片描述
图4.6

通过以上步骤,完成了数据预处理的工作,生成的预处理数据保存在
icdar2015_bin 目录下。

五、模型转换

5.1 转 onnx 模型

获取推理权重文件,权重链接为:https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_r50_vd_sast_icdar15_v2.0_train.tar
下载之后上传到远程服务器上,并通过PaddleOCR提供的tools/export_model.py
文件转为推理模型,输入命令参数如下:

 -c ../configs/det/det_r50_vd_sast_icdar15.yml
 -o Global.pretrained_model=../det_r50_vd_sast_icdar15_v2.0_train/best_accuracy     
 Global.save_inference_dir=../inference/det_r50_sast

推理模型存到inference目录下,并上传到远程服务器,如图5.1所示。
在这里插入图片描述
图5.1

在远程终端执行转 onnx 命令,并将生成的 onnx 模型拉取到本地,如图5.2 所示,参考命令如下:

paddle2onnx  
 --model_dir PaddleOCR/inference/det_r50_sast 
 --model_filename inference.pdmodel 
 --params_filename inference.pdiparams  
--save_file PaddleOCR/SAST_ResNet50_vd.onnx 
 --opset_version 11 
--enable_onnx_checker True  
--input_shape_dict="{'x':[1,3,896,1536]}"

在这里插入图片描述
图5.2

通过以上步骤,成功生成并获取 onnx 模型:SAST_ResNet50_vd.onnx

5.2 转 om 模型

下面使用 MindStudio 的模型转换功能将 onnx 模型转成 om 模型。如5.3图所示,点击“Model Converter”按钮。
在这里插入图片描述
图5.3

在弹出的 Model Converter 窗口中选择 Model File,点击“OK”,如图5.4。
在这里插入图片描述
图5.4

自动解析模型中,如图5.5。
在这里插入图片描述
图5.5

解析完成后,设置模型名称、soc 版本、om 模型生成目录、通讯模型的 Input Format、Shape、Type 信息,点击“Next”,如图5.6。
在这里插入图片描述
图5.6

当前页签上参数的检查,图5.7。
在这里插入图片描述
图5.7

检查完成后点击“Next”,图5.8。
在这里插入图片描述
图5.8

检视生成的 atc 命令,确认无误后点击“Finish”,图5.9
在这里插入图片描述
图5.9

模型转换成功后,如图5.10所示。
在这里插入图片描述
图5.10

通过以上步骤,使用 MindStudio 的模型转换功能成功将 onnx 模型转成 om模型:SAST_ResNet50_vd_bs1.om。

六、模型推理

6.1 获取推理工具

我们使用 ais-infer 工具进行推理,ais-infer 工具获取及使用方式请查看ais_infer 推理工具使用文档,链接:https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_infer
a.在本地终端命令中通过 git 获取推理工具代码,命令如下:

git clone https://gitee.com/ascend/tools.git

b.将tools\ais-bench_workload\tool\ais_infer 目录下的文件复制到当前 SAST_ResNet50_vd 目录下, 并上传到远程服务器,如图6.1所示。
在这里插入图片描述

图6.1

c.编译并安装 aclruntime 包,如图6.2所示,命令如下,

cd ais_infer/backend/ 
pip3 wheel ./ 
pip3 install aclruntime-0.0.1-cp37-cp37m-linux_x86_64.whl

(如果安装提示已经安装了相同版本的whl,请执行命令请添加参数"–force-reinstall")
在这里插入图片描述

图6.2

通过以上步骤,成功获取 ais_infer 工具,并安装了 aclruntime。

6.2 进行模型推理

a.创建 results 目录用来保存推理结果,并上传到远程服务器,如图6.3。
在这里插入图片描述
图6.3

b.添加 ais_infer 的可执行命令:

 --model=../inference/SAST_ResNet50_vd_bs1.om
--input=../icdar2015_bin 
--output=../results/

–model:om模型路径;–input:bin文件路径;–output:推理结果保存路径。
点击“OK”,如图6.4所示。
在这里插入图片描述
图6.4

c.执行 ais_infer 命令,完成后在远程服务器上生成推理结果,如图6.5。
在这里插入图片描述
图6.5

d.须将远程生成的结果 load 到本地,否则在执行其他命令进行同步的时候
会删除,如图6.6。
在这里插入图片描述
图6.6

通过以上步骤成功获取了推理结果并保存在了results 目录下。

七、模型精度验证

7.1 数据后处理

a.添加数据后处理脚本,对results文件夹中的预测结果进行精度测试,如图7.1。
在这里插入图片描述
图7.1

b.添加后处理命令:

--config=configs/det/det_r50_vd_sast_icdar15.yml 
--opt=results=results/2022_10_29-09_41_14

–config:模型配置文件。–opt:推理结果路径。
点击“OK”,如图7.2
在这里插入图片描述
图7.2

c.执行后处理命令,如7.3。
在这里插入图片描述
图7.3

d. 后处理执行完成后,打印的推理结果如图7.4.
在这里插入图片描述
图7.4

7.2精度验证比对

通过对比om 推理的后处理推理结果与pth权重精度(开源仓精度)下降不超过1%,说明模型推理精度满足要求。
pth权重精度:
在这里插入图片描述
后处理推理结果:
在这里插入图片描述

八、性能测试

由于精度验证使用的是源码提供的样例图片,需要使用 ais_infer 工具的纯推理功能进行性能测试。
a.创建性能测试命令:

--model=../SAST_ResNet50_vd_bs1.om
--loop=50 
--batchsize=1

–model:om模型路径;–loop:推理次数;–batchsize:om模型的batch。
如图8.1所示。
在这里插入图片描述
图8.1

b.执行性能测试命令,如图8.2所示。
在这里插入图片描述
图8.2

c. 性能测试结果如图8.3所示,为 19.969fps。
在这里插入图片描述
图8.3

九、总结

本文主要介绍使用 MindStudio 全流程开发工具链,将 PaddlePaddle 模型转成 om 模型,并在昇腾环境上进行推理的端到端流程。在使用 MindStudio 过程中也遇到过很多问题和不懂的地方,除了参考官方指导文档外,帮助更多的还是开发者社区,如下图所示,推荐大家多看些经验分享,写的很详细也很有帮助。
MindStudio 社区链接为: https://bbs.huaweicloud.com/forum/forum-945-1.html?filterCondition=1
在这里插入图片描述

十、FAQ

进行模型转换时,在选择Model File时,出现以下错误:
在这里插入图片描述

本onnx模型较大,在进行模型转换时需要扩大内存, Help > Change Memory Settings >修改内存大小 改为2048。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值