欢迎光临散文网 会员登陆 & 注册

中英文超轻量文本识别模型PP-OCRv3在嵌入式设备上的部署

2022-05-15 02:53 作者:梦醒南天  | 我要投稿

1. PaddleOCR简介

PaddleOCR 是百度飞桨(PaddlePaddle)框架下的一个文本识别模块,旨在打造一套丰富、领先、且实用的 OCR (Optical Character Recognition,光学字符识别)工具库,助力开发者训练出更好的模型,并应用落地。PaddleOCR 于2022年5月初发布 PP-OCRv3,与上一个版本 PP-OCRv2 相比,中文场景效果再提升5%,英文场景提升11%,80语种多语言模型平均识别准确率提升5%以上。

PaddleOCR Github 地址:https://github.com/PaddlePaddle/PaddleOCR

2. 下载中英文超轻量文本识别模型 ch_PP-OCRv3_xx

ch_PP-OCRv3_xx 下载地址如下:

检测模型:https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar

识别模型:https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar

有一点需要说明的是,这里我们下载都是推理模型,因为我们主要是用于推理预测的。

在 Linux 系统中,可以使用如下命令进行下载:

3. 下载 PaddleLite 源码并编译生成 paddle_lite_opt 工具

paddle_lite_opt 工具主要用于模型优化和转换,在这里我们首先需要把它编译出来。

在Linux系统中,我们可以通过下面的命令来下载 PaddleLite 源码:

源码下载完成后,进入 Paddle-Lite 目录,执行如下指令进行编译:

编译完成后,我们在 build.opt/lite/api/ 目录下发现新生成的 opt 工具:


4. 将模型由 inference 格式转换为 paddle-lite 格式

在前面的步骤中,我们完成了模型的下载,但是下载到的模型是 inference 格式的,适用于在服务器端进行推理。而我们要在嵌入式设备中使用的话,就需要将其转换为 paddle-lite 格式。正好我们刚刚编译生成 paddle_lite_opt 工具,可以进行模型的转换。

首先,让我们将下载到的文本检测和文本识别模型进行解压:

接着,我们使用刚刚编译生成的 paddle_lite_opt 工具进行转换,转换指令如下:

转换完成后,我们可以在我们指定的输出目录中看到以 “.nb” 为后缀名的 Paddle-Lite 格式的文本检测和文本识别模型。

5. 编译生成 PaddleLite 预测库

PaddleLite源码我们在前面的步骤中已经下载过来,这里我们只需使用嵌入式设备所需的工具链来对其进行编译即可。由于不同的嵌入式设备需要的工具链不一样,所以关于如何安装工具链的问题,这里就不作介绍了。我用于测试的设备,所需的工具链是 arm-linux-gnueabihf-gcc ,在此之前我已经装好了。

我们直接使用下面的指令进行编译:

编译完成后,我们在 build.lite.linux.armv7hf.gcc/inference_lite_lib.armlinux.armv7hf/ 目录下可以发现已经生成我们所需要的 PaddleLite 预测库——libpaddle_light_api_shared.so 了。

6. 参考官方例程创建 ocr_demo 工程

我们创建的 ocr_demo 工程主要用于编译生成可以运行在嵌入式设备上的可执行程序,参考的例程位于 PaddleOCR/deploy/lite/ 目录下:

我们自己创建的 orc_demo 主要包含 opencv、PaddleLite 预测库 和 测试源码三个部分,其中,PaddleLite 预测库就是我们在前面步骤中编译生成的,其目录结构如下所示:

至于 opencv 的交叉编译,由于篇幅所限,这里我们就不作过多介绍了。接下来我们要做的是把这个例程编译出来。改动的地方主要是编译规则文件 CMakeLists.txt,其全部源码如下所示:

编译的方法非常简单,我们只需运行  build.sh 脚本即可,其文件内容如下:

运行 build.sh 脚本进行编译:

编译完成可以看到生成的可执行程序:ocr_db_crnn

7. 将 ocr_db_crnn 程序放到嵌入式设备上进行测试

需要注意的是,要一次性把程序运行所依赖的文件都复制过去,特别是 PaddleLite 预测库和我们转换好的 PaddedLite 格式的 OCR 模型。

一切准备就绪后,执行如下指令即可运行测试程序:

至此,百度中英文超轻量文本识别模型PP-OCRv3在嵌入式设备上的部署就算是完成了。下面是文本识别的对比图(可以看看识别的结果是否准确):


中英文超轻量文本识别模型PP-OCRv3在嵌入式设备上的部署的评论 (共 条)

分享到微博请遵守国家法律