Skip to content

Commit 22e6f27

Browse files
author
cnn
authored
update style of benchmark doc, test=fix_document (PaddlePaddle#2702)
1 parent 67e0d76 commit 22e6f27

3 files changed

Lines changed: 61 additions & 57 deletions

File tree

deploy/BENCHMARK_INFER.md

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,60 @@
11
# 推理Benchmark
22

3-
## 环境准备
4-
- 测试环境:
3+
## 一、环境准备
4+
- 1、测试环境:
55
- CUDA 10.1
66
- CUDNN 7.6
77
- TensorRT-6.0.1
88
- PaddlePaddle v2.0.1
9-
- GPU分别为: Tesla V100和Windows 1080Ti和TX2
10-
- 测试方式:
9+
- GPU分别为: Tesla V100和GTX 1080Ti和Jetson AGX Xavier
10+
- 2、测试方式:
1111
- 为了方便比较不同模型的推理速度,输入采用同样大小的图片,为 3x640x640,采用 `demo/000000014439_640x640.jpg` 图片。
1212
- Batch Size=1
1313
- 去掉前100轮warmup时间,测试100轮的平均时间,单位ms/image,包括网络计算时间、数据拷贝至CPU的时间。
1414
- 采用Fluid C++预测引擎: 包含Fluid C++预测、Fluid-TensorRT预测,下面同时测试了Float32 (FP32) 和Float16 (FP16)的推理速度。
1515

16-
**注意:**TensorRT中固定尺寸和动态尺寸区别请参考文档[TENSOR教程](TENSOR_RT.md)。由于固定尺寸下对两阶段模型支持不完善,所以faster rcnn模型采用动态尺寸测试。固定尺寸和动态尺寸支持融合的OP不完全一样,因此同一个模型在固定尺寸和动态尺寸下测试的性能可能会有一点差异。
17-
18-
## 推理速度
19-
20-
### V100
21-
22-
| 模型 | 是否固定尺寸 | 入网尺寸 | paddle\_inference | trt\_fp32 | trt\_fp16 |
23-
| ------------------------------------------ | ------ | -------- | ---------- | ---------- | ---------- |
24-
| ppyolo\_r50vd\_dcn\_1x\_coco || 608x608 | 20.77 | 18.40443 | 13.532618 |
25-
| yolov3\_mobilenet\_v1\_270e\_coco || 608x608 | 9.74 | 8.607459 | 6.275342 |
26-
| ssd\_mobilenet\_v1\_300\_120e\_voc || 300x300 | 5.17 | 4.428614 | 4.292153 |
27-
| ttfnet\_darknet53\_1x\_coco || 512x512 | 10.14 | 8.708397 | 5.551765 |
28-
| fcos\_dcn\_r50\_fpn\_1x\_coco || 640x640 | 35.47 | 35.023315 | 34.24144 |
29-
| faster\_rcnn\_r50\_fpn\_1x\_coco || 640x640 | 27.99 | 26.151001 | 21.922865 |
30-
| yolov3\_darknet53\_270e\_coco || 608x608 | 17.84 | 15.431566 | 9.861447 |
31-
| faster\_rcnn\_r50\_fpn\_1x\_coco(800x1312) || 800x1312 | 32.49 | 25.536572 | 21.696611 |
32-
33-
34-
### Windows 1080Ti
35-
| 模型 | 是否固定尺寸 | 入网尺寸 | paddle\_inference | trt\_fp32 | trt\_fp16 |
36-
| ------------------------------------------ | ------ | -------- | ---------- | ---------- | --------- |
37-
| ppyolo\_r50vd\_dcn\_1x\_coco || 608x608 | 38.06 | 31.401291 | 31.939096 |
38-
| yolov3\_mobilenet\_v1\_270e\_coco || 608x608 | 14.51 | 11.22542 | 11.125602 |
39-
| ssd\_mobilenet\_v1\_300\_120e\_voc || 300x300 | 16.47 | 13.874813 | 13.761724 |
40-
| ttfnet\_darknet53\_1x\_coco || 512x512 | 21.83 | 17.144808 | 17.092379 |
41-
| fcos\_dcn\_r50\_fpn\_1x\_coco || 640x640 | 71.88 | 69.930206 | 69.523048 |
42-
| faster\_rcnn\_r50\_fpn\_1x\_coco || 640x640 | 50.74 | 57.172909 | 62.081978 |
43-
| yolov3\_darknet53\_270e\_coco || 608x608 | 30.26 | 23.915573 | 24.019217 |
44-
| faster\_rcnn\_r50\_fpn\_1x\_coco(800x1312) || 800x1312 | 50.31 | 57.613659 | 62.050724 |
45-
46-
### nv jetson
47-
| 模型 | 是否固定尺寸 | 入网尺寸 | paddle\_inference | trt\_fp32 | trt\_fp16 |
48-
| ------------------------------------------ | ------ | -------- | ---------- | ---------- | ---------- |
49-
| ppyolo\_r50vd\_dcn\_1x\_coco || 608x608 | 111.80 | 99.40332 | 48.047401 |
50-
| yolov3\_mobilenet\_v1\_270e\_coco || 608x608 | 48.76 | 43.832623 | 18.410919 |
51-
| ssd\_mobilenet\_v1\_300\_120e\_voc || 300x300 | 10.52 | 8.840097 | 8.765652 |
52-
| ttfnet\_darknet53\_1x\_coco || 512x512 | 73.77 | 64.025124 | 31.464737 |
53-
| fcos\_dcn\_r50\_fpn\_1x\_coco || 640x640 | 217.11 | 214.381866 | 205.783844 |
54-
| faster\_rcnn\_r50\_fpn\_1x\_coco || 640x640 | 169.45 | 158.919266 | 119.253937 |
55-
| yolov3\_darknet53\_270e\_coco || 608x608 | 121.61 | 110.29866 | 42.379051 |
56-
| faster\_rcnn\_r50\_fpn\_1x\_coco(800x1312) || 800x1312 | 228.07 | 156.393372 | 117.026932 |
16+
**注意:** TensorRT中固定尺寸和动态尺寸区别请参考文档[TENSOR教程](TENSOR_RT.md)。由于固定尺寸下对两阶段模型支持不完善,所以faster rcnn模型采用动态尺寸测试。固定尺寸和动态尺寸支持融合的OP不完全一样,因此同一个模型在固定尺寸和动态尺寸下测试的性能可能会有一点差异。
17+
18+
## 二、推理速度
19+
20+
### 1、Linux系统
21+
#### (1)Tesla V100
22+
23+
| 模型 | backbone | 是否固定尺寸 | 入网尺寸 | paddle_inference | trt_fp32 | trt_fp16 |
24+
|-------------------------------|--------------|--------|----------|------------------|----------|----------|
25+
| Faster RCNN FPN | ResNet50 || 640x640 | 27.99 | 26.15 | 21.92 |
26+
| Faster RCNN FPN | ResNet50 || 800x1312 | 32.49 | 25.54 | 21.70 |
27+
| YOLOv3 | Mobilenet\_v1 || 608x608 | 9.74 | 8.61 | 6.28 |
28+
| YOLOv3 | Darknet53 || 608x608 | 17.84 | 15.43 | 9.86 |
29+
| PPYOLO | ResNet50 || 608x608 | 20.77 | 18.40 | 13.53 |
30+
| SSD | Mobilenet\_v1 || 300x300 | 5.17 | 4.43 | 4.29 |
31+
| TTFNet | Darknet53 || 512x512 | 10.14 | 8.71 | 5.55 |
32+
| FCOS | ResNet50 || 640x640 | 35.47 | 35.02 | 34.24 |
33+
34+
35+
#### (2)Jetson AGX Xavier
36+
37+
| 模型 | backbone | 是否固定尺寸 | 入网尺寸 | paddle_inference | trt_fp32 | trt_fp16 |
38+
|-------------------------------|--------------|--------|----------|------------------|----------|----------|
39+
| Faster RCNN FPN | ResNet50 || 640x640 | 169.45 | 158.92 | 119.25 |
40+
| Faster RCNN FPN | ResNet50 || 800x1312 | 228.07 | 156.39 | 117.03 |
41+
| YOLOv3 | Mobilenet\_v1 || 608x608 | 48.76 | 43.83 | 18.41 |
42+
| YOLOv3 | Darknet53 || 608x608 | 121.61 | 110.30 | 42.38 |
43+
| PPYOLO | ResNet50 || 608x608 | 111.80 | 99.40 | 48.05 |
44+
| SSD | Mobilenet\_v1 || 300x300 | 10.52 | 8.84 | 8.77 |
45+
| TTFNet | Darknet53 || 512x512 | 73.77 | 64.03 | 31.46 |
46+
| FCOS | ResNet50 || 640x640 | 217.11 | 214.38 | 205.78 |
47+
48+
### 2、Windows系统
49+
#### (1)GTX 1080Ti
50+
51+
| 模型 | backbone | 是否固定尺寸 | 入网尺寸 | paddle_inference | trt_fp32 | trt_fp16 |
52+
|-------------------------------|--------------|--------|----------|------------------|----------|----------|
53+
| Faster RCNN FPN | ResNet50 || 640x640 | 50.74 | 57.17 | 62.08 |
54+
| Faster RCNN FPN | ResNet50 || 800x1312 | 50.31 | 57.61 | 62.05 |
55+
| YOLOv3 | Mobilenet\_v1 || 608x608 | 14.51 | 11.23 | 11.13 |
56+
| YOLOv3 | Darknet53 || 608x608 | 30.26 | 23.92 | 24.02 |
57+
| PPYOLO | ResNet50 || 608x608 | 38.06 | 31.40 | 31.94 |
58+
| SSD | Mobilenet\_v1 || 300x300 | 16.47 | 13.87 | 13.76 |
59+
| TTFNet | Darknet53 || 512x512 | 21.83 | 17.14 | 17.09 |
60+
| FCOS | ResNet50 || 640x640 | 71.88 | 69.93 | 69.52 |

deploy/EXPORT_MODEL.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# PaddleDetection模型导出教程
22

3-
## 模型导出
3+
## 一、模型导出
44
本章节介绍如何使用`tools/export_model.py`脚本导出模型。
5-
### 导出模输入输出说明
5+
### 1、导出模输入输出说明
66
- `PaddleDetection`中输入变量以及输入形状如下:
77
| 输入名称 | 输入形状 | 表示含义 |
88
| :---------: | ----------- | ---------- |
@@ -22,14 +22,14 @@
2222
**注意**模型动转静导出不支持模型结构中包含numpy相关操作的情况。
2323

2424

25-
### 启动参数说明
25+
### 2、启动参数说明
2626

2727
| FLAG | 用途 | 默认值 | 备注 |
2828
|:--------------:|:--------------:|:------------:|:-----------------------------------------:|
2929
| -c | 指定配置文件 | None | |
3030
| --output_dir | 模型保存路径 | `./output_inference` | 模型默认保存在`output/配置文件名/`路径下 |
3131

32-
### 使用示例
32+
### 3、使用示例
3333

3434
使用训练得到的模型进行试用,脚本如下
3535

@@ -42,7 +42,7 @@ python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --
4242
预测模型会导出到`inference_model/yolov3_darknet53_270e_coco`目录下,分别为`infer_cfg.yml`, `model.pdiparams`, `model.pdiparams.info`, `model.pdmodel`
4343

4444

45-
### 设置导出模型的输入大小
45+
### 4、设置导出模型的输入大小
4646

4747
使用Fluid-TensorRT进行预测时,由于<=TensorRT 5.1的版本仅支持定长输入,保存模型的`data`层的图片大小需要和实际输入图片大小一致。而Fluid C++预测引擎没有此限制。设置TestReader中的`image_shape`可以修改保存模型中的输入图片大小。示例如下:
4848

deploy/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
训练得到一个满足要求的模型后,如果想要将该模型部署到已选择的平台上,需要通过`tools/export_model.py`将模型导出预测部署的模型和配置文件。
33
并在同一文件夹下导出预测时使用的配置文件,配置文件名为`infer_cfg.yml`
44

5-
## `PaddleDetection`目前支持的部署方式按照部署设备可以分为:
5+
## 1、`PaddleDetection`目前支持的部署方式按照部署设备可以分为:
66
- 在本机`python`语言部署,支持在有`python paddle`(支持`CPU``GPU`)环境下部署,有两种方式:
77
- 使用`tools/infer.py`,此种方式依赖`PaddleDetection`代码库。
88
- 将模型导出,使用`deploy/python/infer.py`,此种方式不依赖`PaddleDetection`代码库,可以单个`python`文件部署。
@@ -13,7 +13,7 @@
1313
- `NV Jetson`嵌入式设备上部署
1414
- `TensorRT`加速请参考文档[TensorRT预测部署教程](TENSOR_RT.md)
1515

16-
## 模型导出
16+
## 2、模型导出
1717
使用`tools/export_model.py`脚本导出模型已经部署时使用的配置文件,配置文件名字为`infer_cfg.yml`。模型导出脚本如下:
1818
```bash
1919
# 导出YOLOv3模型
@@ -29,12 +29,12 @@ python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml -o
2929

3030
模型导出具体请参考文档[PaddleDetection模型导出教程](EXPORT_MODEL.md)
3131

32-
## 如何选择部署时依赖库的版本
32+
## 3、如何选择部署时依赖库的版本
3333

34-
### CUDA、cuDNN、TensorRT版本选择
34+
### (1)CUDA、cuDNN、TensorRT版本选择
3535
由于CUDA、cuDNN、TENSORRT不一定都是向前兼容的,需要使用与编译Paddle预测库使用的环境完全一致的环境进行部署。
3636

37-
### 部署时预测库版本、预测引擎版本选择
37+
### (2)部署时预测库版本、预测引擎版本选择
3838

3939
- Linux、Windows平台下C++部署,需要使用Paddle预测库进行部署。
4040
(1)Paddle官网提供在不同平台、不同环境下编译好的预测库,您可以直接使用,请在这里[Paddle预测库](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/build_and_install_lib_cn.html) 选择。
@@ -55,7 +55,7 @@ python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml -o
5555
若列表中没有您需要的预测库,您可以在您的平台上自行编译,编译过程请参考[Paddle源码编译](https://www.paddlepaddle.org.cn/documentation/docs/zh/install/compile/linux-compile.html)
5656

5757

58-
## 部署
58+
## 4、部署
5959
- C++部署,先使用跨平台编译工具`CMake`根据`CMakeLists.txt`生成`Makefile`,支持`Windows、Linux、NV Jetson`平台,然后进行编译产出可执行文件。可以直接使用`cpp/scripts/build.sh`脚本编译:
6060
```buildoutcfg
6161
cd cpp
@@ -69,7 +69,7 @@ sh scripts/build.sh
6969
- 手机移动端部署,请参考[Paddle-Lite-Demo](https://github.com/PaddlePaddle/Paddle-Lite-Demo)部署。
7070

7171

72-
## 常见问题QA
72+
## 5、常见问题QA
7373
- 1、`Paddle 1.8.4`训练的模型,可以用`Paddle2.0`部署吗?
7474
Paddle 2.0是兼容Paddle 1.8.4的,因此是可以的。但是部分模型(如SOLOv2)使用到了Paddle 2.0中新增OP,这类模型不可以。
7575

0 commit comments

Comments
 (0)