在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