mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 01:13:28 +08:00
dnn(test): use dnnBackendsAndTargets() param generator
This commit is contained in:
parent
3e6b3a6856
commit
c557193b8c
@ -666,15 +666,9 @@ PERF_TEST_P_(Conv, conv)
|
|||||||
SANITY_CHECK_NOTHING();
|
SANITY_CHECK_NOTHING();
|
||||||
}
|
}
|
||||||
|
|
||||||
static const tuple<Backend, Target> testBackendsAndTargets[] = {
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_CPU),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL_FP16)
|
|
||||||
};
|
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(/**/, Conv, Combine(
|
INSTANTIATE_TEST_CASE_P(/**/, Conv, Combine(
|
||||||
ConvParamID::all(),
|
ConvParamID::all(),
|
||||||
testing::ValuesIn(testBackendsAndTargets)
|
dnnBackendsAndTargets(false, false) // defined in ../test/test_common.hpp
|
||||||
));
|
));
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -14,10 +14,7 @@
|
|||||||
|
|
||||||
namespace opencv_test {
|
namespace opencv_test {
|
||||||
|
|
||||||
CV_ENUM(DNNBackend, DNN_BACKEND_DEFAULT, DNN_BACKEND_HALIDE, DNN_BACKEND_INFERENCE_ENGINE, DNN_BACKEND_OPENCV)
|
class DNNTestNetwork : public ::perf::TestBaseWithParam< tuple<Backend, Target> >
|
||||||
CV_ENUM(DNNTarget, DNN_TARGET_CPU, DNN_TARGET_OPENCL, DNN_TARGET_OPENCL_FP16, DNN_TARGET_MYRIAD)
|
|
||||||
|
|
||||||
class DNNTestNetwork : public ::perf::TestBaseWithParam< tuple<DNNBackend, DNNTarget> >
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
dnn::Backend backend;
|
dnn::Backend backend;
|
||||||
@ -269,22 +266,6 @@ PERF_TEST_P_(DNNTestNetwork, Inception_v2_Faster_RCNN)
|
|||||||
Mat(cv::Size(800, 600), CV_32FC3));
|
Mat(cv::Size(800, 600), CV_32FC3));
|
||||||
}
|
}
|
||||||
|
|
||||||
const tuple<DNNBackend, DNNTarget> testCases[] = {
|
INSTANTIATE_TEST_CASE_P(/*nothing*/, DNNTestNetwork, dnnBackendsAndTargets());
|
||||||
#ifdef HAVE_HALIDE
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_HALIDE, DNN_TARGET_CPU),
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_HALIDE, DNN_TARGET_OPENCL),
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_INF_ENGINE
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_CPU),
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL),
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL_FP16),
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_MYRIAD),
|
|
||||||
#endif
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_OPENCV, DNN_TARGET_CPU),
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL),
|
|
||||||
tuple<DNNBackend, DNNTarget>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL_FP16)
|
|
||||||
};
|
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(/*nothing*/, DNNTestNetwork, testing::ValuesIn(testCases));
|
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -285,21 +285,6 @@ TEST_P(DNNTestNetwork, FastNeuralStyle_eccv16)
|
|||||||
processNet("dnn/fast_neural_style_eccv16_starry_night.t7", "", inp, "", "", l1, lInf);
|
processNet("dnn/fast_neural_style_eccv16_starry_night.t7", "", inp, "", "", l1, lInf);
|
||||||
}
|
}
|
||||||
|
|
||||||
const tuple<Backend, Target> testCases[] = {
|
INSTANTIATE_TEST_CASE_P(/*nothing*/, DNNTestNetwork, dnnBackendsAndTargets(true, true, false));
|
||||||
#ifdef HAVE_HALIDE
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_HALIDE, DNN_TARGET_CPU),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_HALIDE, DNN_TARGET_OPENCL),
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_INF_ENGINE
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_CPU),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL_FP16),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_MYRIAD),
|
|
||||||
#endif
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL_FP16)
|
|
||||||
};
|
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(/*nothing*/, DNNTestNetwork, testing::ValuesIn(testCases));
|
|
||||||
|
|
||||||
}} // namespace
|
}} // namespace
|
||||||
|
@ -42,6 +42,10 @@
|
|||||||
#ifndef __OPENCV_TEST_COMMON_HPP__
|
#ifndef __OPENCV_TEST_COMMON_HPP__
|
||||||
#define __OPENCV_TEST_COMMON_HPP__
|
#define __OPENCV_TEST_COMMON_HPP__
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENCL
|
||||||
|
#include "opencv2/core/ocl.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace cv { namespace dnn {
|
namespace cv { namespace dnn {
|
||||||
CV__DNN_EXPERIMENTAL_NS_BEGIN
|
CV__DNN_EXPERIMENTAL_NS_BEGIN
|
||||||
static inline void PrintTo(const cv::dnn::Backend& v, std::ostream* os)
|
static inline void PrintTo(const cv::dnn::Backend& v, std::ostream* os)
|
||||||
@ -227,4 +231,50 @@ static inline bool readFileInMemory(const std::string& filename, std::string& co
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace opencv_test {
|
||||||
|
|
||||||
|
using namespace cv::dnn;
|
||||||
|
|
||||||
|
static testing::internal::ParamGenerator<tuple<Backend, Target> > dnnBackendsAndTargets(
|
||||||
|
bool withInferenceEngine = true,
|
||||||
|
bool withHalide = false,
|
||||||
|
bool withCpuOCV = true
|
||||||
|
)
|
||||||
|
{
|
||||||
|
std::vector<tuple<Backend, Target> > targets;
|
||||||
|
#ifdef HAVE_HALIDE
|
||||||
|
if (withHalide)
|
||||||
|
{
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_HALIDE, DNN_TARGET_CPU));
|
||||||
|
if (cv::ocl::useOpenCL())
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_HALIDE, DNN_TARGET_OPENCL));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_INF_ENGINE
|
||||||
|
if (withInferenceEngine)
|
||||||
|
{
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_CPU));
|
||||||
|
if (cv::ocl::useOpenCL())
|
||||||
|
{
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL));
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL_FP16));
|
||||||
|
}
|
||||||
|
if (checkMyriadTarget())
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_MYRIAD));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (withCpuOCV)
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_OPENCV, DNN_TARGET_CPU));
|
||||||
|
#ifdef HAVE_OPENCL
|
||||||
|
if (cv::ocl::useOpenCL())
|
||||||
|
{
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL));
|
||||||
|
targets.push_back(make_tuple(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL_FP16));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return testing::ValuesIn(targets);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,23 +44,9 @@ static void test(LayerParams& params, Mat& input, Backend backendId, Target targ
|
|||||||
test(input, net, backendId, targetId, skipCheck);
|
test(input, net, backendId, targetId, skipCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
static testing::internal::ParamGenerator<tuple<Backend, Target> > dnnBackendsAndTargetsWithHalide()
|
static inline testing::internal::ParamGenerator<tuple<Backend, Target> > dnnBackendsAndTargetsWithHalide()
|
||||||
{
|
{
|
||||||
static const tuple<Backend, Target> testCases[] = {
|
return dnnBackendsAndTargets(true, true, false); // OpenCV/CPU is used as reference
|
||||||
#ifdef HAVE_HALIDE
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_HALIDE, DNN_TARGET_CPU),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_HALIDE, DNN_TARGET_OPENCL),
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_INF_ENGINE
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_CPU),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL_FP16),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_MYRIAD),
|
|
||||||
#endif
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL_FP16)
|
|
||||||
};
|
|
||||||
return testing::ValuesIn(testCases);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Test_Halide_layers : public DNNTestLayer {};
|
class Test_Halide_layers : public DNNTestLayer {};
|
||||||
|
@ -66,22 +66,6 @@ static testing::internal::ParamGenerator<Target> availableDnnTargets()
|
|||||||
return testing::ValuesIn(targets);
|
return testing::ValuesIn(targets);
|
||||||
}
|
}
|
||||||
|
|
||||||
static testing::internal::ParamGenerator<tuple<Backend, Target> > dnnBackendsAndTargets()
|
|
||||||
{
|
|
||||||
static const tuple<Backend, Target> testCases[] = {
|
|
||||||
#ifdef HAVE_INF_ENGINE
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_CPU),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_OPENCL_FP16),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_INFERENCE_ENGINE, DNN_TARGET_MYRIAD),
|
|
||||||
#endif
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_CPU),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL),
|
|
||||||
tuple<Backend, Target>(DNN_BACKEND_OPENCV, DNN_TARGET_OPENCL_FP16)
|
|
||||||
};
|
|
||||||
return testing::ValuesIn(testCases);
|
|
||||||
}
|
|
||||||
|
|
||||||
class DNNTestLayer : public TestWithParam<tuple<Backend, Target> >
|
class DNNTestLayer : public TestWithParam<tuple<Backend, Target> >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Loading…
Reference in New Issue
Block a user