使用MindStudio进行ml_pp_ocrv3_det模型在昇腾环境离线推理
收藏回复举报
使用MindStudio进行ml_pp_ocrv3_det模型在昇腾环境离线推理
新人帖
发表于2023-01-20 10:46:08
0 查看

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

目录

目录

一、MindStudio 环境搭建

1.1 MindStudio 软件下载

1.2 MindStudio 软件安装

1.3 MindStudio 环境搭建

二、模型获取

2.1 模型介绍

2.2 获取源码

cd PaddleOCR

2.3 安装依赖

三、数据预处理

3.1 添加数据预处理脚本

3.2 设置可执行命令。

四:模型转换

4.1、将训练模型转为推理模型

4.2、转onnx模型

4.3 转 om 模型

4.3.3.自动解析模型中,如下图。

4.3.5检查完成后点击“Next”。

4.3.7、模型转换成功后,如下图所示。

五、模型推理

5.1 获取推理工具

5.2 进行模型推理

六、模型精度验证

6.1 数据后处理

6.1.1、添加数据后处理脚本。

七、性能测试

八、FAQ

 

一、MindStudio 环境搭建

通过 MindStudio 官网介绍可以学习了解 MindStudio 的功能,以及按照

MindStudio 用户手册进行安装和使用。官网链接:

cid:link_2 

用 户 手 册 : https://www.hiascend.com/document/detail/zh/mindstudio/50RC2/prog ressiveknowledge/index.html 

1.1 MindStudio 软件下载 

在官网首页中点击“立即下载”,如下图。 

 cke_30264.png

然后我们进入版本选择界面,可以根据自己的操作系统、安装方式选择不同的软件包,我们这里选择的是 MindStudio_5.0.RC2_win.exe,进行下载安装。

cke_177070.png

点击对应的“软件包下载”,弹出软件下载需知对话框,勾选“我已阅读并已同意 MindStudio 软件许可协议 的条款和条件”,然后点击“立即下载”进入下载流程。

cke_209063.png

1.2 MindStudio 软件安装 

双击打开下载好的 MindStudio_5.0.RC2_win.exe 软件包,进入安装流程:

欢迎界面,点击“Next” cke_241180.png

选择安装路径,我们使用的是默认安装路径,然后点击“Next
cke_365838.png

安装配置,我们只勾选了创建桌面快捷方式,和以工程方式打开文件夹添加到右键菜单中。然后点击“Next”。

cke_420236.png

 启动菜单文件夹我们使用默认配置,点击“Install”,程序进入自动安装步骤。

cke_452046.png 

安装完成后点击“Finsh”完成安装。

cke_518180.png

1.3 MindStudio 环境搭建 

1.3.1 通过桌面快捷方式启动 MindStudio。

选择不导入配置,点击“OK”

cke_574600.png

1.3.2 Projects 标签用于工程打开、创建等。

cke_606402.png

1.3.3 Customize 标签用于 IDE 配置,包括界面、字体大小等。

cke_638242.png

 

1.3.4 Plugins 标签用于管理插件的安装、删除等。

cke_670033.png

   1.3.5 Learn MindStudio 标签可以通过点击“Help”进入官方社区获取帮助。

cke_701964.png

1.3.6 在 Projects 标签下点击“New Project”创建一个新的工程。

选择 Ascend App,输入工程名、和工程目录,点击“Change”选择或者添加CANN 版本。

cke_733751.png

 

 1.3.7 点击 Remote CANN Setting 对话框中的加号,弹出 SSH Configurations 对话框,然后点击其中的加号,填写红框中的服务器信息,点击“Test Connection” 弹出连接成功对话框。

依次点击“OK”完成 Remote Connection 配置。

cke_765563.png

 

1.3.8  点击文件夹图标,在弹出的对话框中选择 CANN 安装路径,点击“OK”。

点击“Finish”。

cke_797390.png

1.3.9 同步完成后点击“Next

cke_819484.png

1.3.10 选择 ACL Project,点击“Finish,开始同步远程 CANN 版本资源。

