Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
cd856fb1
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
cd856fb1
编写于
7月 21, 2020
作者:
J
Jason
提交者:
GitHub
7月 21, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #227 from wuyefeilin/develop
eval in origin image
上级
6fc61153
881fc5df
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
40 addition
and
8 deletion
+40
-8
paddlex/cv/datasets/dataset.py
paddlex/cv/datasets/dataset.py
+11
-3
paddlex/cv/models/deeplabv3p.py
paddlex/cv/models/deeplabv3p.py
+20
-4
paddlex/cv/transforms/seg_transforms.py
paddlex/cv/transforms/seg_transforms.py
+9
-1
未找到文件。
paddlex/cv/datasets/dataset.py
浏览文件 @
cd856fb1
...
...
@@ -217,10 +217,18 @@ def generate_minibatch(batch_data, label_padding_value=255):
padding_im
=
np
.
zeros
(
(
im_c
,
max_shape
[
1
],
max_shape
[
2
]),
dtype
=
np
.
float32
)
padding_im
[:,
:
im_h
,
:
im_w
]
=
data
[
0
]
if
len
(
data
)
>
1
:
if
len
(
data
)
>
2
:
# padding the image, label and insert 'padding' into `im_info` of segmentation during evaluating phase.
if
len
(
data
[
1
])
==
0
or
'padding'
not
in
[
data
[
1
][
i
][
0
]
for
i
in
range
(
len
(
data
[
1
]))
]:
data
[
1
].
append
((
'padding'
,
[
im_h
,
im_w
]))
padding_batch
.
append
((
padding_im
,
data
[
1
],
data
[
2
]))
elif
len
(
data
)
>
1
:
if
isinstance
(
data
[
1
],
np
.
ndarray
)
and
len
(
data
[
1
].
shape
)
>
1
:
# padding the image and label of segmentation
# during the training and evaluating phase
# padding the image and label of segmentation during the training
# the data[1] of segmentation is a image array,
# so len(data[1].shape) > 1
padding_label
=
np
.
zeros
(
...
...
paddlex/cv/models/deeplabv3p.py
浏览文件 @
cd856fb1
...
...
@@ -340,7 +340,8 @@ class DeepLabv3p(BaseAPI):
for
step
,
data
in
tqdm
.
tqdm
(
enumerate
(
data_generator
()),
total
=
total_steps
):
images
=
np
.
array
([
d
[
0
]
for
d
in
data
])
labels
=
np
.
array
([
d
[
1
]
for
d
in
data
])
im_info
=
[
d
[
1
]
for
d
in
data
]
labels
=
[
d
[
2
]
for
d
in
data
]
num_samples
=
images
.
shape
[
0
]
if
num_samples
<
batch_size
:
...
...
@@ -358,10 +359,25 @@ class DeepLabv3p(BaseAPI):
if
num_samples
<
batch_size
:
pred
=
pred
[
0
:
num_samples
]
mask
=
labels
!=
self
.
ignore_index
conf_mat
.
calculate
(
pred
=
pred
,
label
=
labels
,
ignore
=
mask
)
for
i
in
range
(
num_samples
):
one_pred
=
pred
[
i
].
astype
(
'uint8'
)
one_label
=
labels
[
i
]
for
info
in
im_info
[
i
][::
-
1
]:
if
info
[
0
]
==
'resize'
:
w
,
h
=
info
[
1
][
1
],
info
[
1
][
0
]
one_pred
=
cv2
.
resize
(
one_pred
,
(
w
,
h
),
cv2
.
INTER_NEAREST
)
elif
info
[
0
]
==
'padding'
:
w
,
h
=
info
[
1
][
1
],
info
[
1
][
0
]
one_pred
=
one_pred
[
0
:
h
,
0
:
w
]
else
:
raise
Exception
(
"Unexpected info '{}' in im_info"
.
format
(
info
[
0
]))
one_pred
=
one_pred
.
astype
(
'int64'
)
one_pred
=
one_pred
[
np
.
newaxis
,
:,
:,
np
.
newaxis
]
one_label
=
one_label
[
np
.
newaxis
,
np
.
newaxis
,
:,
:]
mask
=
one_label
!=
self
.
ignore_index
conf_mat
.
calculate
(
pred
=
one_pred
,
label
=
one_label
,
ignore
=
mask
)
_
,
iou
=
conf_mat
.
mean_iou
()
logging
.
debug
(
"[EVAL] Epoch={}, Step={}/{}, iou={}"
.
format
(
epoch_id
,
step
+
1
,
total_steps
,
iou
))
...
...
paddlex/cv/transforms/seg_transforms.py
浏览文件 @
cd856fb1
...
...
@@ -90,6 +90,7 @@ class Compose(SegTransform):
if
label
is
not
None
:
if
not
isinstance
(
label
,
np
.
ndarray
):
label
=
np
.
asarray
(
Image
.
open
(
label
))
origin_label
=
label
.
copy
()
for
op
in
self
.
transforms
:
if
isinstance
(
op
,
SegTransform
):
outputs
=
op
(
im
,
im_info
,
label
)
...
...
@@ -104,6 +105,10 @@ class Compose(SegTransform):
outputs
=
(
im
,
im_info
,
label
)
else
:
outputs
=
(
im
,
im_info
)
if
self
.
transforms
[
-
1
].
__class__
.
__name__
==
'ArrangeSegmenter'
:
if
self
.
transforms
[
-
1
].
mode
==
'eval'
:
if
label
is
not
None
:
outputs
=
(
im
,
im_info
,
origin_label
)
return
outputs
def
add_augmenters
(
self
,
augmenters
):
...
...
@@ -1092,9 +1097,12 @@ class ArrangeSegmenter(SegTransform):
'quant'时,返回的tuple为(im,),为图像np.ndarray数据。
"""
im
=
permute
(
im
,
False
)
if
self
.
mode
==
'train'
or
self
.
mode
==
'eval'
:
if
self
.
mode
==
'train'
:
label
=
label
[
np
.
newaxis
,
:,
:]
return
(
im
,
label
)
if
self
.
mode
==
'eval'
:
label
=
label
[
np
.
newaxis
,
:,
:]
return
(
im
,
im_info
,
label
)
elif
self
.
mode
==
'test'
:
return
(
im
,
im_info
)
else
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录