Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
d883d4b5
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d883d4b5
编写于
7月 12, 2020
作者:
J
jiangjiajun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update docs
上级
e5a66857
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
61 addition
and
20 deletion
+61
-20
docs/deploy/server/cpp/linux.md
docs/deploy/server/cpp/linux.md
+2
-0
docs/deploy/server/cpp/windows.md
docs/deploy/server/cpp/windows.md
+2
-0
docs/deploy/server/python.md
docs/deploy/server/python.md
+2
-2
docs/train/images/mask_predict.jpg
docs/train/images/mask_predict.jpg
+0
-0
docs/train/images/yolo_predict.jpg
docs/train/images/yolo_predict.jpg
+0
-0
docs/train/prediction.md
docs/train/prediction.md
+49
-10
paddlex/cv/models/mask_rcnn.py
paddlex/cv/models/mask_rcnn.py
+6
-8
未找到文件。
docs/deploy/server/cpp/linux.md
浏览文件 @
d883d4b5
...
...
@@ -136,6 +136,8 @@ yaml-cpp.zip文件下载后无需解压,在cmake/yaml.cmake中将`URL https://
可使用
[
小度熊识别模型
](
../../export_model.md
)
中导出的
`inference_model`
和测试图片进行预测,导出到/root/projects,模型路径为/root/projects/inference_model。
> 关于预测速度的说明:Paddle在部署预测时,由于涉及到内存显存初始化等原因,在模型加载后刚开始预测速度会较慢,一般在模型运行20~50后(即预测20~30张图片)预测速度才会稳定。
`样例一`
:
不使用
`GPU`
测试图片
`/root/projects/images/xiaoduxiong.jpeg`
...
...
docs/deploy/server/cpp/windows.md
浏览文件 @
d883d4b5
...
...
@@ -129,6 +129,8 @@ cd D:\projects\PaddleX\deploy\cpp\out\build\x64-Release
可使用[小度熊识别模型](../../export_model.md)中导出的`
inference_model
`和测试图片进行预测, 例如导出到D:\projects,模型路径为D:\projects\inference_model。
> 关于预测速度的说明:Paddle在部署预测时,由于涉及到内存显存初始化等原因,在模型加载后刚开始预测速度会较慢,一般在模型运行20~50后(即预测20~30张图片)预测速度才会稳定。
### 样例一:(使用未加密的模型对单张图像做预测)
不使用`
GPU
`测试图片 `
D:
\i
mages
\x
iaoduxiong.jpeg
`
...
...
docs/deploy/server/python.md
浏览文件 @
d883d4b5
...
...
@@ -5,8 +5,6 @@ PaddleX已经集成了基于Python的高性能预测接口,在安装PaddleX后
可参考
[
模型导出
](
../export_model.md
)
将模型导出为inference格式的模型。
## 预测部署
**注意:由于PaddleX代码的持续更新,版本低于1.0.0的模型暂时无法直接用于预测部署,参考[模型版本升级](../upgrade_version.md)对模型版本进行升级。**
> 点击下载测试图片 [xiaoduxiong_test_image.tar.gz](https://bj.bcebos.com/paddlex/datasets/xiaoduxiong_test_image.tar.gz)
```
...
...
@@ -15,6 +13,8 @@ predictor = pdx.deploy.Predictor('./inference_model')
result = predictor.predict(image='xiaoduxiong_test_image/JPEGImages/WeChatIMG110.jpeg')
```
> 关于预测速度的说明:采用Paddle的Predictor进行预测时,由于涉及到内存显存初始化等原因,在模型加载后刚开始预测速度会较慢,一般在模型运行20~50后(即预测20~30张图片)预测速度才会稳定。
## 预测性能对比
### 测试环境
...
...
docs/train/images/mask_predict.jpg
0 → 100644
浏览文件 @
d883d4b5
152.2 KB
docs/train/images/yolo_predict.jpg
0 → 100644
浏览文件 @
d883d4b5
163.5 KB
docs/train/prediction.md
浏览文件 @
d883d4b5
...
...
@@ -3,25 +3,63 @@
PaddleX可以使用
`load_model`
接口加载模型(包括训练过程中保存的模型,导出的部署模型,量化模型以及裁剪的模型)进行预测,同时PaddleX中也内置了一系列的可视化工具函数,帮助用户方便地检查模型的效果。
## 图像分类
> [点击下载](https://bj.bcebos.com/paddlex/models/mobilenetv3_small_ssld_imagenet.tar.gz)如下示例代码中模型
```
import
paddlex
as
pdx
model
=
pdx
.
load_model
(
'./mobilenetv2'
)
result
=
model
.
predict
(
'./mobilenetv2/test.jpg'
)
test_jpg
=
'mobilenetv3_small_ssld_imagenet/test.jpg'
model
=
pdx
.
load_model
(
'mobilenetv3_small_ssld_imagenet'
)
result
=
model
.
predict
(
test_jpg
)
print
(
"Predict Result: "
,
result
)
```
结果输入如下
```
Predict Result: [{'category_id': 21, 'category': 'killer_whale', 'score': 0.8262267}]
```
测试图片如下
-
分类模型predict接口
[
说明文档
](
../apis/models/classification.html#predict
)
## 目标检测
> [点击下载](https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv1_coco.tar.gz)如下示例代码中模型
```
import
paddlex
as
pdx
test_jpg
=
'yolov3_mobilenetv1_coco/test.jpg'
model
=
pdx
.
load_model
(
'yolov3_mobilenetv1_coco'
)
#
predict
接口并未过滤低置信度识别结果,用户根据需求按
score
值进行过滤
result
=
model
.
predict
(
test_jpg
)
## 目标检测和实例分割
#
可视化结果存储在
./
visualized_test
.
jpg
,
见下图
pdx
.
det
.
visualize
(
test_jpg
,
result
,
threshold
=
0.3
,
save_dir
=
'./'
)
```
-
YOLOv3模型predict接口
[
说明文档
](
../apis/models/detection.html#predict
)
-
可视化pdx.det.visualize接口
[
说明文档
](
../apis/visualize.html#paddlex-det-visualize
)
> 注意:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`threshold`用于过滤,置信度低于此值的结果将被过滤,不会可视化。
![](
./images/yolo_predict.jpg
)
## 实例分割
> [点击下载](https://bj.bcebos.com/paddlex/models/mask_r50_fpn_coco.tar.gz)如下示例代码中模型
```
import
paddlex
as
pdx
test_jpg
=
'./xiaoduxiong_epoch_12/test.jpg'
model
=
pdx
.
load_model
(
'./xiaoduxiong_epoch_12'
)
test_jpg
=
'mask_r50_fpn_coco/test.jpg'
model
=
pdx
.
load_model
(
'mask_r50_fpn_coco'
)
#
predict
接口并未过滤低置信度识别结果,用户根据需求按
score
值进行过滤
result
=
model
.
predict
(
test_jpg
)
pdx
.
det
.
visualize
(
test_jpg
,
result
,
thresh
=
0.5
,
save_dir
=
'./'
)
#
可视化结果存储在
./
visualized_test
.
jpg
,
见下图
pdx
.
det
.
visualize
(
test_jpg
,
result
,
threshold
=
0.5
,
save_dir
=
'./'
)
```
在上述示例代码中,通过调用
`paddlex.det.visualize`
可以对目标检测/实例分割的预测结果进行可视化,可视化的结果保存在
`save_dir`
下。
> 注意:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`thresh`用于过滤,置信度低于此值的结果将被过滤,不会可视化。
-
MaskRCNN模型predict接口
[
说明文档
](
../apis/models/instance_segmentation.html#predict
)
-
可视化pdx.det.visualize接口
[
说明文档
](
../apis/visualize.html#paddlex-det-visualize
)
> 注意:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`threshold`用于过滤,置信度低于此值的结果将被过滤,不会可视化。
![](
./images/mask_predict.jpg
)
## 语义分割
```
...
...
@@ -31,6 +69,7 @@ model = pdx.load_model('./deeplabv3p_mobilenetv2_coco')
result
=
model
.
predict
(
test_jpg
)
pdx
.
seg
.
visualize
(
test_jpg
,
result
,
weight
=
0.0
,
save_dir
=
'./'
)
```
在上述示例代码中,通过调用
`paddlex.seg.visualize`
可以对语义分割的预测结果进行可视化,可视化的结果保存在
`save_dir`
下。其中
`weight`
参数用于调整预测结果和原图结果融合展现时的权重,0.0时只展示预测结果mask的可视化,1.0时只展示原图可视化。
...
...
@@ -47,8 +86,8 @@ PaddleX提供了部分公开数据集上训练好的模型,用户可以直接
| 目标检测 |
[
YOLOv3-DarkNet53
](
https://bj.bcebos.com/paddlex/models/yolov3_darknet53_coco.tar.gz
)
| MSCOCO | 266MMB | Box MAP | 34.8% |
| 目标检测 |
[
YOLOv3-MobileNetV3
](
https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv3_coco.tar.gz
)
| MSCOCO | 101MB | Box MAP | 31.6% |
| 实例分割 |
[
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% |
| 语义分割 |
[
DeepLabv3p-Xception65
](
)
| 人像分割 | xxMB
| mIoU | - |
| 语义分割 |
[
HRNet_w18_small
](
)
| 人像分割 | xxMB
| mIou | - |
| 语义分割 |
DeepLabv3p-Xception65 | 人像分割 | -
| mIoU | - |
| 语义分割 |
HRNet_w18_small | 人像分割 | -
| mIou | - |
PaddleX的
`load_model`
接口可以满足用户一般的模型调研需求,如若为更高性能的预测部署,可以参考如下文档
...
...
paddlex/cv/models/mask_rcnn.py
浏览文件 @
d883d4b5
...
...
@@ -280,9 +280,8 @@ class MaskRCNN(FasterRCNN):
total_steps
=
math
.
ceil
(
eval_dataset
.
num_samples
*
1.0
/
batch_size
)
results
=
list
()
logging
.
info
(
"Start to evaluating(total_samples={}, total_steps={})..."
.
format
(
eval_dataset
.
num_samples
,
total_steps
))
logging
.
info
(
"Start to evaluating(total_samples={}, total_steps={})..."
.
format
(
eval_dataset
.
num_samples
,
total_steps
))
for
step
,
data
in
tqdm
.
tqdm
(
enumerate
(
data_generator
()),
total
=
total_steps
):
images
=
np
.
array
([
d
[
0
]
for
d
in
data
]).
astype
(
'float32'
)
...
...
@@ -326,8 +325,7 @@ class MaskRCNN(FasterRCNN):
zip
([
'bbox_map'
,
'segm_map'
],
[
ap_stats
[
0
][
1
],
ap_stats
[
1
][
1
]]))
else
:
metrics
=
OrderedDict
(
zip
([
'bbox_map'
,
'segm_map'
],
[
0.0
,
0.0
]))
metrics
=
OrderedDict
(
zip
([
'bbox_map'
,
'segm_map'
],
[
0.0
,
0.0
]))
elif
metric
==
'COCO'
:
if
isinstance
(
ap_stats
[
0
],
np
.
ndarray
)
and
isinstance
(
ap_stats
[
1
],
np
.
ndarray
):
...
...
@@ -397,7 +395,7 @@ class MaskRCNN(FasterRCNN):
res
=
{
k
:
(
np
.
array
(
v
),
v
.
recursive_sequence_lengths
())
for
k
,
v
in
zip
(
list
s
(
self
.
test_outputs
.
keys
()),
result
)
for
k
,
v
in
zip
(
list
(
self
.
test_outputs
.
keys
()),
result
)
}
res
[
'im_id'
]
=
(
np
.
array
(
[[
i
]
for
i
in
range
(
len
(
images
))]).
astype
(
'int32'
),
[])
...
...
@@ -431,8 +429,8 @@ class MaskRCNN(FasterRCNN):
if
transforms
is
None
:
transforms
=
self
.
test_transforms
im
,
im_resize_info
,
im_shape
=
FasterRCNN
.
_preprocess
(
img_file_list
,
transforms
,
self
.
model_type
,
self
.
__class__
.
__name__
,
thread_num
)
img_file_list
,
transforms
,
self
.
model_type
,
self
.
__class__
.
__name__
,
thread_num
)
with
fluid
.
scope_guard
(
self
.
scope
):
result
=
self
.
exe
.
run
(
self
.
test_prog
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录