adjust test cases
This commit is contained in:
parent
14bd6402be
commit
a9b7ff41bd
@ -95,7 +95,7 @@ PERFTEST(BruteForceMatcher)
|
|||||||
GPU_FULL_ON;
|
GPU_FULL_ON;
|
||||||
d_query.upload(query);
|
d_query.upload(query);
|
||||||
d_train.upload(train);
|
d_train.upload(train);
|
||||||
d_matcher.match(d_query, d_train, matches[0]);
|
d_matcher.match(d_query, d_train, d_matches[0]);
|
||||||
GPU_FULL_OFF;
|
GPU_FULL_OFF;
|
||||||
|
|
||||||
int diff = abs((int)d_matches[0].size() - (int)matches[0].size());
|
int diff = abs((int)d_matches[0].size() - (int)matches[0].size());
|
||||||
|
@ -156,3 +156,73 @@ PERFTEST(PyrLKOpticalFlow)
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PERFTEST(tvl1flow)
|
||||||
|
{
|
||||||
|
cv::Mat frame0 = imread("rubberwhale1.png", cv::IMREAD_GRAYSCALE);
|
||||||
|
assert(!frame0.empty());
|
||||||
|
|
||||||
|
cv::Mat frame1 = imread("rubberwhale2.png", cv::IMREAD_GRAYSCALE);
|
||||||
|
assert(!frame1.empty());
|
||||||
|
|
||||||
|
cv::ocl::OpticalFlowDual_TVL1_OCL d_alg;
|
||||||
|
cv::ocl::oclMat d_flowx(frame0.size(), CV_32FC1);
|
||||||
|
cv::ocl::oclMat d_flowy(frame1.size(), CV_32FC1);
|
||||||
|
|
||||||
|
cv::Ptr<cv::DenseOpticalFlow> alg = cv::createOptFlow_DualTVL1();
|
||||||
|
cv::Mat flow;
|
||||||
|
|
||||||
|
|
||||||
|
SUBTEST << frame0.cols << 'x' << frame0.rows << "; rubberwhale1.png; "<<frame1.cols<<'x'<<frame1.rows<<"; rubberwhale2.png";
|
||||||
|
|
||||||
|
alg->calc(frame0, frame1, flow);
|
||||||
|
|
||||||
|
CPU_ON;
|
||||||
|
alg->calc(frame0, frame1, flow);
|
||||||
|
CPU_OFF;
|
||||||
|
|
||||||
|
cv::Mat gold[2];
|
||||||
|
cv::split(flow, gold);
|
||||||
|
|
||||||
|
cv::ocl::oclMat d0(frame0.size(), CV_32FC1);
|
||||||
|
d0.upload(frame0);
|
||||||
|
cv::ocl::oclMat d1(frame1.size(), CV_32FC1);
|
||||||
|
d1.upload(frame1);
|
||||||
|
|
||||||
|
WARMUP_ON;
|
||||||
|
d_alg(d0, d1, d_flowx, d_flowy);
|
||||||
|
WARMUP_OFF;
|
||||||
|
/*
|
||||||
|
double diff1 = 0.0, diff2 = 0.0;
|
||||||
|
if(ExceptedMatSimilar(gold[0], cv::Mat(d_flowx), 3e-3, diff1) == 1
|
||||||
|
&&ExceptedMatSimilar(gold[1], cv::Mat(d_flowy), 3e-3, diff2) == 1)
|
||||||
|
TestSystem::instance().setAccurate(1);
|
||||||
|
else
|
||||||
|
TestSystem::instance().setAccurate(0);
|
||||||
|
|
||||||
|
TestSystem::instance().setDiff(diff1);
|
||||||
|
TestSystem::instance().setDiff(diff2);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
GPU_ON;
|
||||||
|
d_alg(d0, d1, d_flowx, d_flowy);
|
||||||
|
d_alg.collectGarbage();
|
||||||
|
GPU_OFF;
|
||||||
|
|
||||||
|
|
||||||
|
cv::Mat flowx, flowy;
|
||||||
|
|
||||||
|
GPU_FULL_ON;
|
||||||
|
d0.upload(frame0);
|
||||||
|
d1.upload(frame1);
|
||||||
|
d_alg(d0, d1, d_flowx, d_flowy);
|
||||||
|
d_alg.collectGarbage();
|
||||||
|
d_flowx.download(flowx);
|
||||||
|
d_flowy.download(flowy);
|
||||||
|
GPU_FULL_OFF;
|
||||||
|
|
||||||
|
TestSystem::instance().ExceptedMatSimilar(gold[0], flowx, 3e-3);
|
||||||
|
TestSystem::instance().ExceptedMatSimilar(gold[1], flowy, 3e-3);
|
||||||
|
}
|
@ -87,3 +87,46 @@ PERFTEST(pyrDown)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////// pyrUp ////////////////////////
|
||||||
|
PERFTEST(pyrUp)
|
||||||
|
{
|
||||||
|
Mat src, dst, ocl_dst;
|
||||||
|
int all_type[] = {CV_8UC1, CV_8UC4};
|
||||||
|
std::string type_name[] = {"CV_8UC1", "CV_8UC4"};
|
||||||
|
|
||||||
|
for (int size = 500; size <= 2000; size *= 2)
|
||||||
|
{
|
||||||
|
for (size_t j = 0; j < sizeof(all_type) / sizeof(int); j++)
|
||||||
|
{
|
||||||
|
SUBTEST << size << 'x' << size << "; " << type_name[j] ;
|
||||||
|
|
||||||
|
gen(src, size, size, all_type[j], 0, 256);
|
||||||
|
|
||||||
|
pyrUp(src, dst);
|
||||||
|
|
||||||
|
CPU_ON;
|
||||||
|
pyrUp(src, dst);
|
||||||
|
CPU_OFF;
|
||||||
|
|
||||||
|
ocl::oclMat d_src(src);
|
||||||
|
ocl::oclMat d_dst;
|
||||||
|
|
||||||
|
WARMUP_ON;
|
||||||
|
ocl::pyrUp(d_src, d_dst);
|
||||||
|
WARMUP_OFF;
|
||||||
|
|
||||||
|
GPU_ON;
|
||||||
|
ocl::pyrUp(d_src, d_dst);
|
||||||
|
GPU_OFF;
|
||||||
|
|
||||||
|
GPU_FULL_ON;
|
||||||
|
d_src.upload(src);
|
||||||
|
ocl::pyrUp(d_src, d_dst);
|
||||||
|
d_dst.download(ocl_dst);
|
||||||
|
GPU_FULL_OFF;
|
||||||
|
|
||||||
|
TestSystem::instance().ExpectedMatNear(dst, ocl_dst, (src.depth() == CV_32F ? 1e-4f : 1.0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,89 +0,0 @@
|
|||||||
/*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 oclMaterials 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 "precomp.hpp"
|
|
||||||
|
|
||||||
///////////// pyrUp ////////////////////////
|
|
||||||
PERFTEST(pyrUp)
|
|
||||||
{
|
|
||||||
Mat src, dst, ocl_dst;
|
|
||||||
int all_type[] = {CV_8UC1, CV_8UC4};
|
|
||||||
std::string type_name[] = {"CV_8UC1", "CV_8UC4"};
|
|
||||||
|
|
||||||
for (int size = 500; size <= 2000; size *= 2)
|
|
||||||
{
|
|
||||||
for (size_t j = 0; j < sizeof(all_type) / sizeof(int); j++)
|
|
||||||
{
|
|
||||||
SUBTEST << size << 'x' << size << "; " << type_name[j] ;
|
|
||||||
|
|
||||||
gen(src, size, size, all_type[j], 0, 256);
|
|
||||||
|
|
||||||
pyrUp(src, dst);
|
|
||||||
|
|
||||||
CPU_ON;
|
|
||||||
pyrUp(src, dst);
|
|
||||||
CPU_OFF;
|
|
||||||
|
|
||||||
ocl::oclMat d_src(src);
|
|
||||||
ocl::oclMat d_dst;
|
|
||||||
|
|
||||||
WARMUP_ON;
|
|
||||||
ocl::pyrUp(d_src, d_dst);
|
|
||||||
WARMUP_OFF;
|
|
||||||
|
|
||||||
GPU_ON;
|
|
||||||
ocl::pyrUp(d_src, d_dst);
|
|
||||||
GPU_OFF;
|
|
||||||
|
|
||||||
GPU_FULL_ON;
|
|
||||||
d_src.upload(src);
|
|
||||||
ocl::pyrUp(d_src, d_dst);
|
|
||||||
d_dst.download(ocl_dst);
|
|
||||||
GPU_FULL_OFF;
|
|
||||||
|
|
||||||
TestSystem::instance().ExpectedMatNear(dst, ocl_dst, (src.depth() == CV_32F ? 1e-4f : 1.0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -471,134 +471,6 @@ void gen(Mat &mat, int rows, int cols, int type, Scalar low, Scalar high)
|
|||||||
RNG rng(0);
|
RNG rng(0);
|
||||||
rng.fill(mat, RNG::UNIFORM, low, high);
|
rng.fill(mat, RNG::UNIFORM, low, high);
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
void gen(Mat &mat, int rows, int cols, int type, int low, int high, int n)
|
|
||||||
{
|
|
||||||
assert(n > 0&&n <= cols * rows);
|
|
||||||
assert(type == CV_8UC1||type == CV_8UC3||type == CV_8UC4
|
|
||||||
||type == CV_32FC1||type == CV_32FC3||type == CV_32FC4);
|
|
||||||
|
|
||||||
RNG rng;
|
|
||||||
//generate random position without duplication
|
|
||||||
std::vector<int> pos;
|
|
||||||
for(int i = 0; i < cols * rows; i++)
|
|
||||||
{
|
|
||||||
pos.push_back(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < cols * rows; i++)
|
|
||||||
{
|
|
||||||
int temp = i + rng.uniform(0, cols * rows - 1 - i);
|
|
||||||
int temp1 = pos[temp];
|
|
||||||
pos[temp]= pos[i];
|
|
||||||
pos[i] = temp1;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<int> selected_pos;
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
selected_pos.push_back(pos[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
pos.clear();
|
|
||||||
//end of generating random y without duplication
|
|
||||||
|
|
||||||
if(type == CV_8UC1)
|
|
||||||
{
|
|
||||||
typedef struct coorStruct_
|
|
||||||
{
|
|
||||||
int x;
|
|
||||||
int y;
|
|
||||||
uchar xy;
|
|
||||||
}coorStruct;
|
|
||||||
|
|
||||||
coorStruct coor_struct;
|
|
||||||
|
|
||||||
std::vector<coorStruct> coor;
|
|
||||||
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
coor_struct.x = -1;
|
|
||||||
coor_struct.y = -1;
|
|
||||||
coor_struct.xy = (uchar)rng.uniform(low, high);
|
|
||||||
coor.push_back(coor_struct);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
coor[i].y = selected_pos[i]/cols;
|
|
||||||
coor[i].x = selected_pos[i]%cols;
|
|
||||||
}
|
|
||||||
selected_pos.clear();
|
|
||||||
|
|
||||||
mat.create(rows, cols, type);
|
|
||||||
mat.setTo(0);
|
|
||||||
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
mat.at<unsigned char>(coor[i].y, coor[i].x) = coor[i].xy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(type == CV_8UC4 || type == CV_8UC3)
|
|
||||||
{
|
|
||||||
mat.create(rows, cols, type);
|
|
||||||
mat.setTo(0);
|
|
||||||
|
|
||||||
typedef struct Coor
|
|
||||||
{
|
|
||||||
int x;
|
|
||||||
int y;
|
|
||||||
|
|
||||||
uchar r;
|
|
||||||
uchar g;
|
|
||||||
uchar b;
|
|
||||||
uchar alpha;
|
|
||||||
}coor;
|
|
||||||
|
|
||||||
std::vector<coor> coor_vect;
|
|
||||||
|
|
||||||
coor xy_coor;
|
|
||||||
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
xy_coor.r = (uchar)rng.uniform(low, high);
|
|
||||||
xy_coor.g = (uchar)rng.uniform(low, high);
|
|
||||||
xy_coor.b = (uchar)rng.uniform(low, high);
|
|
||||||
if(type == CV_8UC4)
|
|
||||||
xy_coor.alpha = (uchar)rng.uniform(low, high);
|
|
||||||
|
|
||||||
coor_vect.push_back(xy_coor);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
coor_vect[i].y = selected_pos[i]/((int)mat.step1()/mat.elemSize());
|
|
||||||
coor_vect[i].x = selected_pos[i]%((int)mat.step1()/mat.elemSize());
|
|
||||||
//printf("coor_vect[%d] = (%d, %d)\n", i, coor_vect[i].y, coor_vect[i].x);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(type == CV_8UC4)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
mat.at<unsigned char>(coor_vect[i].y, 4 * coor_vect[i].x) = coor_vect[i].r;
|
|
||||||
mat.at<unsigned char>(coor_vect[i].y, 4 * coor_vect[i].x + 1) = coor_vect[i].g;
|
|
||||||
mat.at<unsigned char>(coor_vect[i].y, 4 * coor_vect[i].x + 2) = coor_vect[i].b;
|
|
||||||
mat.at<unsigned char>(coor_vect[i].y, 4 * coor_vect[i].x + 3) = coor_vect[i].alpha;
|
|
||||||
}
|
|
||||||
}else if(type == CV_8UC3)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
mat.at<unsigned char>(coor_vect[i].y, 3 * coor_vect[i].x) = coor_vect[i].r;
|
|
||||||
mat.at<unsigned char>(coor_vect[i].y, 3 * coor_vect[i].x + 1) = coor_vect[i].g;
|
|
||||||
mat.at<unsigned char>(coor_vect[i].y, 3 * coor_vect[i].x + 2) = coor_vect[i].b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
string abspath(const string &relpath)
|
string abspath(const string &relpath)
|
||||||
{
|
{
|
||||||
@ -631,34 +503,6 @@ double checkSimilarity(const Mat &m1, const Mat &m2)
|
|||||||
return std::abs(diff.at<float>(0, 0) - 1.f);
|
return std::abs(diff.at<float>(0, 0) - 1.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
int ExpectedMatNear(cv::Mat dst, cv::Mat cpu_dst, double eps)
|
|
||||||
{
|
|
||||||
assert(dst.type() == cpu_dst.type());
|
|
||||||
assert(dst.size() == cpu_dst.size());
|
|
||||||
if(checkNorm(cv::Mat(dst), cv::Mat(cpu_dst)) < eps ||checkNorm(cv::Mat(dst), cv::Mat(cpu_dst)) == eps)
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ExceptDoubleNear(double val1, double val2, double abs_error)
|
|
||||||
{
|
|
||||||
const double diff = fabs(val1 - val2);
|
|
||||||
if (diff <= abs_error)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
int ExceptedMatSimilar(cv::Mat dst, cv::Mat cpu_dst, double eps)
|
|
||||||
{
|
|
||||||
assert(dst.type() == cpu_dst.type());
|
|
||||||
assert(dst.size() == cpu_dst.size());
|
|
||||||
if(checkSimilarity(cv::Mat(cpu_dst), cv::Mat(dst)) <= eps)
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user