Skip to content

Commit 92d9a59

Browse files
authored
Merge pull request #217 from FlyingQianMM/develop_qh
change download links of human_seg,add batch_predict in docs,replenish model_zoom
2 parents addd5e8 + 0180098 commit 92d9a59

File tree

14 files changed

+229
-33
lines changed

14 files changed

+229
-33
lines changed

docs/apis/deploy.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# 预测部署-paddlex.deploy
2+
3+
使用Paddle Inference进行高性能的Python预测部署。更多关于Paddle Inference信息请参考[Paddle Inference文档](https://paddle-inference.readthedocs.io/en/latest/#)
4+
5+
## Predictor类
6+
7+
图像分类、目标检测、实例分割、语义分割统一的预测器,实现高性能预测。
8+
9+
```
10+
paddlex.deploy.Predictor(model_dir, use_gpu=False, gpu_id=0, use_mkl=False, use_trt=False, use_glog=False, memory_optimize=True)
11+
```
12+
13+
**参数**
14+
15+
> * **model_dir** (str): 训练过程中保存的模型路径, 注意需要使用导出的inference模型。
16+
> * **use_gpu** (bool): 是否使用GPU进行预测。
17+
> * **gpu_id** (int): 使用的GPU序列号。
18+
> * **use_mkl** (bool): 是否使用mkldnn加速库。
19+
> * **use_trt** (boll): 是否使用TensorRT预测引擎。
20+
> * **use_glog** (bool): 是否打印中间日志。
21+
> * **memory_optimize** (bool): 是否优化内存使用。
22+
23+
> ### 示例
24+
>
25+
> ```
26+
> import paddlex
27+
>
28+
> model = paddlex.deploy.Predictor(model_dir, use_gpu=True)
29+
> result = model.predict(image_file)
30+
> ```
31+
32+
### predict 接口
33+
34+
```
35+
predict(image, topk=1)
36+
```
37+
38+
单张图片预测接口。
39+
40+
> **参数**
41+
>
42+
> > * **image** (str|np.ndarray): 待预测的图片路径或numpy数组(HWC排列,BGR格式)。
43+
> > * **topk** (int): 图像分类时使用的参数,表示预测前topk个可能的分类
44+
45+
### batch_predict 接口
46+
```
47+
batch_predict(image_list, topk=1, thread_num=2)
48+
```
49+
批量图片预测接口。
50+
51+
> **参数**
52+
>
53+
> > * **image_list** (list|tuple): 对列表(或元组)中的图像同时进行预测,列表中的元素可以是图像路径或numpy数组(HWC排列,BGR格式)。
54+
> > * **topk** (int): 图像分类时使用的参数,表示预测前topk个可能的分类。
55+
> > * **thread_num** (int): 并发执行各图像预处理时的线程数。

docs/apis/models/classification.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,26 @@ predict(self, img_file, transforms=None, topk=5)
7878
> > - **list**: 其中元素均为字典。字典的关键字为'category_id'、'category'、'score',
7979
> > 分别对应预测类别id、预测类别标签、预测得分。
8080
81+
### batch_predict
82+
83+
```python
84+
batch_predict(self, img_file_list, transforms=None, topk=5, thread_num=2)
85+
```
86+
87+
> 分类模型批量预测接口。需要注意的是,只有在训练过程中定义了eval_dataset,模型在保存时才会将预测时的图像处理流程保存在`ResNet50.test_transforms``ResNet50.eval_transforms`中。如未在训练时定义eval_dataset,那在调用预测`predict`接口时,用户需要再重新定义test_transforms传入给`predict`接口。
88+
89+
> **参数**
90+
>
91+
> > - **img_file_list** (list|tuple): 对列表(或元组)中的图像同时进行预测,列表中的元素可以是图像路径或numpy数组(HWC排列,BGR格式)。
92+
> > - **transforms** (paddlex.cls.transforms): 数据预处理操作。
93+
> > - **topk** (int): 预测时前k个最大值。
94+
> > - **thread_num** (int): 并发执行各图像预处理时的线程数。
95+
96+
> **返回值**
97+
>
98+
> > - **list**: 每个元素都为列表,表示各图像的预测结果。在各图像的预测列表中,其中元素均为字典。字典的关键字为'category_id'、'category'、'score',分别对应预测类别id、预测类别标签、预测得分。
99+
100+
81101
## 其它分类模型
82102

83103
PaddleX提供了共计22种分类模型,所有分类模型均提供同`ResNet50`相同的训练`train`,评估`evaluate`和预测`predict`接口,各模型效果可参考[模型库](https://paddlex.readthedocs.io/zh_CN/latest/appendix/model_zoo.html)
@@ -106,3 +126,4 @@ PaddleX提供了共计22种分类模型,所有分类模型均提供同`ResNet5
106126
| DenseNet161 | paddlex.cls.DenseNet161(num_classes=1000) |
107127
| DenseNet201 | paddlex.cls.DenseNet201(num_classes=1000) |
108128
| HRNet_W18 | paddlex.cls.HRNet_W18(num_classes=1000) |
129+
| AlexNet | paddlex.cls.AlexNet(num_classes=1000) |

docs/apis/models/detection.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,26 @@ predict(self, img_file, transforms=None)
9595
> > - **list**: 预测结果列表,列表中每个元素均为一个dict,key包括'bbox', 'category', 'category_id', 'score',分别表示每个预测目标的框坐标信息、类别、类别id、置信度,其中框坐标信息为[xmin, ymin, w, h],即左上角x, y坐标和框的宽和高。
9696
9797

98+
### batch_predict
99+
100+
```python
101+
batch_predict(self, img_file_list, transforms=None, thread_num=2)
102+
```
103+
104+
> YOLOv3模型批量预测接口。需要注意的是,只有在训练过程中定义了eval_dataset,模型在保存时才会将预测时的图像处理流程保存在`YOLOv3.test_transforms``YOLOv3.eval_transforms`中。如未在训练时定义eval_dataset,那在调用预测`predict`接口时,用户需要再重新定义`test_transforms`传入给`predict`接口
105+
106+
> **参数**
107+
>
108+
> > - **img_file_list** (str|np.ndarray): 对列表(或元组)中的图像同时进行预测,列表中的元素是预测图像路径或numpy数组(HWC排列,BGR格式)。
109+
> > - **transforms** (paddlex.det.transforms): 数据预处理操作。
110+
> > - **thread_num** (int): 并发执行各图像预处理时的线程数。
111+
>
112+
> **返回值**
113+
>
114+
> > - **list**: 每个元素都为列表,表示各图像的预测结果。在各图像的预测结果列表中,每个元素均为一个dict,key包括'bbox', 'category', 'category_id', 'score',分别表示每个预测目标的框坐标信息、类别、类别id、置信度,其中框坐标信息为[xmin, ymin, w, h],即左上角x, y坐标和框的宽和高。
115+
116+
117+
98118
## paddlex.det.FasterRCNN
99119

100120
```python
@@ -178,3 +198,22 @@ predict(self, img_file, transforms=None)
178198
> **返回值**
179199
>
180200
> > - **list**: 预测结果列表,列表中每个元素均为一个dict,key包括'bbox', 'category', 'category_id', 'score',分别表示每个预测目标的框坐标信息、类别、类别id、置信度,其中框坐标信息为[xmin, ymin, w, h],即左上角x, y坐标和框的宽和高。
201+
202+
203+
### batch_predict
204+
205+
```python
206+
batch_predict(self, img_file_list, transforms=None, thread_num=2)
207+
```
208+
209+
> FasterRCNN模型批量预测接口。需要注意的是,只有在训练过程中定义了eval_dataset,模型在保存时才会将预测时的图像处理流程保存在`FasterRCNN.test_transforms``FasterRCNN.eval_transforms`中。如未在训练时定义eval_dataset,那在调用预测`predict`接口时,用户需要再重新定义test_transforms传入给`predict`接口。
210+
211+
> **参数**
212+
>
213+
> > - **img_file_list** (list|tuple): 对列表(或元组)中的图像同时进行预测,列表中的元素是预测图像路径或numpy数组(HWC排列,BGR格式)。
214+
> > - **transforms** (paddlex.det.transforms): 数据预处理操作。
215+
> > - **thread_num** (int): 并发执行各图像预处理时的线程数。
216+
>
217+
> **返回值**
218+
>
219+
> > - **list**: 每个元素都为列表,表示各图像的预测结果。在各图像的预测结果列表中,每个元素均为一个dict,key包括'bbox', 'category', 'category_id', 'score',分别表示每个预测目标的框坐标信息、类别、类别id、置信度,其中框坐标信息为[xmin, ymin, w, h],即左上角x, y坐标和框的宽和高。

docs/apis/models/instance_segmentation.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,22 @@ predict(self, img_file, transforms=None)
8383
> **返回值**
8484
>
8585
> > - **list**: 预测结果列表,列表中每个元素均为一个dict,key'bbox', 'mask', 'category', 'category_id', 'score',分别表示每个预测目标的框坐标信息、Mask信息,类别、类别id、置信度。其中框坐标信息为[xmin, ymin, w, h],即左上角x, y坐标和框的宽和高。Mask信息为原图大小的二值图,1表示像素点属于预测类别,0表示像素点是背景。
86+
87+
88+
#### batch_predict
89+
90+
```python
91+
batch_predict(self, img_file_list, transforms=None, thread_num=2)
92+
```
93+
94+
> MaskRCNN模型批量预测接口。需要注意的是,只有在训练过程中定义了eval_dataset,模型在保存时才会将预测时的图像处理流程保存在FasterRCNN.test_transforms和FasterRCNN.eval_transforms中。如未在训练时定义eval_dataset,那在调用预测predict接口时,用户需要再重新定义test_transforms传入给predict接口。
95+
96+
> **参数**
97+
>
98+
> > - **img_file_list** (list|tuple): 对列表(或元组)中的图像同时进行预测,列表中的元素可以是预测图像路径或numpy数组(HWC排列,BGR格式)。
99+
> > - **transforms** (paddlex.det.transforms): 数据预处理操作。
100+
> > - **thread_num** (int): 并发执行各图像预处理时的线程数。
101+
>
102+
> **返回值**
103+
>
104+
> > - **list**: 每个元素都为列表,表示各图像的预测结果。在各图像的预测结果列表中,每个元素均为一个dict,key'bbox', 'mask', 'category', 'category_id', 'score',分别表示每个预测目标的框坐标信息、Mask信息,类别、类别id、置信度。其中框坐标信息为[xmin, ymin, w, h],即左上角x, y坐标和框的宽和高。Mask信息为原图大小的二值图,1表示像素点属于预测类别,0表示像素点是背景。

docs/apis/models/semantic_segmentation.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ evaluate(self, eval_dataset, batch_size=1, epoch_id=None, return_details=False):
7676
### predict
7777

7878
```
79-
predict(self, im_file, transforms=None):
79+
predict(self, img_file, transforms=None):
8080
```
8181

8282
> DeepLabv3p模型预测接口。需要注意的是,只有在训练过程中定义了eval_dataset,模型在保存时才会将预测时的图像处理流程保存在`DeepLabv3p.test_transforms``DeepLabv3p.eval_transforms`中。如未在训练时定义eval_dataset,那在调用预测`predict`接口时,用户需要再重新定义test_transforms传入给`predict`接口。
@@ -85,11 +85,31 @@ predict(self, im_file, transforms=None):
8585
> >
8686
> > - **img_file** (str|np.ndarray): 预测图像路径或numpy数组(HWC排列,BGR格式)。
8787
> > - **transforms** (paddlex.seg.transforms): 数据预处理操作。
88-
88+
> > - **thread_num** (int): 并发执行各图像预处理时的线程数。
8989
> **返回值**
9090
> >
9191
> > - **dict**: 包含关键字'label_map'和'score_map', 'label_map'存储预测结果灰度图,像素值表示对应的类别,'score_map'存储各类别的概率,shape=(h, w, num_classes)。
9292
93+
94+
### batch_predict
95+
96+
```
97+
batch_predict(self, img_file_list, transforms=None):
98+
```
99+
100+
> DeepLabv3p模型批量预测接口。需要注意的是,只有在训练过程中定义了eval_dataset,模型在保存时才会将预测时的图像处理流程保存在`DeepLabv3p.test_transforms``DeepLabv3p.eval_transforms`中。如未在训练时定义eval_dataset,那在调用预测`predict`接口时,用户需要再重新定义test_transforms传入给`predict`接口。
101+
102+
> **参数**
103+
> >
104+
> > - **img_file_list** (list|tuple): 对列表(或元组)中的图像同时进行预测,列表中的元素可以是预测图像路径或numpy数组(HWC排列,BGR格式)。
105+
> > - **transforms** (paddlex.seg.transforms): 数据预处理操作。
106+
107+
> **返回值**
108+
> >
109+
> > - **dict**: 每个元素都为列表,表示各图像的预测结果。各图像的预测结果用字典表示,包含关键字'label_map'和'score_map', 'label_map'存储预测结果灰度图,像素值表示对应的类别,'score_map'存储各类别的概率,shape=(h, w, num_classes)。
110+
111+
112+
93113
## paddlex.seg.UNet
94114

95115
```python
@@ -110,6 +130,7 @@ paddlex.seg.UNet(num_classes=2, upsample_mode='bilinear', use_bce_loss=False, us
110130
> - train 训练接口说明同 [DeepLabv3p模型train接口](#train)
111131
> - evaluate 评估接口说明同 [DeepLabv3p模型evaluate接口](#evaluate)
112132
> - predict 预测接口说明同 [DeepLabv3p模型predict接口](#predict)
133+
> - batch_predict 批量预测接口说明同 [DeepLabv3p模型predict接口](#batch-predict)
113134
114135
## paddlex.seg.HRNet
115136

@@ -131,6 +152,7 @@ paddlex.seg.HRNet(num_classes=2, width=18, use_bce_loss=False, use_dice_loss=Fal
131152
> - train 训练接口说明同 [DeepLabv3p模型train接口](#train)
132153
> - evaluate 评估接口说明同 [DeepLabv3p模型evaluate接口](#evaluate)
133154
> - predict 预测接口说明同 [DeepLabv3p模型predict接口](#predict)
155+
> - batch_predict 批量预测接口说明同 [DeepLabv3p模型predict接口](#batch-predict)
134156
135157
## paddlex.seg.FastSCNN
136158

@@ -152,3 +174,4 @@ paddlex.seg.FastSCNN(num_classes=2, use_bce_loss=False, use_dice_loss=False, cla
152174
> - train 训练接口说明同 [DeepLabv3p模型train接口](#train)
153175
> - evaluate 评估接口说明同 [DeepLabv3p模型evaluate接口](#evaluate)
154176
> - predict 预测接口说明同 [DeepLabv3p模型predict接口](#predict)
177+
> - batch_predict 批量预测接口说明同 [DeepLabv3p模型predict接口](#batch-predict)

docs/appendix/model_zoo.md

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# PaddleX模型库
22

33
## 图像分类模型
4-
> 表中模型相关指标均为在ImageNet数据集上使用PaddlePaddle Python预测接口测试得到(测试GPU型号为Nvidia Tesla P40),预测速度为每张图片预测用时(不包括预处理和后处理),表中符号`-`表示相关指标暂未测试。
4+
> 表中模型相关指标均为在ImageNet数据集上使用PaddlePaddle Python预测接口测试得到(测试GPU型号为Nvidia Tesla P40),预测速度为每张图片预测用时(不包括预处理和后处理)表中符号`-`表示相关指标暂未测试。
55
66

77
| 模型 | 模型大小 | 预测速度(毫秒) | Top1准确率(%) | Top5准确率(%) |
@@ -28,10 +28,11 @@
2828
| [DenseNet201](https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet201_pretrained.tar)| 84.1MB | 25.26089 | 77.6 | 93.7 |
2929
| [ShuffleNetV2](https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_pretrained.tar) | 10.2MB | 15.40138 | 68.8 | 88.5 |
3030
| [HRNet_W18](https://paddle-imagenet-models-name.bj.bcebos.com/HRNet_W18_C_pretrained.tar) | 21.29MB |45.25514 | 76.9 | 93.4 |
31+
| [AlexNet](https://paddle-imagenet-models-name.bj.bcebos.com/AlexNet_pretrained.tar) | 244.4MB | - | 56.7 | 79.2 |
3132

3233
## 目标检测模型
3334

34-
> 表中模型相关指标均为在MSCOCO数据集上使用PaddlePaddle Python预测接口测试得到(测试GPU型号为Nvidia Tesla V100测试得到),表中符号`-`表示相关指标暂未测试。
35+
> 表中模型相关指标均为在MSCOCO数据集上使用PaddlePaddle Python预测接口测试得到(测试GPU型号为Nvidia Tesla V100测试得到)表中符号`-`表示相关指标暂未测试。
3536
3637
| 模型 | 模型大小 | 预测时间(毫秒) | BoxAP(%) |
3738
|:-------|:-----------|:-------------|:----------|
@@ -50,12 +51,34 @@
5051

5152
## 实例分割模型
5253

53-
> 表中模型相关指标均为在MSCOCO数据集上测试得到。
54+
> 预测时间是在一张Nvidia Tesla V100的GPU上通过'evaluate()'接口测试MSCOCO验证集得到,包括数据加载、网络前向执行和后处理, batch size是1,表中符号`-`表示相关指标暂未测试。
55+
56+
| 模型 | 模型大小 | 预测时间(毫秒) | BoxAP (%) | MaskAP (%) |
57+
|:-------|:-----------|:-------------|:----------|:----------|
58+
|[MaskRCNN-ResNet50](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_2x.tar) | 143.9MB | 87 | 38.2 | 33.4 |
59+
|[MaskRCNN-ResNet50-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_fpn_2x.tar)| 177.7MB | 63.9 | 38.7 | 34.7 |
60+
|[MaskRCNN-ResNet50_vd-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_vd_fpn_2x.tar) | 177.7MB | 63.1 | 39.8 || 35.4 |
61+
|[MaskRCNN-ResNet101-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r101_fpn_1x.tar) | 253.6MB | 77 | 39.5 | 35.2 |
62+
|[MaskRCNN-ResNet101_vd-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r101_vd_fpn_1x.tar) | 253.7MB | 76.4 | 41.4 | 36.8 |
63+
|[MaskRCNN-HRNet_W18-FPN](https://bj.bcebos.com/paddlex/pretrained_weights/mask_rcnn_hrnetv2p_w18_2x.tar) | 120.7MB | - | 38.7 | 34.7 |
64+
65+
66+
## 语义分割模型
67+
68+
> 以下指标均在MSCOCO验证集上测试得到,表中符号`-`表示相关指标暂未测试。
69+
70+
| 模型 | 模型大小 | 预测时间(毫秒) | mIoU(%) |
71+
|:-------|:-----------|:-------------|:----------|
72+
|[DeepLabv3_MobileNetV2_x1.0](https://bj.bcebos.com/v1/paddleseg/deeplab_mobilenet_x1_0_coco.tgz)| 14.7MB | - | - |
73+
|[DeepLabv3_Xception65](https://paddleseg.bj.bcebos.com/models/xception65_coco.tgz)| 329.3MB | - | - |
74+
|[UNet](https://paddleseg.bj.bcebos.com/models/unet_coco_v3.tgz) | 107.3MB | - | - |
75+
76+
77+
> 以下指标均在Cityscapes验证集上测试得到,表中符号`-`表示相关指标暂未测试。
5478
5579
| 模型 | 模型大小 | 预测时间(毫秒) | mIoU(%) |
5680
|:-------|:-----------|:-------------|:----------|
57-
|DeepLabv3+-MobileNetV2_x1.0|-| - | - |
58-
|DeepLabv3+-Xception41|-| - | - |
59-
|DeepLabv3+-Xception65|-| - | - |
60-
|UNet|-| - | - |
61-
|HRNet_w18|-| - | - |
81+
| [DeepLabv3_MobileNetv2_x1.0](https://paddleseg.bj.bcebos.com/models/mobilenet_cityscapes.tgz) | 14.7MB | - | 69.8 |
82+
| [DeepLabv3_Xception65](https://paddleseg.bj.bcebos.com/models/xception65_bn_cityscapes.tgz) | 329.3MB | - | 79.3 |
83+
| [HRNet_W18](https://paddleseg.bj.bcebos.com/models/hrnet_w18_bn_cityscapes.tgz) | 77.3MB | | 79.36 |
84+
| [Fast-SCNN](https://paddleseg.bj.bcebos.com/models/fast_scnn_cityscape.tar) | 9.8MB | | 69.64 |

docs/deploy/server/python.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,28 @@
11
# Python部署
2-
PaddleX已经集成了基于Python的高性能预测接口,在安装PaddleX后,可参照如下代码示例,进行预测。相关的接口文档可参考[paddlex.deploy](../../../apis/deploy.md)
2+
PaddleX已经集成了基于Python的高性能预测接口,在安装PaddleX后,可参照如下代码示例,进行预测。相关的接口文档可参考[paddlex.deploy](../../apis/deploy.md)
33

44
## 导出预测模型
55
可参考[模型导出](../export_model.md)将模型导出为inference格式的模型。
66

77
## 预测部署
88
> 点击下载测试图片 [xiaoduxiong_test_image.tar.gz](https://bj.bcebos.com/paddlex/datasets/xiaoduxiong_test_image.tar.gz)
99
10+
* 单张图片预测
11+
1012
```
1113
import paddlex as pdx
1214
predictor = pdx.deploy.Predictor('./inference_model')
1315
result = predictor.predict(image='xiaoduxiong_test_image/JPEGImages/WeChatIMG110.jpeg')
1416
```
17+
* 批量图片预测
18+
19+
```
20+
import paddlex as pdx
21+
predictor = pdx.deploy.Predictor('./inference_model')
22+
image_list = ['xiaoduxiong_test_image/JPEGImages/WeChatIMG110.jpeg',
23+
'xiaoduxiong_test_image/JPEGImages/WeChatIMG111.jpeg']
24+
result = predictor.predict(image_list=image_list)
25+
```
1526

1627
> 关于预测速度的说明:采用Paddle的Predictor进行预测时,由于涉及到内存显存初始化等原因,在模型加载后刚开始预测速度会较慢,一般在模型运行20~50后(即预测20~30张图片)预测速度才会稳定。
1728

0 commit comments

Comments
 (0)