基于华为MindStudio的图像中英文文本检测模型en_PP-OCRv3_det实现离线推理的图文案例

目录

一、模型介绍

二、MindStudio介绍

三、MindStudio工程创建

3.1、创建模板工程

3.2、工程配置

四、获取代码

4.1、添加工程代码

4.2、添加模型代码

4.3、添加推理工具代码

4.4、远程同步代码

五、模型转换

5.1、获取权重

5.2、安装依赖

5.3、转onnx

5.4、转om

六、离线推理

6.1、数据预处理

6.2、模型推理

6.3、推理结果展示

七、总结

一、模型介绍

本文主要介绍使用MindStudio开发工具进行英语检测模型 en_PP-OCRv3_det离线推理的开发过程,主要内容包括环境安装配置、模型获取转换以及离线推理三个总分。

en_PP-OCRv3_det是基于PP-OCRv3的英文文本检测模型,PP-OCRv3检测模型对PP-OCRv2中的CML协同互学习文本检测蒸馏策略进行了升级,分别针对教师模型和学生模型进行进一步效果优化。其中,在对教师模型优化时,提出了大感受野的PAN结构LK-PAN和引入了DML蒸馏策略;在对学生模型优化时,提出了残差注意力机制的FPN结构RSE-FPN。关于PP-OCRv3的详细介绍参考以下链接:

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

二、MindStudio介绍

MindStudio是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,集成了工程管理、编译器、仿真器以及命令行开发工具包,提供网络模型移植、应用开发、推理运行及自定义算子开发等功能。通过MindStudio能够进行工程管理、编译、调试、运行、性能分析等全流程开发,支持仿真环境及真实芯片运行,提高开发效率。MindStudio功能架构如下图所示,通过官网链接可以获取更多关于MindStudio的功能介绍:

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

进入MindStudio官网,可以获取下载方式如下图,本文下载的是MindStudio_5.0.RC3_win.exe,安装过程可以参考下图中的用户手册。

三、MindStudio工程创建

3.1、创建模板工程

如下图所示,首次打开MindStudio提示是否导入配置,默认不导入,点击OK。

如下图所示,通过Customize选项设置颜色主题,可以将颜色设置成白色。

如下图所示,通过Projects选择创建工程,点击New Project。

如下图所示,选择Ascend App工程,点击Change。

如下图,点击+号图标。

如下图,点击+号图标添加配置,输入远程服务器信息,点击OK。

如下图,点击文件夹图标,选择CANN安装路径,点击OK,然后点击Finish。

如下图所示,正在同步CANN环境。

如下图所示,同步完成后选择ACL Project(Python),点击Next。

如下图所示,输入工程名和路径,点击Finish,完成工程创建。

3.2、工程配置

如下图所示,进入工程后会有提示信息,点击Close关闭即可。

如下图所示,点击File->Project Structure。

如下图所示,点击SDKs->+号->Add Python SDK。

如下图所示,点击SSH Interpreter,选择Deploy系统会自动识别Python环境,然后点击OK。

如下图所示,点击Project->Remote Python 3.7.5,选择Python环境,点击OK。

如下图所示,点击Tools->Deployment->Configuration。

如下图所示,在Deployment选项下,选中远程服务器,点击Mappings,选择远程映射目录,点击OK。

如下图所示,点击Tools->Start SSH session。

如下图所示,点击服务器,启动远程终端Remote Terminal窗口。

通过以上步骤,工程创建配置完成。

四、获取代码

4.1、添加工程代码

如下图所示,工程所需要开发的代码包括:

en_PP-OCRv3_det_ais_infer.py:推理脚本

en_PP-OCRv3_det_postprocess.py:数据后处理脚本

en_PP-OCRv3_det_preprocess.py:数据前处理脚本

requirements.txt:依赖文件

4.2、添加模型代码

在本地终端窗口中可以通过git命令添加模型代码,相关命令为:

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

cd PaddleOCR

git reset --hard 274c216c6771a94807a34fb94377a1d7d674a69f

rm .\applications\

rm .\doc\imgs_en\img_12.jpg

rm .\doc\imgs_en\wandb_ models.png

rm .\doc\imgs_en\model_prod_flow_en.png

cd ..

如下图为模型代码结构。

如下图所示,将模型配置文件ch_PP-OCRv3_det_cml.yml中的use_gpu设置成false。

如下图所示,将目标检测推理文件 infer_det.py中的第53行代码注释掉。

4.3、添加推理工具代码

推理工具使用的是ais_infer,该工具的获取、编译、安装说明链接为:

https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_infer

