From dce323a67b78fcc6d722543bf09a0fb310c0d9bb Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 10 Oct 2012 09:31:49 +0400 Subject: [PATCH] add sanity checks into the video gpu performance tests --- modules/gpu/perf/perf_video.cpp | 109 ++++++++++++++++++++++++++++------------ 1 file changed, 77 insertions(+), 32 deletions(-) diff --git a/modules/gpu/perf/perf_video.cpp b/modules/gpu/perf/perf_video.cpp index 0d58e84..1499841 100644 --- a/modules/gpu/perf/perf_video.cpp +++ b/modules/gpu/perf/perf_video.cpp @@ -20,7 +20,8 @@ typedef pair pair_string; DEF_PARAM_TEST_1(ImagePair, pair_string); -PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) +PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, + Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) { declare.time(10); @@ -33,7 +34,7 @@ PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values(make_pair("gpu frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0); frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame1(frame1); @@ -49,17 +50,21 @@ PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values(make_pair("gpu { d_flow(d_frame0, d_frame1, d_u, d_v); } + + GPU_SANITY_CHECK(d_u); + GPU_SANITY_CHECK(d_v); } else { - FAIL(); + FAIL() << "No such CPU implementation analogy"; } } ////////////////////////////////////////////////////// // InterpolateFrames -PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) +PERF_TEST_P(ImagePair, Video_InterpolateFrames, + Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) { cv::Mat frame0 = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); ASSERT_FALSE(frame0.empty()); @@ -70,7 +75,7 @@ PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values(make_pair("g frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0); frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame1(frame1); @@ -92,17 +97,23 @@ PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values(make_pair("g { cv::gpu::interpolateFrames(d_frame0, d_frame1, d_fu, d_fv, d_bu, d_bv, 0.5f, d_newFrame, d_buf); } + + GPU_SANITY_CHECK(d_fu); + GPU_SANITY_CHECK(d_fv); + GPU_SANITY_CHECK(d_bu); + GPU_SANITY_CHECK(d_bv); } else { - FAIL(); + FAIL() << "No such CPU implementation analogy"; } } ////////////////////////////////////////////////////// // CreateOpticalFlowNeedleMap -PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) +PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, + Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) { cv::Mat frame0 = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); ASSERT_FALSE(frame0.empty()); @@ -113,7 +124,7 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values(mak frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0); frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame1(frame1); @@ -133,10 +144,13 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values(mak { cv::gpu::createOpticalFlowNeedleMap(d_u, d_v, d_vertex, d_colors); } + + GPU_SANITY_CHECK(d_vertex); + GPU_SANITY_CHECK(d_colors) } else { - FAIL(); + FAIL() << "No such CPU implementation analogy"; } } @@ -145,7 +159,8 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values(mak DEF_PARAM_TEST(Image_MinDistance, string, double); -PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values("gpu/perf/aloe.png"), Values(0.0, 3.0))) +PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, + Combine(Values("gpu/perf/aloe.png"), Values(0.0, 3.0))) { string fileName = GET_PARAM(0); double minDistance = GET_PARAM(1); @@ -153,7 +168,7 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values cv::Mat image = readImage(fileName, cv::IMREAD_GRAYSCALE); ASSERT_FALSE(image.empty()); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GoodFeaturesToTrackDetector_GPU d_detector(8000, 0.01, minDistance); @@ -166,6 +181,8 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values { d_detector(d_image, d_pts); } + + GPU_SANITY_CHECK(d_pts); } else { @@ -177,6 +194,8 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values { cv::goodFeaturesToTrack(image, pts, 8000, 0.01, minDistance); } + + CPU_SANITY_CHECK(pts); } } @@ -217,7 +236,7 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse cv::Mat pts; cv::goodFeaturesToTrack(gray_frame, pts, points, 0.01, 0.0); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_pts(pts.reshape(2, 1)); @@ -237,6 +256,8 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse { d_pyrLK.sparse(d_frame0, d_frame1, d_pts, d_nextPts, d_status); } + + GPU_SANITY_CHECK(d_status); } else { @@ -253,6 +274,8 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse cv::Size(winSize, winSize), levels - 1, cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, iters, 0.01)); } + + CPU_SANITY_CHECK(status); } } @@ -280,7 +303,7 @@ PERF_TEST_P(ImagePair_WinSz_Levels_Iters, Video_PyrLKOpticalFlowDense, Combine( cv::Mat frame1 = readImage(imagePair.second, cv::IMREAD_GRAYSCALE); ASSERT_FALSE(frame1.empty()); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame1(frame1); @@ -298,17 +321,21 @@ PERF_TEST_P(ImagePair_WinSz_Levels_Iters, Video_PyrLKOpticalFlowDense, Combine( { d_pyrLK.dense(d_frame0, d_frame1, d_u, d_v); } + + GPU_SANITY_CHECK(d_u); + GPU_SANITY_CHECK(d_v); } else { - FAIL(); + FAIL() << "No such CPU implementation analogy"; } } ////////////////////////////////////////////////////// // FarnebackOpticalFlow -PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) +PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, + Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) { declare.time(10); @@ -326,7 +353,7 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values(make_pair double polySigma = 1.1; int flags = 0; - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame1(frame1); @@ -348,6 +375,9 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values(make_pair { d_farneback(d_frame0, d_frame1, d_u, d_v); } + + GPU_SANITY_CHECK(d_u); + GPU_SANITY_CHECK(d_v); } else { @@ -359,6 +389,8 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values(make_pair { cv::calcOpticalFlowFarneback(frame0, frame1, flow, pyrScale, numLevels, winSize, numIters, polyN, polySigma, flags); } + + CPU_SANITY_CHECK(flow); } } @@ -367,7 +399,7 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values(make_pair DEF_PARAM_TEST_1(Video, string); -PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi")) +PERF_TEST_P(Video, DISABLED_Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi")) { declare.time(60); @@ -380,7 +412,7 @@ PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/vide cap >> frame; ASSERT_FALSE(frame.empty()); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame(frame); @@ -423,7 +455,8 @@ PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/vide DEF_PARAM_TEST(Video_Cn_LearningRate, string, MatCn, double); -PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(0.0, 0.01))) +PERF_TEST_P(Video_Cn_LearningRate, DISABLED_Video_MOG, + Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(0.0, 0.01))) { string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); int cn = GET_PARAM(1); @@ -447,7 +480,7 @@ PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576. cv::swap(temp, frame); } - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame(frame); cv::gpu::MOG_GPU d_mog; @@ -511,7 +544,8 @@ PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576. DEF_PARAM_TEST(Video_Cn, string, int); -PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) +PERF_TEST_P(Video_Cn, DISABLED_Video_MOG2, + Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) { string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); int cn = GET_PARAM(1); @@ -534,7 +568,7 @@ PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/v cv::swap(temp, frame); } - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame(frame); cv::gpu::MOG2_GPU d_mog2; @@ -596,7 +630,8 @@ PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/v ////////////////////////////////////////////////////// // MOG2GetBackgroundImage -PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) +PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, + Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) { string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); int cn = GET_PARAM(1); @@ -606,7 +641,7 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76 cv::Mat frame; - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame; cv::gpu::MOG2_GPU d_mog2; @@ -639,6 +674,8 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76 { d_mog2.getBackgroundImage(d_background); } + + GPU_SANITY_CHECK(d_background); } else { @@ -670,13 +707,16 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76 { mog2.getBackgroundImage(background); } + + CPU_SANITY_CHECK(background); } } ////////////////////////////////////////////////////// // VIBE -PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) +PERF_TEST_P(Video_Cn, DISABLED_Video_VIBE, + Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) { string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); int cn = GET_PARAM(1); @@ -698,7 +738,7 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v cv::swap(temp, frame); } - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame(frame); cv::gpu::VIBE_GPU d_vibe; @@ -730,7 +770,7 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v } else { - FAIL(); + FAIL() << "No such CPU implementation analogy"; } } @@ -739,7 +779,8 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v DEF_PARAM_TEST(Video_Cn_MaxFeatures, string, MatCn, int); -PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(20, 40, 60))) +PERF_TEST_P(Video_Cn_MaxFeatures, DISABLED_Video_GMG, + Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(20, 40, 60))) { std::string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); int cn = GET_PARAM(1); @@ -762,7 +803,7 @@ PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.a cv::swap(temp, frame); } - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::GpuMat d_frame(frame); cv::gpu::GpuMat d_fgmask; @@ -840,7 +881,7 @@ PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.a ////////////////////////////////////////////////////// // VideoWriter -PERF_TEST_P(Video, Video_VideoWriter, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi")) +PERF_TEST_P(Video, DISABLED_Video_VideoWriter, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi")) { declare.time(30); @@ -854,7 +895,7 @@ PERF_TEST_P(Video, Video_VideoWriter, Values("gpu/video/768x576.avi", "gpu/video cv::Mat frame; - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::VideoWriter_GPU d_writer; @@ -903,7 +944,7 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video string inputFile = perf::TestBase::getDataPath(GetParam()); - if (runOnGpu) + if (PERF_RUN_GPU()) { cv::gpu::VideoReader_GPU d_reader(inputFile); ASSERT_TRUE( d_reader.isOpened() ); @@ -916,6 +957,8 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video { d_reader.read(d_frame); } + + GPU_SANITY_CHECK(d_frame); } else { @@ -930,6 +973,8 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video { reader >> frame; } + + CPU_SANITY_CHECK(frame); } } -- 2.7.4