now it executes only on one device added posibility to specify device on which tests will be executedpull/13/merge
parent
ddca47040b
commit
6e4eb722a6
13 changed files with 2017 additions and 2791 deletions
File diff suppressed because it is too large
Load Diff
@ -1,209 +1,179 @@ |
||||
#include "perf_precomp.hpp" |
||||
|
||||
#ifdef HAVE_CUDA |
||||
using namespace std; |
||||
using namespace testing; |
||||
|
||||
namespace { |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// SURF
|
||||
|
||||
GPU_PERF_TEST_1(SURF, cv::gpu::DeviceInfo) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
DEF_PARAM_TEST_1(Image, string); |
||||
|
||||
cv::Mat img_host = readImage("gpu/perf/aloe.jpg", cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img_host.empty()); |
||||
PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.jpg")) |
||||
{ |
||||
declare.time(2.0); |
||||
|
||||
cv::gpu::SURF_GPU surf; |
||||
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img.empty()); |
||||
|
||||
cv::gpu::GpuMat img(img_host); |
||||
cv::gpu::GpuMat keypoints, descriptors; |
||||
cv::gpu::SURF_GPU d_surf; |
||||
|
||||
surf(img, cv::gpu::GpuMat(), keypoints, descriptors); |
||||
cv::gpu::GpuMat d_img(img); |
||||
cv::gpu::GpuMat d_keypoints, d_descriptors; |
||||
|
||||
declare.time(2.0); |
||||
d_surf(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
surf(img, cv::gpu::GpuMat(), keypoints, descriptors); |
||||
d_surf(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Features2D, SURF, ALL_DEVICES); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// FAST
|
||||
|
||||
GPU_PERF_TEST_1(FAST, cv::gpu::DeviceInfo) |
||||
PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.jpg")) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img.empty()); |
||||
|
||||
cv::Mat img_host = readImage("gpu/perf/aloe.jpg", cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img_host.empty()); |
||||
cv::gpu::FAST_GPU d_fast(20); |
||||
|
||||
cv::gpu::FAST_GPU fast(20); |
||||
cv::gpu::GpuMat d_img(img); |
||||
cv::gpu::GpuMat d_keypoints; |
||||
|
||||
cv::gpu::GpuMat img(img_host); |
||||
cv::gpu::GpuMat keypoints; |
||||
|
||||
fast(img, cv::gpu::GpuMat(), keypoints); |
||||
d_fast(d_img, cv::gpu::GpuMat(), d_keypoints); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
fast(img, cv::gpu::GpuMat(), keypoints); |
||||
d_fast(d_img, cv::gpu::GpuMat(), d_keypoints); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Features2D, FAST, ALL_DEVICES); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// ORB
|
||||
|
||||
GPU_PERF_TEST_1(ORB, cv::gpu::DeviceInfo) |
||||
PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.jpg")) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img.empty()); |
||||
|
||||
cv::Mat img_host = readImage("gpu/perf/aloe.jpg", cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img_host.empty()); |
||||
cv::gpu::ORB_GPU d_orb(4000); |
||||
|
||||
cv::gpu::ORB_GPU orb(4000); |
||||
cv::gpu::GpuMat d_img(img); |
||||
cv::gpu::GpuMat d_keypoints, d_descriptors; |
||||
|
||||
cv::gpu::GpuMat img(img_host); |
||||
cv::gpu::GpuMat keypoints, descriptors; |
||||
d_orb(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
orb(img, cv::gpu::GpuMat(), keypoints, descriptors); |
||||
d_orb(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Features2D, ORB, ALL_DEVICES); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// BruteForceMatcher_match
|
||||
// BFMatch
|
||||
|
||||
IMPLEMENT_PARAM_CLASS(DescriptorSize, int) |
||||
DEF_PARAM_TEST(DescSize_Norm, int, NormType); |
||||
|
||||
GPU_PERF_TEST(BruteForceMatcher_match, cv::gpu::DeviceInfo, DescriptorSize, NormType) |
||||
PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
declare.time(3.0); |
||||
|
||||
int desc_size = GET_PARAM(1); |
||||
int normType = GET_PARAM(2); |
||||
int desc_size = GET_PARAM(0); |
||||
int normType = GET_PARAM(1); |
||||
|
||||
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
||||
|
||||
cv::Mat query_host(3000, desc_size, type); |
||||
fill(query_host, 0.0, 10.0); |
||||
|
||||
cv::Mat train_host(3000, desc_size, type); |
||||
fill(train_host, 0.0, 10.0); |
||||
cv::Mat query(3000, desc_size, type); |
||||
fillRandom(query); |
||||
|
||||
cv::gpu::BFMatcher_GPU matcher(normType); |
||||
cv::Mat train(3000, desc_size, type); |
||||
fillRandom(train); |
||||
|
||||
cv::gpu::GpuMat query(query_host); |
||||
cv::gpu::GpuMat train(train_host); |
||||
cv::gpu::GpuMat trainIdx, distance; |
||||
cv::gpu::BFMatcher_GPU d_matcher(normType); |
||||
|
||||
matcher.matchSingle(query, train, trainIdx, distance); |
||||
cv::gpu::GpuMat d_query(query); |
||||
cv::gpu::GpuMat d_train(train); |
||||
cv::gpu::GpuMat d_trainIdx, d_distance; |
||||
|
||||
declare.time(3.0); |
||||
d_matcher.matchSingle(d_query, d_train, d_trainIdx, d_distance); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
matcher.matchSingle(query, train, trainIdx, distance); |
||||
d_matcher.matchSingle(d_query, d_train, d_trainIdx, d_distance); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Features2D, BruteForceMatcher_match, testing::Combine( |
||||
ALL_DEVICES, |
||||
testing::Values(DescriptorSize(64), DescriptorSize(128), DescriptorSize(256)), |
||||
testing::Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// BruteForceMatcher_knnMatch
|
||||
// BFKnnMatch
|
||||
|
||||
IMPLEMENT_PARAM_CLASS(K, int) |
||||
DEF_PARAM_TEST(DescSize_K_Norm, int, int, NormType); |
||||
|
||||
GPU_PERF_TEST(BruteForceMatcher_knnMatch, cv::gpu::DeviceInfo, DescriptorSize, K, NormType) |
||||
PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine( |
||||
Values(64, 128, 256), |
||||
Values(2, 3), |
||||
Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
declare.time(3.0); |
||||
|
||||
int desc_size = GET_PARAM(1); |
||||
int k = GET_PARAM(2); |
||||
int normType = GET_PARAM(3); |
||||
int desc_size = GET_PARAM(0); |
||||
int k = GET_PARAM(1); |
||||
int normType = GET_PARAM(2); |
||||
|
||||
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
||||
|
||||
cv::Mat query_host(3000, desc_size, type); |
||||
fill(query_host, 0.0, 10.0); |
||||
|
||||
cv::Mat train_host(3000, desc_size, type); |
||||
fill(train_host, 0.0, 10.0); |
||||
cv::Mat query(3000, desc_size, type); |
||||
fillRandom(query); |
||||
|
||||
cv::gpu::BFMatcher_GPU matcher(normType); |
||||
cv::Mat train(3000, desc_size, type); |
||||
fillRandom(train); |
||||
|
||||
cv::gpu::GpuMat query(query_host); |
||||
cv::gpu::GpuMat train(train_host); |
||||
cv::gpu::GpuMat trainIdx, distance, allDist; |
||||
cv::gpu::BFMatcher_GPU d_matcher(normType); |
||||
|
||||
matcher.knnMatchSingle(query, train, trainIdx, distance, allDist, k); |
||||
cv::gpu::GpuMat d_query(query); |
||||
cv::gpu::GpuMat d_train(train); |
||||
cv::gpu::GpuMat d_trainIdx, d_distance, d_allDist; |
||||
|
||||
declare.time(3.0); |
||||
d_matcher.knnMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_allDist, k); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
matcher.knnMatchSingle(query, train, trainIdx, distance, allDist, k); |
||||
d_matcher.knnMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_allDist, k); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Features2D, BruteForceMatcher_knnMatch, testing::Combine( |
||||
ALL_DEVICES, |
||||
testing::Values(DescriptorSize(64), DescriptorSize(128), DescriptorSize(256)), |
||||
testing::Values(K(2), K(3)), |
||||
testing::Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// BruteForceMatcher_radiusMatch
|
||||
// BFRadiusMatch
|
||||
|
||||
GPU_PERF_TEST(BruteForceMatcher_radiusMatch, cv::gpu::DeviceInfo, DescriptorSize, NormType) |
||||
PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256), Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
declare.time(3.0); |
||||
|
||||
int desc_size = GET_PARAM(1); |
||||
int normType = GET_PARAM(2); |
||||
int desc_size = GET_PARAM(0); |
||||
int normType = GET_PARAM(1); |
||||
|
||||
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
||||
|
||||
cv::Mat query_host(3000, desc_size, type); |
||||
fill(query_host, 0.0, 1.0); |
||||
cv::Mat query(3000, desc_size, type); |
||||
fillRandom(query, 0.0, 1.0); |
||||
|
||||
cv::Mat train_host(3000, desc_size, type); |
||||
fill(train_host, 0.0, 1.0); |
||||
cv::Mat train(3000, desc_size, type); |
||||
fillRandom(train, 0.0, 1.0); |
||||
|
||||
cv::gpu::BFMatcher_GPU matcher(normType); |
||||
cv::gpu::BFMatcher_GPU d_matcher(normType); |
||||
|
||||
cv::gpu::GpuMat query(query_host); |
||||
cv::gpu::GpuMat train(train_host); |
||||
cv::gpu::GpuMat trainIdx, nMatches, distance; |
||||
cv::gpu::GpuMat d_query(query); |
||||
cv::gpu::GpuMat d_train(train); |
||||
cv::gpu::GpuMat d_trainIdx, d_nMatches, d_distance; |
||||
|
||||
matcher.radiusMatchSingle(query, train, trainIdx, distance, nMatches, 2.0); |
||||
|
||||
declare.time(3.0); |
||||
d_matcher.radiusMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_nMatches, 2.0); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
matcher.radiusMatchSingle(query, train, trainIdx, distance, nMatches, 2.0); |
||||
d_matcher.radiusMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_nMatches, 2.0); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Features2D, BruteForceMatcher_radiusMatch, testing::Combine( |
||||
ALL_DEVICES, |
||||
testing::Values(DescriptorSize(64), DescriptorSize(128), DescriptorSize(256)), |
||||
testing::Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))); |
||||
|
||||
#endif |
||||
} // namespace
|
||||
|
@ -1,308 +1,235 @@ |
||||
#include "perf_precomp.hpp" |
||||
|
||||
#ifdef HAVE_CUDA |
||||
using namespace std; |
||||
using namespace testing; |
||||
|
||||
namespace { |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Blur
|
||||
|
||||
IMPLEMENT_PARAM_CLASS(KernelSize, int) |
||||
DEF_PARAM_TEST(Sz_Type_KernelSz, cv::Size, MatType, int); |
||||
|
||||
GPU_PERF_TEST(Blur, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
||||
PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4), Values(3, 5, 7))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int ksize = GET_PARAM(3); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
int ksize = GET_PARAM(2); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
|
||||
cv::gpu::blur(src, dst, cv::Size(ksize, ksize)); |
||||
cv::gpu::blur(d_src, d_dst, cv::Size(ksize, ksize)); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::blur(src, dst, cv::Size(ksize, ksize)); |
||||
cv::gpu::blur(d_src, d_dst, cv::Size(ksize, ksize)); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, Blur, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)), |
||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Sobel
|
||||
|
||||
GPU_PERF_TEST(Sobel, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
||||
PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1), Values(3, 5, 7, 9, 11, 13, 15))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
int ksize = GET_PARAM(2); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int ksize = GET_PARAM(3); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
cv::gpu::GpuMat d_buf; |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat buf; |
||||
|
||||
cv::gpu::Sobel(src, dst, -1, 1, 1, buf, ksize); |
||||
cv::gpu::Sobel(d_src, d_dst, -1, 1, 1, d_buf, ksize); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::Sobel(src, dst, -1, 1, 1, buf, ksize); |
||||
cv::gpu::Sobel(d_src, d_dst, -1, 1, 1, d_buf, ksize); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, Sobel, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1)), |
||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7), KernelSize(9), KernelSize(11), KernelSize(13), KernelSize(15)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Scharr
|
||||
|
||||
GPU_PERF_TEST(Scharr, cv::gpu::DeviceInfo, cv::Size, MatType) |
||||
PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
cv::gpu::GpuMat d_buf; |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat buf; |
||||
|
||||
cv::gpu::Scharr(src, dst, -1, 1, 0, buf); |
||||
cv::gpu::Scharr(d_src, d_dst, -1, 1, 0, d_buf); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::Scharr(src, dst, -1, 1, 0, buf); |
||||
cv::gpu::Scharr(d_src, d_dst, -1, 1, 0, d_buf); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, Scharr, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// GaussianBlur
|
||||
|
||||
GPU_PERF_TEST(GaussianBlur, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
||||
PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1), Values(3, 5, 7, 9, 11, 13, 15))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int ksize = GET_PARAM(3); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
int ksize = GET_PARAM(2); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat buf; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
cv::gpu::GpuMat d_buf; |
||||
|
||||
cv::gpu::GaussianBlur(src, dst, cv::Size(ksize, ksize), buf, 0.5); |
||||
cv::gpu::GaussianBlur(d_src, d_dst, cv::Size(ksize, ksize), d_buf, 0.5); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::GaussianBlur(src, dst, cv::Size(ksize, ksize), buf, 0.5); |
||||
cv::gpu::GaussianBlur(d_src, d_dst, cv::Size(ksize, ksize), d_buf, 0.5); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, GaussianBlur, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1)), |
||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7), KernelSize(9), KernelSize(11), KernelSize(13), KernelSize(15)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Laplacian
|
||||
|
||||
GPU_PERF_TEST(Laplacian, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
||||
PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4), Values(1, 3))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int ksize = GET_PARAM(3); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
int ksize = GET_PARAM(2); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
|
||||
cv::gpu::Laplacian(src, dst, -1, ksize); |
||||
cv::gpu::Laplacian(d_src, d_dst, -1, ksize); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::Laplacian(src, dst, -1, ksize); |
||||
cv::gpu::Laplacian(d_src, d_dst, -1, ksize); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, Laplacian, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1), MatType(CV_32FC4)), |
||||
testing::Values(KernelSize(1), KernelSize(3)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Erode
|
||||
|
||||
GPU_PERF_TEST(Erode, cv::gpu::DeviceInfo, cv::Size, MatType) |
||||
PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat buf; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
cv::gpu::GpuMat d_buf; |
||||
|
||||
cv::gpu::erode(src, dst, ker, buf); |
||||
cv::gpu::erode(d_src, d_dst, ker, d_buf); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::erode(src, dst, ker, buf); |
||||
cv::gpu::erode(d_src, d_dst, ker, d_buf); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, Erode, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Dilate
|
||||
|
||||
GPU_PERF_TEST(Dilate, cv::gpu::DeviceInfo, cv::Size, MatType) |
||||
PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat buf; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
cv::gpu::GpuMat d_buf; |
||||
|
||||
cv::gpu::dilate(src, dst, ker, buf); |
||||
cv::gpu::dilate(d_src, d_dst, ker, d_buf); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::dilate(src, dst, ker, buf); |
||||
cv::gpu::dilate(d_src, d_dst, ker, d_buf); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, Dilate, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// MorphologyEx
|
||||
|
||||
CV_ENUM(MorphOp, cv::MORPH_OPEN, cv::MORPH_CLOSE, cv::MORPH_GRADIENT, cv::MORPH_TOPHAT, cv::MORPH_BLACKHAT) |
||||
#define ALL_MORPH_OPS testing::Values(MorphOp(cv::MORPH_OPEN), MorphOp(cv::MORPH_CLOSE), MorphOp(cv::MORPH_GRADIENT), MorphOp(cv::MORPH_TOPHAT), MorphOp(cv::MORPH_BLACKHAT)) |
||||
#define ALL_MORPH_OPS ValuesIn(MorphOp::all()) |
||||
|
||||
GPU_PERF_TEST(MorphologyEx, cv::gpu::DeviceInfo, cv::Size, MatType, MorphOp) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
DEF_PARAM_TEST(Sz_Type_Op, cv::Size, MatType, MorphOp); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int morphOp = GET_PARAM(3); |
||||
PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4), ALL_MORPH_OPS)) |
||||
{ |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
int morphOp = GET_PARAM(2); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat buf1; |
||||
cv::gpu::GpuMat buf2; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
cv::gpu::GpuMat d_buf1; |
||||
cv::gpu::GpuMat d_buf2; |
||||
|
||||
cv::gpu::morphologyEx(src, dst, morphOp, ker, buf1, buf2); |
||||
cv::gpu::morphologyEx(d_src, d_dst, morphOp, ker, d_buf1, d_buf2); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::morphologyEx(src, dst, morphOp, ker, buf1, buf2); |
||||
cv::gpu::morphologyEx(d_src, d_dst, morphOp, ker, d_buf1, d_buf2); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, MorphologyEx, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)), |
||||
ALL_MORPH_OPS)); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Filter2D
|
||||
|
||||
GPU_PERF_TEST(Filter2D, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
||||
PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4), Values(3, 5, 7, 9, 11, 13, 15))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Size size = GET_PARAM(0); |
||||
int type = GET_PARAM(1); |
||||
int ksize = GET_PARAM(2); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int ksize = GET_PARAM(3); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0.0, 255.0); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat kernel(ksize, ksize, CV_32FC1); |
||||
fill(kernel, 0.0, 1.0); |
||||
fillRandom(kernel, 0.0, 1.0); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
|
||||
cv::gpu::filter2D(src, dst, -1, kernel); |
||||
cv::gpu::filter2D(d_src, d_dst, -1, kernel); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cv::gpu::filter2D(src, dst, -1, kernel); |
||||
cv::gpu::filter2D(d_src, d_dst, -1, kernel); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(Filters, Filter2D, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1), MatType(CV_32FC4)), |
||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7), KernelSize(9), KernelSize(11), KernelSize(13), KernelSize(15)))); |
||||
|
||||
#endif |
||||
} // namespace
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,141 +1,115 @@ |
||||
#include "perf_precomp.hpp" |
||||
|
||||
#ifdef HAVE_CUDA |
||||
using namespace std; |
||||
using namespace testing; |
||||
|
||||
namespace { |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// SetTo
|
||||
|
||||
GPU_PERF_TEST(SetTo, cv::gpu::DeviceInfo, cv::Size, MatType) |
||||
PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(1, 3, 4))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Size size = GET_PARAM(0); |
||||
int depth = GET_PARAM(1); |
||||
int channels = GET_PARAM(2); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int type = CV_MAKE_TYPE(depth, channels); |
||||
|
||||
cv::gpu::GpuMat src(size, type); |
||||
cv::Scalar val(1, 2, 3, 4); |
||||
|
||||
src.setTo(val); |
||||
cv::gpu::GpuMat d_src(size, type); |
||||
|
||||
d_src.setTo(val); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
src.setTo(val); |
||||
d_src.setTo(val); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(MatOp, SetTo, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC3), MatType(CV_8UC4), |
||||
MatType(CV_16UC1), MatType(CV_16UC3), MatType(CV_16UC4), |
||||
MatType(CV_32FC1), MatType(CV_32FC3), MatType(CV_32FC4), |
||||
MatType(CV_64FC1), MatType(CV_64FC3), MatType(CV_64FC4)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// SetToMasked
|
||||
|
||||
GPU_PERF_TEST(SetToMasked, cv::gpu::DeviceInfo, cv::Size, MatType) |
||||
PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(1, 3, 4))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Size size = GET_PARAM(0); |
||||
int depth = GET_PARAM(1); |
||||
int channels = GET_PARAM(2); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int type = CV_MAKE_TYPE(depth, channels); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0, 255); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat mask_host(size, CV_8UC1); |
||||
fill(mask_host, 0, 2); |
||||
cv::Mat mask(size, CV_8UC1); |
||||
fillRandom(mask, 0, 2); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::Scalar val(1, 2, 3, 4); |
||||
cv::gpu::GpuMat mask(mask_host); |
||||
|
||||
src.setTo(val, mask); |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_mask(mask); |
||||
|
||||
d_src.setTo(val, d_mask); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
src.setTo(val, mask); |
||||
d_src.setTo(val, d_mask); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(MatOp, SetToMasked, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC3), MatType(CV_8UC4), |
||||
MatType(CV_16UC1), MatType(CV_16UC3), MatType(CV_16UC4), |
||||
MatType(CV_32FC1), MatType(CV_32FC3), MatType(CV_32FC4), |
||||
MatType(CV_64FC1), MatType(CV_64FC3), MatType(CV_64FC4)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// CopyToMasked
|
||||
|
||||
GPU_PERF_TEST(CopyToMasked, cv::gpu::DeviceInfo, cv::Size, MatType) |
||||
PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(1, 3, 4))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Size size = GET_PARAM(0); |
||||
int depth = GET_PARAM(1); |
||||
int channels = GET_PARAM(2); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int type = GET_PARAM(2); |
||||
int type = CV_MAKE_TYPE(depth, channels); |
||||
|
||||
cv::Mat src_host(size, type); |
||||
fill(src_host, 0, 255); |
||||
cv::Mat src(size, type); |
||||
fillRandom(src); |
||||
|
||||
cv::Mat mask_host(size, CV_8UC1); |
||||
fill(mask_host, 0, 2); |
||||
cv::Mat mask(size, CV_8UC1); |
||||
fillRandom(mask, 0, 2); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat mask(mask_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_mask(mask); |
||||
cv::gpu::GpuMat d_dst; |
||||
|
||||
src.copyTo(dst, mask); |
||||
d_src.copyTo(d_dst, d_mask); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
src.copyTo(dst, mask); |
||||
d_src.copyTo(d_dst, d_mask); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(MatOp, CopyToMasked, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC3), MatType(CV_8UC4), |
||||
MatType(CV_16UC1), MatType(CV_16UC3), MatType(CV_16UC4), |
||||
MatType(CV_32FC1), MatType(CV_32FC3), MatType(CV_32FC4), |
||||
MatType(CV_64FC1), MatType(CV_64FC3), MatType(CV_64FC4)))); |
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// ConvertTo
|
||||
|
||||
GPU_PERF_TEST(ConvertTo, cv::gpu::DeviceInfo, cv::Size, MatDepth, MatDepth) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
DEF_PARAM_TEST(Sz_2Depth, cv::Size, MatDepth, MatDepth); |
||||
|
||||
cv::Size size = GET_PARAM(1); |
||||
int depth1 = GET_PARAM(2); |
||||
int depth2 = GET_PARAM(3); |
||||
PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(CV_8U, CV_16U, CV_32F, CV_64F))) |
||||
{ |
||||
cv::Size size = GET_PARAM(0); |
||||
int depth1 = GET_PARAM(1); |
||||
int depth2 = GET_PARAM(2); |
||||
|
||||
cv::Mat src_host(size, depth1); |
||||
fill(src_host, 0, 255); |
||||
cv::Mat src(size, depth1); |
||||
fillRandom(src); |
||||
|
||||
cv::gpu::GpuMat src(src_host); |
||||
cv::gpu::GpuMat dst; |
||||
cv::gpu::GpuMat d_src(src); |
||||
cv::gpu::GpuMat d_dst; |
||||
|
||||
src.convertTo(dst, depth2, 0.5, 1.0); |
||||
d_src.convertTo(d_dst, depth2, 0.5, 1.0); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
src.convertTo(dst, depth2, 0.5, 1.0); |
||||
d_src.convertTo(d_dst, depth2, 0.5, 1.0); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(MatOp, ConvertTo, testing::Combine( |
||||
ALL_DEVICES, |
||||
GPU_TYPICAL_MAT_SIZES, |
||||
testing::Values(MatDepth(CV_8U), MatDepth(CV_16U), MatDepth(CV_32F), MatDepth(CV_64F)), |
||||
testing::Values(MatDepth(CV_8U), MatDepth(CV_16U), MatDepth(CV_32F), MatDepth(CV_64F)))); |
||||
|
||||
#endif |
||||
} // namespace
|
||||
|
@ -1,85 +1,84 @@ |
||||
#include "perf_precomp.hpp" |
||||
|
||||
#ifdef HAVE_CUDA |
||||
using namespace std; |
||||
using namespace testing; |
||||
|
||||
namespace { |
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// HOG
|
||||
|
||||
GPU_PERF_TEST_1(HOG, cv::gpu::DeviceInfo) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
DEF_PARAM_TEST_1(Image, string); |
||||
|
||||
cv::Mat img_host = readImage("gpu/hog/road.png", cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img_host.empty()); |
||||
PERF_TEST_P(Image, ObjDetect_HOG, Values<string>("gpu/hog/road.png")) |
||||
{ |
||||
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img.empty()); |
||||
|
||||
cv::gpu::GpuMat img(img_host); |
||||
std::vector<cv::Rect> found_locations; |
||||
|
||||
cv::gpu::HOGDescriptor hog; |
||||
hog.setSVMDetector(cv::gpu::HOGDescriptor::getDefaultPeopleDetector()); |
||||
cv::gpu::GpuMat d_img(img); |
||||
|
||||
hog.detectMultiScale(img, found_locations); |
||||
cv::gpu::HOGDescriptor d_hog; |
||||
d_hog.setSVMDetector(cv::gpu::HOGDescriptor::getDefaultPeopleDetector()); |
||||
|
||||
d_hog.detectMultiScale(d_img, found_locations); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
hog.detectMultiScale(img, found_locations); |
||||
d_hog.detectMultiScale(d_img, found_locations); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(ObjDetect, HOG, ALL_DEVICES); |
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// HaarClassifier
|
||||
|
||||
GPU_PERF_TEST_1(HaarClassifier, cv::gpu::DeviceInfo) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
typedef pair<string, string> pair_string; |
||||
DEF_PARAM_TEST_1(ImageAndCascade, pair_string); |
||||
|
||||
cv::Mat img_host = readImage("gpu/haarcascade/group_1_640x480_VGA.pgm", cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img_host.empty()); |
||||
PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier, |
||||
Values<pair_string>(make_pair("gpu/haarcascade/group_1_640x480_VGA.pgm", "gpu/perf/haarcascade_frontalface_alt.xml"))) |
||||
{ |
||||
cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img.empty()); |
||||
|
||||
cv::gpu::CascadeClassifier_GPU cascade; |
||||
cv::gpu::CascadeClassifier_GPU d_cascade; |
||||
|
||||
ASSERT_TRUE(cascade.load(perf::TestBase::getDataPath("gpu/perf/haarcascade_frontalface_alt.xml"))); |
||||
ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second))); |
||||
|
||||
cv::gpu::GpuMat img(img_host); |
||||
cv::gpu::GpuMat objects_buffer; |
||||
cv::gpu::GpuMat d_img(img); |
||||
cv::gpu::GpuMat d_objects_buffer; |
||||
|
||||
cascade.detectMultiScale(img, objects_buffer); |
||||
d_cascade.detectMultiScale(d_img, d_objects_buffer); |
||||
|
||||
TEST_CYCLE() |
||||
{ |
||||
cascade.detectMultiScale(img, objects_buffer); |
||||
d_cascade.detectMultiScale(d_img, d_objects_buffer); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(ObjDetect, HaarClassifier, ALL_DEVICES); |
||||
///////////////////////////////////////////////////////////////
|
||||
// LBP cascade
|
||||
|
||||
//===================== LBP cascade ==========================//
|
||||
GPU_PERF_TEST_1(LBPClassifier, cv::gpu::DeviceInfo) |
||||
PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier, |
||||
Values<pair_string>(make_pair("gpu/haarcascade/group_1_640x480_VGA.pgm", "gpu/lbpcascade/lbpcascade_frontalface.xml"))) |
||||
{ |
||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
||||
cv::gpu::setDevice(devInfo.deviceID()); |
||||
cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img.empty()); |
||||
|
||||
cv::Mat img_host = readImage("gpu/haarcascade/group_1_640x480_VGA.pgm", cv::IMREAD_GRAYSCALE); |
||||
ASSERT_FALSE(img_host.empty()); |
||||
cv::gpu::CascadeClassifier_GPU d_cascade; |
||||
|
||||
ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second))); |
||||
|
||||
cv::gpu::GpuMat d_img(img); |
||||
cv::gpu::GpuMat d_gpu_rects; |
||||
|
||||
cv::gpu::GpuMat img(img_host); |
||||
cv::gpu::GpuMat gpu_rects; |
||||
cv::gpu::CascadeClassifier_GPU cascade; |
||||
ASSERT_TRUE(cascade.load(perf::TestBase::getDataPath("gpu/lbpcascade/lbpcascade_frontalface.xml"))); |
||||
d_cascade.detectMultiScale(d_img, d_gpu_rects); |
||||
|
||||
cascade.detectMultiScale(img, gpu_rects); |
||||
TEST_CYCLE() |
||||
{ |
||||
cascade.detectMultiScale(img, gpu_rects); |
||||
d_cascade.detectMultiScale(d_img, d_gpu_rects); |
||||
} |
||||
} |
||||
|
||||
INSTANTIATE_TEST_CASE_P(ObjDetect, LBPClassifier, ALL_DEVICES); |
||||
|
||||
#endif |
||||
} // namespace
|
||||
|
Loading…
Reference in new issue