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

在OK3588板卡上部署模型实现人工智能OCR应用

一、主机模型转换

我们依旧采用FastDeploy来部署应用深度学习模型到OK3588板卡上

进入主机Ubuntu的虚拟环境
conda activate ok3588

安装rknn-toolkit2(该工具不能在OK3588板卡上完成模型转换)

git clone https://github.com/rockchip-linux/rknn-toolkit2
cd rknn-toolkit2
注意这里需要1.4的版本
git checkout v1.4.0 -f
cd packages
pip install rknn_toolkit2-1.4.0_22dcfef4-cp36-cp36m-linux_x86_64.whl

下载FastDeploy

git clone https://github.com/PaddlePaddle/FastDeploy
cd FastDeploy/examples/vision/ocr/PP-OCR

下载PP-OCRv3文字检测模型

wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar
tar -xvf ch_PP-OCRv3_det_infer.tar

下载文字方向分类器模型

wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
tar -xvf ch_ppocr_mobile_v2.0_cls_infer.tar

下载PP-OCRv3文字识别模型

wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar
tar -xvf ch_PP-OCRv3_rec_infer.tar

安装模型转换工具

pip install paddle2onnx
pip install pyyaml

paddle2onnx --model_dir ch_PP-OCRv3_det_infer \--model_filename inference.pdmodel \--params_filename inference.pdiparams \--save_file ch_PP-OCRv3_det_infer/ch_PP-OCRv3_det_infer.onnx \--enable_dev_version True
paddle2onnx --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_dev_version True
paddle2onnx --model_dir ch_PP-OCRv3_rec_infer \--model_filename inference.pdmodel \--params_filename inference.pdiparams \--save_file ch_PP-OCRv3_rec_infer/ch_PP-OCRv3_rec_infer.onnx \--enable_dev_version True

固定模型的输入shape

python -m paddle2onnx.optimize --input_model ch_PP-OCRv3_det_infer/ch_PP-OCRv3_det_infer.onnx \--output_model ch_PP-OCRv3_det_infer/ch_PP-OCRv3_det_infer.onnx \--input_shape_dict "{'x':[1,3,960,960]}"
python -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]}"
python -m paddle2onnx.optimize --input_model ch_PP-OCRv3_rec_infer/ch_PP-OCRv3_rec_infer.onnx \--output_model ch_PP-OCRv3_rec_infer/ch_PP-OCRv3_rec_infer.onnx \--input_shape_dict "{'x':[1,3,48,320]}"

转换成RKNN模型

python rockchip/rknpu2_tools/export.py --config_path tools/rknpu2/config/ppocrv3_det.yaml \--target_platform rk3588
python rockchip/rknpu2_tools/export.py --config_path tools/rknpu2/config/ppocrv3_rec.yaml \--target_platform rk3588
python rockchip/rknpu2_tools/export.py --config_path tools/rknpu2/config/ppocrv3_cls.yaml \--target_platform rk3588

这时生成了三个可以部署在OK3588上的模型文件
ch_ppocr_mobile_v20_cls_infer_rk3588_unquantized.rknn
ch_PP-OCRv3_rec_infer_rk3588_unquantized.rknn
ch_PP-OCRv3_det_infer_rk3588_unquantized.rknn
把这三个文件传输到OK3588板卡上

二、板卡模型部署

进入虚拟环境
conda activate ok3588
cd FastDeploy/examples/vision/ocr/PP-OCR/rockchip/cpp
mkdir build
cd build
cmake … -DFASTDEPLOY_INSTALL_DIR=/home/forlinx/FastDeploy/build/fastdeploy-0.0.0/
make -j
得到了编译后的文件 infer_demo

三、执行推理

下载图片和字典文件

wget https://gitee.com/paddlepaddle/PaddleOCR/raw/release/2.6/doc/imgs/12.jpg
wget https://gitee.com/paddlepaddle/PaddleOCR/raw/release/2.6/ppocr/utils/ppocr_keys_v1.txt

拷贝RKNN模型到build目录

三个模型文件
ch_ppocr_mobile_v20_cls_infer_rk3588_unquantized.rknn
ch_PP-OCRv3_rec_infer_rk3588_unquantized.rknn
ch_PP-OCRv3_det_infer_rk3588_unquantized.rknn
放在build文件夹里面

RKNPU推理

./infer_demo ./ch_PP-OCRv3_det_infer/ch_PP-OCRv3_det_infer_rk3588_unquantized.rknn \./ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v20_cls_infer_rk3588_unquantized.rknn \./ch_PP-OCRv3_rec_infer/ch_PP-OCRv3_rec_infer_rk3588_unquantized.rknn \./ppocr_keys_v1.txt \./12.jpg \1

推理结果展示

在这里插入图片描述

在这里插入图片描述

相关文章:

在OK3588板卡上部署模型实现人工智能OCR应用

一、主机模型转换 我们依旧采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 安装rknn-toolkit2(该工具不能在OK3588板卡上完成模型转换) git clone https://github.com/rockchip-linux/rknn-to…...

在linux中怎样同时运行三个微服务保证退出时不会终止

