飞桨AI应用@riscv OpenKylin
在riscv编译安装飞桨PaddlePaddle参见:
算能RISC-V通用云编译飞桨paddlepaddle@openKylin留档_在riscv下进行paddlelite源码编译-CSDN博客
安装好飞桨,就可以用飞桨进行推理了。刚开始计划用ONNX推理,但是在算能云没有装上,所以最终是用的飞桨推理。但是还是用到了Paddle2ONNX里的代码。

下载Paddle2ONNX源代码
git clone https://github.com/PaddlePaddle/Paddle2ONNX
ocr文字识别
下面是使用ONNX进行推理的示例,我没有弄成,希望有成功的朋友交流下经验。
安装需要的库
pip install shapely pyclipper
如果在riscv系统无法编译安装shapely,那么可以先安装包:
apt install libgeos-dev
下载相关模型文件
cd Paddle2ONNX/model_zoo/ocr# 下载det模型
wget https://bj.bcebos.com/paddle2onnx/model_zoo/ch_PP-OCRv2_det_infer.onnx# 下载rec模型
wget https://bj.bcebos.com/paddle2onnx/model_zoo/ch_PP-OCRv2_rec_infer.onnx# 下载cls模型
wget https://bj.bcebos.com/paddle2onnx/model_zoo/ch_ppocr_mobile_v2.0_cls_infer.onnx
进行识别
python3 infer.py \
--det_model_dir=./ch_PP-OCRv2_det_infer.onnx \
--rec_model_dir=./ch_PP-OCRv2_rec_infer.onnx \
--cls_model_dir=./ch_ppocr_mobile_v2.0_cls_infer.onnx \
--image_path=./images/lite_demo.png
使用飞桨推理进行文字识别
这个推理成功了。
下载和解压模型
wget -nc -P ./inference https://bj.bcebos.com/paddle2onnx/model_zoo/ch_PP-OCRv2_det_infer.tar
cd ./inference && tar xf ch_PP-OCRv2_det_infer.tar && cd ..wget -nc -P ./inference https://bj.bcebos.com/paddle2onnx/model_zoo/ch_PP-OCRv2_rec_infer.tar
cd ./inference && tar xf ch_PP-OCRv2_rec_infer.tar && cd ..wget -nc -P ./inference https://bj.bcebos.com/paddle2onnx/model_zoo/ch_ppocr_mobile_v2.0_cls_infer.tar
cd ./inference && tar xf ch_ppocr_mobile_v2.0_cls_infer.tar && cd ..
进行文字识别
python3 infer.py \
--cls_model_dir=./inference/ch_ppocr_mobile_v2.0_cls_infer \
--rec_model_dir=./inference/ch_PP-OCRv2_rec_infer \
--det_model_dir=./inference/ch_PP-OCRv2_det_infer \
--image_path=./images/lite_demo.png \
--use_paddle_predict=True
推理识别结果
输出可紧致头发磷层,从而达到0.99444813即时持久改善头发光泽的效果,给干燥的头0.99019814发足够的滋养0.997668花费了0.457335秒
效果还不错
调试
ocr读取文件的时候报错:
Python 3.11.0rc2 (main, Sep 4 2023, 07:22:49) [GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/py311/lib/python3.11/site-packages/cv2/__init__.py", line 8, in <module>
from .cv2 import *
ImportError: libtiff.so.6: cannot open shared object file: No such file or directory
安装libtiff
pip install pylibtiff
结果还是报错
找到libtiff.so.5文件在/lib/riscv64-linux-gnu,做了个链接。
ln -s libtiff.so.5 libtiff.so.6
报错ImportError: libgtk-x11-2.0.so.0
SyntaxError: invalid syntax
(py311) root@863c89a419ec:~/github/Paddle2ONNX/model_zoo/ocr# python -c "import cv2"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/root/py311/lib/python3.11/site-packages/cv2/__init__.py", line 8, in <module>
from .cv2 import *
ImportError: libtiff.so.6: cannot open shared object file: No such file or directory
(py311) root@863c89a419ec:~/github/Paddle2ONNX/model_zoo/ocr# python -c "import cv2"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/root/py311/lib/python3.11/site-packages/cv2/__init__.py", line 8, in <module>
from .cv2 import *
ImportError: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
安装包:apt-get install libgtk2.0-dev
ok了
识别是numpy.int报错
File "/root/github/Paddle2ONNX/model_zoo/ocr/utils/predict_det.py", line 210, in box_score_fast
xmin = np.clip(np.floor(box[:, 0].min()).astype(np.int), 0, w - 1)
File "/usr/local/lib/python3.8/dist-packages/numpy/__init__.py", line 305, in __getattr__
raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'int'.
`np.int` was a deprecated alias for the builtin `int`. To avoid this error in existing code, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
进入/root/github/Paddle2ONNX/model_zoo/ocr/utils/predict_det.py源码,把np.int都改成np.int32
相关文章:
飞桨AI应用@riscv OpenKylin
在riscv编译安装飞桨PaddlePaddle参见: 算能RISC-V通用云编译飞桨paddlepaddleopenKylin留档_在riscv下进行paddlelite源码编译-CSDN博客 安装好飞桨,就可以用飞桨进行推理了。刚开始计划用ONNX推理,但是在算能云没有装上,所以最…...
在MongoDB建模1对N关系的基本方法
“我在 SQL 和规范化数据库方面拥有丰富的经验,但我只是 MongoDB 的初学者。如何建立一对 N 关系模型?” 这是我从参加 MongoDB 分享日活动的用户那里得到的最常见问题之一。 我对这个问题没有简短的答案,因为方法不只有一种,还有…...
C++基础之运算符重载(十一)
首先为什么要对运算符进行重载?因为C内置的运算符只能作用于一些基本数据类型,而对类和结构体这种自定义数据类型是不管用的。所以这时我们需要对运算符进行重新定义满足一定的运算规则。 运算符重载的三种形式 1.以普通的函数进行重载 #include <…...
初始Java篇(JavaSE基础语法)(2)(逻辑控制)
个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 目录 逻辑控制 顺序结构 分支结构 if语句 switch 语句 循环结构 while 循环 for 循环 do while 循环 输入输出 输出到控制台 从键盘输入 …...
家用路由器和企业路由器的区别?
一、家用路由器 家用路由器路由器交换机 它只有一个WAN口和一个LAN口,WAN口接公网一个地址,LAN口接你电脑一个IP地址,完全符合路由器的设计,而因为家里如果用了,说明要接多个电脑,那么如果还需要对每个接口…...
Gin简介(Go web基础知识)
Gin简介 https://geektutu.com/post/quick-go-gin.html我是从这个网站上面摘录的,就是做个笔记,仅分享。膜拜极客兔兔大佬 Go特性: 快速:路由不使用反射,基于Radix树,内存占用少。 中间件:HT…...
HBase的Bulk Load流程
目录 1. 数据准备 2. 文件移动 3. 加载数据 4. Region处理 5. 元数据更新 6. 完成加载 7. 清理 8. 异常处理 LoadIncrementalHFiles(也称为Bulk Load)是HBase中一种将大量数据高效导入到HBase表的机制。以下是LoadIncrementalHFiles的主要流程步…...
vue中图片替换 遇到问题
问题: 在img标签里动态绑定路径:<img v-bind:src"imgSrc" /> data里这样写是错误的:imgSrc:xx/xx.png 这样渲染的路径会有问题,导致出不来图片 解决了 是这样的 data(){return(){imgSrc:require("../…...
Android 观察者模式
在Android中,观察者模式(Observer Pattern)是一种常用的设计模式,用于在对象之间建立一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Android开发中࿰…...
阿里云部署MySQL、Redis、RocketMQ、Nacos集群
文章目录 🔊博主介绍🥤本文内容MySQL集群配置云服务器选购CPU选择内存选择云盘选择ESSD AutoPL云盘块存储性能(ESSD) 镜像选择带宽选择密码配置注意事项 安装docker和docker-compose部署MySQL三主六从半同步集群一主二从同步集群规…...
day05-店铺营业状态设置
1. Redis入门 1.1 Redis简介 Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 官网: https://redis.io 中文网: https://www.redis.net.cn/ 主要特点: 基于内存存储,读写性能高…...
哈希表(c++)
1、介绍 哈希表,也称为散列表,是一种非常高效的数据结构。它通过将键(Key)映射到数组的特定位置来快速查找、插入和删除数据。这个映射过程由哈希函数(Hash Function)完成,该函数将键转化为一个…...
C#基础-标识符命名规则
目录 1、标识符定义 2、遵循规则 3、标识符的例子 4、MSDN中英文解释 英文...
Zabbix Web界面中文汉化
要想达到上图的效果,第一步先查看 /usr/share/zabbix/assets/fonts/ [rootservice yum.repos.d]# ll /usr/share/zabbix/assets/fonts/ 总用量 0 lrwxrwxrwx. 1 root root 33 3月 23 16:58 graphfont.ttf -> /etc/alternatives/zabbix-web-font 继续查看graph…...
esp32CAM环境搭建(arduino+MicroPython+thonny+固件)
arduino ide 开发工具 arduino版本:1.8.19 arduino ide 中文设置: file >> preferences >> arduino IDE 获取 ESP32 开发环境:打开 Arduino IDE ,找到 文件>首选项 ,将 ESP32 的配置链接填入附加开发板管理网…...
Spring Boot从入门到实战
课程介绍 本课程从SpringBoot的最基础的安装、配置开始到SpringBoot的日志管理、Web业务开发、数据存储、数据缓存,安全控制及相关企业级应用,全程案例贯穿,案例每一步的都会讲解实现思路,全程手敲代码实现。让你不仅能够掌Sprin…...
Spring Boot(七十一):整合RateLimiter实现接口限流
1 简介 RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。 RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率…...
通过jsDelivr实现Github的图床CDN加速
最近小伙伴们是否发现访问我的个人博客http://xiejava.ishareread.com/图片显示特别快了? 我的博客的图片是放在github上的,众所周知的原因,github访问不是很快,尤其是hexo博客用github做图床经常图片刷不出来。一直想换图床&…...
Kafka系列之:Connect 中的错误报告
Kafka系列之:Connect 中的错误报告 Kafka Connect 提供错误报告来处理各个处理阶段遇到的错误。默认情况下,转换期间或转换中遇到的任何错误都会导致连接器失败。每个连接器配置还可以通过跳过此类错误、选择性地将每个错误以及失败操作的详细信息和有问题的记录(具有各种详…...
MySQL面试题--开发(最全,涵盖SQL基础、架构、事务)
MySQL面试题--事务https://mp.csdn.net/mp_blog/creation/editor/136947072 MySQL面试题--MySQL内部技术架构https://blog.csdn.net/Timebro/article/details/136946046?spm1001.2014.3001.5501 MySQL面试题--最全面-索引https://blog.csdn.net/Timebro/article/details/136…...
OpenClaw+百川2-13B量化模型:个人知识库自动整理方案实测
OpenClaw百川2-13B量化模型:个人知识库自动整理方案实测 1. 为什么需要自动化知识管理 作为一个长期与技术文档打交道的开发者,我的电脑里堆积着超过200GB的未整理资料——从会议录音转写的文字稿、GitHub扒下来的开源项目说明,到随手保存的…...
JavaScript中类继承中super关键字的调用执行逻辑
super()必须在子类constructor中首行调用,否则报错;它触发父类构造函数并绑定this,使子类实例正确继承属性方法,且new.target指向子类;非构造阶段可用super.xxx访问父类原型成员。在 JavaScript 类继承中,s…...
数字游民工作流:OpenClaw+千问3.5-27B自动处理跨境邮件
数字游民工作流:OpenClaw千问3.5-27B自动处理跨境邮件 1. 为什么需要自动化邮件处理 作为数字游民,我每天需要处理来自不同时区的客户邮件。这些邮件往往混杂着英语、西班牙语和中文,且包含大量模糊的需求描述。最痛苦的是凌晨三点被手机提…...
盘姬工具箱实用工具推荐:从文件恢复到批量重命名
在盘姬工具箱的众多功能中,有一些工具特别值得推荐。 这些工具都能切实解决用户在日常使用电脑过程中遇到的各种问题。 而且这些工具的操作都非常简单直观,不需要用户具备专业的技术知识。 无论是电脑新手还是资深用户,都能通过这些工具获…...
创想三维“闯入”漫展,3D打印赋能Cosplay创作
4月4日,中西部文化巡展漫展现场,天猫“无畏契约主题电竞活动”的电竞装备体验区内,两台创想三维3D打印机——SPARKX i7 Combo和Creality K2 Combo正在高速运转,层层堆叠的PLA耗材逐渐勾勒出精致的Cosplay道具轮廓。周围有许多人围…...
多模态扩展:OpenClaw对接Qwen3-14B镜像实现图文混合处理
多模态扩展:OpenClaw对接Qwen3-14B镜像实现图文混合处理 1. 为什么需要多模态能力扩展 去年我在整理技术文档时,发现纯文本处理已经无法满足实际需求。当需要从截图提取错误日志、给产品原型图生成说明文档时,不得不反复在多个工具间切换。…...
RPA流程进阶:在Uibot中集成Python插件实现复杂数据处理
1. 为什么要在Uibot中集成Python插件? 很多刚开始接触RPA的朋友可能会有疑问:Uibot本身已经提供了丰富的自动化命令,为什么还要折腾Python插件?这个问题我在三年前第一次用Uibot处理Excel报表时就深有体会。当时需要合并20多个分公…...
手把手教你为RK3568(arm64)交叉编译BlueZ:利用Buildroot已有环境快速出包
手把手教你为RK3568(arm64)交叉编译BlueZ:利用Buildroot已有环境快速出包 在嵌入式Linux开发中,蓝牙协议栈BlueZ的交叉编译一直是让开发者头疼的问题。特别是当目标平台采用arm64架构时,依赖库的复杂性和工具链的配置难…...
为什么ITK在医学影像分析中如此强大?深入解析其Pipeline设计原理
为什么ITK在医学影像分析中如此强大?深入解析其Pipeline设计原理 医学影像处理领域对计算效率和精度有着近乎苛刻的要求,而ITK(InsightToolkit)正是在这样的需求背景下成长为行业标杆的开源工具包。当我们需要处理CT扫描的数百层切…...
免费方法和付费工具处理顽固AI率,差距有多大
顽固AI率,有没有必要付费? 这个问题的答案,取决于你有多少时间,以及你能接受多少不确定性。这篇文章用数据说话。 免费方法:自己改写 方法:自己逐段阅读,换词改句,加口语化表达 …...