cke_856223.png

1.3.11 此时成功创建了一个空的工程。

点击“Tools”->“Start SSH session”。

cke_888110.png

  1.3.12 选择远程环境,启动远程终端窗口。

cke_912686.png

1.3.13 点击“Tools”->“Deployment”->“Configuration”。

cke_944621.png

1.3.14 图所示,配置远端映射路径。依次点击“OK”完成配置。

cke_969238.png

1.3.15 按照图,配置项目 SDK。

cke_986505.png

1.3.16 点击“SDKs”,点击加号,点击“Add Python SDK...

cke_1020969.png

1.3.17 点击“SSH Interpreter”,自动识别远程 Python 环境信息,点击“OK”。

cke_1048086.png

  1.3.18 点击“Project”,选择创建的 SDK,点击“OK”。

cke_1077693.png

1.3.19 点击“Modules”->“Dependence”,选择创建的 SDK,点击“OK”。

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

 

二、模型获取

2.1 模型介绍 

本文开发的模型为基于 PaddlePaddle 的模型库 PaddleOCR 中的 ml_pp_ocrv3_det模型,该模型是基于PP-OCRv3结构

 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/doc/doc_ ch/PP-OCRv3_introduction.md)的中文识别模型,PP-OCRv3 的识别模块是基于文本识别算法 SVTR 优化。SVTR 不再采用 RNN 结构,通过引入 Transformers 结构更加有效地挖掘文本行图像的上下文信息,从而提升文本识别能力。

2.2 获取源码 

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

git clone -b release/2.6 https://github.com/PaddlePaddle/PaddleOCR.git

cd PaddleOCR 

git reset --hard 7f6c9a7b99ea66077950238186137ec54f2b8cfd

cd ..

cke_1144470.png

a修改模型配置文件

配置不使用 gpu 和中文汉字字典路径,

cke_1176650.png

2.3 安装依赖 

2.3.1添加依赖文件“requirements.txt”

cke_1208853.png

2.3.2在远程终端窗口通过 pip 命令安装依赖

执行命令如下,[--user]为可选参数,普通用户需要添加使用:

pip3 install -r requirements.txt [--user]

通过以上步骤,成功获取 ml_pp_ocrv3_det 模型的源代码框架,以及配置成完全运行依赖环境

cke_1241098.png

三、数据预处理

3.1 添加数据预处理脚本 

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

cke_1273377.png

3.2 设置可执行命令。 

3.2.1如下图所示,点击下拉按钮,选择“Edit Configurations...”,

cke_1305706.png

3.2.2如下图所示,点击加号,选择“Ascend App”。

cke_1338055.png

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

-c:模型配置文件。

-o:可选参数列表: Global.infer_img 表示图片路径。

                 

          cke_1370450.png

3.2.4点击执行按钮,进行数据预处理。

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

image_bin 目下

四:模型转换

4.1、将训练模型转为推理模型

4.1.1获取推理权重文件,权重链接为: https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/Multilingual_PP-OCRv3_det_distill_train.tar

下载之后,解压到本地 inference 目录下,并上传到远程服务器,如下图所示。

cke_1435432.png

4.1.2、运行tools目录下的export_model脚本,配置参数如下图所示:

-c: 模型配置文件

-o: 训练模型

Global.save_inference_dir:推理模型存储位置

cke_1460479.png

cke_1493045.png

4.2、转onnx模型

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

export PATH=/usr/local/python3.7.5/bin:$PATH paddle2onnx \

    --model_dir ./inference/ml_ppocrv3_det_infer \

    --model_filename inference.pdmodel \

    --params_filename inference.pdiparams \

    --save_file .ml_ppocrv3_det.onnx \

    --opset_version 11 \

    --enable_onnx_checker True \

--input_shape_dict="{'x':[-1,3,-1,-1]}"

--model_dir:配置包含Paddle模型的路径

--model_filename:配置存储网络结构的文件名称

--params_filename:配置存储模型参数的文件名称

--save_file:指定转换后的模型保存目录路径

