基于PaddleOCR训练的新模型Android端部署全流程记录

目的

PaddleOCR的github中有对端侧部署有详细教程,但是我觉得里面讲解的还是不够详细,在我部署我自己新训练的模型的时候,还是遇到了一些问题,

1、paddlelite应该选择什么版本对新模型编译?

2、如何替换android_demo中有关paddlelite的so文件?

3、如何修改android_demo的包名?

基于以上问题,我会在本片文章中详细讲解下Android端如何部署PaddleOCR训练的新模型。

准备工作

为了不占用过多篇幅,这里不讲解Android studio如何下载和SDK配置,请自行查找资料。

1、准备一个Linux系统并安装Python 3.7或3.8

2、Android Studio 配置 NDK ,请根据 Android Studio 用户指南中的安装及配置 NDK 和 CMake 内容,预先配置好 NDK 。您可以选择最新的 NDK 版本,或者使用 Paddle Lite 预测库版本一样的 NDK。

3、下载官方提供的android_demo并导入Android studio中,然后运行会自动下载OpenCV和PaddleLite包,如下图所示:

PaddleOCR/deploy/android_demo at release/2.5 · PaddlePaddle/PaddleOCR (github.com)

基于PaddleOCR训练的新模型Android端部署全流程记录_第1张图片

部署新模型

1、确定PaddleLite版本

在android_demo下载界面确认推荐的PaddleLite版本,这里推荐的是v2.10版本

基于PaddleOCR训练的新模型Android端部署全流程记录_第2张图片

2、使用PaddleLite转换新模型为nb模型

在Linux上下载上面推荐的PaddleLite版本的代码

git clone -b release/v2.10 https://github.com/PaddlePaddle/Paddle-Lite.git

 然后切换Paddle-Lite目录编译PaddleLite

./lite/tools/build.sh build_optimize_tool

将新模型如下放置:

基于PaddleOCR训练的新模型Android端部署全流程记录_第3张图片

在Paddle-Lite目录下使用这个切换命令:

cd build.opt/lite/api/

开始转换新模型为nb模型

./opt --model_file=../../../ocr/ch_db_mv3_sfz/inference.pdmodel  --param_file=../../../ocr/ch_db_mv3_sfz/inference.pdiparams  --optimize_out=../../../ocr/ch_db_mv3_sfz/opt --valid_targets=arm  --optimize_out_type=naive_buffer

基于PaddleOCR训练的新模型Android端部署全流程记录_第4张图片

在上图中就可以看到新的nb模型了。

3、替换android studio中的老模型

将图中的nb模型替换成我们新训练的nb模型,到这一步,我们的新模型部署就完成了。

基于PaddleOCR训练的新模型Android端部署全流程记录_第5张图片

开篇问题解答

1、上述步骤中已经解答了第一个问题

2、替换android项目中的PaddleLite代码,官方已经给我们编译好了,不需要我们再进行编译直接下载即可:https://github.com/PaddlePaddle/Paddle-Lite/releases/tag/v2.10

下载armv7和armv8两个版本的

基于PaddleOCR训练的新模型Android端部署全流程记录_第6张图片

除了红框中的文件,其他都替换成我们从图中下载的,PaddlePredictor.jar和include中的代码只用替换一次,armv7或者armv8中的一个即可

基于PaddleOCR训练的新模型Android端部署全流程记录_第7张图片

3、修改包名中,native.cpp中也需要同步修改,否则项目将启动不起来。

将官方的_com_baidu_paddle_lite_demo_ocr_替换成我们自己的包名,如_com_yangy_ocr_,如下截图:

基于PaddleOCR训练的新模型Android端部署全流程记录_第8张图片

基于PaddleOCR训练的新模型Android端部署全流程记录_第9张图片

总结

相当来讲,PaddleOCR新模型Android端部署还是比较简单的,官方提供的教程都有,只是需要大量时间来学习和总结,还有一篇文章是关于如何将官方提供的代码转换成aar包,欢迎大家阅读,共同进步,感谢支持。

你可能感兴趣的:(PaddleOCR,Android,android,paddle)