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版本 (我的cuda版本是11.8,根据你电脑装合适版本) pip instal…...
OpenHarmony 系统性能优化——默认关闭全局动画
笔者最近发现,关闭OpenHarmony全局动画,系统UI的响应速度会极大的提升 1.全局动画的开关由系统属性persist.sys.arkui.animationscale来控制,默认为1。也就是 动画缩放 1x 2.如果让persist.sys.arkui.animationscale默认为0,也就是关闭的状态…...
【Linux】Ubuntu Linux 系统——Node.js 开发环境
ℹ️大家好,我是练小杰,今天星期五了,同时也是2025年的情人节,今晚又是一个人的举个爪子!! 🙂 本文是有关Linux 操作系统中 Node.js 开发环境基础知识,后续我将添加更多相关知识噢&a…...
LC-搜索二维矩阵II、相交链表、反转链表、回文链表、环形链表、环形链表ll
搜索二维矩阵II 方法:从右上角开始搜索 我们可以从矩阵的右上角开始进行搜索。如果当前元素 matrix[i][j] 等于 target,我们直接返回 true。如果 matrix[i][j] 大于 target,说明 target 只能出现在左边的列,所以我们将列指针向左…...
小米平板怎么和电脑共享屏幕
最近尝试使用小米平板和电脑屏幕分屏互联 发现是需要做特殊处理的,需要下载一款电脑安装包:小米妙享 关于这个安装包,想吐槽的是: 没有找到官网渠道,是通过其他网络方式查到下载的 不附录链接,原因是因为地…...
Python elasticsearch客户端连接常见问题整理
python 访问 elasticsearch 在python语言中,我们一般使用 pip install elasticsearch 软件包,来访问es服务器。 正确用法 本地安装elasticsearch时,应指定与服务端相同的大版本号: pip install elasticsearch7.17.0然后就可以…...
目标检测IoU阈值全解析:YOLO/DETR模型中的精度-召回率博弈与工程实践指南
一、技术原理与数学本质 IoU计算公式: IoU \frac{Area\ of\ Overlap}{Area\ of\ Union} \frac{A ∩ B}{A ∪ B}阈值选择悖论: 高阈值(0.6-0.75):减少误检(FP↓)但增加漏检(FN↑…...
算法——数学建模的十大常用算法
数学建模的十大常用算法在数学建模竞赛和实际问题解决中起着至关重要的作用。以下是这些算法的具体信息、应用场景以及部分算法的C语言代码示例(由于篇幅限制,这里只给出部分算法的简要代码或思路,实际应用中可能需要根据具体问题进行调整和扩…...
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 显卡:NVIDIA GTX1650 目录 安装Anaconda第一步:下载合适版本的Anconda1. 查看自己Linux的操作系统及架构命令:uname -a2. 下载合适版本的Anconda 第二步:安装Aanconda1. 为.sh文件设置权限2. 执行.sh文件2.1 .…...
渗透测试--文件包含漏洞
文件包含漏洞 前言 《Web安全实战》系列集合了WEB类常见的各种漏洞,笔者根据自己在Web安全领域中学习和工作的经验,对漏洞原理和漏洞利用面进行了总结分析,致力于漏洞准确性、丰富性,希望对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,Print,Printf。第…...
DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决
我的个人主页 我的专栏:人工智能领域、java-数据结构、Javase、C语言,希望能帮助到大家!!!点赞👍收藏❤ 一、引言 在机器学习的广袤天地中,大型语言模型(LLM)无疑是最…...
【机器学习】深入浅出KNN算法:原理解析与实践案例分享
在机器学习中,K-最近邻算法(K-Nearest Neighbors, KNN)是一种既直观又实用的算法。它既可以用于分类,也可以用于回归任务。本文将简单介绍KNN算法的基本原理、优缺点以及常见应用场景,并通过一个简单案例帮助大家快速入…...
C#使用文件读写操作实现仙剑五前传称号存档修改
手把手教学仙剑五前传 称号存档修改器 首先找到 Pal5Q所在目录的save\global.sav 文件,这是一个只有488字节的文件,这里存放称号对应的编号ID,以及是否已获得该称号,1为已获取称号,0为未获取称号 [称号:是否获取]这是一个键值对 称号的编号ID是一个Int32数字,使用C#的方法Bi…...
计算机专业知识【探秘 C/S 工作模式:原理、应用与网络协议案例】
在计算机网络的世界里,C/S 工作模式是一种非常重要且广泛应用的架构模式。它如同一位幕后功臣,默默支撑着我们日常使用的众多网络服务。下面将详细介绍 C/S 工作模式是什么,以及哪些常见的应用和网络协议采用了这种模式。 一、C/S 工作模式的…...
Django创建一个非前后端分离平台
1.pub_blog前端创立 1.blog/pub路由 注意两个路由的区别 2.完善页面 用表单实现 3.加载wangeditor的几个文件 4.配置样式 5.配置js代码,单独放在js文件夹中,js文件夹pub_blog onload事件,加载完成后会再加载 5.提交按钮...
适用于iOS的应用商店优化(ASO)清单
面对App Store的激烈竞争,您想优化您的应用使其在竞争中脱颖而出,但又不知道应该从哪里开始。我们已经为您准备好了!我们整理了一份适用于iOS的应用商店优化(ASO)检查清单,用以帮助您入门并提高您在App Sto…...
SSH远程服务器免密码连接|含注意事项细节
需求描述:我想配置本地机器到ssh远程服务器的免密码连接,注意我日常会使用的集群有多个节点,每个节点的用户名以及密码都是一样的,但是不同节点的用户目录下的数据并不互通。 方案: 配置本地机器到 SSH 远程服务器的…...
本地通过隧道连接服务器的mysql
前言 服务器上部署了 mysql,本地希望能访问该 mysql,但是又不希望 mysql 直接暴露在公网上 那么可以通过隧道连接 ssh 端口的方式进行连接 从外网看,服务器只开放了一个 ssh 端口,并没有开放 3306 监听端口 设置本地免密登录 …...
从VMware虚拟机到DevEco真机调试:我的OpenHarmony 3.0 LTS开发环境全链路搭建心得
从VMware到DevEco:OpenHarmony 3.0 LTS混合开发环境实战指南 当开发者第一次接触OpenHarmony时,往往会被其复杂的开发环境要求所困扰。不同于传统的单平台开发模式,OpenHarmony开发需要Windows与Linux系统的协同工作——Windows用于应用开发与…...
洛谷-算法2-4-字符串2
P4551 最长异或路径 题目描述 给定一棵 n 个点的带权树,结点下标从 1 开始到 n。求树中所有异或路径的最大值。 异或路径指树上两个结点之间唯一路径上的所有边权的异或值。 输入格式 第一行一个整数 n,表示结点数。 接下来 n−1 行,给…...
保姆级教程:手把手教你将屏厂给的MIPI初始化代码转成RK3588的DTS配置
RK3588 MIPI屏幕初始化代码转换实战指南:从厂商代码到DTS配置的完整解析 每次拿到新屏幕的初始化代码时,那种既兴奋又头疼的感觉,相信每个嵌入式工程师都深有体会。屏幕厂商提供的初始化代码往往以C语言或伪代码形式呈现,而我们需…...
KEIL Map文件实战:如何从内存分布图揪出栈溢出元凶(附排查流程图)
KEIL Map文件实战:如何从内存分布图揪出栈溢出元凶(附排查流程图) 在嵌入式开发中,内存问题往往是最隐蔽也最令人头疼的bug之一。当你的STM32程序突然崩溃,或者某些变量莫名其妙地被修改时,栈溢出很可能是罪…...
新手开发者如何通过Taotoken文档和示例快速上手API调用
新手开发者如何通过Taotoken文档和示例快速上手API调用 1. 注册账号与获取API Key 要开始使用Taotoken的API服务,首先需要注册账号并获取API Key。访问Taotoken官网完成注册流程后,登录控制台,在"API密钥管理"页面可以创建新的AP…...
Python 爬虫分布式架构基础与多机协同采集方案
前言随着爬取目标站点规模扩大、反爬策略升级、数据量级指数级增长,单机单线程、单机多线程爬虫会天然遇到三大瓶颈:IP 限制、采集效率不足、单机性能上限。普通并发爬虫受限于单机 CPU、带宽、IP 池,面对海量站点与高频采集需求时࿰…...
osgEarth深度分析(5): 坐标系统与投影转换:全球三维可视化的数学基石
在前四部分中,我们探讨了地形、调度、数据接入和矢量渲染。所有这些功能的底层,都依赖于一套精确且高效的空间参考系统(SRS)。本部分将深入解析 osgEarth 如何通过 SpatialReference和 Profile抽象,实现 WGS84、Web Me…...
保姆级教程:用ECharts for Weixin在小程序里画个家庭旅行足迹地图
家庭旅行足迹地图:用ECharts打造微信小程序的互动记忆 记得去年夏天,我们一家三口自驾环游西北,孩子每到一处就在地图上贴个小星星。现在,通过微信小程序和ECharts,我们可以把这种温馨的家庭互动搬到手机上——不仅能记…...
大模型推理中的自我干预训练(InT)技术解析
1. 大模型推理中的自我干预训练概述在大型语言模型(LLM)的实际部署中,我们常常遇到这样的困境:模型在训练集上表现优异,但在真实场景的推理过程中却会出现逻辑断裂、事实错误或有害输出。传统微调方法就像给模型"…...
基于stm32ARM库函数的IIR二阶巴特沃斯低通滤波器--附完整代码
在嵌入式系统中使用ARM CMSIS-DSP库实现高效IIR低通滤波器 🎯 引言:嵌入式系统中的实时信号处理挑战 在嵌入式系统开发中,信号处理往往面临双重挑战:既要保证实时性,又要在资源受限的环境下运行。今天,我…...
