Files
fcb_photo_review/paddle_detection/deploy/README.md
2024-08-27 14:42:45 +08:00

4.7 KiB
Raw Blame History

PaddleDetection 预测部署

PaddleDetection提供了Paddle Inference、Paddle Serving、Paddle-Lite多种部署形式支持服务端、移动端、嵌入式等多种平台提供了完善的Python和C++部署方案。

PaddleDetection支持的部署形式说明

形式 语言 教程 设备/平台
Paddle Inference Python 已完善 Linux(ARM\X86)、Windows
Paddle Inference C++ 已完善 Linux(ARM\X86)、Windows
Paddle Serving Python 已完善 Linux(ARM\X86)、Windows
Paddle-Lite C++ 已完善 Android、IOS、FPGA、RK...

1.Paddle Inference部署

1.1 导出模型

使用tools/export_model.py脚本导出模型以及部署时使用的配置文件,配置文件名字为infer_cfg.yml。模型导出脚本如下:

# 导出YOLOv3模型
python tools/export_model.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml -o weights=output/yolov3_mobilenet_v1_roadsign/best_model.pdparams

预测模型会导出到output_inference/yolov3_mobilenet_v1_roadsign目录下,分别为infer_cfg.yml, model.pdiparams, model.pdiparams.info, model.pdmodel。 模型导出具体请参考文档PaddleDetection模型导出教程

1.2 使用PaddleInference进行预测

  • Python部署 支持CPUGPUXPU环境支持windows、linux系统支持NV Jetson嵌入式设备上部署。参考文档python部署
  • C++部署 支持CPUGPUXPU环境支持windows、linux系统支持NV Jetson嵌入式设备上部署。参考文档C++部署
  • PaddleDetection支持TensorRT加速,相关文档请参考TensorRT预测部署教程

注意: Paddle预测库版本需要>=2.1batch_size>1仅支持YOLOv3和PP-YOLO。

2.PaddleServing部署

2.1 导出模型

如果需要导出PaddleServing格式的模型,需要设置export_serving_model=True:

python tools/export_model.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml -o weights=output/yolov3_mobilenet_v1_roadsign/best_model.pdparams --export_serving_model=True

预测模型会导出到output_inference/yolov3_darknet53_270e_coco目录下,分别为infer_cfg.yml, model.pdiparams, model.pdiparams.info, model.pdmodel, serving_client/文件夹, serving_server/文件夹。

模型导出具体请参考文档PaddleDetection模型导出教程

2.2 使用PaddleServing进行预测

3.PaddleLite部署

4.第三方部署MNN、NCNN、Openvino

  • 第三方部署提供PicoDet、TinyPose案例其他模型请参考修改
  • TinyPose部署推荐工具Intel CPU端推荐使用OpenvinoGPU端推荐使用PaddleInferenceARM/ANDROID端推荐使用PaddleLite或者MNN
Third_Engine MNN NCNN OPENVINO
PicoDet PicoDet_MNN PicoDet_NCNN PicoDet_OPENVINO
TinyPose TinyPose_MNN - TinyPose_OPENVINO

5.Benchmark测试

  • 使用导出的模型运行Benchmark批量测试脚本
sh deploy/benchmark/benchmark.sh {model_dir} {model_name}

注意 如果是量化模型,请使用deploy/benchmark/benchmark_quant.sh脚本。

  • 将测试结果log导出至Excel中
python deploy/benchmark/log_parser_excel.py --log_path=./output_pipeline --output_name=benchmark_excel.xlsx

6.常见问题QA

  • 1、Paddle 1.8.4训练的模型,可以用Paddle2.0部署吗? Paddle 2.0是兼容Paddle 1.8.4的,因此是可以的。但是部分模型(如SOLOv2)使用到了Paddle 2.0中新增OP这类模型不可以。

  • 2、Windows编译时预测库是VS2015编译的选择VS2017或VS2019会有问题吗 关于VS兼容性问题请参考C++Visual Studio 2015、2017和2019之间的二进制兼容性

  • 3、cuDNN 8.0.4连续预测会发生内存泄漏吗? 经QA测试发现cuDNN 8系列连续预测时都有内存泄漏问题且cuDNN 8性能差于cuDNN 7推荐使用CUDA + cuDNN7.6.4的方式进行部署。