README.md 4.7 KB
Newer Older
Q
qingqing01 已提交
1
# PaddleDetection 预测部署
G
Guanghua Yu 已提交
2

W
wangguanzhong 已提交
3
PaddleDetection提供了Paddle Inference、Paddle Serving、Paddle-Lite多种部署形式,支持服务端、移动端、嵌入式等多种平台,提供了完善的Python和C++部署方案。
G
Guanghua Yu 已提交
4

5 6 7
## PaddleDetection支持的部署形式说明
|形式|语言|教程|设备/平台|
|-|-|-|-|
W
wangguanzhong 已提交
8 9 10 11
|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...
G
Guanghua Yu 已提交
12

13 14 15 16

## 1.Paddle Inference部署

### 1.1 导出模型
G
Guanghua Yu 已提交
17

W
Wenyu 已提交
18
使用`tools/export_model.py`脚本导出模型以及部署时使用的配置文件,配置文件名字为`infer_cfg.yml`。模型导出脚本如下:
19 20
```bash
# 导出YOLOv3模型
21
python tools/export_model.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml -o weights=output/yolov3_mobilenet_v1_roadsign/best_model.pdparams
22
```
23 24 25 26 27 28 29 30
预测模型会导出到`output_inference/yolov3_mobilenet_v1_roadsign`目录下,分别为`infer_cfg.yml`, `model.pdiparams`,  `model.pdiparams.info`, `model.pdmodel`
模型导出具体请参考文档[PaddleDetection模型导出教程](EXPORT_MODEL.md)

### 1.2 使用PaddleInference进行预测
* Python部署 支持`CPU``GPU``XPU`环境,支持,windows、linux系统,支持NV Jetson嵌入式设备上部署。参考文档[python部署](python/README.md)
* C++部署 支持`CPU``GPU``XPU`环境,支持,windows、linux系统,支持NV Jetson嵌入式设备上部署。参考文档[C++部署](cpp/README.md)
* PaddleDetection支持TensorRT加速,相关文档请参考[TensorRT预测部署教程](TENSOR_RT.md)

C
cnn 已提交
31 32
**注意:**  Paddle预测库版本需要>=2.1,batch_size>1仅支持YOLOv3和PP-YOLO。

33 34
##  2.PaddleServing部署
### 2.1 导出模型
C
cnn 已提交
35 36 37

如果需要导出`PaddleServing`格式的模型,需要设置`export_serving_model=True`:
```buildoutcfg
38
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
C
cnn 已提交
39 40
```
预测模型会导出到`output_inference/yolov3_darknet53_270e_coco`目录下,分别为`infer_cfg.yml`, `model.pdiparams`,  `model.pdiparams.info`, `model.pdmodel`, `serving_client/`文件夹, `serving_server/`文件夹。
Q
qingqing01 已提交
41

42
模型导出具体请参考文档[PaddleDetection模型导出教程](EXPORT_MODEL.md)
Q
qingqing01 已提交
43

44 45 46
### 2.2 使用PaddleServing进行预测
* [安装PaddleServing](https://github.com/PaddlePaddle/Serving/blob/develop/README.md#installation)
* [使用PaddleServing](./serving/README.md)
47

Q
qingqing01 已提交
48

49 50 51
## 3.PaddleLite部署
- [使用PaddleLite部署PaddleDetection模型](./lite/README.md)
- 详细案例请参考[Paddle-Lite-Demo](https://github.com/PaddlePaddle/Paddle-Lite-Demo)部署。更多内容,请参考[Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite)
52 53


Z
zhiboniu 已提交
54 55
## 4.第三方部署(MNN、NCNN、Openvino) 
- 第三方部署提供PicoDet、TinyPose案例,其他模型请参考修改
Z
zhiboniu 已提交
56
- TinyPose部署推荐工具:Intel CPU端推荐使用Openvino,GPU端推荐使用PaddleInference,ARM/ANDROID端推荐使用PaddleLite或者MNN
Z
zhiboniu 已提交
57 58 59 60 61 62 63 64 65

| Third_Engine | MNN  | NCNN  | OPENVINO   |
| ------------ | ---- | ----- | ---------- |
| PicoDet      | [PicoDet_MNN](./third_engine/demo_mnn/README.md)       | [PicoDet_NCNN](./third_engine/demo_ncnn/README.md) | [PicoDet_OPENVINO](./third_engine/demo_openvino/README.md)   |
| TinyPose     | [TinyPose_MNN](./third_engine/demo_mnn_kpts/README.md) | -                                                  | [TinyPose_OPENVINO](./third_engine/demo_openvino_kpts/README.md) |



## 5.Benchmark测试
Q
qingqing01 已提交
66
- 使用导出的模型,运行Benchmark批量测试脚本:
G
Guanghua Yu 已提交
67
```shell
Q
qingqing01 已提交
68
sh deploy/benchmark/benchmark.sh {model_dir} {model_name}
G
Guanghua Yu 已提交
69
```
Q
qingqing01 已提交
70
**注意** 如果是量化模型,请使用`deploy/benchmark/benchmark_quant.sh`脚本。
G
Guanghua Yu 已提交
71 72 73 74
- 将测试结果log导出至Excel中:
```
python deploy/benchmark/log_parser_excel.py --log_path=./output_pipeline --output_name=benchmark_excel.xlsx
```
75

Z
zhiboniu 已提交
76
## 6.常见问题QA
77 78 79 80 81
- 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之间的二进制兼容性](https://docs.microsoft.com/zh-cn/cpp/porting/binary-compat-2015-2017?view=msvc-160)
Q
qingqing01 已提交
82

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