Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
4db0e2df
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
4db0e2df
编写于
5月 13, 2020
作者:
W
wangguanzhong
提交者:
GitHub
5月 13, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cherry-pick optimize_error_info, test=develop (#24440)
上级
cb47a74c
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
72 addition
and
40 deletion
+72
-40
paddle/fluid/operators/detection/box_clip_op.cc
paddle/fluid/operators/detection/box_clip_op.cc
+6
-7
paddle/fluid/operators/detection/box_clip_op.h
paddle/fluid/operators/detection/box_clip_op.h
+4
-2
paddle/fluid/operators/detection/box_coder_op.h
paddle/fluid/operators/detection/box_coder_op.h
+24
-8
paddle/fluid/operators/roi_align_op.cc
paddle/fluid/operators/roi_align_op.cc
+10
-9
paddle/fluid/operators/roi_align_op.cu
paddle/fluid/operators/roi_align_op.cu
+13
-6
paddle/fluid/operators/roi_align_op.h
paddle/fluid/operators/roi_align_op.h
+15
-8
未找到文件。
paddle/fluid/operators/detection/box_clip_op.cc
浏览文件 @
4db0e2df
...
...
@@ -36,20 +36,19 @@ class BoxClipOp : public framework::OperatorWithKernel {
PADDLE_ENFORCE_EQ
(
input_box_dims
[
input_box_size
-
1
],
4
,
platform
::
errors
::
InvalidArgument
(
"The last dimension "
"
of Input must be 4.
But received last dimension = %d"
,
"The last dimension
of Input(Input) in BoxClipOp must be 4.
"
"But received last dimension = %d"
,
input_box_dims
[
input_box_size
-
1
]));
PADDLE_ENFORCE_EQ
(
im_info_dims
.
size
(),
2
,
platform
::
errors
::
InvalidArgument
(
"The rank of "
"Input(Input) in BoxClipOp must be 2. But received "
"rank = %d"
,
"The rank of Input(Input) in BoxClipOp must be 2."
" But received rank = %d"
,
im_info_dims
.
size
()));
PADDLE_ENFORCE_EQ
(
im_info_dims
[
1
],
3
,
platform
::
errors
::
InvalidArgument
(
"The last dimension "
"
of ImInfo must be 3.
But received last dimension = %d"
,
"The last dimension
of Input(ImInfo) of BoxClipOp must be 3.
"
"But received last dimension = %d"
,
im_info_dims
[
1
]));
}
ctx
->
ShareDim
(
"Input"
,
/*->*/
"Output"
);
...
...
paddle/fluid/operators/detection/box_clip_op.h
浏览文件 @
4db0e2df
...
...
@@ -34,8 +34,10 @@ class BoxClipKernel : public framework::OpKernel<T> {
if
(
input_box
->
lod
().
size
())
{
PADDLE_ENFORCE_EQ
(
input_box
->
lod
().
size
(),
1UL
,
platform
::
errors
::
InvalidArgument
(
"Input(Input) of "
"BoxClip only supports 1 level of LoD."
));
"Input(Input) of BoxClip only supports 1 level "
"of LoD. But received the "
"level = %d"
,
input_box
->
lod
().
size
()));
}
auto
box_lod
=
input_box
->
lod
().
back
();
int64_t
n
=
static_cast
<
int64_t
>
(
box_lod
.
size
()
-
1
);
...
...
paddle/fluid/operators/detection/box_coder_op.h
浏览文件 @
4db0e2df
...
...
@@ -21,12 +21,18 @@ namespace operators {
enum
class
BoxCodeType
{
kEncodeCenterSize
=
0
,
kDecodeCenterSize
=
1
};
inline
BoxCodeType
GetBoxCodeType
(
const
std
::
string
&
type
)
{
PADDLE_ENFORCE_EQ
(
(
type
==
"encode_center_size"
)
||
(
type
==
"decode_center_size"
),
true
,
platform
::
errors
::
InvalidArgument
(
"The 'code_type' attribute in BoxCoder"
" must be 'encode_center_size' or 'decode_center_size'. "
"But received 'code_type' is %s"
,
type
));
if
(
type
==
"encode_center_size"
)
{
return
BoxCodeType
::
kEncodeCenterSize
;
}
else
if
(
type
==
"decode_center_size"
)
{
}
else
{
return
BoxCodeType
::
kDecodeCenterSize
;
}
PADDLE_THROW
(
"Not support type %s."
,
type
);
}
template
<
typename
DeviceContext
,
typename
T
>
...
...
@@ -186,16 +192,26 @@ class BoxCoderKernel : public framework::OpKernel<T> {
const
int
axis
=
context
.
Attr
<
int
>
(
"axis"
);
if
(
target_box
->
lod
().
size
())
{
PADDLE_ENFORCE_EQ
(
target_box
->
lod
().
size
(),
1UL
,
"Only support 1 level of LoD."
);
platform
::
errors
::
InvalidArgument
(
"Input(TargetBox) of BoxCoder operator "
"supports LoD with only one level. But received "
"level = %d"
,
target_box
->
lod
().
size
()));
}
if
(
prior_box_var
)
{
PADDLE_ENFORCE
(
variance
.
empty
(),
"Input 'PriorBoxVar' and attribute 'variance' should not"
"be used at the same time."
);
PADDLE_ENFORCE_EQ
(
variance
.
empty
(),
true
,
platform
::
errors
::
InvalidArgument
(
"Input 'PriorBoxVar' and attribute 'variance' "
"of BoxCoder operator should not be used at the "
"same time."
));
}
if
(
!
(
variance
.
empty
()))
{
PADDLE_ENFORCE
(
static_cast
<
int
>
(
variance
.
size
())
==
4
,
"Size of attribute 'variance' should be 4"
);
PADDLE_ENFORCE_EQ
(
static_cast
<
int
>
(
variance
.
size
()),
4
,
platform
::
errors
::
InvalidArgument
(
"Size of attribute 'variance' of BoxCoder "
"operator should be 4. But received "
"size = %d"
,
variance
.
size
()));
}
auto
code_type
=
GetBoxCodeType
(
context
.
Attr
<
std
::
string
>
(
"code_type"
));
bool
normalized
=
context
.
Attr
<
bool
>
(
"box_normalized"
);
...
...
paddle/fluid/operators/roi_align_op.cc
浏览文件 @
4db0e2df
...
...
@@ -40,7 +40,7 @@ class ROIAlignOp : public framework::OperatorWithKernel {
PADDLE_ENFORCE_EQ
(
rois_lod_dims
.
size
(),
1
,
platform
::
errors
::
InvalidArgument
(
"The RoisLod dimension should be 1"
", but got dim = %d"
,
", but got dim
ension
= %d"
,
rois_lod_dims
.
size
()));
}
PADDLE_ENFORCE_EQ
(
...
...
@@ -69,20 +69,21 @@ class ROIAlignOp : public framework::OperatorWithKernel {
PADDLE_ENFORCE_GT
(
pooled_height
,
0
,
platform
::
errors
::
InvalidArgument
(
"The
pooled output
"
"
height must greater than 0. But received
"
"
pooled_height
= %d"
,
"The
'pooled_height' attribute in RoIAlignOp is
"
"
invalid. The height must be greater than 0. But
"
"
received 'pooled_height'
= %d"
,
pooled_height
));
PADDLE_ENFORCE_GT
(
pooled_width
,
0
,
platform
::
errors
::
InvalidArgument
(
"The
pooled output
"
"
width must greater than 0. But received
"
"
pooled_width
= %d"
,
"The
'pooled_width' attribute in RoIAlignOp is
"
"
invalid. The width must be greater than 0. But
"
"
received 'pooled_width'
= %d"
,
pooled_width
));
PADDLE_ENFORCE_GT
(
spatial_scale
,
0.0
f
,
platform
::
errors
::
InvalidArgument
(
"The spatial scale "
"must greater than 0 But received spatial_scale = %f"
,
"The 'spatial_scale' attribute in RoIAlignOp is "
"invalid. The scale must be greater than 0. But "
"received 'spatial_scale' = %f"
,
spatial_scale
));
auto
out_dims
=
input_dims
;
...
...
paddle/fluid/operators/roi_align_op.cu
浏览文件 @
4db0e2df
...
...
@@ -284,19 +284,26 @@ class GPUROIAlignOpKernel : public framework::OpKernel<T> {
auto
lod
=
rois
->
lod
();
PADDLE_ENFORCE_EQ
(
lod
.
empty
(),
false
,
"Input(ROIs) Tensor of ROIAlignOp does not contain LoD information."
);
platform
::
errors
::
InvalidArgument
(
"Input(ROIs) in ROIAlignOp does "
"not contain LoD information."
));
auto
rois_lod
=
lod
.
back
();
int
rois_batch_size
=
rois_lod
.
size
()
-
1
;
PADDLE_ENFORCE_EQ
(
rois_batch_size
,
batch_size
,
platform
::
errors
::
InvalidArgument
(
"The
rois_batch_size and imgs
"
"
batch_size must be the same. But received rois_batch_
size = %d, "
"
batch_
size = %d"
,
"The
batch size of rois and batch size
"
"
of images must be the same. But received rois batch
size = %d, "
"
and images batch
size = %d"
,
rois_batch_size
,
batch_size
));
int
rois_num_with_lod
=
rois_lod
[
rois_batch_size
];
PADDLE_ENFORCE_EQ
(
rois_num
,
rois_num_with_lod
,
"The rois_num from input and lod must be the same."
);
PADDLE_ENFORCE_EQ
(
rois_num
,
rois_num_with_lod
,
platform
::
errors
::
InvalidArgument
(
"The actual number of rois and the number of rois "
"provided from Input(RoIsLoD) in RoIAlign must be the same."
" But received actual number of rois is %d, and the number "
"of rois from RoIsLoD is %d"
,
rois_num
,
rois_num_with_lod
));
for
(
int
n
=
0
;
n
<
rois_batch_size
;
++
n
)
{
for
(
size_t
i
=
rois_lod
[
n
];
i
<
rois_lod
[
n
+
1
];
++
i
)
{
roi_batch_id_data
[
i
]
=
n
;
...
...
paddle/fluid/operators/roi_align_op.h
浏览文件 @
4db0e2df
...
...
@@ -171,9 +171,9 @@ class CPUROIAlignOpKernel : public framework::OpKernel<T> {
PADDLE_ENFORCE_EQ
(
rois_batch_size
-
1
,
batch_size
,
platform
::
errors
::
InvalidArgument
(
"The
rois_batch_size and img
s "
"
batch_size must be the same. But received rois_batch_size =
%d, "
"
batch_size =
%d"
,
"The
batch size of rois and the batch size of image
s "
"
must be the same. But received the batch size of rois is
%d, "
"
and the batch size of images is
%d"
,
rois_batch_size
,
batch_size
));
auto
*
rois_lod
=
rois_lod_t
->
data
<
int64_t
>
();
for
(
int
n
=
0
;
n
<
rois_batch_size
-
1
;
++
n
)
{
...
...
@@ -183,9 +183,10 @@ class CPUROIAlignOpKernel : public framework::OpKernel<T> {
}
}
else
{
auto
lod
=
rois
->
lod
();
PADDLE_ENFORCE_EQ
(
lod
.
empty
(),
false
,
"Input(ROIs) Tensor of ROIAlignOp does not contain LoD information."
);
PADDLE_ENFORCE_EQ
(
lod
.
empty
(),
false
,
platform
::
errors
::
InvalidArgument
(
"Input(ROIs) Tensor of ROIAlignOp "
"does not contain LoD information."
));
auto
rois_lod
=
lod
.
back
();
int
rois_batch_size
=
rois_lod
.
size
()
-
1
;
PADDLE_ENFORCE_EQ
(
...
...
@@ -196,8 +197,14 @@ class CPUROIAlignOpKernel : public framework::OpKernel<T> {
"batch_size = %d"
,
rois_batch_size
,
batch_size
));
int
rois_num_with_lod
=
rois_lod
[
rois_batch_size
];
PADDLE_ENFORCE_EQ
(
rois_num
,
rois_num_with_lod
,
"The rois_num from input and lod must be the same."
);
PADDLE_ENFORCE_EQ
(
rois_num
,
rois_num_with_lod
,
platform
::
errors
::
InvalidArgument
(
"The actual number of rois and the number of rois "
"provided from Input(RoIsLoD) in RoIAlign must be the same."
" But received actual number of rois is %d, and the number "
"of rois from RoIsLoD is %d"
,
rois_num
,
rois_num_with_lod
));
for
(
int
n
=
0
;
n
<
rois_batch_size
;
++
n
)
{
for
(
size_t
i
=
rois_lod
[
n
];
i
<
rois_lod
[
n
+
1
];
++
i
)
{
roi_batch_id_data
[
i
]
=
n
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录