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

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