使用MindStudio完成ch_ppocr_server_v2_rec模型开发

 目录

一、模型介绍

二、MindStudio 环境搭建

2.1、MindStudio 软件下载

2.2、MindStudio 软件安装

2.3、MindStudio 环境搭建

三、模型获取

3.1、模型介绍

3.2、获取源码

3.3、安装依赖

四、数据预处理

4.1、添加数据预处理脚本

4.2、设置可执行命令

五、模型转换

5.1、转 onnx 模型

5.2、转 om 模型

六、模型推理

6.1、获取推理工具

6.2、进行模型推理

七、模型精度验证

7.1、数据后处理

7.2、进行在线推理

7.3、精度验证比对

八、性能测试

九、总结

十、FAQ

一、模型介绍

ch_ppocr_server_v2.0_rec是一种通用的中文的识别模型,它的识别模块是基于文本识别算法SVTR优化。SVTR不再采用RNN结构,而是采用的是CRNN,通过引入Tranformers结构更加有效地挖掘文本行图像的上下文信息,从而提升文本识别能力。虽然CRNN的识别方法是2016年提出来的,但是对于中文识别,是使用最普遍也最有效的文本识别方法。CRNN主要是融合了卷积特征和序列特征,用以解决预测标签和真值签不一致的问题。为了进一步提高文本识别的效果和效率,该模型采用了余弦学习率、增大特征图分辨率、正则化参数、预热学习率等策略。开发流程示意图如下图所示:

image.png

二、MindStudio 环境搭建

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

MindStudio 用户手册进行安装和使用。官网链接: 昇腾社区-官网丨昇腾万里 让智能无所不及

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

2.1MindStudio 软件下载

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

image.png

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

image.png

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

image.png

2.2MindStudio 软件安装

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

欢迎界面,选择“next”

image.png

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

image.png

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

image.png

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

image.png

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

image.png

2.3MindStudio 环境搭建

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

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

image.png

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

image.png

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

image.png

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

image.png

Learn MindStudio 标签可以通过点击“Help”进入官方社区获取帮助。在 Projects 标签下点击“New Project”创建一个新的工程。

image.png

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

image.png

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

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

image.png

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

点击“Finish”。

image.png

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

image.png

同步完成,点击“next”


image.png

选择 ACL Project,点击“Finish”

image.png

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

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


image.png

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

image.png

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

image.png

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


image.png

按照下图,配置项目 SDK。

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

选择远程服务器,可自动上传修改并保存的文件。至此 MindStudio 开发环境搭建完成。

image.png

三、模型获取

3.1模型介绍

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

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

3.2获取源码

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

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

cd PaddleOCR

git reset --hard 7f6c9a7b99ea66077950238186137ec54f2b8cfd

cd ..

image.png

修改模型配置文件,配置不使用 gpu 和中文汉字字典路径,如下图。

image.png

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

image.png

3.3安装依赖

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

image.png

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

执行命令如下,[--user]为可选参数,普通用户需要添加使用: pip3 install -r requirements.txt [--user] 通过以上步骤,成功获取 ch_ppocr_server_v2.0_rec 模型的源代码框架,以及配置成完全运行依赖环境。

image.png

四、数据预处理

4.1添加数据预处理脚本

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

image.png

4.2设置可执行命令。

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

image.png

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

image.png

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

image.png

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

-c:模型配置文件。

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

image.png

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

image.png

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

五:模型转换

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

5.1.1获取推理权重文件,权重链接为:https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_train.tar 下载之后,解压到本地 PaddleOCR 目录下,并上传到远程服务器,如下图所示。

image.png

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

-c: 模型配置文件

-o: 训练模型

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

image.png

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

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

paddle2onnx \

--model_dir ch_server_v2.0_rec_infer \

--model_filename inference.pdmodel \

--params_filename inference.pdiparams \

--save_file ch_ppocr_server_v2.0_rec.onnx \

--opset_version 12 \

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

--enable_onnx_checker True

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

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

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

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

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

--input_shape_dict:模型输入的shape

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

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

image.png

5.3 转 om 模型

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

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

image.png

5.3.2在弹出的 Model Converter 窗口中选择 Model File,点击“OK”。模型转换参数如下:

--model:为ONNX模型文件。

--framework:5代表ONNX模型。

--output:输出的OM模型。

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

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

--log:日志级别。

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

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

image.png

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

image.png

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

模型的shape设置为{1,3,-1,-1},第一维的1是banchsize,第三维和第四维为-1,-1是因为要设置动态shape,以适应不同shape的预处理文件。Dynamic Image Size:32,320;32,413是根据预处理图片所设置的动态shape。

image.png

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

image.png

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

image.png

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

image.png

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

六、模型推理

6.1获取推理工具

我们使用 ais-infer 工具进行推理,ais-infer 工具获取及使用方式请查看ais_infer 推理工具使用文档,链接:tools: Ascend tools - Gitee.com

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

git clone tools: Ascend tools

6.1.2 ch_ppocr_server_v2.0_rec\tools\ais_bench_workload\tool\ais_infer 目录下的 ais_infer.py 文件和 frontend 文件夹复制到当前ch_ppocr_server_v2.0_rec 目录下, 并将进行改动的文件夹同步到远程服务器,如下图所示。

image.png

6.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

image.png

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

6.2进行模型推理

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

--model:om模型路径。

--input:npy文件路径。

image.png

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

image.png

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

image.png

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

七、模型精度验证

7.1数据后处理

7.1.1添加数据后处理脚本,对 results 文件夹中的预测结果进行精度测试。

image.png

7.1.2添加后处理命令。点击“OK”。

-c:模型配置文件。

-o:可选参数:Global.infer_results表示om推理结果路径。

image.png

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

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

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

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

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

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

image.png

八、性能测试

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

image.png

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

image.png

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

image.png

九、总结

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

MindStudio 社区链接为: 华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云

image.png

十、FAQ

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

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 根据引用\[1\],我们可以使用舵图在Kubernetes上部署Kafka应用程序,并激活静态成员身份。在内部,我们将group.instance.id映射到我们Kubernetes荚的元数据名称。这意味着,如果荚重新启动,名称不会更改。引用\[3\]也提到了类似的信息,说明我们使用helm charts来部署Kafka应用程序,并将group.instance.id映射到Kubernetes pod的元数据名称。这样做的好处是,即使pod重新启动,名称也不会改变。因此,通过使用舵图和Kubernetes,我们可以实现Kafka应用程序的稳定部署和静态成员身份激活。 #### 引用[.reference_title] - *1* *3* [卡夫卡 it_解决我怪异的卡夫卡再平衡问题](https://blog.csdn.net/weixin_26716079/article/details/108971622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [NLP:《NLP Year in Review 2019&NLP_2019_Highlights》2019年自然语言处理领域重要进展回顾及其解读](https://blog.csdn.net/qq_41185868/article/details/104469868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值