使用MindStudio完成en_PP-OCRv3_rec模型开发
收藏回复举报
使用MindStudio完成en_PP-OCRv3_rec模型开发
发表于2022-11-21 17:20:09
0 查看

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

一、MindStudio环境搭建

通过MindStudio官网介绍可以学习了解MindStudio的功能,以及按照MindStudio用户手册进行安装和使用。

官网链接:

https://www.hiascend.com/zh/software/mindstudio

用户手册:

https://www.hiascend.com/document/detail/zh/mindstudio/50RC2/progressiveknowledge/index.html

1.1 MindStudio软件下载

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

cke_11418.png

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

cke_11419.png

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

cke_11420.png

1.2 MindStudio软件安装

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

cke_11421.png

欢迎界面,点击“Next”

cke_11422.png

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

cke_11423.png

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

cke_11424.png

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

cke_11425.png

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

1.3 MindStudio环境搭建

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

cke_11426.png

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

cke_11427.png

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

cke_11428.png

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

cke_11429.png

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

cke_11430.png

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

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

cke_11431.png

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

cke_11432.png

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

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

cke_11433.png

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

cke_11434.png

点击“Finish”。

cke_11435.png

开始同步远程CANN版本资源。

cke_11436.png

同步完成后点击“Next”。

cke_11437.png

选择ACL Project,点击“Finish”。

cke_11438.png

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

cke_11439.png

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

cke_11440.png

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

cke_11441.png

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

cke_11442.png

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

cke_11443.png

按照上图,配置项目SDK。

cke_11444.png

点击“SDKs”,点击加号,点击“Add Python SDC...”,

cke_11445.png

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

cke_11446.png

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

cke_11447.png

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

cke_11448.png

点击“Tools”-> “Deployment”->“Automatic Upload”。

cke_11449.png

选择远程服务器,可自动上传修改并保存的文件。

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

二、模型获取

2.1 模型介绍

本文开发的模型为基于PaddlePaddle的模型库PaddleOCR中的en_PP-OCRv3_rec模型,该模型是基于PP-OCRv3结构的英文识别模型,PP-OCRv3的识别模块是基于文本识别算法SVTR优化。SVTR不再采用RNN结构,通过引入Transformers结构更加有效地挖掘文本行图像的上下文信息,从而提升文本识别能力。PP-OCRv3的结构介绍参考如下链接:

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/doc/doc_ch/PP-OCRv3_introduction.md

2.2 获取源码

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

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

cd PaddleOCR

git reset --hard a40f64a70b8d290b74557a41d869c0f9ce4959d5

cd ..

b.修改模型配置文件

配置不使用gpu和英文字母字典路径,如下图。

cke_35659.png

修改完成后将PaddleOCR同步到远程服务器,如下图。

cke_35660.png

2.3 安装依赖

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

cke_35661.png

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

cke_35662.png

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

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

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

三、数据预处理

3.1添加数据预处理脚本

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

cke_44669.png

3.2 设置可执行命令。

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

cke_44670.png

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

cke_44671.png

c.如下图所示,输入命令名称,选择可执行脚本,点击“OK”。

cke_44672.png

d.如下图所示,添加命令参数,点击“OK”。命令参数内容及说明如下:

-c PaddleOCR/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_cml.yml -o Global.infer_img=./imgs_en/

-c表示模型配置文件,-o表示图片所在路径。

cke_44673.png

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

cke_44674.png

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

四、模型转换

4.1 转onnx模型

a.获取推理权重文件,权重链接为:

https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_infer.tar

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

cke_44675.png

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

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

paddle2onnx \

--model_dir ./inference/en_PP-OCRv3_rec_infer \

--model_filename inference.pdmodel \

--params_filename inference.pdiparams \

--save_file ./en_PP-OCRv3_rec.onnx \

--opset_version 11 \

--enable_onnx_checker True \

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

cke_44676.png

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

4.2 转om模型

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

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

cke_44677.png

b.在弹出的Model Converter窗口中选择Model File,点击“OK”。

cke_44678.png

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

cke_44679.png

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

cke_44680.png

e.命令检查。

cke_44681.png

f.检查完成后点击“Next”。

cke_44682.png

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

cke_44683.png

h.模型转换成功后,如下图所示。

cke_44684.png

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

五、模型推理

5.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.将en_PP-OCRv3_rec\tools\ais-bench_workload\tool\ais_infer目录下的ais_infer.py文件和frontend文件夹复制到当前en_PP-OCRv3_rec目录下, 并将修改的文件依次上传到远程服务器,如下图所示。

cke_44685.png

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

cke_44686.png

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

5.2 进行模型推理

a.创建results目录用来保存推理结果,并上传到远程服务器。

cke_44687.png

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

cke_44688.png

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

cke_44689.png

d.须将远程生成的结果load到本地,否则在执行其他命令进行同步的时候会删除。

cke_44690.png

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

六、模型精度验证

6.1数据后处理

a.添加数据后处理脚本。

cke_85125.png

b.添加后处理命令。点击“OK”。后处理命令行参数内容如下:

-c PaddleOCR/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_cml.yml -o Global.infer_img="./imgs_en/" Global.infer_results=${output_path}

参数说明:

-c:表示模型配置文件路径

-o:表示可选参数,其中

Global.infer_img为样本图片路径

Global.infer_results为推理结果路径

cke_85126.png

c.执行后处理命令。

cke_85127.png

d. 后处理执行完成后,打印的推理结果如下图,具体为:Infer Results: {'word_1.png': ('JOINT', 0.998046875), 'word_2.png': ('yourself', 0.990966796875), 'word_3.png': ('154', 0.998046875), 'word_4.png': ('197', 0.998046875), 'word_5.png': ('727', 0.998046875)}

cke_85128.png

6.2 进行在线推理

a.需要下载训练权重文件,链接为:

https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_train.tar

下载后解压到本地checkpoint目录下,并上传到远程服务器。

cke_85129.png

b.修改en_dict.txt文件路径。

cke_85130.png

c.创建在推理命令,点击“OK”。

cke_85131.png

d.执行在线推理命令。

cke_85132.png

e.执行完成后在线推理结果如下图所示。

cke_85133.png

6.3 精度验证比对

对比样例图片在6.1后处理得到推理和与6.2在线推理结果进对比,对比结果如下表所示。可以看出om离线推理结果与在线推理结果一致,说明模型推理精度满足要求。

样例图片

om离线推理结果

在线推理结果

word_1.png

JOINT

JOINT

word_2.png

yourself

yourself

word_3.png

754

754

word_4.png

197

197

word_5.png

727

727

七、性能测试

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

a. 创建性能测试命令,如下图所示。

cke_85134.png

b.执行性能测试命令,如下图所示。

cke_85135.png

c. 性能测试结果如下图所示,为1688.96fps。

cke_85136.png

八、总结

本文主要介绍使用MindStudio全流程开发工具链,将PaddlePaddle模型转成om模型,并在昇腾环境上进行推理的端到端流程。在使用MindStudio过程中也遇到过很多问题和不懂的地方,除了参考官方指导文档外,帮助更多的还是开发者社区,如下图所示,推荐大家多看些经验分享,写的很详细也很有帮助。

MindStudio社区链接为:

https://bbs.huaweicloud.com/forum/forum-945-1.html?filterCondition=1

cke_85137.png

九、FAQ

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

cke_85138.png

我要发帖子