Paddle OCR 模型在 OpenVINO 的部署应用

openlab_4276841a 更新于 2年前

一.介绍与特性


1. PaddleOCR 与 OpenVINO 介绍


PaddleOCR 是百度开源的超轻量级 OCR模型库,提供了数十种文本检测、识别模型,旨在打造一套丰富、领先、实用的文字检测、识别模型/工具库,助力使用者训练出更好的模型,并应用落地。

OpenVINO 是用于优化和部署 AI 推理的开源工具包,提升计算机视觉、自动语音识别、自然语言处理和其他常见任务中的深度学习性能。

OpenVINO 对 paddlepaddle 的原生支持计划于 OpenVINO 2022.1版本发布。我们要做的是将 PaddlePaddle 的模型传递给 OpenVINO 直接进行推理,而无需先用 ModelOptimizer 转换成 IR 格式。

然而,针对OpenVINO™ 2021.4 LTS以及之前的版本,如果想要直接读取PaddleOCR模型,还需要经过本文第三部分中介绍的若干步骤。

2. Paddle OCR 特性


• 超轻量级中文 OCR ,总模型仅 8.6M

– 单模型支持中英文数字组合识别、竖排文本识别、长文本识别

–检测模型 DB(4.1M)+识别模型 CRNN(4.5M)

• 多种文本检测训练算法,EAST、DB

•多种文本识别训练算法,Rosetta、CRNN、STAR-Net、RARE

二.环境准备


1.机器配置


•CPU:intel® Core™ i5-8259U CPU @ 2.30GHz × 8

•OS:Ubuntu 20.04.4 LTS

•python:3.8

2.下载项目


OpenVINO 对 paddlepaddle 的原生支持计划于OpenVINO 2022.1 版本发布。跟之前对其它框架的支持不同的是,开发者可以直接将 PaddlePaddle 的模型传递给 OpenVINO 直接进行推理,而无需先用 ModelOptimizer 转换成 IR。目前由于 OpenVINOTM 2022.1 版本还没有正式发布,如果您手边安装的是 OpenVINO™ 2021.4 以及之前的版本,那么还需要 clone 以下仓库的代码,并按照后面第三部分中介绍的内容进行环境编译,就能够直接读取 paddleOCR 的模型了。

git clone https://github.com/raymondlo84/openvino-paddlepaddle-demo.git



三.编译与运行


下面是源码编译安装 OpenVINO 的操作步骤

1.从 GitHub 克隆 OpenVINO 及其子项目


git clone  https://github.com/openvinotoolkit/openvino.git
cd openvino
git submodule update --init --recursive



2.如果 GitHub 的网络遇到问题,可以切到 gitee 源


chmod +x scripts/submodule_update_with_gitee.sh
./scripts/submodule_update_with_gitee.sh



3.安装 OpenVINO 源码编译依赖


chmod +x install_build_dependencies.sh
./install_build_dependencies.sh
pip3 install -r src/bindings/python/src/compatibility/openvino/requirements-dev.txt



4.编译安装,这儿可能需要花费些时间


mkdir build
cd build

cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PYTHON=ON –DNGRAPH_PYTHON_BUILD_ENABLE=ON -DPYTHON_EXECUTABLE=`which python3.8` -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.8 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DNGRAPH_ONNX_IMPORT_ENABLE=ON -DNGRAPH_DEBUG_ENABLE=ON ..

make --jobs=$(nproc --all)


编译完成



5.使用虚拟环境并安装依赖


激活 OpenVINO_env 虚拟环境

sudo apt install python3.8-venv
cd openvino-paddlepaddle-demo
python3 -m venv openvino_env
source openvino_env/bin/activate


安装依赖

python -m pip install --upgrade pip
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple


安装 kernel 到 Jupyter

python -m ipykernel install --user --name openvino_env



6.设置 PaddleDetection


我们将通过 PaddlePaddle 模型库 Paddle Detection 导出 PPYolo 的静态图模型。首先 clone 仓库到项目根目录

git clone https://github.com/PaddlePaddle/PaddleDetection.git



接下来安装 PaddleDetection 的依赖

cd PaddleDetection && git checkout release/2.1 && cd -
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install --upgrade -r PaddleDetection/requirements.txt -i https://mirror.baidu.com/pypi/simple



7.启动 Jupyter Notebooks


激活 python 虚拟环境,配置 OpenVINO 环境变量,启动 jupyter lab。注意,每一次新的会话,如终端关闭或重启都需要该步骤。

source openvino_env/bin/activate
source openvino/openvino_dist/bin/setupvars.sh
jupyter lab notebooks



8.加载项目


由于这个项目没有推理模型,只有推理脚本。所以这里我们需要下载 PP-OCR 预训练模型



9.下载模型


这是我在 Github 找到的 PP-OCR 系列模型列表

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.4/doc/doc_ch/models_list.md

我们在页面找到 ch_PP-OCRv2_rec_slim Slim 量化版超轻量模型,支持中英文、数字识别,点击下载



下载完成后解压

tar·xf·ch_PP-OCRv2_rec_slim_quant_infer.tar

进入目录,查看模型信息

把模型导入推理代码中,这里我们修改成刚下载的模型文件的路径



10.运行推理


运行推理脚本,看到 print 打印出的信息和原图片信息是一致的,该模型的识别率精确度是很不错的。

四.总结


随着我们 OpenVINO 2022.1 版本的推出,以上步骤2-4中这些较为复杂的涉及到源码编译的步骤将可以被省略掉。 只需将第二步中的git命令更换为

git clone --depth=1 https://github.com/OpenVINOtoolkit/OpenVINO_notebooks.git

执行第5以及7-10步,就可以得到推理的结果了。具体的安装步骤可以参考这个 GitHub 地址

https://github.com/OpenVINOtoolkit/OpenVINO_notebooks


0个评论