在RK3588上部署PPYOLOE模型
PP-YOLOE 是基于PP-YOLOv2的卓越的单阶段Anchor-free模型, 超越了多种流行的YOLO模型。PP-YOLOE有一系列的模型,即s/m/l/x,可以通过width multiplier和depth multiplier配置。
一、搭建PPYOLOE虚拟环境
1. 在Windows中安装miniaconda,下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe
安装好后在Anaconda PowershellPrompt (miniconda3)中创建虚拟环境
conda create -n PPYOLOE python=3.8 //创建环境
conda activate PPYOLOE //进入虚拟环境
2. 安装PPYOLOE依赖
百度飞桨框架下载地址:开始使用_飞桨-源于产业实践的开源深度学习平台,我的电脑是集显,所以使用的是CPU版本。

执行以下命令进行安装
conda install paddlepaddle==2.6.1 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
安装以下包,防止模型在运行中出错
pip install Pillow==9.5.0
3. 获取PPYOLOE源码
git clone https://github.com/PaddlePaddle/PaddleYOLO.git //这里使用的是2.6 release
4. 获取模型权重,这里使用轻量化的s模型,
https://bj.bcebos.com/v1/paddledet/models/ppyoloe_plus_crn_s_80e_coco.pdparams
5. 验证环境是否搭建成功
修改PaddleYOLO/configs/runtime.yml,设置cpu推理

执行推理,使用以下命令
python tools/infer.py -c configs/ppyoloe/ppyoloe_plus_crn_s_80e_coco.yml -o weights=ppyoloe_plus_crn_s_80e_coco.pdparams --infer_img=demo/000000014439_640x640.jpg --draw_threshold=0.5


显示以上结果说明paddle环境配置成功
二、 导出ONNX模型
为了在 RKNPU 上获得更优的推理性能,我们调整了模型的输出结构,这些调整会影响到后处理的逻辑,主要包含以下内容
1. 修改:ppdet/modeling/architectures/yolo.py
2. 修改:ppdet/modeling/architectures/yolo.py

上面简单的修改只用于模型导出,训练模型时请注释掉。
# 切换到PaddleYOLO源码目录下,然后使用tools/export_model.py 导出paddle模型
cd PaddleDetection
执行以下命令
python tools/export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_s_80e_coco.yml -o weights=ppyoloe_plus_crn_s_80e_coco.pdparams exclude_nms=True exclude_post_process=True --output_dir inference_model
模型保存在inference_model/ppyoloe_plus_crn_s_80e_coco目录下:

然后将paddle模型转换成ONNX模型
安装 paddle2onnx-1.0.6工具
pip install paddle2onnx
#转换模型
paddle2onnx --model_dir inference_model/ppyoloe_plus_crn_s_80e_coco --model_filename model.pdmodel --params_filename model.pdiparams --opset_version 11 --save_file ./inference_model/ppyoloe_plus_crn_s_80e_coco/ppyoloe_plus_crn_s_80e_coco.onnx
# 固定模型shape
python -m paddle2onnx.optimize --input_model inference_model/ppyoloe_plus_crn_s_80e_coco/ppyoloe_plus_crn_s_80e_coco.onnx --output_model inference_model/ppyoloe_plus_crn_s_80e_coco/ppyoloe_plus_crn_s_80e_coco.onnx --input_shape_dict "{'image':[1,3,640,640]}"
三、将onnx模型转换成rknn模型
使用rknn-Toolkit2工具,转换onnx模型为rknn,可以使用 rknn_model_zoo 的程序
下载链接:GitHub - airockchip/rknn_model_zoo
1. 在ubuntu中进入到Toolkit2环境中,进入到rknn_model_zoo/examples/ppyoloe/python/目录下,使用以下命令进行转换
python3 convert.py ../model/xxx.onnx rk3588
四、在RK3588上部署
1. 在鲁班猫4上拉取GitHub - airockchip/rknn_model_zoo
git clone https://github.com/airockchip/rknn_model_zoo/tree/main
#切换到rknn_model_zoo/libs/rklibs目录,然后拉取相关库,包括rknpu2 和 librga
cd rknn_model_zoo/libs/rklibs
git clone https://github.com/rockchip-linux/rknpu2
git clone https://github.com/airockchip/librga
进入到以下目录,并将rknn文件通过FileZilla传到该目录下
cd rknn_model_zoo/models/CV/object_detection/yolo/RKNN_C_demo/RKNN_toolkit_2/rknn_yolo_demo
在该目录下执行以下命令,会在同级目录下生成install文件夹
./build-linux_RK3588.sh
进入 到install/rk3588/Linux/rknn_yolo_demo目录下进行推理
./rknn_yolo_demo q8 ./ppyoloe.rknn ./model/bus640.jpg ./model/test.jpg


更多推荐



所有评论(0)