前言:
RK3588部署ppocr流程及ubuntu安装环境
目录
一、NoMachine安装使用
二、把ubuntu系统从英文修改为中文界面
三、安装conda
没有报错说明没有问题,如果source的时候报错,查看
编辑
报这种错:
5、需要添加国内镜像源
6、接着创建一个rknn环境
四、opencv的安装
五、在板子上完成fastdeploy环境搭建
1、## 编译FastDeploy Python SDK
2、# PP-OCRv3 RKNPU2 Python部署示例
3.运行部署示例
# CPU推理
# NPU推理
一、### 板端编译FastDeploy C++ SDK
1.(我个人用RK3588(ubuntu22.04跑通编译FastDeploy C++ SDK)
2.(我个人用RK3588(ubuntu20.04跑通编译FastDeploy python SDK;也就是上面的)
1、下载FastDeploy
git clone https://github.com/PaddlePaddle/FastDeploy.git
2、创建build
3、# 永久配置
4、## C++运行部署示例
5、# 使用编译完成的FastDeploy库编译infer_demo
6、# 下载图片和字典文件
7、# 拷贝RKNN模型到build目录
pycharm pycharm官网下载地址
一、NoMachine安装使用
链接:NoMachine安装使用_rk3588 nomachine-****博客
二、把ubuntu系统从英文修改为中文界面
1、打开系统设置,英文为“system setting”,齿轮一样的图标,有的版本安装完之后在任务栏上有,没有的话点右上角齿轮里面有。如下图所示
2、2、进去后打开“language support”(ubuntu20),Ubuntu18里面叫“Region & Language”
汉语放到最上,点击Apply System-Wide退出;重启系统即可
显示出来保留旧的名称即可
三、安装conda
conda官网下载
1、首先下载Anaconda3-2022.10-Linux-aarch64.sh,链接:https://pan.baidu.com/s/10oXSAaleAEoe6KaJ3IQyaw ,提取码:mtag 。
下载后放入到自己的home文件夹下面,然后在该文件夹下运行
bash Anaconda3-2022.10-Linux-aarch64.sh
根据提示按enter键或者输入yes后按enter键,直到运行完成即可。
orangepi@orangepi5pro:~/anzhuang$ sudo gedit ~/.bashrc
[sudo] orangepi 的密码:
sudo: gedit:找不到命令
解决:
sudo apt-get update
sudo apt-get install gedit
2、最后在终端输入:
sudo gedit ~/.bashrc
3、运行完成后,打开home文件夹下的.bashrc文件,在该文件末尾手动输入
export PATH="/home/orangepi/anaconda3/bin:$PATH"
source activate base
下面一行表示每次打开系统后环境自动切换到base环境,如果不需要,可以把第二行去掉,然后每次进入系统后终端输入
source activate base
4、文件修改后
source ~/.bashrc
没有报错说明没有问题,如果source的时候报错,查看
export PATH="/home/orangepi/anaconda3/bin:$PATH"中bin目录是否有问题
报这种错:
If your current network has https://www.anaconda.com blocked, please file
a support request with your network engineering team.
'https//repo.anaconda.com/pkgs/main/noarch'
5、需要添加国内镜像源
安装配置anaconda
anaconda添加国内镜像源
#换镜像源
gedit ~/.condarc
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- defaults
6、接着创建一个rknn环境
conda create -n rknn python==3.9 -y
conda activate rknn
四、opencv的安装
1、下载安装包
下载地址:https://opencv.org/releases/
opencv官网下载
下载合适的我的下载3.4.15版本的sources
解压缩包
unzip opencv-3.4.15
3、使用 cmake 安装 opencv
首先进入解压后的文件夹:opencv-3.4.15
cd opencv-3.4.15
进入 root 用户,并更新一下
sudo su
sudo apt-get update
执行这条命令安装 cmake
sudo apt-get install cmake
复制下面这条命令,安装依赖库
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev
创建经入 build 文件夹
mkdir build
cd build
使用 cmake 编译参数,或者使用第二条默认参数,都可以
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake ..
4、使用 make 创建编译
sudo make -j8
5、安装
sudo make install
6、配置环境
sudo gedit /etc/ld.so.conf.d/opencv.conf
填入
/usr/local/lib
保存退出
7、更新系统共享链接库
sudo ldconfig
8、配置 bash ,修改 bash.bashrc 文件
sudo gedit /etc/bash.bashrc
在最后换行填入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出,然后执行如下命令使得配置生效
source /etc/bash.bashrc
9、测试opencv版本号
pkg-config --modversion opencv4
更新一下
sudo updatedb
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
编译好之后生成可执行文件 opencv, 直接 ./opencv 就能显示图片。
五、在板子上完成fastdeploy环境搭建
FastDeploy库的编译(在rk3588板子上进行)
rk3588性能强劲,可以直接在板子上借助图形界面编译FastDeploy库
使用git clone https://github.com/PaddlePaddle/FastDeploy.git指令拉取代码
官网fastdeploy官网
放到你的工作目录下执行:
unzip FastDeploy-develop.zip
cd FastDeploy
接下来有两种编译方式python和C++
1、## 编译FastDeploy Python SDK
cd python
export ENABLE_ORT_BACKEND=ON
export ENABLE_RKNPU2_BACKEND=ON
export ENABLE_VISION=ON
# 请根据你的开发版的不同,选择RK3588和RK356X
export RKNN2_TARGET_SOC=RK3588
# 如果你的核心板的运行内存大于等于8G,我们建议您执行以下命令进行编译。
python3 setup.py build
# 值得注意的是,如果你的核心板的运行内存小于8G,我们建议您执行以下命令进行编译。
python3 setup.py build -j1
python3 setup.py bdist_wheel
cd dist
pip3 install fastdeploy_python-0.0.0-cp39-cp39-linux_aarch64.whl
2、# PP-OCRv3 RKNPU2 Python部署示例
本目录下提供`infer.py`, 供用户完成PP-OCRv3在RKNPU2的部署.
## 1. 部署环境准备
在部署前,需确认以下两个步骤
- 1. 在部署前,需自行编译基于RKNPU2的Python预测库,参考文档[RKNPU2部署环境编译](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install#自行编译安装)
- 2. 同时请用户参考[FastDeploy RKNPU2资源导航](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/rknpu2.md)
## 2.部署模型准备
在部署前, 请准备好您所需要运行的推理模型, 您可以在[FastDeploy支持的PaddleOCR模型列表](../README.md)中下载所需模型.
同时, 在RKNPU2上部署PP-OCR系列模型时,我们需要把Paddle的推理模型转为RKNN模型.
由于rknn_toolkit2工具暂不支持直接从Paddle直接转换为RKNN模型,因此我们需要先将Paddle推理模型转为ONNX模型, 最后转为RKNN模型, 示例如下.
```bash
# 下载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
# 请用户自行安装最新发布版本的paddle2onnx, 转换模型到ONNX格式的模型
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]}"
# 在rockchip/rknpu2_tools/目录下, 我们为用户提供了转换ONNX模型到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
```
3.运行部署示例
在本目录执行如下命令即可完成编译测试,支持此模型需保证FastDeploy版本1.0.3以上(x.x.x>1.0.3), RKNN版本在1.4.1b22以上。
```
cd PaddleOCR/deploy/fastdeploy/rockchip/python
# 下载图片和字典文件
cd /home/orangepi/work_11.9/FastDeploy/examples/vision/ocr/PP-OCR/rockchip/python
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
# 下载部署示例代码
# 下载部署示例代码
git clone https://github.com/PaddlePaddle/FastDeploy.git
cd FastDeploy/examples/vision/ocr/PP-OCR/rockchip/python
# 如果希望从PaddleOCR下载示例代码,请运行
git clone https://github.com/PaddlePaddle/PaddleOCR.git
# 注意:如果当前分支找不到下面的fastdeploy测试代码,请切换到dygraph分支
git checkout dygraph
cd PaddleOCR/deploy/fastdeploy/rockchip/python
# CPU推理
python3 infer.py \
--det_model ./ch_PP-OCRv3_det_infer/ch_PP-OCRv3_det_infer.onnx \
--cls_model ./ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx \
--rec_model ./ch_PP-OCRv3_rec_infer/ch_PP-OCRv3_rec_infer.onnx \
--rec_label_file ./ppocr_keys_v1.txt \
--image 12.jpg \
--device cpu
# NPU推理
python3 infer.py \
--det_model ./ch_PP-OCRv3_det_infer/ch_PP-OCRv3_det_infer_rk3588_unquantized.rknn \
--cls_model ./ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v20_cls_infer_rk3588_unquantized.rknn \
--rec_model ./ch_PP-OCRv3_rec_infer/ch_PP-OCRv3_rec_infer_rk3588_unquantized.rknn \
--rec_label_file ppocr_keys_v1.txt \
--image 12.jpg \
--device npu
报错:
File "/home/orangepi/anaconda3/envs/rknn/lib/python3.9/site-packages/fastdeploy/vision/ocr/ppocr/utils/ser_vi_layoutxlm/transforms.py", line 2, in <module>
from .operators import *
File "/home/orangepi/anaconda3/envs/rknn/lib/python3.9/site-packages/fastdeploy/vision/ocr/ppocr/utils/ser_vi_layoutxlm/operators.py", line 6, in <module>
import cv2
解决方法:
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
****************************************************************************************
接下来用
一、### 板端编译FastDeploy C++ SDK
对于内存比较充足且编译工具链完整的开发版,我们推荐直接在板端执行编译。
以下教程在RK356X(debian10),RK3588(debian 11) 环境下测试通过。
1.(我个人用RK3588(ubuntu22.04跑通编译FastDeploy C++ SDK)
2.(我个人用RK3588(ubuntu20.04跑通编译FastDeploy python SDK;也就是上面的)
你可以通过修改以下参数来实现自定义你的FastDeploy工具包。
| 选项 | 说明 |
| ENABLE_ORT_BACKEND | 默认OFF, 是否编译集成ONNX Runtime后端(CPU/GPU上推荐打开) |
| ENABLE_LITE_BACKEND | 默认OFF,是否编译集成Paddle Lite后端(编译Android库时需要设置为ON) |
| ENABLE_RKNPU2_BACKEND | 默认OFF,是否编译集成RKNPU2后端(RK3588/RK3568/RK3566上推荐打开) |
| ENABLE_VISION | 默认OFF,是否编译集成视觉模型的部署模块 |
| RKNN2_TARGET_SOC | ENABLE_RKNPU2_BACKEND时才需要使用这个编译选项。无默认值, 可输入值为RK3588/RK356X, 必须填入,否则 将编译失败 |
| ORT_DIRECTORY | 当开启ONNX Runtime后端时,用于指定用户本地的ONNX Runtime库路径;如果不指定,编译过程会自动下载ONNX Runtime库 |
| OPENCV_DIRECTORY | 当ENABLE_VISION=ON时,用于指定用户本地的OpenCV库路径;如果不指定,编译过程会自动下载OpenCV库 |
```bash
1、下载FastDeploy
git clone https://github.com/PaddlePaddle/FastDeploy.git
cd FastDeploy
# 如果您使用的是develop分支输入以下命令
git checkout develop
2、创建build
mkdir build && cd build
cmake .. -DENABLE_ORT_BACKEND=OFF \
-DENABLE_RKNPU2_BACKEND=ON \
-DENABLE_VISION=ON \
-DRKNN2_TARGET_SOC=RK3588 \
-DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-0.0.0
# build if soc is RK3588
make -j8
# build if soc is RK356X
make -j4
make install
### 配置环境变量
为了方便大家配置环境变量,FastDeploy提供了一键配置环境变量的脚本,在运行程序前,你需要执行以下命令
```bash
# 临时配置
source PathToFastDeploySDK/fastdeploy_init.sh
3、# 永久配置
source PathToFastDeploySDK/fastdeploy_init.sh
sudo cp PathToFastDeploySDK/fastdeploy_libs.conf /etc/ld.so.conf.d/
sudo ldconfig
4、## C++运行部署示例
在本目录执行如下命令即可完成编译测试,支持此模型需保证FastDeploy版本1.0.3以上(x.x.x>1.0.3), RKNN版本在1.4.1b22以上。
```
# 下载部署示例代码
git clone https://github.com/PaddlePaddle/FastDeploy.git
cd FastDeploy/examples/vision/ocr/PP-OCR/rockchip/cpp
mkdir build
cd build
5、# 使用编译完成的FastDeploy库编译infer_demo
cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-rockchip
make -j
6、# 下载图片和字典文件
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
7、# 拷贝RKNN模型到build目录
# CPU推理
./infer_demo ./ch_PP-OCRv3_det_infer/ch_PP-OCRv3_det_infer.onnx \
./ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx \
./ch_PP-OCRv3_rec_infer/ch_PP-OCRv3_rec_infer.onnx \
./ppocr_keys_v1.txt \
./12.jpg \
0
# 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 \
参考:13.rk3588搭建rknn环境_rk3588安装rknn-****博客