RK3588部署ppocr流程及安装环境_笔记1

时间:2024-11-14 08:36:04

前言:

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-****博客