Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
5433fc46
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看板
提交
5433fc46
编写于
5月 11, 2020
作者:
C
Channingss
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix some bug
上级
d1b71369
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
19 deletion
+26
-19
paddlex/cv/models/load_model.py
paddlex/cv/models/load_model.py
+0
-1
paddlex/cv/transforms/det_transforms.py
paddlex/cv/transforms/det_transforms.py
+13
-10
paddlex/cv/transforms/seg_transforms.py
paddlex/cv/transforms/seg_transforms.py
+13
-8
未找到文件。
paddlex/cv/models/load_model.py
浏览文件 @
5433fc46
...
...
@@ -125,7 +125,6 @@ def fix_input_shape(info, fixed_input_shape=None):
logging
.
warning
(
"fixed_input_shape must == input shape when trainning"
)
else
:
print
(
"*"
*
10
)
resize
[
'ResizeByShort'
][
'short_size'
]
=
min
(
fixed_input_shape
)
resize
[
'ResizeByShort'
][
'max_size'
]
=
max
(
fixed_input_shape
)
padding
[
'Padding'
][
'target_size'
]
=
list
(
fixed_input_shape
)
...
...
paddlex/cv/transforms/det_transforms.py
浏览文件 @
5433fc46
...
...
@@ -208,10 +208,10 @@ class Padding:
Args:
coarsest_stride (int): 填充后的图像长、宽为该参数的倍数,默认为1。
target_size (int|list): 填充后的图像长、宽,默认为
1
。
target_size (int|list): 填充后的图像长、宽,默认为
None
。
"""
def
__init__
(
self
,
coarsest_stride
=
1
,
target_size
=
1
):
def
__init__
(
self
,
coarsest_stride
=
1
,
target_size
=
None
):
self
.
coarsest_stride
=
coarsest_stride
self
.
target_size
=
target_size
...
...
@@ -230,15 +230,15 @@ class Padding:
Raises:
TypeError: 形参数据类型不满足需求。
ValueError: 数据长度不匹配。
ValueError: coarsest_stride,target_size需有且只有一个被指定,coarset_stride优先级更高。
ValueError: target_size小于原图的大小。
"""
if
self
.
coarsest_stride
==
1
:
if
isinstance
(
self
.
target_size
,
int
)
and
self
.
target_size
==
1
:
if
label_info
is
None
:
return
(
im
,
im_info
)
else
:
return
(
im
,
im_info
,
label_info
)
if
self
.
coarsest_stride
==
1
and
self
.
target_size
is
None
:
if
label_info
is
None
:
return
(
im
,
im_info
)
else
:
return
(
im
,
im_info
,
label_info
)
if
im_info
is
None
:
im_info
=
dict
()
if
not
isinstance
(
im
,
np
.
ndarray
):
...
...
@@ -251,13 +251,16 @@ class Padding:
np
.
ceil
(
im_h
/
self
.
coarsest_stride
)
*
self
.
coarsest_stride
)
padding_im_w
=
int
(
np
.
ceil
(
im_w
/
self
.
coarsest_stride
)
*
self
.
coarsest_stride
)
if
isinstance
(
self
.
target_size
,
int
)
and
self
.
target_size
!=
1
:
elif
isinstance
(
self
.
target_size
,
int
):
padding_im_h
=
self
.
target_size
padding_im_w
=
self
.
target_size
elif
isinstance
(
self
.
target_size
,
list
):
padding_im_w
=
self
.
target_size
[
0
]
padding_im_h
=
self
.
target_size
[
1
]
else
:
raise
ValueError
(
"coarsest_stridei(>1) or target_size(list|int) need setting in Padding transform"
)
pad_height
=
padding_im_h
-
im_h
pad_width
=
padding_im_w
-
im_w
if
pad_height
<
0
or
pad_width
<
0
:
...
...
paddlex/cv/transforms/seg_transforms.py
浏览文件 @
5433fc46
...
...
@@ -287,6 +287,7 @@ class ResizeByLong:
else
:
return
(
im
,
im_info
,
label
)
class
ResizeByShort
:
"""根据图像的短边调整图像大小(resize)。
...
...
@@ -315,12 +316,12 @@ class ResizeByShort:
if
not
(
isinstance
(
self
.
max_size
,
int
)):
raise
TypeError
(
"max_size: input type is invalid."
)
def
__call__
(
self
,
im
,
im_info
=
None
,
label
_info
=
None
):
def
__call__
(
self
,
im
,
im_info
=
None
,
label
=
None
):
"""
Args:
im (numnp.ndarraypy): 图像np.ndarray数据。
im_info (dict, 可选): 存储与图像相关的信息。
label
_info (dict, 可选): 存储与标注框相关的信息
。
label
(np.ndarray): 标注图像np.ndarray数据
。
Returns:
tuple: 当label_info为空时,返回的tuple为(im, im_info),分别对应图像np.ndarray数据、存储与图像相关信息的字典;
...
...
@@ -335,11 +336,12 @@ class ResizeByShort:
ValueError: 数据长度不匹配。
"""
if
im_info
is
None
:
im_info
=
d
ict
()
im_info
=
OrderedD
ict
()
if
not
isinstance
(
im
,
np
.
ndarray
):
raise
TypeError
(
"ResizeByShort: image type is not numpy."
)
if
len
(
im
.
shape
)
!=
3
:
raise
ValueError
(
'ResizeByShort: image is not 3-dimensional.'
)
im_info
[
'shape_before_resize'
]
=
im
.
shape
[:
2
]
im_short_size
=
min
(
im
.
shape
[
0
],
im
.
shape
[
1
])
im_long_size
=
max
(
im
.
shape
[
0
],
im
.
shape
[
1
])
scale
=
float
(
self
.
short_size
)
/
im_short_size
...
...
@@ -348,15 +350,18 @@ class ResizeByShort:
scale
=
float
(
self
.
max_size
)
/
float
(
im_long_size
)
resized_width
=
int
(
round
(
im
.
shape
[
1
]
*
scale
))
resized_height
=
int
(
round
(
im
.
shape
[
0
]
*
scale
))
im_resize_info
=
[
resized_height
,
resized_width
,
scale
]
im
=
cv2
.
resize
(
im
,
(
resized_width
,
resized_height
),
interpolation
=
cv2
.
INTER_LINEAR
)
im_info
[
'im_resize_info'
]
=
np
.
array
(
im_resize_info
).
astype
(
np
.
float32
)
if
label_info
is
None
:
interpolation
=
cv2
.
INTER_NEAREST
)
if
label
is
not
None
:
im
=
cv2
.
resize
(
label
,
(
resized_width
,
resized_height
),
interpolation
=
cv2
.
INTER_NEAREST
)
if
label
is
None
:
return
(
im
,
im_info
)
else
:
return
(
im
,
im_info
,
label_info
)
return
(
im
,
im_info
,
label
)
class
ResizeRangeScaling
:
"""对图像长边随机resize到指定范围内,短边按比例进行缩放。当存在标注图像时,则同步进行处理。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录