Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
9ed13323
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
9ed13323
编写于
3月 04, 2020
作者:
L
Liubov Batanina
提交者:
GitHub
3月 04, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge pull request #16722 from l-bat:reshape_opset_11
* Supported Div op for constants * Added Mul test
上级
57cf1201
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
41 addition
and
30 deletion
+41
-30
modules/dnn/src/onnx/onnx_importer.cpp
modules/dnn/src/onnx/onnx_importer.cpp
+39
-30
modules/dnn/test/test_onnx_importer.cpp
modules/dnn/test/test_onnx_importer.cpp
+2
-0
未找到文件。
modules/dnn/src/onnx/onnx_importer.cpp
浏览文件 @
9ed13323
...
...
@@ -465,31 +465,6 @@ void ONNXImporter::populateNet(Net dstNet)
layerParams
.
blobs
.
push_back
(
-
1.0
f
*
blob
.
reshape
(
1
,
1
));
}
}
else
if
(
layer_type
==
"Div"
)
{
if
(
constBlobs
.
find
(
node_proto
.
input
(
1
))
==
constBlobs
.
end
())
{
layerParams
.
type
=
"Eltwise"
;
layerParams
.
set
(
"operation"
,
"div"
);
}
else
{
Mat
blob
=
getBlob
(
node_proto
,
constBlobs
,
1
);
CV_Assert_N
(
blob
.
type
()
==
CV_32F
,
blob
.
total
());
if
(
blob
.
total
()
==
1
)
{
layerParams
.
set
(
"scale"
,
1.0
f
/
blob
.
at
<
float
>
(
0
));
layerParams
.
type
=
"Power"
;
}
else
{
layerParams
.
type
=
"Scale"
;
divide
(
1.0
,
blob
,
blob
);
layerParams
.
blobs
.
push_back
(
blob
);
layerParams
.
set
(
"bias_term"
,
false
);
}
}
}
else
if
(
layer_type
==
"Neg"
)
{
layerParams
.
type
=
"Power"
;
...
...
@@ -638,24 +613,58 @@ void ONNXImporter::populateNet(Net dstNet)
layerParams
.
set
(
"bias_term"
,
false
);
layerParams
.
set
(
"num_output"
,
layerParams
.
blobs
[
0
].
size
[
0
]);
}
else
if
(
layer_type
==
"Mul"
)
else
if
(
layer_type
==
"Mul"
||
layer_type
==
"Div"
)
{
CV_Assert
(
node_proto
.
input_size
()
==
2
);
if
(
layer_id
.
find
(
node_proto
.
input
(
1
))
==
layer_id
.
end
())
{
Mat
blob
=
getBlob
(
node_proto
,
constBlobs
,
1
);
bool
isDiv
=
layer_type
==
"Div"
;
int
constId
=
-
1
;
bool
haveVariables
=
false
;
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
if
(
constBlobs
.
find
(
node_proto
.
input
(
i
))
!=
constBlobs
.
end
())
constId
=
i
;
else
haveVariables
=
true
;
}
if
(
constId
!=
-
1
&&
haveVariables
)
{
Mat
blob
=
getBlob
(
node_proto
,
constBlobs
,
constId
);
blob
=
blob
.
reshape
(
1
,
1
);
if
(
blob
.
total
()
==
1
)
{
layerParams
.
set
(
"scale"
,
blob
.
at
<
float
>
(
0
));
float
coeff
=
isDiv
?
1.0
/
blob
.
at
<
float
>
(
0
)
:
blob
.
at
<
float
>
(
0
);
layerParams
.
set
(
"scale"
,
coeff
);
layerParams
.
type
=
"Power"
;
}
else
{
if
(
isDiv
)
divide
(
1.0
,
blob
,
blob
);
layerParams
.
blobs
.
push_back
(
blob
);
layerParams
.
type
=
"Scale"
;
}
}
else
{
layerParams
.
type
=
"Eltwise"
;
layerParams
.
set
(
"operation"
,
"prod"
);
layerParams
.
set
(
"operation"
,
isDiv
?
"div"
:
"prod"
);
}
if
(
!
haveVariables
)
{
Mat
inp0
=
getBlob
(
node_proto
,
constBlobs
,
0
);
Mat
inp1
=
getBlob
(
node_proto
,
constBlobs
,
1
);
if
(
inp0
.
size
!=
inp1
.
size
)
CV_Error
(
Error
::
StsNotImplemented
,
"Constant multiply with different shapes"
);
Mat
out
;
if
(
isDiv
)
divide
(
inp0
,
inp1
,
out
);
else
multiply
(
inp0
,
inp1
,
out
);
out
=
out
.
reshape
(
1
,
inp0
.
dims
,
inp0
.
size
);
out
.
dims
=
inp0
.
dims
;
// to workaround dims == 1
constBlobs
.
insert
(
std
::
make_pair
(
layerParams
.
name
,
out
));
continue
;
}
}
else
if
(
layer_type
==
"Conv"
)
...
...
modules/dnn/test/test_onnx_importer.cpp
浏览文件 @
9ed13323
...
...
@@ -382,6 +382,8 @@ TEST_P(Test_ONNX_layers, DynamicReshape)
if
(
target
==
DNN_TARGET_OPENCL
)
applyTestTag
(
CV_TEST_TAG_DNN_SKIP_IE_OPENCL
,
CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER
);
}
testONNXModels
(
"dynamic_reshape"
);
testONNXModels
(
"dynamic_reshape_opset_11"
);
testONNXModels
(
"flatten_by_prod"
);
}
TEST_P
(
Test_ONNX_layers
,
Reshape
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录