Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
a692d87c
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
a692d87c
编写于
10月 19, 2018
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #12875 from dkurt:dnn_enet_accuracy
上级
9c9fb1c6
e7015f6a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
44 addition
and
2 deletion
+44
-2
modules/dnn/test/test_torch_importer.cpp
modules/dnn/test/test_torch_importer.cpp
+44
-2
未找到文件。
modules/dnn/test/test_torch_importer.cpp
浏览文件 @
a692d87c
...
...
@@ -287,6 +287,46 @@ TEST_P(Test_Torch_nets, OpenFace_accuracy)
normAssert
(
out
,
outRef
,
""
,
default_l1
,
default_lInf
);
}
static
Mat
getSegmMask
(
const
Mat
&
scores
)
{
const
int
rows
=
scores
.
size
[
2
];
const
int
cols
=
scores
.
size
[
3
];
const
int
numClasses
=
scores
.
size
[
1
];
Mat
maxCl
=
Mat
::
zeros
(
rows
,
cols
,
CV_8UC1
);
Mat
maxVal
(
rows
,
cols
,
CV_32FC1
,
Scalar
(
0
));
for
(
int
ch
=
0
;
ch
<
numClasses
;
ch
++
)
{
for
(
int
row
=
0
;
row
<
rows
;
row
++
)
{
const
float
*
ptrScore
=
scores
.
ptr
<
float
>
(
0
,
ch
,
row
);
uint8_t
*
ptrMaxCl
=
maxCl
.
ptr
<
uint8_t
>
(
row
);
float
*
ptrMaxVal
=
maxVal
.
ptr
<
float
>
(
row
);
for
(
int
col
=
0
;
col
<
cols
;
col
++
)
{
if
(
ptrScore
[
col
]
>
ptrMaxVal
[
col
])
{
ptrMaxVal
[
col
]
=
ptrScore
[
col
];
ptrMaxCl
[
col
]
=
(
uchar
)
ch
;
}
}
}
}
return
maxCl
;
}
// Computer per-class intersection over union metric.
static
void
normAssertSegmentation
(
const
Mat
&
ref
,
const
Mat
&
test
)
{
CV_Assert_N
(
ref
.
dims
==
4
,
test
.
dims
==
4
);
const
int
numClasses
=
ref
.
size
[
1
];
CV_Assert
(
numClasses
==
test
.
size
[
1
]);
Mat
refMask
=
getSegmMask
(
ref
);
Mat
testMask
=
getSegmMask
(
test
);
EXPECT_EQ
(
countNonZero
(
refMask
!=
testMask
),
0
);
}
TEST_P
(
Test_Torch_nets
,
ENet_accuracy
)
{
checkBackend
();
...
...
@@ -313,14 +353,16 @@ TEST_P(Test_Torch_nets, ENet_accuracy)
// Due to numerical instability in Pooling-Unpooling layers (indexes jittering)
// thresholds for ENet must be changed. Accuracy of results was checked on
// Cityscapes dataset and difference in mIOU with Torch is 10E-4%
normAssert
(
ref
,
out
,
""
,
0.00044
,
/*target == DNN_TARGET_CPU ? 0.453 : */
0.5
);
normAssert
(
ref
,
out
,
""
,
0.00044
,
/*target == DNN_TARGET_CPU ? 0.453 : */
0.552
);
normAssertSegmentation
(
ref
,
out
);
const
int
N
=
3
;
for
(
int
i
=
0
;
i
<
N
;
i
++
)
{
net
.
setInput
(
inputBlob
,
""
);
Mat
out
=
net
.
forward
();
normAssert
(
ref
,
out
,
""
,
0.00044
,
/*target == DNN_TARGET_CPU ? 0.453 : */
0.5
);
normAssert
(
ref
,
out
,
""
,
0.00044
,
/*target == DNN_TARGET_CPU ? 0.453 : */
0.552
);
normAssertSegmentation
(
ref
,
out
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录