\u200E
AI Studio 精品项目 | PP-OCR的ONNXRunTime部署
发布日期:2021-07-11T11:13:25.000+0000 浏览量:2380次




AI Studio精品项目征集




AI Studio精品项目专栏汇集近300名核心开发者,就学习、实战、比赛、趣味等多个方向贡献实训项目,帮助广大人工智能初学者学习与实践。


贡献精品项目可获得积分奖励兑换礼品,优质项目及作者可获得平台推荐曝光机会,还可加入创作者核心群,进行技术交流、新产品体验,获取算力卡、节日礼品红包、季度产出奖励等,赶紧加入我们吧~


投稿地址:

https://aistudio.baidu.com/paddle/forum/topic/show/989159




PP-OCR的ONNX部署





进入正题~本期精品项目给大家带来部署类高赞单篇项目 手把手教你使用ONNXRunTime部署PP-OCR。 感谢作者Channingss供稿。




模型及套件





PP-OCR

PP-OCR 是一种实用的超轻量级 OCR 模型。它主要由三部分组成:DB文本检测、检测框校正和CRNN文本识别。系统从骨干网选择与调整、预测头设计、数据增强、学习率变换策略、正则化参数选择、预训练模型使用、模型自动裁剪与量化等8个方面采用19种有效策略,优化瘦身。每个模块的模型。最终的结果是一个整体大小为3.5M的超轻量级中英文OCR模型和一个2.8M的英文数字OCR模型。


PP-OCR地址:

https://github.com/PaddlePaddle/PaddleOCR


Paddle2ONNX


Paddle2ONNX 使用户能够将模型从 PaddlePaddle 转换为 ONNX。支持的模型格式。Paddle2ONNX 支持 PaddlePaddle 的动态和静态计算图。

Paddle2ONNX地址:

https://github.com/PaddlePaddle/Paddle2ONNX






代码说明





配置环境

  • PP-OCR,克隆PP-OCR的仓库,并进行安装。

  • PaddlePaddle,安装最新的2.0正式版本。

  • Paddle2ONNX,克隆Paddle2ONNX的仓库,并进行安装。

  • ONNXRunTime,用于推理ONNX模型。

# !git clone https://github.com/PaddlePaddle/PaddleOCR.git# !cd PaddleOCR && python setup.py install
!pip install -r PaddleOCR/requirements.txt!pip install paddlepaddle==2.0 -i https://mirror.baidu.com/pypi/simple!git clone https://github.com/PaddlePaddle/Paddle2ONNX.git!cd Paddle2ONNX && python setup.py install!pip install onnxruntime

导出PP-OCR的inference模型

  • 导出检测(det),方向分类(cls)和文字识别(rec)模型。

  • 运行export_ocr.sh,并指定PaddleOCR的路径和导出模型保存的路径。

  • 该export_ocr.sh脚本的实现,参考自PaddleOCR部署文档。


!sh export_ocr.sh PaddleOCR/ /home/aistudio/inference_model/paddle/


 将inference模型转换为ONNX协议


使用Paddle2ONNX将inference模型转换为ONNX协议

!paddle2onnx -m /home/aistudio/inference_model/paddle/cls/ --model_filename inference.pdmodel --params_filename inference.pdiparams -s /home/aistudio/inference_model/onnx/cls/model.onnx --opset_version 11!paddle2onnx -m /home/aistudio/inference_model/paddle/rec_crnn/ --model_filename inference.pdmodel --params_filename inference.pdiparams -s /home/aistudio/inference_model/onnx/rec_crnn/model.onnx --opset_version 11!paddle2onnx -m /home/aistudio/inference_model/paddle/det_db/ --model_filename inference.pdmodel --params_filename inference.pdiparams -s /home/aistudio/inference_model/onnx/det_db/model.onnx --opset_version 11


 模型可视化

通过VisualDL工具可以轻松的进行模型结构的可视化查看。在AIStudio平台上,可点击左侧 可视化->选择模型文件,选择刚才保存后缀为XXX.onnx的模型文件。然后启动服务即可查看模型的计算图结构和模型的相关信息



 使用ONNXRunTime推理ONNX模型

  • 使用ONNXRunTime加载转换的ONNX模型,对test.jpg进行文字检测,再方向分类,最后文字识别。

  • 实现代码位于onnx_inference/目录下面,识别结果的可视化将默认保存在results/目录下面。

  • 用户可选择images/路径的图片自行测试,也可以上传本地的图片进行测试。

  • 以下命令执行是肝功能检查报告的识别示例。


!export PYTHONPATH=$PYTHONPATH:PaddleOCR/ && python onnx_inference/predict_system.py --image_dir="images/liver_function.jpg" --det_model_dir="./inference_model/onnx/det_db/model.onnx" --cls_model_dir="./inference_model/onnx/cls/model.onnx" --rec_model_dir="./inference_model/onnx/rec_crnn/model.onnx" --use_angle_cls=true --rec_char_dict_path PaddleOCR/ppocr/utils/ppocr_keys_v1.txt --vis_font_path PaddleOCR/doc/fonts/simfang.ttf


 识别结果可视化

import matplotlib.pyplot as pltfrom PIL import Imageimg = Image.open('results/liver_function.jpg')fig = plt.figure(figsize=(30, 30))ax1 = fig.add_subplot(121)ax1.imshow(img)

项目地址:
https://aistudio.baidu.com/aistudio/projectdetail/1479970


今天的分享就先到这里啦,我们下次再见~~~


等等!又到了本次福利发放时间: 转发本条推文至朋友圈,点赞最多的5名同学将会获得定制"笔 记本" 一个,截止时间:7月15日12点,大家记得及时把截图发给小助手~还等什么马上行动起来吧!


搜寻更多趣味项目,请点击“阅读原文”访问AI Studio官网


AI Studio是基于百度深度学习平台飞桨的人工智能学习与实训社区,为开发者免费提供功能强大的线上训练环境、云端超强GPU算力及存储资源。沉淀了90万+实训项目、5000+课时课程、90+场竞赛及7万+数据集,云集近100万AI开发者共同学习、交流、竞技与成长。




飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体,是中国首个自主研发、功能丰富、开源开放的产业级深度学习平台。飞桨企业版针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。


END