Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleSeg
提交
dc837a2e
P
PaddleSeg
项目概览
PaddlePaddle
/
PaddleSeg
通知
289
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
53
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleSeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
53
Issue
53
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
dc837a2e
编写于
7月 14, 2020
作者:
C
chenguowei01
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dygraph' of github.com:wuyefeilin/PaddleSeg into dygraph
上级
a70e2a55
5e8491ce
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
126 addition
and
54 deletion
+126
-54
dygraph/datasets/__init__.py
dygraph/datasets/__init__.py
+1
-0
dygraph/datasets/cityscapes.py
dygraph/datasets/cityscapes.py
+1
-15
dygraph/datasets/dataset.py
dygraph/datasets/dataset.py
+97
-0
dygraph/datasets/optic_disc_seg.py
dygraph/datasets/optic_disc_seg.py
+1
-15
dygraph/infer.py
dygraph/infer.py
+2
-6
dygraph/models/hrnet.py
dygraph/models/hrnet.py
+5
-1
dygraph/models/unet.py
dygraph/models/unet.py
+5
-1
dygraph/train.py
dygraph/train.py
+6
-9
dygraph/transforms/transforms.py
dygraph/transforms/transforms.py
+1
-0
dygraph/utils/utils.py
dygraph/utils/utils.py
+5
-1
dygraph/val.py
dygraph/val.py
+2
-6
未找到文件。
dygraph/datasets/__init__.py
浏览文件 @
dc837a2e
...
...
@@ -12,5 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from
.dataset
import
Dataset
from
.optic_disc_seg
import
OpticDiscSeg
from
.cityscapes
import
Cityscapes
dygraph/datasets/cityscapes.py
浏览文件 @
dc837a2e
...
...
@@ -14,8 +14,7 @@
import
os
from
paddle.fluid.io
import
Dataset
from
.dataset
import
Dataset
from
utils.download
import
download_file_and_uncompress
DATA_HOME
=
os
.
path
.
expanduser
(
'~/.cache/paddle/dataset'
)
...
...
@@ -70,16 +69,3 @@ class Cityscapes(Dataset):
image_path
=
os
.
path
.
join
(
self
.
data_dir
,
items
[
0
])
grt_path
=
os
.
path
.
join
(
self
.
data_dir
,
items
[
1
])
self
.
file_list
.
append
([
image_path
,
grt_path
])
def
__getitem__
(
self
,
idx
):
image_path
,
grt_path
=
self
.
file_list
[
idx
]
im
,
im_info
,
label
=
self
.
transforms
(
im
=
image_path
,
label
=
grt_path
)
if
self
.
mode
==
'train'
:
return
im
,
label
elif
self
.
mode
==
'eval'
:
return
im
,
label
if
self
.
mode
==
'test'
:
return
im
,
im_info
,
image_path
def
__len__
(
self
):
return
len
(
self
.
file_list
)
dygraph/datasets/dataset.py
0 → 100644
浏览文件 @
dc837a2e
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import
os
from
paddle.fluid.io
import
Dataset
class
Dataset
(
Dataset
):
def
__init__
(
self
,
data_dir
,
num_classes
,
train_list
=
None
,
val_list
=
None
,
test_list
=
None
,
separator
=
' '
,
transforms
=
None
,
mode
=
'train'
):
self
.
data_dir
=
data_dir
self
.
transforms
=
transforms
self
.
file_list
=
list
()
self
.
mode
=
mode
self
.
num_classes
=
num_classes
if
mode
.
lower
()
not
in
[
'train'
,
'eval'
,
'test'
]:
raise
Exception
(
"mode should be 'train', 'eval' or 'test', but got {}."
.
format
(
mode
))
if
self
.
transforms
is
None
:
raise
Exception
(
"transform is necessary, but it is None."
)
self
.
data_dir
=
data_dir
if
mode
==
'train'
:
if
train_list
is
None
:
raise
Exception
(
'When mode is "train", train_list is need, but it is None.'
)
elif
not
os
.
path
.
exists
(
train_list
):
raise
Exception
(
'train_list is not found: {}'
.
format
(
train_list
))
else
:
file_list
=
train_list
elif
mode
==
'eval'
:
if
val_list
is
None
:
raise
Exception
(
'When mode is "eval", val_list is need, but it is None.'
)
elif
not
os
.
path
.
exists
(
val_list
):
raise
Exception
(
'val_list is not found: {}'
.
format
(
val_list
))
else
:
file_list
=
val_list
else
:
if
test_list
is
None
:
raise
Exception
(
'When mode is "test", test_list is need, but it is None.'
)
elif
not
os
.
path
.
exists
(
test_list
):
raise
Exception
(
'test_list is not found: {}'
.
format
(
test_list
))
else
:
file_list
=
test_list
with
open
(
file_list
,
'r'
)
as
f
:
for
line
in
f
:
items
=
line
.
strip
().
split
(
separator
)
if
len
(
items
)
!=
2
:
if
mode
==
'train'
or
mode
==
'eval'
:
raise
Exception
(
"File list format incorrect! It should be"
" image_name{}label_name
\\
n"
.
format
(
separator
))
image_path
=
os
.
path
.
join
(
self
.
data_dir
,
items
[
0
])
grt_path
=
None
else
:
image_path
=
os
.
path
.
join
(
self
.
data_dir
,
items
[
0
])
grt_path
=
os
.
path
.
join
(
self
.
data_dir
,
items
[
1
])
self
.
file_list
.
append
([
image_path
,
grt_path
])
def
__getitem__
(
self
,
idx
):
image_path
,
grt_path
=
self
.
file_list
[
idx
]
im
,
im_info
,
label
=
self
.
transforms
(
im
=
image_path
,
label
=
grt_path
)
if
self
.
mode
==
'train'
:
return
im
,
label
elif
self
.
mode
==
'eval'
:
return
im
,
label
if
self
.
mode
==
'test'
:
return
im
,
im_info
,
image_path
def
__len__
(
self
):
return
len
(
self
.
file_list
)
dygraph/datasets/optic_disc_seg.py
浏览文件 @
dc837a2e
...
...
@@ -14,8 +14,7 @@
import
os
from
paddle.fluid.io
import
Dataset
from
.dataset
import
Dataset
from
utils.download
import
download_file_and_uncompress
DATA_HOME
=
os
.
path
.
expanduser
(
'~/.cache/paddle/dataset'
)
...
...
@@ -70,16 +69,3 @@ class OpticDiscSeg(Dataset):
image_path
=
os
.
path
.
join
(
self
.
data_dir
,
items
[
0
])
grt_path
=
os
.
path
.
join
(
self
.
data_dir
,
items
[
1
])
self
.
file_list
.
append
([
image_path
,
grt_path
])
def
__getitem__
(
self
,
idx
):
image_path
,
grt_path
=
self
.
file_list
[
idx
]
im
,
im_info
,
label
=
self
.
transforms
(
im
=
image_path
,
label
=
grt_path
)
if
self
.
mode
==
'train'
:
return
im
,
label
elif
self
.
mode
==
'eval'
:
return
im
,
label
if
self
.
mode
==
'test'
:
return
im
,
im_info
,
image_path
def
__len__
(
self
):
return
len
(
self
.
file_list
)
dygraph/infer.py
浏览文件 @
dc837a2e
...
...
@@ -37,12 +37,8 @@ def parse_args():
parser
.
add_argument
(
'--model_name'
,
dest
=
'model_name'
,
help
=
'Model type for testing, which is one of ("UNet", "HRNet_W18_Small_V1", "HRNet_W18_Small_V2", '
'"HRNet_W18", "HRNet_W30", "HRNet_W32", "HRNet_W40", "HRNet_W44", "HRNet_W48", '
'"HRNet_W60", "HRNet_W64", "SE_HRNet_W18_Small_V1", "SE_HRNet_W18_Small_V2", "SE_HRNet_W18", '
'"SE_HRNet_W30", "SE_HRNet_W32", "SE_HRNet_W40","SE_HRNet_W44", "SE_HRNet_W48", '
'"SE_HRNet_W60", "SE_HRNet_W64")'
,
help
=
'Model type for testing, which is one of {}'
.
format
(
str
(
list
(
MODELS
.
keys
()))),
type
=
str
,
default
=
'UNet'
)
...
...
dygraph/models/hrnet.py
浏览文件 @
dc837a2e
...
...
@@ -18,7 +18,11 @@ import paddle
import
paddle.fluid
as
fluid
from
paddle.fluid.param_attr
import
ParamAttr
from
paddle.fluid.layer_helper
import
LayerHelper
from
paddle.fluid.dygraph.nn
import
Conv2D
,
Pool2D
,
BatchNorm
,
Linear
from
paddle.fluid.dygraph.nn
import
Conv2D
,
Pool2D
,
Linear
try
:
from
paddle.fluid.dygraph
import
SyncBatchNorm
as
BatchNorm
except
:
from
paddle.fluid.dygraph
import
BatchNorm
__all__
=
[
"HRNet_W18_Small_V1"
,
"HRNet_W18_Small_V2"
,
"HRNet_W18"
,
"HRNet_W30"
,
...
...
dygraph/models/unet.py
浏览文件 @
dc837a2e
...
...
@@ -13,7 +13,11 @@
# limitations under the License.
import
paddle.fluid
as
fluid
from
paddle.fluid.dygraph
import
Conv2D
,
BatchNorm
,
Pool2D
from
paddle.fluid.dygraph
import
Conv2D
,
Pool2D
try
:
from
paddle.fluid.dygraph
import
SyncBatchNorm
as
BatchNorm
except
:
from
paddle.fluid.dygraph
import
BatchNorm
class
UNet
(
fluid
.
dygraph
.
Layer
):
...
...
dygraph/train.py
浏览文件 @
dc837a2e
...
...
@@ -38,12 +38,8 @@ def parse_args():
parser
.
add_argument
(
'--model_name'
,
dest
=
'model_name'
,
help
=
'Model type for training, which is one of ("UNet", "HRNet_W18_Small_V1", "HRNet_W18_Small_V2", '
'"HRNet_W18", "HRNet_W30", "HRNet_W32", "HRNet_W40", "HRNet_W44", "HRNet_W48", '
'"HRNet_W60", "HRNet_W64", "SE_HRNet_W18_Small_V1", "SE_HRNet_W18_Small_V2", "SE_HRNet_W18", '
'"SE_HRNet_W30", "SE_HRNet_W32", "SE_HRNet_W40","SE_HRNet_W44", "SE_HRNet_W48", '
'"SE_HRNet_W60", "SE_HRNet_W64")'
,
help
=
'Model type for training, which is one of {}'
.
format
(
str
(
list
(
MODELS
.
keys
()))),
type
=
str
,
default
=
'UNet'
)
...
...
@@ -186,6 +182,7 @@ def train(model,
total_steps
=
steps_per_epoch
*
(
num_epochs
-
start_epoch
)
num_steps
=
0
best_mean_iou
=
-
1.0
best_model_epoch
=
-
1
for
epoch
in
range
(
start_epoch
,
num_epochs
):
for
step
,
data
in
enumerate
(
loader
):
images
=
data
[
0
]
...
...
@@ -245,9 +242,9 @@ def train(model,
best_model_dir
=
os
.
path
.
join
(
save_dir
,
"best_model"
)
fluid
.
save_dygraph
(
model
.
state_dict
(),
os
.
path
.
join
(
best_model_dir
,
'model'
))
logging
.
info
(
'Current evaluated best model in eval_dataset is epoch_{}, miou={:4f}'
.
format
(
best_model_epoch
,
best_mean_iou
))
logging
.
info
(
'Current evaluated best model in eval_dataset is epoch_{}, miou={:4f}'
.
format
(
best_model_epoch
,
best_mean_iou
))
if
use_vdl
:
log_writer
.
add_scalar
(
'Evaluate/mean_iou'
,
mean_iou
,
...
...
dygraph/transforms/transforms.py
浏览文件 @
dc837a2e
# coding: utf8
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
...
...
dygraph/utils/utils.py
浏览文件 @
dc837a2e
...
...
@@ -52,7 +52,11 @@ def load_pretrained_model(model, pretrained_model):
logging
.
info
(
'Load pretrained model from {}'
.
format
(
pretrained_model
))
if
os
.
path
.
exists
(
pretrained_model
):
ckpt_path
=
os
.
path
.
join
(
pretrained_model
,
'model'
)
para_state_dict
,
_
=
fluid
.
load_dygraph
(
ckpt_path
)
try
:
para_state_dict
,
_
=
fluid
.
load_dygraph
(
ckpt_path
)
except
:
para_state_dict
=
fluid
.
load_program_state
(
pretrained_model
)
model_state_dict
=
model
.
state_dict
()
keys
=
model_state_dict
.
keys
()
num_params_loaded
=
0
...
...
dygraph/val.py
浏览文件 @
dc837a2e
...
...
@@ -39,12 +39,8 @@ def parse_args():
parser
.
add_argument
(
'--model_name'
,
dest
=
'model_name'
,
help
=
'Model type for evaluation, which is one of ("UNet", "HRNet_W18_Small_V1", "HRNet_W18_Small_V2", '
'"HRNet_W18", "HRNet_W30", "HRNet_W32", "HRNet_W40", "HRNet_W44", "HRNet_W48", '
'"HRNet_W60", "HRNet_W64", "SE_HRNet_W18_Small_V1", "SE_HRNet_W18_Small_V2", "SE_HRNet_W18", '
'"SE_HRNet_W30", "SE_HRNet_W32", "SE_HRNet_W40","SE_HRNet_W44", "SE_HRNet_W48", '
'"SE_HRNet_W60", "SE_HRNet_W64")'
,
help
=
'Model type for evaluation, which is one of {}'
.
format
(
str
(
list
(
MODELS
.
keys
()))),
type
=
str
,
default
=
'UNet'
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录