前言 1.maven中打jar包 使用插件打包,必须在pom.xml中添加插件,否则不能在linux中编译运行 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version&g…...

MD-MTSP:成长优化算法GO求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、成长优化算法GO 成长优化算法&#xff08;Growth Optimizer&#xff0c;GO&#xff09;由Qingke Zhang等人于2023年提出&#xff0c;该算法的设计灵感来源于个人在成长过程中的学习和反思机制。学习是个人通过从外部世界获取知识而成长的过程&#xff0c;反思是检查个体自…...

Python入门一

目录&#xff1a; python基本操作python基本数据类型python字符串基本操作python的运算符python控制流-判断python控制流-循环python常用数据结构-列表python常用数据结构-元组python常用数据结构-集合python常用数据结构-字典python函数python函数进阶与参数处理pythonlambda…...

mysql_2.4——安装常见问题

1. 将MySQL添加到环境变量 将 mysql 的 bin 目录地址添加到 系统环境变量 --> PATH 中 2. 将MySQL添加到服务 以管理员的方式启动 cmd (命令提示窗口)&#xff0c;使用命令进入到 [mysql]\bin &#xff0c;执行如下命 令。 # mysqld --install (服务名) # 如: mysqld --…...

行业追踪,2023-07-31,板块多数都是指向消费

自动复盘 2023-07-31 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

K8S故障排查

故障现象&#xff1a;部署pod时&#xff0c;报错没发调度到节点。 排查步骤&#xff1a; 1、查看集群的状态 [rootk8s-master1 nginx]#kubectl get nodes2、查看k8s组件的状态-kubelet&#xff0c;kube-apiservice 3、查看docker的Cgroup driver和k8s的Cgroup driver类型&…...

idea集成jrebel实现热部署

文章目录 idea集成jrebel实现热部署下载jrebel 插件包下载jrebel mybatisplus extensition 插件包基础配置信息情况一其次情况三情况四情况五情况六情况七 验证生效与否 Jrebel热部署不生效的解决办法 idea集成jrebel实现热部署 在平常开发项目中&#xff0c;我们通常是修改完…...

【Git系列】Git配置SSH免密登录

&#x1f433;Git配置SSH免密登录 &#x1f9ca;1.设置用户名和邮箱&#x1f9ca;2. 生成密钥&#x1f9ca;3.远程仓库配置密钥&#x1f9ca;2. 免密登录 在以上push操作过程中&#xff0c;我们第一次push时&#xff0c;是需要进行录入用户名和密码的&#xff0c;比较麻烦。而且…...

Node.js 安装与版本管理(nvm 的使用)

安装 Node.js Node.js 诞生于 2009 年 5 月&#xff0c;截至今天&#xff08;2022 年 3 月 26 号&#xff09;的最新版本为 16.14.2 LTS 和 17.8.0 Current&#xff0c;可以去官网下载合适的版本。 其中&#xff0c;LTS&#xff08;Long Term Support&#xff09; 是长期维护…...

SpringBoot项目中使用Lombok插件中Slf4j日志框架

前言&#xff1a;idea需要安装lombok插件&#xff0c;因为该插件中添加了Slf4j注解&#xff0c;可以将Slf4j翻译成 private static final org.slf4j.Logger logger LoggerFactory.getLogger(this.XXX.class); springboot本身就内置了slf4j日志框架&#xff0c;所以不需要单独…...

VS下开发Qt应用环境搭建

VS下开发Qt应用环境搭建 版本说明环境搭建步骤QT新增组件重新安装QTVS中的配置 版本说明 vs2019 QT5.14 我之前是按照QT基础组件的安装&#xff0c;但是这个安装只是最基础的组件&#xff0c;如果想要在VS中使用QT&#xff0c;还得安装其他组件&#xff0c;下面的安装流程、 …...

Python实现GA遗传算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;最早是由美国的 John holland于20世…...

Spring源码:Spring运行环境Environment

Spring运行环境 Spring在创建容器时&#xff0c;会创建Environment环境对象&#xff0c;用于保存spring应用程序的运行环境相关的信息。在创建环境时&#xff0c;需要创建属性源属性解析器&#xff0c;会解析属性值中的占位符&#xff0c;并进行替换。 创建环境时&#xff0c…...

SpringBoot使用PropertiesLauncher加载外部jar包

Springboot启动入口源码 默认是org.springframework.boot.loader.JarLauncher <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-loader</artifactId> </dependency>启用SpringBoot的PropertiesLaunche…...

骑行 - 出发前如何准备

现在路上经常见到武装完备的自行车骑手&#xff0c;一般是公路车&#xff0c;出来骑个几十公里是很正常的。出来骑车是个很快乐的事&#xff0c;但出发前还是有许多需要准备的。 最开始&#xff0c;要评估一下天气情况&#xff0c;出车前看下外面天气情况以及预报。提前几天计划…...

ssm员工管理系统

ssm员工管理系统 java员工管理系统 员工管理系统 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;8.x版本都可&#xff09; 硬件环境&#xff1a;Windows 功能介绍&#xff1a; 1.用户…...

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(16)-Fiddler如何充当第三者再识AutoResponder标签-上

