Files
FastDeploy/examples/vision/segmentation/paddleseg/rknpu2/README.md
Zheng_Bicheng ce828ecb38 [Backend And DOC] 改进ppseg文档 + 为RKNPU2后端新增对多输入模型的支持 (#491)
* 11-02/14:35
* 新增输入数据format错误判断
* 优化推理过程,减少内存分配次数
* 支持多输入rknn模型
* rknn模型输出shape为三维时,输出将被强制对齐为4纬。现在将直接抹除rknn补充的shape,方便部分对输出shape进行判断的模型进行正确的后处理。

* 11-03/17:25
* 支持导出多输入RKNN模型
* 更新各种文档
* ppseg改用Fastdeploy中的模型进行转换

* 11-03/17:25
* 新增开源头

* 11-03/21:48
* 删除无用debug代码,补充注释
2022-11-04 09:39:23 +08:00

5.4 KiB
Raw Blame History

PaddleSeg 模型部署

模型版本说明

目前FastDeploy使用RKNPU2推理PPSeg支持如下模型的部署:

模型 参数文件大小 输入Shape mIoU mIoU (flip) mIoU (ms+flip)
Unet-cityscapes 52MB 1024x512 65.00% 66.02% 66.89%
PP-LiteSeg-T(STDC1)-cityscapes 31MB 1024x512 77.04% 77.73% 77.46%
PP-HumanSegV1-Lite(通用人像分割模型) 543KB 192x192 86.2% - -
PP-HumanSegV2-Lite(通用人像分割模型) 12MB 192x192 92.52% - -
PP-HumanSegV2-Mobile(通用人像分割模型) 29MB 192x192 93.13% - -
PP-HumanSegV1-Server(通用人像分割模型) 103MB 512x512 96.47% - -
Portait-PP-HumanSegV2_Lite(肖像分割模型) 3.6M 256x144 96.63% - -
FCN-HRNet-W18-cityscapes 37MB 1024x512 78.97% 79.49% 79.74%
Deeplabv3-ResNet101-OS8-cityscapes 150MB 1024x512 79.90% 80.22% 80.47%

准备PaddleSeg部署模型以及转换模型

RKNPU部署模型前需要将Paddle模型转换成RKNN模型具体步骤如下:

模型转换example

下面以Portait-PP-HumanSegV2_Lite(肖像分割模型)为例子教大家如何转换PPSeg模型到RKNN模型。

# 下载Paddle2ONNX仓库
git clone https://github.com/PaddlePaddle/Paddle2ONNX

# 下载Paddle静态图模型并为Paddle静态图模型固定输入shape
## 进入为Paddle静态图模型固定输入shape的目录
cd Paddle2ONNX/tools/paddle
## 下载Paddle静态图模型并解压
wget https://bj.bcebos.com/paddlehub/fastdeploy/Portrait_PP_HumanSegV2_Lite_256x144_infer.tgz
tar xvf Portrait_PP_HumanSegV2_Lite_256x144_infer.tgz
python paddle_infer_shape.py --model_dir Portrait_PP_HumanSegV2_Lite_256x144_infer/ \
                             --model_filename model.pdmodel \
                             --params_filename model.pdiparams \
                             --save_dir Portrait_PP_HumanSegV2_Lite_256x144_infer \
                             --input_shape_dict="{'x':[1,3,144,256]}"

# 静态图转ONNX模型注意这里的save_file请和压缩包名对齐
paddle2onnx --model_dir Portrait_PP_HumanSegV2_Lite_256x144_infer \
            --model_filename model.pdmodel \
            --params_filename model.pdiparams \
            --save_file Portrait_PP_HumanSegV2_Lite_256x144_infer/Portrait_PP_HumanSegV2_Lite_256x144_infer.onnx \
            --enable_dev_version True

# ONNX模型转RKNN模型
# 将ONNX模型目录拷贝到Fastdeploy根目录
cp -r ./Portrait_PP_HumanSegV2_Lite_256x144_infer /path/to/Fastdeploy
# 转换模型,模型将生成在Portrait_PP_HumanSegV2_Lite_256x144_infer目录下
python tools/rknpu2/export.py --config_path tools/rknpu2/config/RK3588/Portrait_PP_HumanSegV2_Lite_256x144_infer.yaml

修改yaml配置文件

模型转换example我们对模型的shape进行了固定因此对应的yaml文件也要进行修改如下:

原yaml文件

Deploy:
  input_shape:
  - -1
  - 3
  - -1
  - -1
  model: model.pdmodel
  output_dtype: float32
  output_op: none
  params: model.pdiparams
  transforms:
  - target_size:
    - 256
    - 144
    type: Resize
  - type: Normalize

修改后的yaml文件

Deploy:
  input_shape:
  - 1
  - 3
  - 144
  - 256
  model: model.pdmodel
  output_dtype: float32
  output_op: none
  params: model.pdiparams
  transforms:
  - target_size:
    - 256
    - 144
    type: Resize
  - type: Normalize

详细部署文档