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

PaddlePaddle的OCR模型转onnx-转rknn模型_笔记4

一、PaddlePaddle的OCR模型转onnx

1、首先建立一个新的虚拟环境
conda create -n ppocr python==3.10 -y

conda activate ppocr
2、进入paddlepaddle官网输入以下指令安装paddlepaddle GPU版本

(我的cuda版本是11.8,根据你电脑装合适版本)

pip install paddlepaddle-gpu==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
3、进入PaddlePaddle / PaddleOCR官网下载 PaddleOCR_2.7版本,放在你主目录下:

首先要克隆paddleocr项目,项目地址。(老是有地址不能用多备几个)

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

# 克隆到本地

git clone https://gitcode.com/gh_mirrors/pa/PaddleOCR.git

之后安装命令:

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

4、安装RKNNtoolkit2

ONNX转换为RKNN模型需要使用官方rknn_model_zoo工具:rknn_model_zoo-2.2.0
该处环境部署代码使用到官方rknn-toolkit2工具:rknn-toolkit2

RKNNtoolkit2的作用是将onnx模型转为rknn模型

在该文件夹下找到你对应的python版本

pip install -r requirements_cp310-2.3.0.txt -i https://mirrors.aliyun.com/pypi/simple/

安装paddle2onnx

这一步为下面模型转换做打算:
paddle2onnx的作用:
paddle模型------>onnx模型
RKNNtoolkit2的作用:
onnx模型------>rknn模型

安装paddle2onnx的过程极为简单,在终端输入:

pip install paddle2onnx

至此,ubuntu上面的环境已经搭建完毕!!!

5、OCR程序的编译
官方教程

按照官方教程安装三个模型:
此处装模型操作均在Ubuntu系统上,注意不是在板子上!!!

PaddleOCR模型下载,PaddleOCR模型官网

最新更新模型地址:ppocr模型官网

下载到你的ppocr目录的一个文件夹下:

随即进入paddle----onnx模型步骤

paddle2onnx --model_dir ch_PP-OCRv4_det_infer \--model_filename inference.pdmodel \--params_filename inference.pdiparams \--save_file ch_PP-OCRv4_det_infer/ch_PP-OCRv4_det_infer.onnxpaddle2onnx --model_dir ch_ppocr_mobile_v2.0_cls_infer \--model_filename inference.pdmodel \--params_filename inference.pdiparams \--save_file ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx--enable_auto_update_opset paddle2onnx --model_dir ch_PP-OCRv4_rec_infer \--model_filename inference.pdmodel \--params_filename inference.pdiparams \--save_file ch_PP-OCRv4_rec_infer/ch_PP-OCRv4_rec_infer.onnx

然后固定onnx模型的形状:
这里需要注意的是,根据ubuntu系统上python版本的不同,python指令可能会替换为python3
# 固定模型的输入shape

python3 -m paddle2onnx.optimize --input_model ch_PP-OCRv4_det_infer/ch_PP-OCRv4_det_infer.onnx \--output_model ch_PP-OCRv4_det_infer/ch_PP-OCRv4_det_infer.onnx \--input_shape_dict "{'x':[1,3,960,960]}"python3 -m paddle2onnx.optimize --input_model ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx \--output_model ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx \--input_shape_dict "{'x':[1,3,48,192]}"python3 -m paddle2onnx.optimize --input_model ch_PP-OCRv4_rec_infer/ch_PP-OCRv4_rec_infer.onnx \--output_model ch_PP-OCRv4_rec_infer/ch_PP-OCRv4_rec_infer.onnx \--input_shape_dict "{'x':[1,3,48,320]}"

至此执行完毕后,paddle模型转到onnx模型完毕,接下来是onnx模型转到rknn模型。

二、PaddlePaddle的OCR模型onnx在转rknn模型

把对应的python包放入你的ppocr目录下安装转换RKNN模型的环境:执行

pip install -r requirements_cp310-2.3.0.txt -i https://mirrors.aliyun.com/pypi/simple/

将这个rknpu2_tools文件夹的内容搬到ppocr文件夹下

修改yaml文件路径和你的模型文件对应

随后输入以下三条指令:

python3 rknpu2_tools/export.py --config_path rknpu2_tools/config/ppocrv3_det.yaml --target_platform rk3588
python3 rknpu2_tools/export.py --config_path rknpu2_tools/config/ppocrv3_rec.yaml --target_platform rk3588
python3 rknpu2_tools/export.py --config_path rknpu2_tools/config/ppocrv3_cls.yaml --target_platform rk3588

当三条指令结束运行时,终端内容应该都是:

