Skip to content

Commit d883d4b

Browse files
committed
update docs
1 parent e5a6685 commit d883d4b

File tree

7 files changed

+61
-20
lines changed

7 files changed

+61
-20
lines changed

docs/deploy/server/cpp/linux.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ yaml-cpp.zip文件下载后无需解压,在cmake/yaml.cmake中将`URL https://
136136

137137
可使用[小度熊识别模型](../../export_model.md)中导出的`inference_model`和测试图片进行预测,导出到/root/projects,模型路径为/root/projects/inference_model。
138138

139+
> 关于预测速度的说明:Paddle在部署预测时,由于涉及到内存显存初始化等原因,在模型加载后刚开始预测速度会较慢,一般在模型运行20~50后(即预测20~30张图片)预测速度才会稳定。
140+
139141
`样例一`
140142

141143
不使用`GPU`测试图片 `/root/projects/images/xiaoduxiong.jpeg`

docs/deploy/server/cpp/windows.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ cd D:\projects\PaddleX\deploy\cpp\out\build\x64-Release
129129

130130
可使用[小度熊识别模型](../../export_model.md)中导出的`inference_model`和测试图片进行预测, 例如导出到D:\projects,模型路径为D:\projects\inference_model。
131131

132+
> 关于预测速度的说明:Paddle在部署预测时,由于涉及到内存显存初始化等原因,在模型加载后刚开始预测速度会较慢,一般在模型运行20~50后(即预测20~30张图片)预测速度才会稳定。
133+
132134
### 样例一:(使用未加密的模型对单张图像做预测)
133135

134136
不使用`GPU`测试图片 `D:\images\xiaoduxiong.jpeg`

docs/deploy/server/python.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ PaddleX已经集成了基于Python的高性能预测接口,在安装PaddleX后
55
可参考[模型导出](../export_model.md)将模型导出为inference格式的模型。
66

77
## 预测部署
8-
**注意:由于PaddleX代码的持续更新,版本低于1.0.0的模型暂时无法直接用于预测部署,参考[模型版本升级](../upgrade_version.md)对模型版本进行升级。**
9-
108
> 点击下载测试图片 [xiaoduxiong_test_image.tar.gz](https://bj.bcebos.com/paddlex/datasets/xiaoduxiong_test_image.tar.gz)
119
1210
```
@@ -15,6 +13,8 @@ predictor = pdx.deploy.Predictor('./inference_model')
1513
result = predictor.predict(image='xiaoduxiong_test_image/JPEGImages/WeChatIMG110.jpeg')
1614
```
1715

16+
> 关于预测速度的说明:采用Paddle的Predictor进行预测时,由于涉及到内存显存初始化等原因,在模型加载后刚开始预测速度会较慢,一般在模型运行20~50后(即预测20~30张图片)预测速度才会稳定。
17+
1818
## 预测性能对比
1919
### 测试环境
2020

docs/train/images/mask_predict.jpg

152 KB
Loading

docs/train/images/yolo_predict.jpg

163 KB
Loading

docs/train/prediction.md

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,63 @@
33
PaddleX可以使用`load_model`接口加载模型(包括训练过程中保存的模型,导出的部署模型,量化模型以及裁剪的模型)进行预测,同时PaddleX中也内置了一系列的可视化工具函数,帮助用户方便地检查模型的效果。
44

55
## 图像分类
6+
7+
> [点击下载](https://bj.bcebos.com/paddlex/models/mobilenetv3_small_ssld_imagenet.tar.gz)如下示例代码中模型
68
```
79
import paddlex as pdx
8-
model = pdx.load_model('./mobilenetv2')
9-
result = model.predict('./mobilenetv2/test.jpg')
10+
test_jpg = 'mobilenetv3_small_ssld_imagenet/test.jpg'
11+
model = pdx.load_model('mobilenetv3_small_ssld_imagenet')
12+
result = model.predict(test_jpg)
1013
print("Predict Result: ", result)
1114
```
15+
结果输入如下
16+
```
17+
Predict Result: [{'category_id': 21, 'category': 'killer_whale', 'score': 0.8262267}]
18+
```
19+
测试图片如下
20+
21+
22+
- 分类模型predict接口[说明文档](../apis/models/classification.html#predict)
23+
24+
25+
## 目标检测
26+
27+
> [点击下载](https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv1_coco.tar.gz)如下示例代码中模型
28+
```
29+
import paddlex as pdx
30+
test_jpg = 'yolov3_mobilenetv1_coco/test.jpg'
31+
model = pdx.load_model('yolov3_mobilenetv1_coco')
1232
33+
# predict接口并未过滤低置信度识别结果,用户根据需求按score值进行过滤
34+
result = model.predict(test_jpg)
1335
14-
## 目标检测和实例分割
36+
# 可视化结果存储在./visualized_test.jpg, 见下图
37+
pdx.det.visualize(test_jpg, result, threshold=0.3, save_dir='./')
38+
```
39+
- YOLOv3模型predict接口[说明文档](../apis/models/detection.html#predict)
40+
- 可视化pdx.det.visualize接口[说明文档](../apis/visualize.html#paddlex-det-visualize)
41+
> 注意:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`threshold`用于过滤,置信度低于此值的结果将被过滤,不会可视化。
42+
![](./images/yolo_predict.jpg)
43+
44+
## 实例分割
45+
46+
> [点击下载](https://bj.bcebos.com/paddlex/models/mask_r50_fpn_coco.tar.gz)如下示例代码中模型
1547
```
1648
import paddlex as pdx
17-
test_jpg = './xiaoduxiong_epoch_12/test.jpg'
18-
model = pdx.load_model('./xiaoduxiong_epoch_12')
49+
test_jpg = 'mask_r50_fpn_coco/test.jpg'
50+
model = pdx.load_model('mask_r50_fpn_coco')
51+
52+
# predict接口并未过滤低置信度识别结果,用户根据需求按score值进行过滤
1953
result = model.predict(test_jpg)
20-
pdx.det.visualize(test_jpg, result, thresh=0.5, save_dir='./')
54+
55+
# 可视化结果存储在./visualized_test.jpg, 见下图
56+
pdx.det.visualize(test_jpg, result, threshold=0.5, save_dir='./')
2157
```
22-
在上述示例代码中,通过调用`paddlex.det.visualize`可以对目标检测/实例分割的预测结果进行可视化,可视化的结果保存在`save_dir`下。
23-
> 注意:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`thresh`用于过滤,置信度低于此值的结果将被过滤,不会可视化。
58+
- MaskRCNN模型predict接口[说明文档](../apis/models/instance_segmentation.html#predict)
59+
- 可视化pdx.det.visualize接口[说明文档](../apis/visualize.html#paddlex-det-visualize)
2460

61+
> 注意:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`threshold`用于过滤,置信度低于此值的结果将被过滤,不会可视化。
62+
![](./images/mask_predict.jpg)
2563

2664
## 语义分割
2765
```
@@ -31,6 +69,7 @@ model = pdx.load_model('./deeplabv3p_mobilenetv2_coco')
3169
result = model.predict(test_jpg)
3270
pdx.seg.visualize(test_jpg, result, weight=0.0, save_dir='./')
3371
```
72+
3473
在上述示例代码中,通过调用`paddlex.seg.visualize`可以对语义分割的预测结果进行可视化,可视化的结果保存在`save_dir`下。其中`weight`参数用于调整预测结果和原图结果融合展现时的权重,0.0时只展示预测结果mask的可视化,1.0时只展示原图可视化。
3574

3675

@@ -47,8 +86,8 @@ PaddleX提供了部分公开数据集上训练好的模型,用户可以直接
4786
| 目标检测 | [YOLOv3-DarkNet53](https://bj.bcebos.com/paddlex/models/yolov3_darknet53_coco.tar.gz) | MSCOCO | 266MMB | Box MAP | 34.8% |
4887
| 目标检测 | [YOLOv3-MobileNetV3](https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv3_coco.tar.gz) | MSCOCO | 101MB | Box MAP | 31.6% |
4988
| 实例分割 | [MaskRCNN-ResNet50-FPN](https://bj.bcebos.com/paddlex/models/mask_r50_fpn_coco.tar.gz) | MSCOCO | 193MB | Box MAP/Seg MAP | 38.7% / 34.7% |
50-
| 语义分割 | [DeepLabv3p-Xception65]() | 人像分割 | xxMB | mIoU | - |
51-
| 语义分割 | [HRNet_w18_small]() | 人像分割 | xxMB | mIou | - |
89+
| 语义分割 | DeepLabv3p-Xception65 | 人像分割 | - | mIoU | - |
90+
| 语义分割 | HRNet_w18_small | 人像分割 | - | mIou | - |
5291

5392
PaddleX的`load_model`接口可以满足用户一般的模型调研需求,如若为更高性能的预测部署,可以参考如下文档
5493

paddlex/cv/models/mask_rcnn.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,8 @@ def evaluate(self,
280280

281281
total_steps = math.ceil(eval_dataset.num_samples * 1.0 / batch_size)
282282
results = list()
283-
logging.info(
284-
"Start to evaluating(total_samples={}, total_steps={})...".format(
285-
eval_dataset.num_samples, total_steps))
283+
logging.info("Start to evaluating(total_samples={}, total_steps={})...".
284+
format(eval_dataset.num_samples, total_steps))
286285
for step, data in tqdm.tqdm(
287286
enumerate(data_generator()), total=total_steps):
288287
images = np.array([d[0] for d in data]).astype('float32')
@@ -326,8 +325,7 @@ def evaluate(self,
326325
zip(['bbox_map', 'segm_map'],
327326
[ap_stats[0][1], ap_stats[1][1]]))
328327
else:
329-
metrics = OrderedDict(
330-
zip(['bbox_map', 'segm_map'], [0.0, 0.0]))
328+
metrics = OrderedDict(zip(['bbox_map', 'segm_map'], [0.0, 0.0]))
331329
elif metric == 'COCO':
332330
if isinstance(ap_stats[0], np.ndarray) and isinstance(ap_stats[1],
333331
np.ndarray):
@@ -397,7 +395,7 @@ def predict(self, img_file, transforms=None):
397395

398396
res = {
399397
k: (np.array(v), v.recursive_sequence_lengths())
400-
for k, v in zip(lists(self.test_outputs.keys()), result)
398+
for k, v in zip(list(self.test_outputs.keys()), result)
401399
}
402400
res['im_id'] = (np.array(
403401
[[i] for i in range(len(images))]).astype('int32'), [])
@@ -431,8 +429,8 @@ def batch_predict(self, img_file_list, transforms=None, thread_num=2):
431429
if transforms is None:
432430
transforms = self.test_transforms
433431
im, im_resize_info, im_shape = FasterRCNN._preprocess(
434-
img_file_list, transforms, self.model_type,
435-
self.__class__.__name__, thread_num)
432+
img_file_list, transforms, self.model_type, self.__class__.__name__,
433+
thread_num)
436434

437435
with fluid.scope_guard(self.scope):
438436
result = self.exe.run(self.test_prog,

0 commit comments

Comments
 (0)