Skip to content

Commit 5860b76

Browse files
committed
feature2d: rework opencl perf tests
use the same configuration as cpu tests
1 parent eb6d48f commit 5860b76

File tree

5 files changed

+161
-211
lines changed

5 files changed

+161
-211
lines changed

modules/features2d/perf/opencl/perf_fast.cpp

Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#include "../perf_precomp.hpp"
2+
#include "opencv2/ts/ocl_perf.hpp"
3+
#include "../perf_feature2d.hpp"
4+
5+
#ifdef HAVE_OPENCL
6+
7+
namespace cvtest {
8+
namespace ocl {
9+
10+
OCL_PERF_TEST_P(feature2d, detect, testing::Combine(Feature2DType::all(), TEST_IMAGES))
11+
{
12+
Ptr<Feature2D> detector = getFeature2D(get<0>(GetParam()));
13+
std::string filename = getDataPath(get<1>(GetParam()));
14+
Mat mimg = imread(filename, IMREAD_GRAYSCALE);
15+
16+
ASSERT_FALSE(mimg.empty());
17+
ASSERT_TRUE(detector);
18+
19+
UMat img, mask;
20+
mimg.copyTo(img);
21+
declare.in(img);
22+
vector<KeyPoint> points;
23+
24+
OCL_TEST_CYCLE() detector->detect(img, points, mask);
25+
26+
EXPECT_GT(points.size(), 20u);
27+
SANITY_CHECK_NOTHING();
28+
}
29+
30+
OCL_PERF_TEST_P(feature2d, extract, testing::Combine(testing::Values(DETECTORS_EXTRACTORS), TEST_IMAGES))
31+
{
32+
Ptr<Feature2D> detector = AKAZE::create();
33+
Ptr<Feature2D> extractor = getFeature2D(get<0>(GetParam()));
34+
std::string filename = getDataPath(get<1>(GetParam()));
35+
Mat mimg = imread(filename, IMREAD_GRAYSCALE);
36+
37+
ASSERT_FALSE(mimg.empty());
38+
ASSERT_TRUE(extractor);
39+
40+
UMat img, mask;
41+
mimg.copyTo(img);
42+
declare.in(img);
43+
vector<KeyPoint> points;
44+
detector->detect(img, points, mask);
45+
46+
EXPECT_GT(points.size(), 20u);
47+
48+
UMat descriptors;
49+
50+
OCL_TEST_CYCLE() extractor->compute(img, points, descriptors);
51+
52+
EXPECT_EQ((size_t)descriptors.rows, points.size());
53+
SANITY_CHECK_NOTHING();
54+
}
55+
56+
OCL_PERF_TEST_P(feature2d, detectAndExtract, testing::Combine(testing::Values(DETECTORS_EXTRACTORS), TEST_IMAGES))
57+
{
58+
Ptr<Feature2D> detector = getFeature2D(get<0>(GetParam()));
59+
std::string filename = getDataPath(get<1>(GetParam()));
60+
Mat mimg = imread(filename, IMREAD_GRAYSCALE);
61+
62+
ASSERT_FALSE(mimg.empty());
63+
ASSERT_TRUE(detector);
64+
65+
UMat img, mask;
66+
mimg.copyTo(img);
67+
declare.in(img);
68+
vector<KeyPoint> points;
69+
UMat descriptors;
70+
71+
OCL_TEST_CYCLE() detector->detectAndCompute(img, mask, points, descriptors, false);
72+
73+
EXPECT_GT(points.size(), 20u);
74+
EXPECT_EQ((size_t)descriptors.rows, points.size());
75+
SANITY_CHECK_NOTHING();
76+
}
77+
78+
} // ocl
79+
} // cvtest
80+
81+
#endif // HAVE_OPENCL

modules/features2d/perf/opencl/perf_orb.cpp

Lines changed: 0 additions & 87 deletions
This file was deleted.

modules/features2d/perf/perf_feature2d.cpp

Lines changed: 1 addition & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,4 @@
1-
#include "perf_precomp.hpp"
2-
3-
using namespace std;
4-
using namespace cv;
5-
using namespace perf;
6-
using std::tr1::make_tuple;
7-
using std::tr1::get;
8-
// detectors/descriptors configurations to test
9-
#define DETECTORS_ONLY \
10-
FAST_DEFAULT, FAST_20_TRUE_TYPE5_8, FAST_20_TRUE_TYPE7_12, FAST_20_TRUE_TYPE9_16, \
11-
FAST_20_FALSE_TYPE5_8, FAST_20_FALSE_TYPE7_12, FAST_20_FALSE_TYPE9_16, \
12-
\
13-
AGAST_DEFAULT, AGAST_5_8, AGAST_7_12d, AGAST_7_12s, AGAST_OAST_9_16, \
14-
\
15-
MSER_DEFAULT
16-
17-
#define DETECTORS_EXTRACTORS \
18-
ORB_DEFAULT, ORB_1500_13_1, \
19-
AKAZE_DEFAULT, AKAZE_DESCRIPTOR_KAZE, \
20-
BRISK_DEFAULT, \
21-
KAZE_DEFAULT
22-
23-
enum { DETECTORS_ONLY, DETECTORS_EXTRACTORS };
24-
CV_ENUM(Feature2DType, DETECTORS_ONLY, DETECTORS_EXTRACTORS)
25-
26-
typedef std::tr1::tuple<Feature2DType, string> Feature2DType_String_t;
27-
typedef perf::TestBaseWithParam<Feature2DType_String_t> feature2d;
28-
29-
#define TEST_IMAGES testing::Values(\
30-
"cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\
31-
"stitching/a3.png")
32-
33-
static inline Ptr<Feature2D> getFeature2D(Feature2DType type)
34-
{
35-
switch(type) {
36-
case ORB_DEFAULT:
37-
return ORB::create();
38-
case ORB_1500_13_1:
39-
return ORB::create(1500, 1.3f, 1);
40-
case FAST_DEFAULT:
41-
return FastFeatureDetector::create();
42-
case FAST_20_TRUE_TYPE5_8:
43-
return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_5_8);
44-
case FAST_20_TRUE_TYPE7_12:
45-
return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_7_12);
46-
case FAST_20_TRUE_TYPE9_16:
47-
return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_9_16);
48-
case FAST_20_FALSE_TYPE5_8:
49-
return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_5_8);
50-
case FAST_20_FALSE_TYPE7_12:
51-
return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_7_12);
52-
case FAST_20_FALSE_TYPE9_16:
53-
return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_9_16);
54-
case AGAST_DEFAULT:
55-
return AgastFeatureDetector::create();
56-
case AGAST_5_8:
57-
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_5_8);
58-
case AGAST_7_12d:
59-
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_7_12d);
60-
case AGAST_7_12s:
61-
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_7_12s);
62-
case AGAST_OAST_9_16:
63-
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::OAST_9_16);
64-
case AKAZE_DEFAULT:
65-
return AKAZE::create();
66-
case AKAZE_DESCRIPTOR_KAZE:
67-
return AKAZE::create(AKAZE::DESCRIPTOR_KAZE);
68-
case BRISK_DEFAULT:
69-
return BRISK::create();
70-
case KAZE_DEFAULT:
71-
return KAZE::create();
72-
case MSER_DEFAULT:
73-
return MSER::create();
74-
default:
75-
return Ptr<Feature2D>();
76-
}
77-
}
1+
#include "perf_feature2d.hpp"
782

