391 lines
20 KiB
C++
391 lines
20 KiB
C++
// Copyright (C) 2018-2020 Intel Corporation
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
#include "fluid_tests.hpp"
|
|
|
|
#include <opencv2/opencv.hpp>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#define TEST_SIZES \
|
|
cv::Size(3840, 2160), \
|
|
cv::Size(1920, 1080), \
|
|
cv::Size(1280, 720), \
|
|
cv::Size(1280, 960), \
|
|
cv::Size( 960, 720), \
|
|
cv::Size( 640, 480), \
|
|
cv::Size( 320, 200), \
|
|
cv::Size( 113, 71)
|
|
|
|
#define TEST_RESIZE_DOWN \
|
|
std::make_pair(cv::Size(3840, 2160), cv::Size(1920, 1080)), \
|
|
std::make_pair(cv::Size(3840, 2160), cv::Size(1280, 720)), \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(1280, 720)), \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size( 640, 480)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size( 640, 480)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size( 320, 200)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size( 320, 200)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size( 113, 71)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size( 113, 71))
|
|
|
|
#define TEST_RESIZE_UP \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(3840, 2160)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size(3840, 2160)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size(1920, 1080)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size(1920, 1080)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size(1280, 720)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size(1280, 720)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size( 640, 480)), \
|
|
std::make_pair(cv::Size( 113, 71), cv::Size( 640, 480)), \
|
|
std::make_pair(cv::Size( 113, 71), cv::Size( 320, 200))
|
|
|
|
#define TEST_RESIZE_HORZ \
|
|
std::make_pair(cv::Size(3840, 2160), cv::Size(1920, 2160)), \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(3840, 1080)), \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(1280, 1080)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size(1920, 720)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size( 640, 720)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size(1280, 480)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size( 320, 480)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size( 640, 200)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size( 113, 200)), \
|
|
std::make_pair(cv::Size( 113, 71), cv::Size( 320, 71))
|
|
|
|
#define TEST_RESIZE_VERT \
|
|
std::make_pair(cv::Size(3840, 2160), cv::Size(3840, 1080)), \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(1920, 2160)), \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(1920, 720)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size(1280, 1080)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size(1280, 480)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size( 640, 720)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size( 640, 200)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size( 320, 480)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size( 320, 71)), \
|
|
std::make_pair(cv::Size( 113, 71), cv::Size( 113, 200))
|
|
|
|
#define TEST_RESIZE_COPY \
|
|
std::make_pair(cv::Size(3840, 2160), cv::Size(3840, 2160)), \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(1920, 1080)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size(1280, 720)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size( 640, 480)), \
|
|
std::make_pair(cv::Size( 320, 200), cv::Size( 320, 200)), \
|
|
std::make_pair(cv::Size( 113, 71), cv::Size( 113, 71))
|
|
|
|
#define TEST_RESIZE_SPECIAL \
|
|
std::make_pair(cv::Size(300, 300), cv::Size(300, 199)), \
|
|
std::make_pair(cv::Size(300, 300), cv::Size(199, 300)), \
|
|
std::make_pair(cv::Size(300, 300), cv::Size(199, 199)), \
|
|
std::make_pair(cv::Size(199, 199), cv::Size(300, 300)), \
|
|
std::make_pair(cv::Size(199, 300), cv::Size(300, 300)), \
|
|
std::make_pair(cv::Size(300, 199), cv::Size(300, 300))
|
|
|
|
#define TEST_RESIZE_PAIRS \
|
|
TEST_RESIZE_DOWN, \
|
|
TEST_RESIZE_UP, \
|
|
TEST_RESIZE_HORZ, \
|
|
TEST_RESIZE_VERT, \
|
|
TEST_RESIZE_COPY, \
|
|
TEST_RESIZE_SPECIAL
|
|
|
|
#define TEST_SIZES_PREPROC \
|
|
std::make_pair(cv::Size(1920, 1080), cv::Size(1024, 1024)), \
|
|
std::make_pair(cv::Size(1280, 720), cv::Size( 544, 320)), \
|
|
std::make_pair(cv::Size( 640, 480), cv::Size( 896, 512)), \
|
|
std::make_pair(cv::Size( 200, 400), cv::Size( 128, 384)), \
|
|
std::make_pair(cv::Size( 256, 256), cv::Size( 72, 72)), \
|
|
std::make_pair(cv::Size( 96, 256), cv::Size( 128, 384))
|
|
|
|
using namespace testing;
|
|
#if defined(__arm__) || defined(__aarch64__)
|
|
INSTANTIATE_TEST_CASE_P(ResizeTestFluid_U8, ResizeTestGAPI,
|
|
Combine(Values(CV_8UC1, CV_8UC3),
|
|
Values(cv::INTER_LINEAR, cv::INTER_AREA),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(4))); // error not more than 4 unit
|
|
|
|
INSTANTIATE_TEST_CASE_P(ResizeRGB8UTestFluid_U8, ResizeRGB8UTestGAPI,
|
|
Combine(Values(CV_8UC3, CV_8UC4),
|
|
Values(cv::INTER_LINEAR),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(4))); // error not more than 4 unit
|
|
#else
|
|
INSTANTIATE_TEST_CASE_P(ResizeTestFluid_U8, ResizeTestGAPI,
|
|
Combine(Values(CV_8UC1, CV_8UC3),
|
|
Values(cv::INTER_LINEAR, cv::INTER_AREA),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(1))); // error not more than 1 unit
|
|
|
|
INSTANTIATE_TEST_CASE_P(ResizeRGB8UTestFluid_U8, ResizeRGB8UTestGAPI,
|
|
Combine(Values(CV_8UC3, CV_8UC4),
|
|
Values(cv::INTER_LINEAR),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(1))); // error not more than 1 unit
|
|
#endif
|
|
|
|
INSTANTIATE_TEST_CASE_P(ResizeTestFluid_F32, ResizeTestGAPI,
|
|
Combine(Values(CV_32FC1, CV_32FC3),
|
|
Values(cv::INTER_LINEAR, cv::INTER_AREA),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(0.015))); // accuracy like ~1.5%
|
|
|
|
|
|
INSTANTIATE_TEST_CASE_P(SplitTestFluid, SplitTestGAPI,
|
|
Combine(Values(2, 3, 4),
|
|
Values(CV_8U, CV_32F),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ChanToPlaneTestFluid, ChanToPlaneTestGAPI,
|
|
Combine(Values(1, 3),
|
|
Values(CV_8U, CV_32F),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(MergeTestFluid, MergeTestGAPI,
|
|
Combine(Values(2, 3, 4),
|
|
Values(CV_8U, CV_32F),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(NV12toRGBTestFluid, NV12toRGBTestGAPI,
|
|
Combine(Values(cv::Size(3840, 2160),
|
|
cv::Size(1920, 1080),
|
|
cv::Size(1280, 720),
|
|
cv::Size(1280, 960),
|
|
cv::Size( 960, 720),
|
|
cv::Size( 640, 480),
|
|
cv::Size( 300, 300),
|
|
cv::Size( 320, 200)),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(I420toRGBTestFluid, I420toRGBTestGAPI,
|
|
Combine(Values(cv::Size(3840, 2160),
|
|
cv::Size(1920, 1080),
|
|
cv::Size(1280, 720),
|
|
cv::Size(1280, 960),
|
|
cv::Size( 960, 720),
|
|
cv::Size( 640, 480),
|
|
cv::Size( 300, 300),
|
|
cv::Size( 320, 200)),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ConvertDepthFluid, ConvertDepthTestGAPI,
|
|
Combine(Values(CV_16U, CV_32F, CV_8U),
|
|
Values(CV_32F, CV_16U, CV_8U),
|
|
Values(cv::Size(3840, 2160),
|
|
cv::Size(1920, 1080),
|
|
cv::Size(1280, 720),
|
|
cv::Size(1280, 960),
|
|
cv::Size( 960, 720),
|
|
cv::Size( 640, 480),
|
|
cv::Size( 300, 300),
|
|
cv::Size( 320, 200)),
|
|
Values(1)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ResizeRoiTestFluid, ResizeRoiTestGAPI,
|
|
Combine(Values(CV_8UC1, CV_8UC3),
|
|
Values(cv::INTER_LINEAR),
|
|
Values(std::make_pair(cv::Size(24, 24), cv::Size(12, 12))),
|
|
Values(cv::Rect{0, 0, 12, 3},
|
|
cv::Rect{0, 3, 12, 3},
|
|
cv::Rect{0, 6, 12, 3},
|
|
cv::Rect{0, 9, 12, 3}),
|
|
Values(1))); // error not more than 1 unit
|
|
|
|
INSTANTIATE_TEST_CASE_P(ResizeRGB8URoiTestFluid, ResizeRGB8URoiTestGAPI,
|
|
Combine(Values(CV_8UC3, CV_8UC4),
|
|
Values(cv::INTER_LINEAR),
|
|
Values(std::make_pair(cv::Size(24, 24), cv::Size(12, 12))),
|
|
Values(cv::Rect{0, 0, 12, 3},
|
|
cv::Rect{0, 3, 12, 3},
|
|
cv::Rect{0, 6, 12, 3},
|
|
cv::Rect{0, 9, 12, 3}),
|
|
Values(1))); // error not more than 1 unit
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
#if defined(__arm__) || defined(__aarch64__)
|
|
INSTANTIATE_TEST_CASE_P(ResizeTestFluid_U8, ResizeTestIE,
|
|
Combine(Values(CV_8UC1, CV_8UC3),
|
|
Values(cv::INTER_LINEAR, cv::INTER_AREA),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(4))); // error not more than 4 unit
|
|
#else
|
|
INSTANTIATE_TEST_CASE_P(ResizeTestFluid_U8, ResizeTestIE,
|
|
Combine(Values(CV_8UC1, CV_8UC3),
|
|
Values(cv::INTER_LINEAR, cv::INTER_AREA),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(1))); // error not more than 1 unit
|
|
#endif
|
|
|
|
INSTANTIATE_TEST_CASE_P(ResizeTestFluid_F32, ResizeTestIE,
|
|
Combine(Values(CV_32FC1, CV_32FC3),
|
|
Values(cv::INTER_LINEAR, cv::INTER_AREA),
|
|
Values(TEST_RESIZE_PAIRS),
|
|
Values(0.05))); // error within 0.05 units
|
|
|
|
INSTANTIATE_TEST_CASE_P(SplitTestFluid, SplitTestIE,
|
|
Combine(Values(CV_8UC2, CV_8UC3, CV_8UC4,
|
|
CV_32FC2, CV_32FC3, CV_32FC4),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(MergeTestFluid, MergeTestIE,
|
|
Combine(Values(CV_8UC2, CV_8UC3, CV_8UC4,
|
|
CV_32FC2, CV_32FC3, CV_32FC4),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ColorConvertFluid_3ch, ColorConvertTestIE,
|
|
Combine(Values(CV_8U, CV_32F),
|
|
Values(InferenceEngine::ColorFormat::RGB),
|
|
Values(InferenceEngine::NHWC, InferenceEngine::NCHW),
|
|
Values(InferenceEngine::NHWC, InferenceEngine::NCHW),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ColorConvertFluid_4ch, ColorConvertTestIE,
|
|
Combine(Values(CV_8U, CV_32F),
|
|
Values(InferenceEngine::ColorFormat::RGBX,
|
|
InferenceEngine::ColorFormat::BGRX),
|
|
Values(InferenceEngine::NHWC),
|
|
Values(InferenceEngine::NHWC, InferenceEngine::NCHW),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ColorConvertYUV420Fluid, ColorConvertYUV420TestIE,
|
|
Combine(Values(InferenceEngine::NV12, InferenceEngine::I420),
|
|
Values(InferenceEngine::NHWC, InferenceEngine::NCHW),
|
|
Values(cv::Size(3840, 2160),
|
|
cv::Size(1920, 1080),
|
|
cv::Size(1280, 720),
|
|
cv::Size(1280, 960),
|
|
cv::Size( 960, 720),
|
|
cv::Size( 640, 480),
|
|
cv::Size( 320, 200),
|
|
cv::Size( 300, 300),
|
|
cv::Size( 150, 150)),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(Reorder_HWC2CHW, ColorConvertTestIE,
|
|
Combine(Values(CV_8U, CV_32F),
|
|
Values(InferenceEngine::ColorFormat::BGR),
|
|
Values(InferenceEngine::NHWC),
|
|
Values(InferenceEngine::NCHW),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(Reorder_CHW2HWC, ColorConvertTestIE,
|
|
Combine(Values(CV_8U, CV_32F),
|
|
Values(InferenceEngine::ColorFormat::BGR),
|
|
Values(InferenceEngine::NCHW),
|
|
Values(InferenceEngine::NHWC),
|
|
Values(TEST_SIZES),
|
|
Values(0)));
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace IE = InferenceEngine;
|
|
|
|
static const auto FRAME_SIZES =
|
|
Values(std::make_pair(cv::Size(1920,1080),
|
|
cv::Size(1024,1024)), // person-vehicle-bike-detection-crossroad-0078
|
|
std::make_pair(cv::Size(1024, 768),
|
|
cv::Size( 992, 544)), // person-detection-retail-0001
|
|
std::make_pair(cv::Size(1280, 720),
|
|
cv::Size( 896, 512)), // road-segmentation-adas-0001
|
|
std::make_pair(cv::Size(3840, 2160),
|
|
cv::Size(2048, 1024)), // semantic-segmentation-adas-0001
|
|
std::make_pair(cv::Size(1270, 720),
|
|
cv::Size(2048, 1024)), // semantic-segmentation-adas-0001 (UPSCALE)
|
|
std::make_pair(cv::Size( 640, 480),
|
|
cv::Size( 544, 320))); // 320 - face-person-detection-retail-0002,
|
|
// 320 - person-detection-retail-10013
|
|
// 300 - face-detection-retail-0004
|
|
|
|
static const auto PATCH_SIZES =
|
|
Values(std::make_pair(cv::Size(200,400),
|
|
cv::Size(128,384)), // person-reidentification-retail-0076
|
|
std::make_pair(cv::Size( 96,256),
|
|
cv::Size(128,384)), // person-reidentification-retail-0076 (UPSCALE)
|
|
std::make_pair(cv::Size(340,340),
|
|
cv::Size(320,256)), // vehicle-license-plate-detection-barrier-0007
|
|
std::make_pair(cv::Size(256,256),
|
|
cv::Size( 72,72)), // vehicle-attributes-recognition-barrier-0039
|
|
std::make_pair(cv::Size(96,96),
|
|
cv::Size(64,64)), // 60 - head-pose-estimation-adas-0001
|
|
// 62 - age-gender-recognition-retail-0013
|
|
// 64 - emotions-recognition-retail-0003
|
|
std::make_pair(cv::Size(128,48),
|
|
cv::Size( 94,24)), // license-plate-recognition-barrier-0001
|
|
std::make_pair(cv::Size(120,200),
|
|
cv::Size(80, 160))); // 80 - person-attributes-recognition-crossroad-0031
|
|
// 64 - person-reidentification-retail-0079
|
|
|
|
INSTANTIATE_TEST_CASE_P(ReorderResize_Frame, PreprocTest,
|
|
Combine(Values(IE::Precision::U8, IE::Precision::FP32),
|
|
Values(IE::ResizeAlgorithm::RESIZE_BILINEAR), // AREA is not there yet
|
|
Values(IE::ColorFormat::RAW),
|
|
Values(IE::Layout::NHWC),
|
|
Values(IE::Layout::NCHW),
|
|
Values(std::make_pair(1, 1), std::make_pair(3, 3)),
|
|
FRAME_SIZES));
|
|
|
|
INSTANTIATE_TEST_CASE_P(Scale3ch_Frame, PreprocTest,
|
|
Combine(Values(IE::Precision::U8, IE::Precision::FP32),
|
|
Values(IE::ResizeAlgorithm::RESIZE_BILINEAR), // AREA is not there yet
|
|
Values(IE::ColorFormat::RAW),
|
|
Values(IE::Layout::NHWC),
|
|
Values(IE::Layout::NHWC),
|
|
Values(std::make_pair(3, 3)),
|
|
FRAME_SIZES));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ReorderResize_Patch, PreprocTest,
|
|
Combine(Values(IE::Precision::U8, IE::Precision::FP32),
|
|
Values(IE::ResizeAlgorithm::RESIZE_BILINEAR), // AREA is not there yet
|
|
Values(IE::ColorFormat::RAW),
|
|
Values(IE::Layout::NHWC),
|
|
Values(IE::Layout::NCHW, IE::Layout::NCHW),
|
|
Values(std::make_pair(1, 1), std::make_pair(3, 3)),
|
|
PATCH_SIZES));
|
|
|
|
INSTANTIATE_TEST_CASE_P(Everything_Resize, PreprocTest,
|
|
Combine(Values(IE::Precision::U8, IE::Precision::FP32),
|
|
Values(IE::ResizeAlgorithm::RESIZE_BILINEAR, IE::ResizeAlgorithm::RESIZE_AREA),
|
|
Values(IE::ColorFormat::RAW),
|
|
Values(IE::Layout::NHWC, IE::Layout::NCHW),
|
|
Values(IE::Layout::NHWC, IE::Layout::NCHW),
|
|
Values(std::make_pair(1, 1),
|
|
std::make_pair(2, 2),
|
|
std::make_pair(3, 3),
|
|
std::make_pair(4, 4)),
|
|
Values(TEST_SIZES_PREPROC)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ColorFormats_3ch, PreprocTest,
|
|
Combine(Values(IE::Precision::U8, IE::Precision::FP32),
|
|
Values(IE::ResizeAlgorithm::RESIZE_BILINEAR, IE::ResizeAlgorithm::RESIZE_AREA),
|
|
Values(IE::ColorFormat::RGB),
|
|
Values(IE::Layout::NHWC, IE::Layout::NCHW),
|
|
Values(IE::Layout::NHWC, IE::Layout::NCHW),
|
|
Values(std::make_pair(3, 3)),
|
|
Values(TEST_SIZES_PREPROC)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ColorFormats_4ch, PreprocTest,
|
|
Combine(Values(IE::Precision::U8, IE::Precision::FP32),
|
|
Values(IE::ResizeAlgorithm::RESIZE_BILINEAR, IE::ResizeAlgorithm::RESIZE_AREA),
|
|
Values(IE::ColorFormat::BGRX, IE::ColorFormat::RGBX),
|
|
Values(IE::Layout::NHWC),
|
|
Values(IE::Layout::NHWC, IE::Layout::NCHW),
|
|
Values(std::make_pair(4, 3)),
|
|
Values(TEST_SIZES_PREPROC)));
|
|
|
|
INSTANTIATE_TEST_CASE_P(ColorFormat_NV12, PreprocTest,
|
|
Combine(Values(IE::Precision::U8),
|
|
Values(IE::ResizeAlgorithm::RESIZE_BILINEAR, IE::ResizeAlgorithm::RESIZE_AREA),
|
|
Values(IE::ColorFormat::NV12),
|
|
Values(IE::Layout::NCHW),
|
|
Values(IE::Layout::NHWC, IE::Layout::NCHW),
|
|
Values(std::make_pair(1, 3)),
|
|
Values(TEST_SIZES_PREPROC)));
|