Skip to content

Files

Latest commit

Jul 25, 2024
b87ae02 · Jul 25, 2024

History

History

deploy

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
May 25, 2023
May 25, 2023
May 25, 2023
Jul 26, 2022
Aug 1, 2022
Jul 25, 2024
May 25, 2023
Mar 14, 2023
Jul 13, 2022
Jul 13, 2022
Jul 13, 2022
Jul 13, 2022
Aug 10, 2022
Aug 10, 2022
Jul 13, 2022
Jul 14, 2022
Jul 14, 2022

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.1,batch_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端推荐使用Openvino,GPU端推荐使用PaddleInference,ARM/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的方式进行部署。