AI Studio 精品项目 | PP-OCR的ONNXRunTime部署

点击左上方蓝字关注我们

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 plt
from PIL import Image
img = 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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值