浙江工业大学大学-使用MindStudio进行starnet_resnet34_vd模型在昇腾环境离线推理-图文案例
1、 模型介绍
目前,现有的轨迹预测算法主要还是聚焦在对行人之间交互的建模,轨迹预测通常只使用行人之间两两交互的LSTM预测。StarNet是一个行人之间的全局交互轨迹预测,基于神经网络StarNet的行人轨迹交互预测算法,通过在三维 LiDAR数据的背景下重新检查目标检测系统的设计,从而来更好地匹配数据形态和自动驾驶汽车感知的需求,大致思路为每个时刻所有障碍物的位置可以构成一张静态的“地图”,随着时间的变化,这些静态地图就变成了一张带有时序信息的动态图。这张动态图中记录了每个区域内的障碍物运动信息,其中运动信息是由所有障碍物一起影响得到的,而非单独地两两交互形成。对于每个障碍物的预测阶段,只要根据该障碍物的位置,就可以在这张时序地图中查询该区域在历史时刻的障碍物运动信息。通过“共享全局交互地图+个体查询”的方式,就可以做到计算全局交互以及压缩计算开销。StarNet检测器模型能在较低的推理成本下达到与现有技术一样的精确度,在类似的推理成本下甚至能做到更精确。
开发流程如下图所示
二、MindStudio 环境搭建
通过 MindStudio 官网介绍可以学习了解 MindStudio 的功能,以及按照 MindStudio 用户手册进行安装和使用。
官网链接:https://www.hiascend.com/zh/software/mindstudio
用户手册:
https://www.hiascend.com/document/detail/zh/mindstudio/50RC2/prog ressiveknowledge/index.html
2.1 MindStudio 软件下载
在官网首页中点击“立即下载”,如下图。
点击下载之后如图
然后我们进入版本选择界面,可以根据自己的操作系统、安装方式选择不同的软件包,我们这里选择的是 MindStudio_5.0.RC2_win.exe,进行下载安装。
2.2 MindStudio 软件安装
双击打开下载好的 MindStudio_5.0.RC2_win.exe 软件包,进入安装流程:
欢迎界面,点击“Next”
选择安装路径,我们使用的是默认安装路径,然后点击“Next”。
安装配置,我们只勾选了创建桌面快捷方式,和以工程方式打开文件夹添加到右键菜单中。然后点击“Next”。
启动菜单文件夹我们使用默认配置,点击“Install”,程序进入自动安装步骤。
安装完成后点击“Finsh”完成安装。
2.3 MindStudio 环境搭建
通过桌面快捷方式启动 MindStudio。
选择不导入配置,点击“OK”
Projects标签用于工程打开、创建等。
Customize标签用于IDE 配置,包括界面、字体大小等。
Plugins标签用于管理插件的安装、删除等。
Learn MindStudio 标签可以通过点击“Help”进入官方社区获取帮助。在 Projects 标签下点击“New Project”创建一个新的工程。
选择 Ascend App,输入工程名、和工程目录,点击“Change”选择或者添加 CANN 版本。
点击 Remote CANN Setting 对话框中的加号
点击 SSH Configurations对话框,然后点击其中的加号
填写框中的服务器信息,点击“Test Connection” 弹出连接成功对话框。依次点击“OK”完成 Remote Connection 配置。
点击文件夹图标,在弹出的对话框中选择 CANN 安装路径,点击“OK”。
点击“Finish”。
开始同步远程 CANN 版本资源。
同步完成后点击“Next”。
选择 ACL Project,点击“Finish”。
此时成功创建了一个空的工程。
点击“Tools”->“Start SSH session”。选择远程环境,启动远程终端窗口。
选择自己的服务器
点击“Tools”->“Deployment”->“Configuration”。
按图所示,配置远端映射路径。依次点击“OK”完成配置。
按照下图,配置项目SDK。
点击“SDKs”,点击加号,点击“Add Python SDC...”,
点击“SSH Interpreter”,自动识别远程 Python 环境信息,点击“OK”。
点击“Project”,选择创建的 SDK,点击“OK”。
点击“Modules”->“Dependence”,选择创建的 SDK,点击“OK”。
点击“Tools”-> “Deployment”->“Automatic Upload”。
选择远程服务器,可自动上传修改并保存的文件。 至此 MindStudio 开发环境搭建完成。
三、模型获取
3.1 模型介绍
本文开发模型为基于 PaddlePaddle 的模型库 PaddleOCR 中 star_net 模 型
(https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/)的英文识别模型,star_net 的识别模块是基于 文本识别算法 SVTR 优化。SVTR 不再采用 RNN 结构,通过引入 Transformers 结 构更加有效地挖掘文本行图像的上下文信息,从而提升文本识别能力。
3.2 获取源码
a.在本地终端中通过 git 命令获取源码,参考命令如下。
git clone -b release/2.5 https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR git reset --hard a40f64a70b8d290b74557a41d869c0f9ce4959d5
cd ..
b.修改模型配置文件 配置不使用 gpu 和英文字母字典路径,如下图。Gpu:true改为false
修改完成后将 PaddleOCR 同步到远程服务器,如下图。
3.3 安装依赖
a.添加依赖文件“requirements.txt”
b.在远程终端窗口通过 pip 命令安装依赖
执行命令如下:pip3 install -r requirements.txt [--user],普通用户安装需添加--user参数。通过以上步骤,成功获取star_net模型的源代码框架,以及配置运行依赖环境。
四、数据预处理
4.1 添加数据预处理脚本
在工程中添加数据预处理脚本,该脚本主要对图片进行归一化操作并转成二 进制文件保存如下图所示。
4.2 设置可执行命令。
a.如下图所示,点击下拉按钮,选择“Edit Configurations...”,
b.如下图所示,点击加号,选择“Ascend App”。
c.如下图所示,输入命令名称,选择可执行脚本,点击“OK”。
Deployment:部署
Executable:所执行的脚本文件
Command Argumentds:需要执行的命令参数
Environment Variables:环境变量
d.如下图所示,添加命令参数,点击“OK”。
--config=PaddleOCR/configs/rec/rec_r34_vd_tps_bilstm_ctc.yml --opt=bin_data=./pre_bin
config:模型配置文件。
opt:bin文件保存路径。
e.检查界面配置参数,没有问题则进入下一个配置界面
通过以上步骤,完成了数据预处理的工作,生成的预处理数据保存在 pre_bin 目录下。
五、模型转换
5.1 转 onnx 模型
a. 获取推理权重文件,解压到本地 inference 目录下,并上传到远程服务器,如下图所 示。
b.在远程终端执行转 onnx 命令,并将生成的 onnx 模型拉取到本地,如下图 所示,参考命令如下:
paddle2onnx --model_dir ./inference/rec_starnet/
--model_filenam inference.pdmodel
--params_filename inference.pdiparams
--save_file ./inference/det_onnx/starnet.onnx --opset_version=12
--enable_onnx_checker True
--input_shape_dict="{'x':[1,3,32,100]}"
--model_dir:配置包含Paddle模型的路径
--model_filenam:配置位于--model_dir下储存网络结构的文件名称。当且仅当所有模型参数被保存在一个单独的二进制文件中,他才需要被指定。
--params_filename:配置位于--model_dir下存储模型参数的文件名称。当且仅当所有模型参数被保存在一个单独的二进制文件中,他才需要被指定。
--save_file:指定转换后的模型保存目录路径。
--enable_onnx_checker:配置是否检查导出为ONNX模型的正确性,若指定为True,需要安装onnx >= 1.7.0
--input_shape_dict:配置输入的shape
通过以上步骤,成功生成并获取 onnx 模型:starnet.onnx。
5.2 转 om 模型
下面使用 MindStudio 的模型转换功能将 onnx 模型转成 om 模型。
a.如下图所示,点击“Model Converter”按钮。
b.在弹出的Model Converter 窗口中选择Model File,点击“OK”。
c.自动解析模型中,如下图。
d.解析完成后,设置模型名称、soc 版本、om 模型生成目录、通讯模型的 Input Format、Shape、Type 信息,点击“Next”。
Modle File:之前所生成的onnx模型文件存放路径
Model:模型名称
Target SoC Version:目标soc版本
Output Path:在本地输出的om模型路径存放
Input Format:输入的格式
Input Nodes:输入节点
Output Nodes输出节点
e.检查界面配置参数,没有问题则进入下一个配置界面。
f.检查完成后点击“Next”。
g.检视生成的 atc 命令,确认无误后点击“Finish”
h.模型转换成功后,如下图所示。
通过以上步骤,使用 MindStudio 的模型转换功能成功将 onnx 模型转成 om 模型:starnet.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.
将starnet\tools\ais-bench_workload\tool\ais_infer
目录下的ais_infer.py文件和 frontend 文件夹复制到工程根目录下, 并将修改的文件依次上传到远程服务器,如下图所示。
c.编译并安装 aclruntime 包,如下图所示,命令如下,
cd tools/ais-bench_workload/tool/ais_infer/backend/
pip3 wheel ./
pip3 install aclruntime-0.0.1-cp37-cp37m-linux_x86_64.whl
通过以上步骤,成功获取 ais_infer 工具,并安装了 aclruntime。
6.2 进行模型推理
a.创建 results 目录用来保存推理结果,并上传到远程服务器。
生成后将他进行同步
b. 添加 ais_infer 的可执行命令,点击“OK”,如下图所示。
Deployment:部署
Executable:所执行的脚本文件
Command Argumentds:需要执行的命令参数
Environment Variables:环境变量
命令如下:
tools/ais-bench_workload/tool/ais_infer/ais_infer.py --model=starnet.om --input=./pre_bin/ --output=./ais_out
model:om模型路径。
input:bin文件路径。
output:推理结果保存路径。
c.执行 ais_infer 命令,完成后在远程服务器上生成推理结果。
d.须将远程生成的结果 load 到本地,否则在执行其他命令进行同步的时候 会删除
通过以上步骤成功获取了推理结果。
七、模型精度验证
7.1 数据后处理
a.添加数据后处理脚本。
c. 添加后处理命令。点击“OK”。
命令:
--config=./configs/rec/rec_r34_vd_tps_bilstm_ctc.yml --opt=results=ais_out/2022_10_26-23_00_00
config:模型配置文件。
opt:推理结果路径。
c.执行后处理命令。
d. 后处理执行完成后,打印的推理结果如下图,具体为:Infer Results:
八、性能测试
由于精度验证使用的是源码提供的样例图片,需要使用 ais_infer 工具的纯 推理功能进行性能测试。
a. 创建性能测试命令,如下图所示。
命令:python3.7 ais_infer.py --model starnet.om --batchsize 1 --loop 10
model:om模型路径。
loop:推理次数。
batchsize:om模型的batch。
b. 执行性能测试命令,如下图所示。
c. 性能测试结果如下图所示
九、总结
本文主要介绍使用 MindStudio 全流程开发工具链,将 PaddlePaddle 模型转 成 om 模型,并在昇腾环境上进行推理的端到端流程。在使用 MindStudio 过程中 也遇到过很多问题和不懂的地方,除了参考官方指导文档外,帮助更多的还是开 发者社区,如下图所示,推荐大家多看些经验分享,写的很详细也很有帮助。 MindStudio 社区链接为:
https://bbs.huaweicloud.com/forum/forum-945-1.html?filterCondition=1。 十、FAQ
在使用 MindStudio 过程中,发现执行完远程命令后,会出现如下图所示的 错误,该错误指同步远程文件到本地时出现了错误,经过定位发现项目中包含带 有中文的文件名,因此需要将带有中文的文件名称改为英文文件名即可解决该问 题。
- 点赞
- 收藏
- 关注作者
评论(0)