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

飞桨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

http://www.lryc.cn/news/324241.html

相关文章:

  • 在MongoDB建模1对N关系的基本方法
  • C++基础之运算符重载(十一)
  • 初始Java篇(JavaSE基础语法)(2)(逻辑控制)
  • 家用路由器和企业路由器的区别?
  • Gin简介(Go web基础知识)
  • HBase的Bulk Load流程
  • vue中图片替换 遇到问题
  • Android 观察者模式
  • 阿里云部署MySQL、Redis、RocketMQ、Nacos集群
  • day05-店铺营业状态设置
  • 哈希表(c++)
  • C#基础-标识符命名规则
  • Zabbix Web界面中文汉化
  • esp32CAM环境搭建(arduino+MicroPython+thonny+固件)
  • Spring Boot从入门到实战
  • Spring Boot(七十一):整合RateLimiter实现接口限流
  • 通过jsDelivr实现Github的图床CDN加速
  • Kafka系列之:Connect 中的错误报告
  • MySQL面试题--开发(最全,涵盖SQL基础、架构、事务)
  • 【移动端】Flutter 获取Android AMap实例
  • 什么是PLC物联网关?PLC物联网关有哪些功能?
  • R-CNN笔记
  • uni-app从零开始快速入门
  • Springboot集成jersey打包jar找不到class处理
  • 基于springboot和vue的旅游资源网站的设计与实现
  • Python编程异步爬虫——协程的基本原理
  • 基于springboot+vue的旅游推荐系统
  • Debezium日常分享系列之:Debezium2.5稳定版本之Monitoring
  • GuLi商城-商品服务-API-三级分类-网关统一配置跨域
  • 【ai技术】(4):在树莓派上,使用qwen0.5b大模型+chatgptweb,搭建本地大模型聊天环境,速度飞快,非常不错!