1.简介 Fiddler充当第三者&#xff0c;主要是通过AutoResponder标签在客户端和服务端之间&#xff0c;Fiddler抓包&#xff0c;然后改包&#xff0c;最后发送。AutoResponder这个功能可以算的上是Fiddler最实用的功能&#xff0c;可以让我们修改服务器端返回的数据&#xff0c…...

Yolov8新版本解读:优化点如何加入新版本,通过加入EMA注意力进行对比说明

本文目的: 最近yolov8进行了一次较大的更新,对一些优化点加在哪个位置上有些变动,因此本文主要通过具体案列进行对比和说明,以便在新版本上能够轻松上手。 老版本 ultralytics/nn 新版本更新为: modules文件夹下内容如下: 解读: 将modules.py拆分为 1.__init__.…...

NoSQL———Redis配置与优化

目录 一、关系数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 关系型数据库和非关系型数据库区别 1.3.1 非关系型数据库产生背景 二、Redis简介 2.1 redis优点&#xff1a; 三、Redis 安装部署 四、Redis 命令工具 4.1 redis-cli 命令行工具 …...

别再死记硬背了!用Python模拟超前进位加法器,直观理解其速度优势

用Python模拟超前进位加法器&#xff1a;从硬件原理到算法思维的跨越 在计算机科学和电子工程交叉领域&#xff0c;加法器是最基础却又最精妙的设计之一。传统教学中&#xff0c;我们往往通过抽象的电路图来理解超前进位加法器&#xff08;CLA&#xff09;的速度优势&#xff0…...

δ - mem:提升大型语言模型内存效率,得分最高可达 1.31 倍!

快速通道可了解 arXiv 成为独立非营利组织的情况&#xff0c;也能直达康奈尔大学官网。同时&#xff0c;还能通过链接进行捐赠&#xff0c;支持 arXiv 的发展。搜索与导航提供了多种搜索途径&#xff0c;可在所有字段&#xff08;标题、作者、摘要等&#xff09;进行搜索。还有…...

Applite:告别命令行!macOS软件管理的图形化终极解决方案

Applite&#xff1a;告别命令行&#xff01;macOS软件管理的图形化终极解决方案 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为Homebrew复杂的命令行操作而头疼吗&…...

3分钟掌握跨平台模组下载神器:WorkshopDL全攻略

3分钟掌握跨平台模组下载神器&#xff1a;WorkshopDL全攻略 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic Games或GOG平台的游戏无法使用Steam创意工坊模组而烦恼吗…...

基于RAG的电影智能体构建:从向量检索到Agentic设计

1. 项目概述&#xff1a;一个能聊电影的智能体最近在GitHub上看到一个挺有意思的项目&#xff0c;叫tomasonjo/llm-movieagent。光看名字&#xff0c;你大概能猜到&#xff0c;这是一个和电影、和大型语言模型&#xff08;LLM&#xff09;相关的智能体。简单来说&#xff0c;它…...

轻量级HTTP代理monica-proxy:精准流量转发与多场景部署指南

1. 项目概述与核心价值最近在折腾一些需要跨网络环境访问特定服务的项目&#xff0c;发现一个挺有意思的工具叫ycvk/monica-proxy。这本质上是一个基于 Go 语言开发的轻量级 HTTP/HTTPS 代理服务器&#xff0c;但它和我们常见的那些“全能型”代理不太一样。它的设计初衷非常聚…...

基于RAG的智能知识库问答系统:从原理到部署实战

1. 项目概述&#xff1a;当AI大模型遇见知识库&#xff0c;一个开源的智能问答解决方案 最近在折腾一个很有意思的开源项目&#xff0c;叫 zhimaAi/chatwiki 。光看名字&#xff0c;你大概能猜到它的核心&#xff1a; chat 代表对话&#xff0c; wiki 代表知识库。没错&a…...

企业级后端四层架构实战:从理论到代码的清晰落地

1. 项目概述&#xff1a;一个四层架构的实战蓝图最近在GitHub上看到一个挺有意思的项目&#xff0c;叫BTawaifi/four-layer-system。光看名字&#xff0c;你可能会觉得这又是一个老生常谈的“四层架构”理论教程&#xff0c;无非是Controller、Service、Repository那套东西。但…...

Ash印相渲染失败率骤升47%?紧急预警:V6.2更新后Gamma 2.2→2.4迁移引发的印相断层危机

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Ash印相渲染失败率骤升47%的全局现象与危机定性 近期&#xff0c;全球多个采用 Ash 印相引擎&#xff08;v3.8.2&#xff09;的影像处理平台集中报告渲染任务异常终止、输出空白或超时中断。监控数据显…...

【STC8H】GPIO模式深度解析:从准双向到推挽,如何精准控制外设

1. STC8H的GPIO模式全景解析 第一次接触STC8H的GPIO配置时&#xff0c;我被那个神秘的PxM0和PxM1寄存器搞得晕头转向。直到有一次调试I2C通讯失败&#xff0c;才发现是开漏模式配置错误。这次教训让我明白&#xff0c;理解GPIO的四种工作模式&#xff0c;就像掌握不同武器的使用…...