飞桨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…...
SDMatte移动端优化思路:模型量化与轻量化部署探索
SDMatte移动端优化思路:模型量化与轻量化部署探索 1. 移动端AI部署的挑战与机遇 将大型AI模型部署到移动设备上一直是个技术难题。以SDMatte这样的专业抠图模型为例,原始版本动辄几百MB的模型大小和复杂的计算需求,很难直接在手机或平板上流…...
免费开源一款聚合支付系统,已封装微信、支付宝、PayPal、京东、银联、QQ等支付方式
大家好,我是小悟。 众所周知,几乎所有商业应用都离不开支付功能,但支付集成却常常成为开发者的"痛点"。 面对微信支付、支付宝、银联等众多支付渠道,每个平台都有自己复杂的API、不同的签名机制和开发规范。 开发者往往…...
碳汇 / 碳循环研究必备:植被净初级生产力(NPP)的模拟与预测-LPJ 模型构建、数据制备、敏感性分析与未来情景预测
在生态学、地理学以及全球变化研究的领域中,植被净初级生产力(NPP)的模拟与预测始终是一个核心议题。无论是评估生态系统的碳汇潜力,还是探究植被对气候变化的响应机制,LPJ(Lund-Potsdam-Jena)及…...
OpenClaw+千问3.5-9B:自动化代码审查助手
OpenClaw千问3.5-9B:自动化代码审查助手 1. 为什么需要自动化代码审查 作为一个长期与代码打交道的开发者,我深知代码审查的重要性,但也饱受其效率问题的困扰。传统的人工审查往往受限于时间、精力和个人经验,而商业化的代码审查…...
从H.264到AV1:主流视频编码标准的演进、选型与实战场景剖析
1. 视频编码标准的发展脉络 我第一次接触视频编码是在2005年,当时用手机拍摄的3GP视频文件总是模糊不清。后来才知道,这背后是MPEG-4 Part 2编码在起作用。如今视频编码技术已经迭代了好几代,从最早的MPEG-2到现在的AV1,每一次升级…...
Obsidian插件实战:5个提升笔记效率的神器(附避坑指南)
Obsidian插件实战:5个提升笔记效率的神器(附避坑指南) 如果你正在寻找能够真正提升Obsidian笔记效率的插件组合,这篇文章将为你揭示5个经过实战检验的效率神器。不同于泛泛而谈的插件列表,我们聚焦于那些能够形成工作…...
全流程效率提升:Scarab开源模组管理器的跨平台解决方案
全流程效率提升:Scarab开源模组管理器的跨平台解决方案 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 当你兴致勃勃地想为《空洞骑士》安装模组时,是否…...
Next.js第八课 - 缓存机制
前面几节我们学习了数据获取和数据变更,本节来深入了解 Next.js 的缓存机制。缓存是提升应用性能的关键技术,用好了能让你的应用速度提升好几倍。 缓存架构 Next.js 使用多层缓存来优化性能,理解这个架构很重要: 请求流程: 浏览…...
基于S7-200 PLC和组态王矿井通风控制
基于S7-200 PLC和组态王矿井通风控制矿井通风系统的自动化控制对安全生产太重要了。老张上次下井巡检时说:"现在这通风系统比二十年前强多了,以前手动调风门得拿命赌操作工的手速。"今天咱们就聊聊怎么用S7-200 PLC和组态王搞矿井通风控制&…...
大麦APP抢票协议分析:从‘掌密网络’代码看移动端API安全防护
大麦APP抢票协议安全防护体系深度解析 1. 移动端API安全防护的现状与挑战 在移动互联网时代,API作为应用与服务器通信的核心通道,其安全性直接关系到业务系统的稳定性和用户数据的安全。大麦APP作为国内领先的票务平台,面临着巨大的抢票压力和…...
