当前位置: 首页 > news >正文

Paddle导出PP-OCRv5 onnx并推理

一、下载模型

首先我们先下载模型。

PP-OCRv5_mobile_rec_infer.tar

https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_mobile_rec_infer.tar

或者PP-OCRv5_server_rec_infer.tar

https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_rec_infer.tar

二、转换成onnx

我们最好先clone,找个文件夹

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

然后创建对应的python虚拟环境,并安装好依赖

然后进入虚拟环境

python -m pip install paddle2onnx==2.0.2rc1

然后进行转换,把路径替换成上面你的下载模型的路径,导出的模型名称为model.onnx

paddle2onnx --model_dir 你的PP-OCRv5_mobile_rec路径 --model_filename inference.json --params_filename inference.pdiparams --save_file model.onnx --opset_version 14 --enable_onnx_checker True

三、运行测试

下载PP-OCRv5字典,下载不了的可以在资源里下载

ppocrv5-onnx/dict/ppocrv5_dict.txt at master · HoVDuc/ppocrv5-onnx

注意安装好依赖和设置路径

import onnxruntime as ort
import numpy as np
import cv2
import os
import time# 1. 加载 ONNX 模型
onnx_path = 'model.onnx'session = ort.InferenceSession(onnx_path, providers=['CPUExecutionProvider'])# 2. 加载字典
char_list = []
dict_path = 'ppocrv5_dict.txt'
with open(dict_path, 'r', encoding='utf-8') as f:char_list = [line.strip() for line in f]
char_list.append('')  # 防止部分模型输出最大索引时越界def preprocess(img_path):img = cv2.imread(img_path)img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)img = cv2.resize(img, (320, 48))  # 修正高度为48,宽度320img = img.astype(np.float32) / 255.0mean = np.array([0.5, 0.5, 0.5]).reshape((1, 1, 3))std = np.array([0.5, 0.5, 0.5]).reshape((1, 1, 3))img = (img - mean) / stdimg = img.transpose(2, 0, 1)  # HWC to CHWimg = np.expand_dims(img, axis=0)return img.astype(np.float32)  # 保证输入为float32def ctc_decode(preds, char_list):text = ''last_index = -1for i in preds:if i != 0 and i != last_index:if 0 < i <= len(char_list):text += char_list[i-1]else:print(f"Warning: index {i} out of range for char_list (len={len(char_list)})")last_index = ireturn text# 3. 遍历 test 文件夹下所有图片
img_dir = 'test'
img_files = [f for f in os.listdir(img_dir) if f.lower().endswith('.png')]start_time = time.time()for img_file in img_files:img_path = os.path.join(img_dir, img_file)img = preprocess(img_path)ort_inputs = {session.get_inputs()[0].name: img}preds = session.run(None, ort_inputs)[0]preds_idx = preds.argmax(axis=2)[0]text = ctc_decode(preds_idx, char_list)print(f'{img_file}: {text}')end_time = time.time()
total_time = end_time - start_time
num_imgs = len(img_files)
if num_imgs > 0:avg_time = total_time / num_imgsprint(f'总共耗时: {total_time:.4f} 秒')print(f'平均每图耗时: {avg_time:.4f} 秒')
else:print('未找到图片,无法计算平均耗时。')
http://www.dtcms.com/a/451319.html

相关文章:

  • 零基础学ui设计好学吗徐州seo推广优化
  • 告别“塑料娃娃”:Substance Painter中的次世代角色皮肤质感绘制管线
  • 网站建设验收模板wordpress个人网站备案管理
  • Linux的几种版本详细介绍
  • php做外贸网站好吗网页制作视频教程速成
  • 制作网站需要哪些成本石家庄新闻发布会
  • 整体设计 逻辑系统程序 之14 彻底分析了的四类文字/三种数字/三套符号
  • 网站设计心的h5 php网站开发
  • 网站建设的费用明细在线生成印章
  • 保健品企业网站孝昌县建设局网站
  • 网站商业授权计量检测网站平台建设方案
  • 页面做的比较炫酷的网站南通丰汇建设有限公司公司网站
  • 宁波网站制作设计国内网站绕过备案方法
  • 网站建设背景图网页装wordpress
  • 著名的国外设计网站有哪些WordPress访问mysql慢
  • 如何做网站 站长教课wordpress识图搜索代码
  • 中山网站建设价格平和网站建设
  • 上海网站建设小程序开发如何在工商局网站做企业年报
  • 简单电商网站模板下载wordpress导出xml
  • 站群cms网站系统网站后台 页面内容不显示
  • 网站建设需要审批吗网络推广的话术怎么说
  • 岳阳网站平台设计禁漫天入口18comic
  • 越南做企业网站p2p网站开发
  • 微信官方版官方网站友情链接建立遵循的原则包括
  • 网站网格设计亿图
  • 网站建设的基本教程网站seo啥意思
  • 网站开发调查表青岛网站建设免费
  • 网站开发工作周记深圳网站建设 联雅
  • 光全息|偏振复用的动态彩色全息
  • 网站设计论文大全淮南建设局网站备案