D RKNN: [14:06:30.472] Total Internal Memory Size: 519.75KB
D RKNN: [14:06:30.472] Total Weight Memory Size: 339.188KB
D RKNN: [14:06:30.472] ----------------------------------------
D RKNN: [14:06:30.472] <<<<<<<< end: rknn::RKNNMemStatisticsPass
I rknn building done.
I Target is None, use simulator!
Export OK!

没有完善,有时间完善一下

可以看到rknn模型已经生成了

三、在RK3588的板子上完成fastdeploy及python的编译

这里直接参考我的另一篇文章

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

后面开发板要用到的环境

把这个文件放在你的开发板上,3588

FastDeploy库的编译(在rk3588板子上进行)
rk3588性能强劲,可以直接在板子上借助图形界面编译FastDeploy库

使用git clone https://github.com/PaddlePaddle/FastDeploy.git指令拉取代码

官网fastdeploy官网

下载FastDeploy-release-1.0.7

放到你的工作目录下执行:

后面的步骤直接参考我的另一篇文章就行

 链接:ppocr部署在RK3588_python编译-2_rk3588怎么做ocr识别-CSDN博客

参考:记录如何在RK3588板子上跑通paddle的OCR模型。重点是对齐rknntoolkit版本和板子上的librknnrt.so库_paddleocr rk3588-CSDN博客

相关文章:

PaddlePaddle的OCR模型转onnx-转rknn模型_笔记4

一、PaddlePaddle的OCR模型转onnx 1、首先建立一个新的虚拟环境 conda create -n ppocr python3.10 -y conda activate ppocr 2、进入paddlepaddle官网输入以下指令安装paddlepaddle GPU版本 &#xff08;我的cuda版本是11.8,根据你电脑装合适版本&#xff09; pip instal…...

OpenHarmony 系统性能优化——默认关闭全局动画

笔者最近发现&#xff0c;关闭OpenHarmony全局动画&#xff0c;系统UI的响应速度会极大的提升 1.全局动画的开关由系统属性persist.sys.arkui.animationscale来控制&#xff0c;默认为1。也就是 动画缩放 1x 2.如果让persist.sys.arkui.animationscale默认为0,也就是关闭的状态…...

【Linux】Ubuntu Linux 系统——Node.js 开发环境

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天星期五了&#xff0c;同时也是2025年的情人节&#xff0c;今晚又是一个人的举个爪子&#xff01;&#xff01; &#x1f642; 本文是有关Linux 操作系统中 Node.js 开发环境基础知识&#xff0c;后续我将添加更多相关知识噢&a…...

LC-搜索二维矩阵II、相交链表、反转链表、回文链表、环形链表、环形链表ll

搜索二维矩阵II 方法&#xff1a;从右上角开始搜索 我们可以从矩阵的右上角开始进行搜索。如果当前元素 matrix[i][j] 等于 target&#xff0c;我们直接返回 true。如果 matrix[i][j] 大于 target&#xff0c;说明 target 只能出现在左边的列&#xff0c;所以我们将列指针向左…...

小米平板怎么和电脑共享屏幕

最近尝试使用小米平板和电脑屏幕分屏互联 发现是需要做特殊处理的&#xff0c;需要下载一款电脑安装包&#xff1a;小米妙享 关于这个安装包&#xff0c;想吐槽的是&#xff1a; 没有找到官网渠道&#xff0c;是通过其他网络方式查到下载的 不附录链接&#xff0c;原因是因为地…...

Python elasticsearch客户端连接常见问题整理

python 访问 elasticsearch 在python语言中&#xff0c;我们一般使用 pip install elasticsearch 软件包&#xff0c;来访问es服务器。 正确用法 本地安装elasticsearch时&#xff0c;应指定与服务端相同的大版本号&#xff1a; pip install elasticsearch7.17.0然后就可以…...

目标检测IoU阈值全解析:YOLO/DETR模型中的精度-召回率博弈与工程实践指南

一、技术原理与数学本质 IoU计算公式&#xff1a; IoU \frac{Area\ of\ Overlap}{Area\ of\ Union} \frac{A ∩ B}{A ∪ B}阈值选择悖论&#xff1a; 高阈值&#xff08;0.6-0.75&#xff09;&#xff1a;减少误检&#xff08;FP↓&#xff09;但增加漏检&#xff08;FN↑…...

算法——数学建模的十大常用算法

数学建模的十大常用算法在数学建模竞赛和实际问题解决中起着至关重要的作用。以下是这些算法的具体信息、应用场景以及部分算法的C语言代码示例&#xff08;由于篇幅限制&#xff0c;这里只给出部分算法的简要代码或思路&#xff0c;实际应用中可能需要根据具体问题进行调整和扩…...

Electron:使用electron-react-boilerplate创建一个react + electron的项目