--opset_version:配置转换为ONNX的OpSet版本

--input_shape_dict:模型输入的shape

--enable_onnx_checker :配置是否检查导出为 ONNX模型的正确性

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

4.2.2、修改 onnx 模型的 domin 用于删除上述生成的 onnx 模型的多个输入,只

留下一个正确的输入,运行 domin.py 脚本配置:

cke_1525648.png

4.3 转 om 模型 

下面使用 MindStudio 的模型转换功能将 onnx 模型转成 om 模型。

4.3.1.如下图所示,点击“Model Converter”按钮。

cke_1558258.png

4.3.2.在弹出的 Model Converter 模型文件浏览窗口选择需要onnx模型,点击“OK”。 模型转换参数如下:

--model:为ONNX模型文件。

--framework:5代表ONNX模型。

--output:输出的OM模型。

--input\_format:输入数据的格式。

--input\_shape:输入数据的shape。

--log:日志级别。

--soc\_version:处理器型号。

--dynamic_image_size:设置输入图片的动态分辨率参数。

cke_1590929.png

4.3.3.自动解析模型中,如下图。 

cke_1616093.png

     4.3.4.解析完成后,设置模型名称、soc 版本、om 模型生成目录、通讯模型的Input Format、Shape、Type信息,点击“Next”设置多组态分辨率。

    4.3.5检查完成后点击“Next”。

       4.3.6检视生成的 atc 命令,确认无误后点击“Finish”

         cke_1706854.png

4.3.7、模型转换成功后,如下图所示。 

cke_1729652.png 

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

模型:ml_ppocrv3_det_bs1.om。

五、模型推理

5.1 获取推理工具 

我们使用 ais-infer 工具进行推理,ais-infer 工具获取及使用方式请查看ais_infer 推理工具使用文档

5.1.1、在本地终端命令中通过 git 获取推理工具代码,命令如下:

git clone cid:link_3 

5.1.2、MyApp/PaddleOCR/tools/ais_infer 目录下的 ais_infer.py 文件和 frontend 文件夹复制到当前PaddleOCR目录下, 并将修改的文件依次上传到远程服务器,如下图所示。

cke_1767665.png

5.1.3、编译并安装 aclruntime 包,如下图所示,命令如下,

cd tools/ais-bench_workload/tool/ais_infer/backend/

pip3 wheel ./

pip3 install aclruntime-0.0.1-cp37-cp37m-linux_x86_64.whl

cke_1800634.png

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

5.2 进行模型推理 

5.2.1添加 ml_ppocrv3_det_ais_infer.py 的可执行命令,点击“OK”,如下图所示。

--model:om模型路径。

--input:npy文件路径。

cke_1826044.png

5.2.2执行ml_ppocrv3_det_ais_infer.py命令,完成后在远程服务器上生成推理结果。

cke_1848958.png

通过以上步骤成功获取了推理结果。

六、模型精度验证

6.1 数据后处理 

6.1.1、添加数据后处理脚本。 

cke_1879503.png

6.6.2、后处理执行完成后,打印的推理结果如下图,具体为:Infer Results:  

Word_1.jpg:[(‘韩国小馆,0.998046875)]

Word_2.jpg:[(‘汉阳鹦鹉家居建材市场E区25-26 0.9932725429534912)]

Word_3.jpg:[(‘电话:159*******,0.998046875)]

Word_4.jpg:[(‘实力活力,0.998046875)]

Word_5.jpg:[(‘西湾监管,0.99609375)]

七、性能测试

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

7.2、执行性能测试命令,如下图所示。

cke_1971499.png

7.3、性能测试结果如下图所示,为 298.084fps。

cke_2004825.png

八、FAQ

在使用 MindStudio 过程中,发现执行完远程命令后,会出现如下图所示的错误,该错误指同步远程文件到本地时出现了错误,经过定位发现项目中包含带有中文的文件名,因此需要将带有中文的文件名称改为英文文件名即可解决该问题。

cke_2038165.png

我要发帖子