Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
Mace
提交
91bd5c11
Mace
项目概览
Xiaomi
/
Mace
通知
106
Star
40
Fork
27
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Mace
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
91bd5c11
编写于
3月 26, 2019
作者:
刘
刘托
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'support-caffe-interp' into 'master'
Feature: Support caffe Interp layer. See merge request !1029
上级
d0350afd
8673a20e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
40 addition
and
2 deletion
+40
-2
mace/python/tools/converter_tool/caffe_converter.py
mace/python/tools/converter_tool/caffe_converter.py
+15
-2
mace/python/tools/converter_tool/shape_inference.py
mace/python/tools/converter_tool/shape_inference.py
+15
-0
third_party/caffe/caffe.proto
third_party/caffe/caffe.proto
+10
-0
未找到文件。
mace/python/tools/converter_tool/caffe_converter.py
浏览文件 @
91bd5c11
...
...
@@ -182,6 +182,7 @@ class CaffeConverter(base_converter.ConverterInterface):
'Slice'
:
self
.
convert_slice
,
'Softmax'
:
self
.
convert_softmax
,
'InnerProduct'
:
self
.
convert_fully_connected
,
'Interp'
:
self
.
convert_interp
,
'BatchNorm'
:
self
.
convert_folded_batchnorm
,
'Crop'
:
self
.
convert_crop
,
'Scale'
:
self
.
convert_scale
,
...
...
@@ -554,7 +555,7 @@ class CaffeConverter(base_converter.ConverterInterface):
axis_arg
=
op
.
arg
.
add
()
axis_arg
.
name
=
MaceKeyword
.
mace_axis_str
axis_arg
.
i
=
2
if
param
.
HasField
(
'axis'
):
if
param
.
HasField
(
MaceKeyword
.
mace_axis_str
):
axis_arg
.
i
=
param
.
axis
axis_arg
.
i
=
4
+
axis_arg
.
i
if
axis_arg
.
i
<
0
else
axis_arg
.
i
offset_arg
=
op
.
arg
.
add
()
...
...
@@ -572,7 +573,7 @@ class CaffeConverter(base_converter.ConverterInterface):
axis_arg
=
op
.
arg
.
add
()
axis_arg
.
name
=
MaceKeyword
.
mace_axis_str
axis_arg
.
i
=
1
if
param
.
HasField
(
'axis'
):
if
param
.
HasField
(
MaceKeyword
.
mace_axis_str
):
axis_arg
.
i
=
param
.
axis
elif
param
.
HasField
(
'concat_dim'
):
axis_arg
.
i
=
param
.
concat_dim
...
...
@@ -592,6 +593,18 @@ class CaffeConverter(base_converter.ConverterInterface):
axis_arg
.
name
=
MaceKeyword
.
mace_axis_str
axis_arg
.
i
=
1
def
convert_interp
(
self
,
caffe_op
):
op
=
self
.
convert_general_op
(
caffe_op
)
param
=
caffe_op
.
layer
.
interp_param
mace_check
(
param
.
HasField
(
"height"
)
and
param
.
HasField
(
"width"
),
'Only support bilinear interp with height and width'
)
op
.
type
=
MaceOp
.
ResizeBilinear
.
name
size_arg
=
op
.
arg
.
add
()
size_arg
.
name
=
MaceKeyword
.
mace_resize_size_str
size_value
=
np
.
array
([
param
.
height
,
param
.
width
],
dtype
=
np
.
int32
)
size_arg
.
ints
.
extend
(
size_value
)
def
convert_fully_connected
(
self
,
caffe_op
):
op
=
self
.
convert_general_op
(
caffe_op
)
param
=
caffe_op
.
layer
.
inner_product_param
...
...
mace/python/tools/converter_tool/shape_inference.py
浏览文件 @
91bd5c11
...
...
@@ -51,6 +51,7 @@ class ShapeInference(object):
MaceOp
.
Transpose
.
name
:
self
.
infer_shape_permute
,
MaceOp
.
PriorBox
.
name
:
self
.
infer_shape_prior_box
,
MaceOp
.
Reshape
.
name
:
self
.
infer_shape_reshape
,
MaceOp
.
ResizeBilinear
.
name
:
self
.
infer_shape_resize_bilinear
,
}
self
.
_net
=
net
...
...
@@ -288,3 +289,17 @@ class ShapeInference(object):
output_shape
.
append
(
self
.
_output_shape_cache
[
op
.
input
[
0
]][
i
])
output_shape
[
axis
]
=
dim
self
.
add_output_shape
(
op
,
[
output_shape
])
def
infer_shape_resize_bilinear
(
self
,
op
):
input_shape
=
self
.
_output_shape_cache
[
op
.
input
[
0
]]
size
=
ConverterUtil
.
get_arg
(
op
,
MaceKeyword
.
mace_resize_size_str
).
ints
if
ConverterUtil
.
data_format
(
op
)
==
DataFormat
.
NCHW
:
output_shape
=
[
input_shape
[
0
],
input_shape
[
1
],
size
[
0
],
size
[
1
]]
elif
ConverterUtil
.
data_format
(
op
)
==
DataFormat
.
NHWC
:
output_shape
=
[
input_shape
[
0
],
size
[
0
],
size
[
1
],
input_shape
[
3
]]
else
:
output_shape
=
[]
mace_check
(
False
,
"format %s is not supported"
%
ConverterUtil
.
data_format
(
op
))
self
.
add_output_shape
(
op
,
[
output_shape
])
third_party/caffe/caffe.proto
浏览文件 @
91bd5c11
...
...
@@ -515,6 +515,7 @@ message LayerParameter {
optional
InfogainLossParameter
infogain_loss_param
=
116
;
optional
InnerProductParameter
inner_product_param
=
117
;
optional
InputParameter
input_param
=
143
;
optional
InterpParameter
interp_param
=
147
;
optional
LogParameter
log_param
=
134
;
optional
LRNParameter
lrn_param
=
118
;
optional
MemoryDataParameter
memory_data_param
=
119
;
...
...
@@ -1207,6 +1208,15 @@ message InputParameter {
repeated
BlobShape
shape
=
1
;
}
message
InterpParameter
{
optional
int32
height
=
1
[
default
=
0
];
// Height of output
optional
int32
width
=
2
[
default
=
0
];
// Width of output
optional
int32
zoom_factor
=
3
[
default
=
1
];
// zoom factor
optional
int32
shrink_factor
=
4
[
default
=
1
];
// shrink factor
optional
int32
pad_beg
=
5
[
default
=
0
];
// padding at begin of input
optional
int32
pad_end
=
6
[
default
=
0
];
// padding at end of input
}
// Message that stores parameters used by LogLayer
message
LogParameter
{
// LogLayer computes outputs y = log_base(shift + scale * x), for base > 0.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录