使用 electron-react-boilerplate git clone --depth 1 --branch main https://github.com/electron-react-boilerplate/electron-react-boilerplate.git your-project-name cd your-project-name npm install npm start 安装不成功 在根目录加上 .npmrc文件 内容为 electron_…...

在linux系统中安装Anaconda,并使用conda

系统 : ubuntu20.04 显卡&#xff1a;NVIDIA GTX1650 目录 安装Anaconda第一步&#xff1a;下载合适版本的Anconda1. 查看自己Linux的操作系统及架构命令&#xff1a;uname -a2. 下载合适版本的Anconda 第二步&#xff1a;安装Aanconda1. 为.sh文件设置权限2. 执行.sh文件2.1 .…...

渗透测试--文件包含漏洞

文件包含漏洞 前言 《Web安全实战》系列集合了WEB类常见的各种漏洞&#xff0c;笔者根据自己在Web安全领域中学习和工作的经验&#xff0c;对漏洞原理和漏洞利用面进行了总结分析&#xff0c;致力于漏洞准确性、丰富性&#xff0c;希望对WEB安全工作者、WEB安全学习者能有所帮助…...

Go入门之语言变量 常量介绍

func main(){var a int8 10var b int 5var c int 6fmt.Println("a", a, "b", b, "c", c)d : 10fmt.Printf("a%v leixing%T\n", d, d) } main函数是入口函数,fmt包有三个打印的函数Println&#xff0c;Print&#xff0c;Printf。第…...

DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决

我的个人主页 我的专栏&#xff1a;人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞&#x1f44d;收藏❤ 一、引言 在机器学习的广袤天地中&#xff0c;大型语言模型&#xff08;LLM&#xff09;无疑是最…...

【机器学习】深入浅出KNN算法:原理解析与实践案例分享

在机器学习中&#xff0c;K-最近邻算法&#xff08;K-Nearest Neighbors, KNN&#xff09;是一种既直观又实用的算法。它既可以用于分类&#xff0c;也可以用于回归任务。本文将简单介绍KNN算法的基本原理、优缺点以及常见应用场景&#xff0c;并通过一个简单案例帮助大家快速入…...

C#使用文件读写操作实现仙剑五前传称号存档修改

手把手教学仙剑五前传 称号存档修改器 首先找到 Pal5Q所在目录的save\global.sav 文件,这是一个只有488字节的文件,这里存放称号对应的编号ID,以及是否已获得该称号,1为已获取称号,0为未获取称号 [称号:是否获取]这是一个键值对 称号的编号ID是一个Int32数字,使用C#的方法Bi…...

计算机专业知识【探秘 C/S 工作模式:原理、应用与网络协议案例】

在计算机网络的世界里&#xff0c;C/S 工作模式是一种非常重要且广泛应用的架构模式。它如同一位幕后功臣&#xff0c;默默支撑着我们日常使用的众多网络服务。下面将详细介绍 C/S 工作模式是什么&#xff0c;以及哪些常见的应用和网络协议采用了这种模式。 一、C/S 工作模式的…...

Django创建一个非前后端分离平台

1.pub_blog前端创立 1.blog/pub路由 注意两个路由的区别 2.完善页面 用表单实现 3.加载wangeditor的几个文件 4.配置样式 5.配置js代码&#xff0c;单独放在js文件夹中&#xff0c;js文件夹pub_blog onload事件&#xff0c;加载完成后会再加载 5.提交按钮...

适用于iOS的应用商店优化(ASO)清单

面对App Store的激烈竞争&#xff0c;您想优化您的应用使其在竞争中脱颖而出&#xff0c;但又不知道应该从哪里开始。我们已经为您准备好了&#xff01;我们整理了一份适用于iOS的应用商店优化&#xff08;ASO&#xff09;检查清单&#xff0c;用以帮助您入门并提高您在App Sto…...

SSH远程服务器免密码连接|含注意事项细节

需求描述&#xff1a;我想配置本地机器到ssh远程服务器的免密码连接&#xff0c;注意我日常会使用的集群有多个节点&#xff0c;每个节点的用户名以及密码都是一样的&#xff0c;但是不同节点的用户目录下的数据并不互通。 方案&#xff1a; 配置本地机器到 SSH 远程服务器的…...

本地通过隧道连接服务器的mysql

前言 服务器上部署了 mysql&#xff0c;本地希望能访问该 mysql&#xff0c;但是又不希望 mysql 直接暴露在公网上 那么可以通过隧道连接 ssh 端口的方式进行连接 从外网看&#xff0c;服务器只开放了一个 ssh 端口&#xff0c;并没有开放 3306 监听端口 设置本地免密登录 …...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...