793
PERF_TEST_P(feature2d, detect, testing::Combine(Feature2DType::all(), TEST_IMAGES))
804
{
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#include "perf_precomp.hpp"
2+
3+
/* cofiguration for tests of detectors/descriptors. shared between ocl and cpu tests. */
4+
5+
using namespace std;
6+
using namespace cv;
7+
using namespace perf;
8+
using std::tr1::make_tuple;
9+
using std::tr1::get;
10+
// detectors/descriptors configurations to test
11+
#define DETECTORS_ONLY \
12+
FAST_DEFAULT, FAST_20_TRUE_TYPE5_8, FAST_20_TRUE_TYPE7_12, FAST_20_TRUE_TYPE9_16, \
13+
FAST_20_FALSE_TYPE5_8, FAST_20_FALSE_TYPE7_12, FAST_20_FALSE_TYPE9_16, \
14+
\
15+
AGAST_DEFAULT, AGAST_5_8, AGAST_7_12d, AGAST_7_12s, AGAST_OAST_9_16, \
16+
\
17+
MSER_DEFAULT
18+
19+
#define DETECTORS_EXTRACTORS \
20+
ORB_DEFAULT, ORB_1500_13_1, \
21+
AKAZE_DEFAULT, AKAZE_DESCRIPTOR_KAZE, \
22+
BRISK_DEFAULT, \
23+
KAZE_DEFAULT
24+
25+
enum { DETECTORS_ONLY, DETECTORS_EXTRACTORS };
26+
CV_ENUM(Feature2DType, DETECTORS_ONLY, DETECTORS_EXTRACTORS)
27+
28+
typedef std::tr1::tuple<Feature2DType, string> Feature2DType_String_t;
29+
typedef perf::TestBaseWithParam<Feature2DType_String_t> feature2d;
30+
31+
#define TEST_IMAGES testing::Values(\
32+
"cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\
33+
"stitching/a3.png")
34+
35+
static inline Ptr<Feature2D> getFeature2D(Feature2DType type)
36+
{
37+
switch(type) {
38+
case ORB_DEFAULT:
39+
return ORB::create();
40+
case ORB_1500_13_1:
41+
return ORB::create(1500, 1.3f, 1);
42+
case FAST_DEFAULT:
43+
return FastFeatureDetector::create();
44+
case FAST_20_TRUE_TYPE5_8:
45+
return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_5_8);
46+
case FAST_20_TRUE_TYPE7_12:
47+
return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_7_12);
48+
case FAST_20_TRUE_TYPE9_16:
49+
return FastFeatureDetector::create(20, true, FastFeatureDetector::TYPE_9_16);
50+
case FAST_20_FALSE_TYPE5_8:
51+
return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_5_8);
52+
case FAST_20_FALSE_TYPE7_12:
53+
return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_7_12);
54+
case FAST_20_FALSE_TYPE9_16:
55+
return FastFeatureDetector::create(20, false, FastFeatureDetector::TYPE_9_16);
56+
case AGAST_DEFAULT:
57+
return AgastFeatureDetector::create();
58+
case AGAST_5_8:
59+
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_5_8);
60+
case AGAST_7_12d:
61+
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_7_12d);
62+
case AGAST_7_12s:
63+
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::AGAST_7_12s);
64+
case AGAST_OAST_9_16:
65+
return AgastFeatureDetector::create(70, true, AgastFeatureDetector::OAST_9_16);
66+
case AKAZE_DEFAULT:
67+
return AKAZE::create();
68+
case AKAZE_DESCRIPTOR_KAZE:
69+
return AKAZE::create(AKAZE::DESCRIPTOR_KAZE);
70+
case BRISK_DEFAULT:
71+
return BRISK::create();
72+
case KAZE_DEFAULT:
73+
return KAZE::create();
74+
case MSER_DEFAULT:
75+
return MSER::create();
76+
default:
77+
return Ptr<Feature2D>();
78+
}
79+
}

0 commit comments

Comments
 (0)