mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-07 17:41:52 +08:00

* 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代码,补充注释
PaddleSeg C++部署示例
本目录下用于展示PaddleSeg系列模型在RKNPU2上的部署,以下的部署过程以PPHumanSeg为例子。
在部署前,需确认以下两个步骤:
- 软硬件环境满足要求
- 根据开发环境,下载预编译部署库或者从头编译FastDeploy仓库
以上步骤请参考RK2代NPU部署库编译实现
生成基本目录文件
该例程由以下几个部分组成
.
├── CMakeLists.txt
├── build # 编译文件夹
├── image # 存放图片的文件夹
├── infer_cpu_npu.cc
├── infer_cpu_npu.h
├── main.cc
├── model # 存放模型文件的文件夹
└── thirdpartys # 存放sdk的文件夹
首先需要先生成目录结构
mkdir build
mkdir images
mkdir model
mkdir thirdpartys
编译
编译并拷贝SDK到thirdpartys文件夹
请参考RK2代NPU部署库编译仓库编译SDK,编译完成后,将在build目录下生成 fastdeploy-0.0.3目录,请移动它至thirdpartys目录下.
拷贝模型文件,以及配置文件至model文件夹
在Paddle动态图模型 -> Paddle静态图模型 -> ONNX模型的过程中,将生成ONNX文件以及对应的yaml配置文件,请将配置文件存放到model文件夹内。 转换为RKNN后的模型文件也需要拷贝至model,输入以下命令下载使用(模型文件为RK3588,RK3568需要重新转换PPSeg RKNN模型)。
准备测试图片至image文件夹
wget https://paddleseg.bj.bcebos.com/dygraph/pp_humanseg_v2/images.zip
unzip -qo images.zip
编译example
cd build
cmake ..
make -j8
make install
运行例程
cd ./build/install
./rknpu_test
运行结果展示
运行后将在install文件夹下生成human_pp_humansegv2_lite_npu_result.jpg文件,如下图:
注意事项
RKNPU上对模型的输入要求是使用NHWC格式,且图片归一化操作会在转RKNN模型时,内嵌到模型中,因此我们在使用FastDeploy部署时, 需要先调用DisableNormalizePermute(C++)或`disable_normalize_permute(Python),在预处理阶段禁用归一化以及数据格式的转换。