diff --git a/modules/gapi/perf/common/gapi_core_perf_tests.hpp b/modules/gapi/perf/common/gapi_core_perf_tests.hpp index 7a1568ad22..60294d2193 100644 --- a/modules/gapi/perf/common/gapi_core_perf_tests.hpp +++ b/modules/gapi/perf/common/gapi_core_perf_tests.hpp @@ -78,10 +78,6 @@ namespace opencv_test class KMeans2DPerfTest : public TestPerfParams> {}; class KMeans3DPerfTest : public TestPerfParams> {}; class TransposePerfTest : public TestPerfParams> {}; - class ResizePerfTest : public TestPerfParams> {}; - class BottleneckKernelsConstInputPerfTest : public TestPerfParams> {}; - class ResizeFxFyPerfTest : public TestPerfParams> {}; - class ResizeInSimpleGraphPerfTest : public TestPerfParams> {}; class ParseSSDBLPerfTest : public TestPerfParams>, public ParserSSDTest {}; class ParseSSDPerfTest : public TestPerfParams>, public ParserSSDTest {}; class ParseYoloPerfTest : public TestPerfParams>, public ParserYoloTest {}; diff --git a/modules/gapi/perf/common/gapi_core_perf_tests_inl.hpp b/modules/gapi/perf/common/gapi_core_perf_tests_inl.hpp index 101e69af2a..ec57aa9eb9 100644 --- a/modules/gapi/perf/common/gapi_core_perf_tests_inl.hpp +++ b/modules/gapi/perf/common/gapi_core_perf_tests_inl.hpp @@ -2282,187 +2282,6 @@ PERF_TEST_P_(TransposePerfTest, TestPerformance) //------------------------------------------------------------------------------ -PERF_TEST_P_(ResizePerfTest, TestPerformance) -{ - compare_f cmpF; - MatType type = -1; - int interp = 1; - cv::Size sz; - cv::Size sz_out; - cv::GCompileArgs compile_args; - std::tie(cmpF, type, interp, sz, sz_out, compile_args) = GetParam(); - - in_mat1 = cv::Mat(sz, type); - cv::Scalar mean = cv::Scalar::all(127); - cv::Scalar stddev = cv::Scalar::all(40.f); - cv::randn(in_mat1, mean, stddev); - out_mat_gapi = cv::Mat(sz_out, type); - out_mat_ocv = cv::Mat(sz_out, type); - - // OpenCV code /////////////////////////////////////////////////////////// - cv::resize(in_mat1, out_mat_ocv, sz_out, 0.0, 0.0, interp); - - // G-API code ////////////////////////////////////////////////////////////// - cv::GMat in; - auto out = cv::gapi::resize(in, sz_out, 0.0, 0.0, interp); - cv::GComputation c(in, out); - - // Warm-up graph engine: - auto cc = c.compile(descr_of(gin(in_mat1)), - std::move(compile_args)); - cc(gin(in_mat1), gout(out_mat_gapi)); - - TEST_CYCLE() - { - cc(gin(in_mat1), gout(out_mat_gapi)); - } - - // Comparison //////////////////////////////////////////////////////////// - { - EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); - } - - SANITY_CHECK_NOTHING(); -} - -//------------------------------------------------------------------------------ - -PERF_TEST_P_(ResizeFxFyPerfTest, TestPerformance) -{ - compare_f cmpF; - MatType type = -1; - int interp = 1; - cv::Size sz; - double fx = 1.0; - double fy = 1.0; - cv::GCompileArgs compile_args; - std::tie(cmpF, type, interp, sz, fx, fy, compile_args) = GetParam(); - - in_mat1 = cv::Mat(sz, type); - cv::Scalar mean = cv::Scalar::all(127); - cv::Scalar stddev = cv::Scalar::all(40.f); - cv::randn(in_mat1, mean, stddev); - cv::Size sz_out = cv::Size(); - out_mat_gapi = cv::Mat(sz_out, type); - out_mat_ocv = cv::Mat(sz_out, type); - - // OpenCV code /////////////////////////////////////////////////////////// - cv::resize(in_mat1, out_mat_ocv, sz_out, fx, fy, interp); - - // G-API code ////////////////////////////////////////////////////////////// - cv::GMat in; - auto out = cv::gapi::resize(in, sz_out, fx, fy, interp); - cv::GComputation c(in, out); - - // Warm-up graph engine: - auto cc = c.compile(descr_of(gin(in_mat1)), - std::move(compile_args)); - cc(gin(in_mat1), gout(out_mat_gapi)); - - TEST_CYCLE() - { - cc(gin(in_mat1), gout(out_mat_gapi)); - } - // Comparison //////////////////////////////////////////////////////////// - { - EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); - } - - SANITY_CHECK_NOTHING(); -} - -//------------------------------------------------------------------------------ - -// This test cases were created to control performance result of test scenario mentioned here: -// https://stackoverflow.com/questions/60629331/opencv-gapi-performance-not-good-as-expected - -PERF_TEST_P_(BottleneckKernelsConstInputPerfTest, TestPerformance) -{ - compare_f cmpF; - std::string fileName = ""; - cv::GCompileArgs compile_args; - double fx = 0.5; - double fy = 0.5; - std::tie(cmpF, fileName, compile_args) = GetParam(); - - in_mat1 = cv::imread(findDataFile(fileName)); - - cv::Mat cvvga; - cv::Mat cvgray; - cv::Mat cvblurred; - - cv::resize(in_mat1, cvvga, cv::Size(), fx, fy); - cv::cvtColor(cvvga, cvgray, cv::COLOR_BGR2GRAY); - cv::blur(cvgray, cvblurred, cv::Size(3, 3)); - cv::Canny(cvblurred, out_mat_ocv, 32, 128, 3); - - cv::GMat in; - cv::GMat vga = cv::gapi::resize(in, cv::Size(), fx, fy, INTER_LINEAR); - cv::GMat gray = cv::gapi::BGR2Gray(vga); - cv::GMat blurred = cv::gapi::blur(gray, cv::Size(3, 3)); - cv::GMat out = cv::gapi::Canny(blurred, 32, 128, 3); - cv::GComputation ac(in, out); - - auto cc = ac.compile(descr_of(gin(in_mat1)), - std::move(compile_args)); - cc(gin(in_mat1), gout(out_mat_gapi)); - - TEST_CYCLE() - { - cc(gin(in_mat1), gout(out_mat_gapi)); - } - - // Comparison //////////////////////////////////////////////////////////// - { - EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); - } - - SANITY_CHECK_NOTHING(); -} - -//------------------------------------------------------------------------------ - -PERF_TEST_P_(ResizeInSimpleGraphPerfTest, TestPerformance) -{ - compare_f cmpF; - MatType type = -1; - cv::Size sz; - double fx = 0.5; - double fy = 0.5; - cv::GCompileArgs compile_args; - std::tie(cmpF, type, sz, fx, fy, compile_args) = GetParam(); - - initMatsRandU(type, sz, type, false); - - cv::Mat add_res_ocv; - - cv::add(in_mat1, in_mat2, add_res_ocv); - cv::resize(add_res_ocv, out_mat_ocv, cv::Size(), fx, fy); - - cv::GMat in1, in2; - cv::GMat add_res_gapi = cv::gapi::add(in1, in2); - cv::GMat out = cv::gapi::resize(add_res_gapi, cv::Size(), fx, fy, INTER_LINEAR); - cv::GComputation ac(GIn(in1, in2), GOut(out)); - - auto cc = ac.compile(descr_of(gin(in_mat1, in_mat2)), - std::move(compile_args)); - cc(gin(in_mat1, in_mat2), gout(out_mat_gapi)); - - TEST_CYCLE() - { - cc(gin(in_mat1, in_mat2), gout(out_mat_gapi)); - } - - // Comparison //////////////////////////////////////////////////////////// - { - EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); - } - - SANITY_CHECK_NOTHING(); -} - -//------------------------------------------------------------------------------ - PERF_TEST_P_(ParseSSDBLPerfTest, TestPerformance) { cv::Size sz; diff --git a/modules/gapi/perf/common/gapi_imgproc_perf_tests.hpp b/modules/gapi/perf/common/gapi_imgproc_perf_tests.hpp index 16e5f13729..c1afbfea6d 100644 --- a/modules/gapi/perf/common/gapi_imgproc_perf_tests.hpp +++ b/modules/gapi/perf/common/gapi_imgproc_perf_tests.hpp @@ -99,6 +99,10 @@ class YUV2BGRPerfTest : public TestPerfParams> {}; class BayerGR2RGBPerfTest : public TestPerfParams> {}; class RGB2YUV422PerfTest : public TestPerfParams> {}; +class ResizePerfTest : public TestPerfParams> {}; +class ResizeFxFyPerfTest : public TestPerfParams> {}; +class ResizeInSimpleGraphPerfTest : public TestPerfParams> {}; +class BottleneckKernelsConstInputPerfTest : public TestPerfParams> {}; } // opencv_test #endif //OPENCV_GAPI_IMGPROC_PERF_TESTS_HPP diff --git a/modules/gapi/perf/common/gapi_imgproc_perf_tests_inl.hpp b/modules/gapi/perf/common/gapi_imgproc_perf_tests_inl.hpp index 57c8130338..475daa84c1 100644 --- a/modules/gapi/perf/common/gapi_imgproc_perf_tests_inl.hpp +++ b/modules/gapi/perf/common/gapi_imgproc_perf_tests_inl.hpp @@ -1761,5 +1761,187 @@ PERF_TEST_P_(RGB2YUV422PerfTest, TestPerformance) //------------------------------------------------------------------------------ +PERF_TEST_P_(ResizePerfTest, TestPerformance) +{ + compare_f cmpF; + MatType type = -1; + int interp = 1; + cv::Size sz; + cv::Size sz_out; + cv::GCompileArgs compile_args; + std::tie(cmpF, type, interp, sz, sz_out, compile_args) = GetParam(); + + in_mat1 = cv::Mat(sz, type); + cv::Scalar mean = cv::Scalar::all(127); + cv::Scalar stddev = cv::Scalar::all(40.f); + cv::randn(in_mat1, mean, stddev); + out_mat_gapi = cv::Mat(sz_out, type); + out_mat_ocv = cv::Mat(sz_out, type); + + // OpenCV code /////////////////////////////////////////////////////////// + cv::resize(in_mat1, out_mat_ocv, sz_out, 0.0, 0.0, interp); + + // G-API code ////////////////////////////////////////////////////////////// + cv::GMat in; + auto out = cv::gapi::resize(in, sz_out, 0.0, 0.0, interp); + cv::GComputation c(in, out); + + // Warm-up graph engine: + auto cc = c.compile(descr_of(gin(in_mat1)), + std::move(compile_args)); + cc(gin(in_mat1), gout(out_mat_gapi)); + + TEST_CYCLE() + { + cc(gin(in_mat1), gout(out_mat_gapi)); + } + + // Comparison //////////////////////////////////////////////////////////// + { + EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); + } + + SANITY_CHECK_NOTHING(); +} + +//------------------------------------------------------------------------------ + +PERF_TEST_P_(ResizeFxFyPerfTest, TestPerformance) +{ + compare_f cmpF; + MatType type = -1; + int interp = 1; + cv::Size sz; + double fx = 1.0; + double fy = 1.0; + cv::GCompileArgs compile_args; + std::tie(cmpF, type, interp, sz, fx, fy, compile_args) = GetParam(); + + in_mat1 = cv::Mat(sz, type); + cv::Scalar mean = cv::Scalar::all(127); + cv::Scalar stddev = cv::Scalar::all(40.f); + cv::randn(in_mat1, mean, stddev); + cv::Size sz_out = cv:: Size(saturate_cast(sz.width*fx), saturate_cast(sz.height*fy)); + out_mat_gapi = cv::Mat(sz_out, type); + out_mat_ocv = cv::Mat(sz_out, type); + + // OpenCV code /////////////////////////////////////////////////////////// + cv::resize(in_mat1, out_mat_ocv, sz_out, fx, fy, interp); + + // G-API code ////////////////////////////////////////////////////////////// + cv::GMat in; + auto out = cv::gapi::resize(in, sz_out, fx, fy, interp); + cv::GComputation c(in, out); + + // Warm-up graph engine: + auto cc = c.compile(descr_of(gin(in_mat1)), + std::move(compile_args)); + cc(gin(in_mat1), gout(out_mat_gapi)); + + TEST_CYCLE() + { + cc(gin(in_mat1), gout(out_mat_gapi)); + } + + // Comparison //////////////////////////////////////////////////////////// + { + EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); + } + + SANITY_CHECK_NOTHING(); +} + +//------------------------------------------------------------------------------ + +PERF_TEST_P_(ResizeInSimpleGraphPerfTest, TestPerformance) +{ + compare_f cmpF; + MatType type = -1; + cv::Size sz; + double fx = 0.5; + double fy = 0.5; + cv::GCompileArgs compile_args; + std::tie(cmpF, type, sz, fx, fy, compile_args) = GetParam(); + + initMatsRandU(type, sz, type, false); + + cv::Mat add_res_ocv; + + cv::add(in_mat1, in_mat2, add_res_ocv); + cv::resize(add_res_ocv, out_mat_ocv, cv::Size(), fx, fy); + + cv::GMat in1, in2; + cv::GMat add_res_gapi = cv::gapi::add(in1, in2); + cv::GMat out = cv::gapi::resize(add_res_gapi, cv::Size(), fx, fy, INTER_LINEAR); + cv::GComputation ac(GIn(in1, in2), GOut(out)); + + auto cc = ac.compile(descr_of(gin(in_mat1, in_mat2)), + std::move(compile_args)); + cc(gin(in_mat1, in_mat2), gout(out_mat_gapi)); + + TEST_CYCLE() + { + cc(gin(in_mat1, in_mat2), gout(out_mat_gapi)); + } + + // Comparison //////////////////////////////////////////////////////////// + { + EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); + } + + SANITY_CHECK_NOTHING(); +} + +//------------------------------------------------------------------------------ + +// This test cases were created to control performance result of test scenario mentioned here: +// https://stackoverflow.com/questions/60629331/opencv-gapi-performance-not-good-as-expected + +PERF_TEST_P_(BottleneckKernelsConstInputPerfTest, TestPerformance) +{ + compare_f cmpF; + std::string fileName = ""; + cv::GCompileArgs compile_args; + double fx = 0.5; + double fy = 0.5; + std::tie(cmpF, fileName, compile_args) = GetParam(); + + in_mat1 = cv::imread(findDataFile(fileName)); + + cv::Mat cvvga; + cv::Mat cvgray; + cv::Mat cvblurred; + + cv::resize(in_mat1, cvvga, cv::Size(), fx, fy); + cv::cvtColor(cvvga, cvgray, cv::COLOR_BGR2GRAY); + cv::blur(cvgray, cvblurred, cv::Size(3, 3)); + cv::Canny(cvblurred, out_mat_ocv, 32, 128, 3); + + cv::GMat in; + cv::GMat vga = cv::gapi::resize(in, cv::Size(), fx, fy, INTER_LINEAR); + cv::GMat gray = cv::gapi::BGR2Gray(vga); + cv::GMat blurred = cv::gapi::blur(gray, cv::Size(3, 3)); + cv::GMat out = cv::gapi::Canny(blurred, 32, 128, 3); + cv::GComputation ac(in, out); + + auto cc = ac.compile(descr_of(gin(in_mat1)), + std::move(compile_args)); + cc(gin(in_mat1), gout(out_mat_gapi)); + + TEST_CYCLE() + { + cc(gin(in_mat1), gout(out_mat_gapi)); + } + + // Comparison //////////////////////////////////////////////////////////// + { + EXPECT_TRUE(cmpF(out_mat_gapi, out_mat_ocv)); + } + + SANITY_CHECK_NOTHING(); +} + +//------------------------------------------------------------------------------ + } #endif //OPENCV_GAPI_IMGPROC_PERF_TESTS_INL_HPP diff --git a/modules/gapi/perf/cpu/gapi_core_perf_tests_cpu.cpp b/modules/gapi/perf/cpu/gapi_core_perf_tests_cpu.cpp index 5323ea8f08..2f91e07e52 100644 --- a/modules/gapi/perf/cpu/gapi_core_perf_tests_cpu.cpp +++ b/modules/gapi/perf/cpu/gapi_core_perf_tests_cpu.cpp @@ -369,38 +369,6 @@ INSTANTIATE_TEST_CASE_P(TransposePerfTestCPU, TransposePerfTest, CV_8UC3, CV_16UC3, CV_16SC3, CV_32FC3), Values(cv::compile_args(CORE_CPU)))); -INSTANTIATE_TEST_CASE_P(ResizePerfTestCPU, ResizePerfTest, - Combine(Values(AbsExact().to_compare_f()), - Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1), - Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), - Values(szSmall128, szVGA, sz720p, sz1080p), - Values( cv::Size(64, 64), - cv::Size(32, 32)), - Values(cv::compile_args(CORE_CPU)))); - -INSTANTIATE_TEST_CASE_P(BottleneckKernelsPerfTestCPU, BottleneckKernelsConstInputPerfTest, - Combine(Values(AbsExact().to_compare_f()), - Values( "cv/optflow/frames/1080p_00.png", "cv/optflow/frames/720p_00.png", - "cv/optflow/frames/VGA_00.png", "cv/dnn_face/recognition/Aaron_Tippin_0001.jpg"), - Values(cv::compile_args(CORE_CPU)))); - -INSTANTIATE_TEST_CASE_P(ResizeInSimpleGraphPerfTestCPU, ResizeInSimpleGraphPerfTest, - Combine(Values(AbsExact().to_compare_f()), - Values(CV_8UC3), - Values(szSmall128, szVGA, sz720p, sz1080p), - Values(0.5), - Values(0.5), - Values(cv::compile_args(CORE_CPU)))); - -INSTANTIATE_TEST_CASE_P(ResizeFxFyPerfTestCPU, ResizeFxFyPerfTest, - Combine(Values(AbsExact().to_compare_f()), - Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1), - Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), - Values(szSmall128, szVGA, sz720p, sz1080p), - Values(0.5, 0.1), - Values(0.5, 0.1), - Values(cv::compile_args(CORE_CPU)))); - INSTANTIATE_TEST_CASE_P(ParseSSDBLPerfTestCPU, ParseSSDBLPerfTest, Combine(Values(sz720p, sz1080p), Values(0.3f, 0.7f), diff --git a/modules/gapi/perf/cpu/gapi_core_perf_tests_fluid.cpp b/modules/gapi/perf/cpu/gapi_core_perf_tests_fluid.cpp index 917dfcf89e..cd72932780 100644 --- a/modules/gapi/perf/cpu/gapi_core_perf_tests_fluid.cpp +++ b/modules/gapi/perf/cpu/gapi_core_perf_tests_fluid.cpp @@ -49,8 +49,8 @@ INSTANTIATE_TEST_CASE_P(SubPerfTestFluid, SubPerfTest, INSTANTIATE_TEST_CASE_P(SubCPerfTestFluid, SubCPerfTest, Combine(Values(Tolerance_FloatRel_IntAbs(1e-6, 1).to_compare_f()), Values(szSmall128, szVGA, sz720p, sz1080p), - Values(CV_8UC1, CV_8UC3, CV_16SC1, CV_32FC1), - Values(-1, CV_8U, CV_32F), + Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1), + Values(-1, CV_8U, CV_16U, CV_16S, CV_32F), Values(cv::compile_args(CORE_FLUID)))); INSTANTIATE_TEST_CASE_P(SubRCPerfTestFluid, SubRCPerfTest, @@ -78,8 +78,8 @@ INSTANTIATE_TEST_CASE_P(MulDoublePerfTestFluid, MulDoublePerfTest, INSTANTIATE_TEST_CASE_P(MulCPerfTestFluid, MulCPerfTest, Combine(Values(Tolerance_FloatRel_IntAbs(1e-6, 1).to_compare_f()), Values(szSmall128, szVGA, sz720p, sz1080p), - Values(CV_8UC1, CV_8UC3, CV_16SC1, CV_32FC1), - Values(-1, CV_8U, CV_32F), + Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1), + Values(-1, CV_8U, CV_16U, CV_16S, CV_32F), Values(cv::compile_args(CORE_FLUID)))); INSTANTIATE_TEST_CASE_P(DivPerfTestFluid, DivPerfTest, @@ -328,36 +328,4 @@ INSTANTIATE_TEST_CASE_P(ConvertToPerfTestFluid, ConvertToPerfTest, Values(0.0), Values(cv::compile_args(CORE_FLUID)))); -INSTANTIATE_TEST_CASE_P(ResizePerfTestFluid, ResizePerfTest, - Combine(Values(Tolerance_FloatRel_IntAbs(1e-5, 1).to_compare_f()), - Values(CV_8UC3), - Values(cv::INTER_LINEAR), - Values(szSmall128, szVGA, sz720p, sz1080p), - Values(cv::Size(64, 64), - cv::Size(30, 30)), - Values(cv::compile_args(CORE_FLUID)))); - -#define IMGPROC_FLUID cv::gapi::imgproc::fluid::kernels() -INSTANTIATE_TEST_CASE_P(BottleneckKernelsPerfTestFluid, BottleneckKernelsConstInputPerfTest, - Combine(Values(AbsSimilarPoints(0, 1).to_compare_f()), - Values("cv/optflow/frames/1080p_00.png", "cv/optflow/frames/720p_00.png", - "cv/optflow/frames/VGA_00.png", "cv/dnn_face/recognition/Aaron_Tippin_0001.jpg"), - Values(cv::compile_args(CORE_FLUID, IMGPROC_FLUID)))); - -INSTANTIATE_TEST_CASE_P(ResizeInSimpleGraphPerfTestFluid, ResizeInSimpleGraphPerfTest, - Combine(Values(Tolerance_FloatRel_IntAbs(1e-5, 1).to_compare_f()), - Values(CV_8UC3), - Values(szSmall128, szVGA, sz720p, sz1080p), - Values(0.5), - Values(0.5), - Values(cv::compile_args(CORE_FLUID, IMGPROC_FLUID)))); - -INSTANTIATE_TEST_CASE_P(ResizeFxFyPerfTestFluid, ResizeFxFyPerfTest, - Combine(Values(AbsExact().to_compare_f()), - Values(CV_8UC3), - Values(cv::INTER_LINEAR), - Values(szSmall128, szVGA, sz720p, sz1080p), - Values(0.5, 0.1), - Values(0.5, 0.1), - Values(cv::compile_args(CORE_FLUID)))); } // opencv_test diff --git a/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_cpu.cpp b/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_cpu.cpp index d4c37c10af..dc4c65bf74 100644 --- a/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_cpu.cpp +++ b/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_cpu.cpp @@ -403,4 +403,36 @@ INSTANTIATE_TEST_CASE_P(RGB2YUV422PerfTestCPU, RGB2YUV422PerfTest, Combine(Values(ToleranceColor(1e-3).to_compare_f()), Values(szVGA, sz720p, sz1080p), Values(cv::compile_args(IMGPROC_CPU)))); + +INSTANTIATE_TEST_CASE_P(ResizePerfTestCPU, ResizePerfTest, + Combine(Values(AbsExact().to_compare_f()), + Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1), + Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), + Values(szSmall128, szVGA, sz720p, sz1080p), + Values( cv::Size(64, 64), + cv::Size(32, 32)), + Values(cv::compile_args(IMGPROC_CPU)))); + +INSTANTIATE_TEST_CASE_P(BottleneckKernelsPerfTestCPU, BottleneckKernelsConstInputPerfTest, + Combine(Values(AbsExact().to_compare_f()), + Values( "cv/optflow/frames/1080p_00.png", "cv/optflow/frames/720p_00.png", + "cv/optflow/frames/VGA_00.png", "cv/dnn_face/recognition/Aaron_Tippin_0001.jpg"), + Values(cv::compile_args(IMGPROC_CPU)))); + +INSTANTIATE_TEST_CASE_P(ResizeInSimpleGraphPerfTestCPU, ResizeInSimpleGraphPerfTest, + Combine(Values(AbsExact().to_compare_f()), + Values(CV_8UC3), + Values(szSmall128, szVGA, sz720p, sz1080p), + Values(0.5), + Values(0.5), + Values(cv::compile_args(IMGPROC_CPU)))); + +INSTANTIATE_TEST_CASE_P(ResizeFxFyPerfTestCPU, ResizeFxFyPerfTest, + Combine(Values(AbsExact().to_compare_f()), + Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1), + Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), + Values(szSmall128, szVGA, sz720p, sz1080p), + Values(0.5, 0.1), + Values(0.5, 0.1), + Values(cv::compile_args(IMGPROC_CPU)))); } // opencv_test diff --git a/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_fluid.cpp b/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_fluid.cpp index 1ccd763099..b5e72ae4ce 100644 --- a/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_fluid.cpp +++ b/modules/gapi/perf/cpu/gapi_imgproc_perf_tests_fluid.cpp @@ -9,6 +9,7 @@ #include "../common/gapi_imgproc_perf_tests.hpp" #define IMGPROC_FLUID cv::gapi::imgproc::fluid::kernels() +#define CORE_FLUID cv::gapi::core::fluid::kernels() namespace opencv_test { @@ -198,4 +199,36 @@ INSTANTIATE_TEST_CASE_P(RGB2LabPerfTestFluid, RGB2LabPerfTest, Values(szVGA, sz720p, sz1080p), Values(cv::compile_args(IMGPROC_FLUID)))); +INSTANTIATE_TEST_CASE_P(ResizePerfTestFluid, ResizePerfTest, + Combine(Values(Tolerance_FloatRel_IntAbs(1e-5, 1).to_compare_f()), + Values(CV_8UC3), + Values(cv::INTER_LINEAR), + Values(szSmall128, szVGA, sz720p, sz1080p), + Values(cv::Size(64, 64), + cv::Size(30, 30)), + Values(cv::compile_args(IMGPROC_FLUID)))); + +#define IMGPROC_FLUID cv::gapi::imgproc::fluid::kernels() +INSTANTIATE_TEST_CASE_P(BottleneckKernelsPerfTestFluid, BottleneckKernelsConstInputPerfTest, + Combine(Values(AbsSimilarPoints(0, 1).to_compare_f()), + Values("cv/optflow/frames/1080p_00.png", "cv/optflow/frames/720p_00.png", + "cv/optflow/frames/VGA_00.png", "cv/dnn_face/recognition/Aaron_Tippin_0001.jpg"), + Values(cv::compile_args(IMGPROC_FLUID)))); + +INSTANTIATE_TEST_CASE_P(ResizeInSimpleGraphPerfTestFluid, ResizeInSimpleGraphPerfTest, + Combine(Values(Tolerance_FloatRel_IntAbs(1e-5, 1).to_compare_f()), + Values(CV_8UC3), + Values(szSmall128, szVGA, sz720p, sz1080p), + Values(0.5), + Values(0.5), + Values(cv::compile_args(cv::gapi::combine(IMGPROC_FLUID, CORE_FLUID))))); + +INSTANTIATE_TEST_CASE_P(ResizeFxFyPerfTestFluid, ResizeFxFyPerfTest, + Combine(Values(Tolerance_FloatRel_IntAbs(1e-5, 1).to_compare_f()), + Values(CV_8UC3), + Values(cv::INTER_LINEAR), + Values(szSmall128, szVGA, sz720p, sz1080p), + Values(0.5, 0.25, 2), + Values(0.5, 0.25, 2), + Values(cv::compile_args(IMGPROC_FLUID)))); } diff --git a/modules/gapi/perf/gpu/gapi_core_perf_tests_gpu.cpp b/modules/gapi/perf/gpu/gapi_core_perf_tests_gpu.cpp index 2f63a14563..6084fc8a77 100644 --- a/modules/gapi/perf/gpu/gapi_core_perf_tests_gpu.cpp +++ b/modules/gapi/perf/gpu/gapi_core_perf_tests_gpu.cpp @@ -323,22 +323,4 @@ INSTANTIATE_TEST_CASE_P(TransposePerfTestGPU, TransposePerfTest, CV_8UC2, CV_16UC2, CV_16SC2, CV_32FC2, CV_8UC3, CV_16UC3, CV_16SC3, CV_32FC3), Values(cv::compile_args(CORE_GPU)))); - -INSTANTIATE_TEST_CASE_P(ResizePerfTestGPU, ResizePerfTest, - Combine(Values(AbsSimilarPoints(2, 0.05).to_compare_f()), - Values(CV_8UC1, CV_16UC1, CV_16SC1), - Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), - Values( szSmall128, szVGA, sz720p, sz1080p ), - Values(cv::Size(64,64), - cv::Size(30,30)), - Values(cv::compile_args(CORE_GPU)))); - -INSTANTIATE_TEST_CASE_P(ResizeFxFyPerfTestGPU, ResizeFxFyPerfTest, - Combine(Values(AbsExact().to_compare_f()), - Values(CV_8UC1, CV_16UC1, CV_16SC1), - Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), - Values(szSmall128, szVGA, sz720p, sz1080p), - Values(0.5, 0.1), - Values(0.5, 0.1), - Values(cv::compile_args(CORE_GPU)))); } // opencv_test diff --git a/modules/gapi/perf/gpu/gapi_imgproc_perf_tests_gpu.cpp b/modules/gapi/perf/gpu/gapi_imgproc_perf_tests_gpu.cpp index 1f4f3883d1..faacf4f254 100644 --- a/modules/gapi/perf/gpu/gapi_imgproc_perf_tests_gpu.cpp +++ b/modules/gapi/perf/gpu/gapi_imgproc_perf_tests_gpu.cpp @@ -204,4 +204,21 @@ INSTANTIATE_TEST_CASE_P(YUV2BGRPerfTestGPU, YUV2BGRPerfTest, Values(szVGA, sz720p, sz1080p), Values(cv::compile_args(IMGPROC_GPU)))); +INSTANTIATE_TEST_CASE_P(ResizePerfTestGPU, ResizePerfTest, + Combine(Values(AbsSimilarPoints(2, 0.05).to_compare_f()), + Values(CV_8UC1, CV_16UC1, CV_16SC1), + Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), + Values( szSmall128, szVGA, sz720p, sz1080p ), + Values(cv::Size(64,64), + cv::Size(30,30)), + Values(cv::compile_args(IMGPROC_GPU)))); + +INSTANTIATE_TEST_CASE_P(ResizeFxFyPerfTestGPU, ResizeFxFyPerfTest, + Combine(Values(Tolerance_FloatRel_IntAbs(1e-5, 1).to_compare_f()), + Values(CV_8UC1, CV_16UC1, CV_16SC1), + Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA), + Values(szSmall128, szVGA, sz720p, sz1080p), + Values(0.5, 0.1), + Values(0.5, 0.1), + Values(cv::compile_args(IMGPROC_GPU)))); } diff --git a/modules/gapi/src/backends/fluid/gfluidimgproc.cpp b/modules/gapi/src/backends/fluid/gfluidimgproc.cpp index 497fa0828f..628678e0cb 100644 --- a/modules/gapi/src/backends/fluid/gfluidimgproc.cpp +++ b/modules/gapi/src/backends/fluid/gfluidimgproc.cpp @@ -2078,8 +2078,8 @@ GAPI_FLUID_KERNEL(GFluidResize, cv::gapi::imgproc::GResize, true) int outSz_h; if (outSz.width == 0 || outSz.height == 0) { - outSz_w = static_cast(round(in.size.width * fx)); - outSz_h = static_cast(round(in.size.height * fy)); + outSz_w = saturate_cast(in.size.width * fx); + outSz_h = saturate_cast(in.size.height * fy); } else {