Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
3ea32b87
O
Opencv
项目概览
Greenplum
/
Opencv
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
3ea32b87
编写于
1月 30, 2014
作者:
K
Konstantin Matskevich
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
perf test
上级
9a62df16
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
113 addition
and
5 deletion
+113
-5
modules/objdetect/perf/opencl/perf_hogdetect.cpp
modules/objdetect/perf/opencl/perf_hogdetect.cpp
+94
-0
modules/objdetect/src/hog.cpp
modules/objdetect/src/hog.cpp
+2
-2
modules/objdetect/test/opencl/test_hogdetector.cpp
modules/objdetect/test/opencl/test_hogdetector.cpp
+17
-3
未找到文件。
modules/objdetect/perf/opencl/perf_hogdetect.cpp
0 → 100644
浏览文件 @
3ea32b87
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved.
// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved.
// Third party copyrights are property of their respective owners.
//
// @Authors
// Fangfang Bai, fangfang@multicorewareinc.com
// Jin Ma, jin@multicorewareinc.com
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors as is and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "perf_precomp.hpp"
#include "opencv2/ts/ocl_perf.hpp"
#ifdef HAVE_OPENCL
namespace
cvtest
{
namespace
ocl
{
///////////// HOG////////////////////////
struct
RectLess
:
public
std
::
binary_function
<
cv
::
Rect
,
cv
::
Rect
,
bool
>
{
bool
operator
()(
const
cv
::
Rect
&
a
,
const
cv
::
Rect
&
b
)
const
{
if
(
a
.
x
!=
b
.
x
)
return
a
.
x
<
b
.
x
;
else
if
(
a
.
y
!=
b
.
y
)
return
a
.
y
<
b
.
y
;
else
if
(
a
.
width
!=
b
.
width
)
return
a
.
width
<
b
.
width
;
else
return
a
.
height
<
b
.
height
;
}
};
OCL_PERF_TEST
(
HOGFixture
,
HOG
)
{
UMat
src
;
imread
(
getDataPath
(
"gpu/hog/road.png"
),
cv
::
IMREAD_GRAYSCALE
).
copyTo
(
src
);
CV_Assert
(
!
src
.
empty
());
vector
<
cv
::
Rect
>
found_locations
;
declare
.
in
(
src
).
time
(
5
);
HOGDescriptor
hog
;
hog
.
setSVMDetector
(
hog
.
getDefaultPeopleDetector
());
OCL_TEST_CYCLE
()
hog
.
detectMultiScale
(
src
,
found_locations
);
std
::
sort
(
found_locations
.
begin
(),
found_locations
.
end
(),
RectLess
());
// SANITY_CHECK(found_locations, 1 + DBL_EPSILON);
}
}
}
#endif
modules/objdetect/src/hog.cpp
浏览文件 @
3ea32b87
...
...
@@ -1377,7 +1377,7 @@ void HOGDescriptor::compute(InputArray _img, std::vector<float>& descriptors,
padding
.
height
=
(
int
)
alignSize
(
std
::
max
(
padding
.
height
,
0
),
cacheStride
.
height
);
Size
paddedImgSize
(
imgSize
.
width
+
padding
.
width
*
2
,
imgSize
.
height
+
padding
.
height
*
2
);
if
(
ocl
::
useOpenCL
()
&&
_img
.
dims
()
<=
2
&&
_img
.
type
()
==
CV_8UC1
&&
_img
.
isUMat
()
&&
if
(
ocl
::
useOpenCL
()
&&
_img
.
dims
()
<=
2
&&
_img
.
type
()
==
CV_8UC1
&&
_img
.
isUMat
()
&&
ocl_compute
(
_img
,
winStride
,
descriptors
,
DESCR_FORMAT_COL_BY_COL
))
return
;
...
...
@@ -1713,7 +1713,7 @@ bool HOGDescriptor::ocl_detect(const UMat& img, std::vector<Point> &hits,
effect_size
.
width
,
block_hists
,
(
float
)
L2HysThreshold
))
return
false
;
size_t
descriptor_size
=
getDescriptorSize
();
float
free_coef
=
free_coef
=
svmDetector
.
size
()
>
descriptor_size
?
svmDetector
[
descriptor_size
]
:
0
;
float
free_coef
=
svmDetector
.
size
()
>
descriptor_size
?
svmDetector
[
descriptor_size
]
:
0
;
Size
blocks_per_win
=
numPartsWithin
(
winSize
,
blockSize
,
blockStride
);
...
...
modules/objdetect/test/opencl/test_hogdetector.cpp
浏览文件 @
3ea32b87
...
...
@@ -59,7 +59,7 @@ namespace cvtest {
namespace
ocl
{
///////////////////// HOG /////////////////////////////
PARAM_TEST_CASE
(
HOG
,
Size
,
MatType
)
PARAM_TEST_CASE
(
HOG
,
Size
,
MatType
)
{
Size
winSize
;
int
type
;
...
...
@@ -69,7 +69,7 @@ namespace ocl {
{
winSize
=
GET_PARAM
(
0
);
type
=
GET_PARAM
(
1
);
img
=
readImage
(
"
C:/opencv_extra/testdata/gpu/hog/road
.png"
,
IMREAD_GRAYSCALE
);
img
=
readImage
(
"
cascadeandhog/images/image_00000000_0
.png"
,
IMREAD_GRAYSCALE
);
ASSERT_FALSE
(
img
.
empty
());
img
.
copyTo
(
uimg
);
}
...
...
@@ -90,7 +90,7 @@ OCL_TEST_P(HOG, GetDescriptors)
Mat
cpu_desc
(
cpu_descriptors
),
gpu_desc
(
gpu_descriptors
);
EXPECT_MAT_SIMILAR
(
cpu_desc
,
gpu_desc
,
1e-
2
);
EXPECT_MAT_SIMILAR
(
cpu_desc
,
gpu_desc
,
1e-
1
);
}
OCL_TEST_P
(
HOG
,
Detect
)
...
...
@@ -110,6 +110,20 @@ OCL_TEST_P(HOG, Detect)
OCL_OFF
(
hog
.
detectMultiScale
(
img
,
cpu_found
,
0
,
Size
(
8
,
8
),
Size
(
0
,
0
),
1.05
,
6
));
OCL_ON
(
hog
.
detectMultiScale
(
uimg
,
gpu_found
,
0
,
Size
(
8
,
8
),
Size
(
0
,
0
),
1.05
,
6
));
for
(
size_t
i
=
0
;
i
<
cpu_found
.
size
();
i
++
)
{
Rect
r
=
cpu_found
[
i
];
rectangle
(
img
,
r
.
tl
(),
r
.
br
(),
Scalar
(
0
,
255
,
0
),
3
);
}
imshow
(
"cpu"
,
img
);
Mat
imgs
(
img
);
for
(
size_t
i
=
0
;
i
<
gpu_found
.
size
();
i
++
)
{
Rect
r
=
cpu_found
[
i
];
rectangle
(
imgs
,
r
.
tl
(),
r
.
br
(),
Scalar
(
0
,
255
,
0
),
3
);
}
imshow
(
"gpu"
,
imgs
);
waitKey
(
0
);
EXPECT_LT
(
checkRectSimilarity
(
img
.
size
(),
cpu_found
,
gpu_found
),
1.0
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录