下载后将ais_infer工具代码放到本地工程路径下。

4.4、远程同步代码

如下图为工程代码结构,选择工程名,点击Tools->Deployment->Upload to

如下图所示,选中服务器,开始远程同步代码。

如下图,代码远程同步完成。

五、模型转换

5.1、获取权重

模型权重链接如下:

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

下载后解压至en_PP-OCRv3_det\ inference目录下,并同步到远程目录,如下图。

5.2、安装依赖

在远程终端中使用命令远程安装Python依赖,命令如下:

pip3 install -r requirements.txt --user

然后进入到ais_infer目录下,编译并安装aclruntime,命令如下:

cd ais_infer/backend/

pip3 wheel ./

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

cd ../../

5.3、转onnx

在远程终端中使用命令转onnx模型,命令如下:

paddle2onnx \

    --model_dir ./inference/en_PP-OCRv3_det_infer \

    --model_filename inference.pdmodel \

    --params_filename inference.pdiparams \

    --save_file ../en_PP-OCRv3_det.onnx \

    --opset_version 11 \

    --enable_onnx_checker True \

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

其中--model_dir表示模型路径,--model_filename表示模型文件名称,--params_filename表示参数文件名称,--save_file表示onnx保存路径,--opset_version表示onnx算子版本,--enable_onnx_checker表示是否校验onnx模型,--input_shape_dict表示模型输入shape信息列表。

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

5.4、转om

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

如下图所示,点击Model File文件夹图标,选择转出的onnx模型,点击ok。

如下图所示,模型转换工具开始解析onnx模型。

如下图所示,模型解析完成后,填入相关模型转换信息,点击Next。

模型转换信息说明:

1.Model Name:保存om模型的名称

2.Target SoC Version:目标芯片型号,本文使用的是Ascend310P3

3.Output Path:om模型保存路径

4.Input Format:输入数据格式,本文模型使用是NCHW,表示图像数据。

5.Input Nodes:模型输入节点:本文模型包括一个x,其Shape为1,3,-1,-1,Type为FP32。由于输入为动态shape,Dynamic Image Size表示指定模型输入图像的大小。

6.Output Nodes:模型输出节点,本文没有配置,使用默认输出节点。

如下图所示,模型转换工具开始校验参数。

参数校验完成后如下图做数据预处理,因为本文模型不需要数据预处理因此关闭Data Preprocessing,点击Next继续。

如下图确认命令无误后点击Finish开始进行模型转换。

模型转换成功如下图所示,在本地生成om模型:

六、离线推理

6.1、数据预处理

创建可执行命令,如下图所示,点击Add Configuration。

如下图所示,点击+号,选择Python。

如下图所示,输入命令名称、执行文件、参数、Python解释器,点击OK。

如下图所示,点击命令执行按钮,开始执行数据预处理命令。

如下图所示,数据预处理保存在pre_data目录下。

6.2、模型推理

创建推理执行命令如下图所示。创建完成后执行该命令。命令参数如下:

--ais_infer=./ais-infer/ais_infer.py --model=./en_PP-OCRv3_det.om --inputs=/home/pre_data/ --batchsize=1

参数说明:

--ais_infer:ais_infer.py脚本

--model:om模型

--inputs:输入数据

--batchsize:om模型batchsize

如下图所示,推理完成后,推理结果保存在results_bs1目录下。

6.3、推理结果展示

如下图所示,创建数据后处理命令。并执行该命令,命令参数如下:

-c PaddleOCR/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_cml.yml -o Global.infer_img="./PaddleOCR/doc/imgs_en/" Global.infer_results=/home/results_bs1/

参数说明:

-c:模型配置文件

-o:可选参数:Global.infer_img表示图片路径,Global.infer_results表示推理结果路径

下图所示,图像检测结果保存在det_results目录下。

如下图所示,通过远程终端使用命令将det_results复制到远程映射目录,并同步到本地。

如下图所示,可以在本地看到推理结果图片。

本地打开图片,可以看出en_PP-OCRv3_det通过离线推理,基本上可以检测出文本单据或者自然场景中的文本位置。检测效果如下:

七、总结

本文通过使用MindStudio工具,完成了en_PP-OCRv3_det模型离线推理以及英文文本检测,最后给大家推荐一些比较有用的资料,大家可以先通过官网了解MindStudio的一些功能,然后按照用户手册进行安装、和基本使用方法,最后可以在开发者社区参考一些案例,或者遇到问题进行求助,可以帮助自己快速使用MindStudio进行项目开发。

1.MindStudio官网

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

2.MindStudio开发者社区

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

3.MindStudio用户手册

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值