1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include "gapi_core_tests.hpp"
7 #include "ie_preprocess_gapi_kernels.hpp"
9 #include <opencv2/opencv.hpp>
11 #include <gtest/gtest.h>
16 #define CORE_FLUID InferenceEngine::gapi::preprocKernels()
19 cv::Size(3840, 2160), \
20 cv::Size(1920, 1080), \
21 cv::Size(1280, 720), \
22 cv::Size(1280, 960), \
23 cv::Size( 960, 720), \
24 cv::Size( 640, 480), \
25 cv::Size( 320, 200), \
28 #define TEST_RESIZE_DOWN \
29 std::make_pair(cv::Size(3840, 2160), cv::Size(1920, 1080)), \
30 std::make_pair(cv::Size(3840, 2160), cv::Size(1280, 720)), \
31 std::make_pair(cv::Size(1920, 1080), cv::Size(1280, 720)), \
32 std::make_pair(cv::Size(1920, 1080), cv::Size( 640, 480)), \
33 std::make_pair(cv::Size(1280, 720), cv::Size( 640, 480)), \
34 std::make_pair(cv::Size(1280, 720), cv::Size( 320, 200)), \
35 std::make_pair(cv::Size( 640, 480), cv::Size( 320, 200)), \
36 std::make_pair(cv::Size( 640, 480), cv::Size( 113, 71)), \
37 std::make_pair(cv::Size( 320, 200), cv::Size( 113, 71))
39 #define TEST_RESIZE_UP \
40 std::make_pair(cv::Size(1920, 1080), cv::Size(3840, 2160)), \
41 std::make_pair(cv::Size(1280, 720), cv::Size(3840, 2160)), \
42 std::make_pair(cv::Size(1280, 720), cv::Size(1920, 1080)), \
43 std::make_pair(cv::Size( 640, 480), cv::Size(1920, 1080)), \
44 std::make_pair(cv::Size( 640, 480), cv::Size(1280, 720)), \
45 std::make_pair(cv::Size( 320, 200), cv::Size(1280, 720)), \
46 std::make_pair(cv::Size( 320, 200), cv::Size( 640, 480)), \
47 std::make_pair(cv::Size( 113, 71), cv::Size( 640, 480)), \
48 std::make_pair(cv::Size( 113, 71), cv::Size( 320, 200))
50 #define TEST_RESIZE_HORZ \
51 std::make_pair(cv::Size(3840, 2160), cv::Size(1920, 2160)), \
52 std::make_pair(cv::Size(1920, 1080), cv::Size(3840, 1080)), \
53 std::make_pair(cv::Size(1920, 1080), cv::Size(1280, 1080)), \
54 std::make_pair(cv::Size(1280, 720), cv::Size(1920, 720)), \
55 std::make_pair(cv::Size(1280, 720), cv::Size( 640, 720)), \
56 std::make_pair(cv::Size( 640, 480), cv::Size(1280, 480)), \
57 std::make_pair(cv::Size( 640, 480), cv::Size( 320, 480)), \
58 std::make_pair(cv::Size( 320, 200), cv::Size( 640, 200)), \
59 std::make_pair(cv::Size( 320, 200), cv::Size( 113, 200)), \
60 std::make_pair(cv::Size( 113, 71), cv::Size( 320, 71))
62 #define TEST_RESIZE_VERT \
63 std::make_pair(cv::Size(3840, 2160), cv::Size(3840, 1080)), \
64 std::make_pair(cv::Size(1920, 1080), cv::Size(1920, 2160)), \
65 std::make_pair(cv::Size(1920, 1080), cv::Size(1920, 720)), \
66 std::make_pair(cv::Size(1280, 720), cv::Size(1280, 1080)), \
67 std::make_pair(cv::Size(1280, 720), cv::Size(1280, 480)), \
68 std::make_pair(cv::Size( 640, 480), cv::Size( 640, 720)), \
69 std::make_pair(cv::Size( 640, 480), cv::Size( 640, 200)), \
70 std::make_pair(cv::Size( 320, 200), cv::Size( 320, 480)), \
71 std::make_pair(cv::Size( 320, 200), cv::Size( 320, 71)), \
72 std::make_pair(cv::Size( 113, 71), cv::Size( 113, 200))
74 #define TEST_RESIZE_COPY \
75 std::make_pair(cv::Size(3840, 2160), cv::Size(3840, 2160)), \
76 std::make_pair(cv::Size(1920, 1080), cv::Size(1920, 1080)), \
77 std::make_pair(cv::Size(1280, 720), cv::Size(1280, 720)), \
78 std::make_pair(cv::Size( 640, 480), cv::Size( 640, 480)), \
79 std::make_pair(cv::Size( 320, 200), cv::Size( 320, 200)), \
80 std::make_pair(cv::Size( 113, 71), cv::Size( 113, 71))
82 #define TEST_RESIZE_SPECIAL \
83 std::make_pair(cv::Size(300, 300), cv::Size(300, 199)), \
84 std::make_pair(cv::Size(300, 300), cv::Size(199, 300)), \
85 std::make_pair(cv::Size(300, 300), cv::Size(199, 199)), \
86 std::make_pair(cv::Size(199, 199), cv::Size(300, 300)), \
87 std::make_pair(cv::Size(199, 300), cv::Size(300, 300)), \
88 std::make_pair(cv::Size(300, 199), cv::Size(300, 300))
90 #define TEST_RESIZE_PAIRS \
98 using namespace testing;
100 INSTANTIATE_TEST_CASE_P(ResizeTestFluid_U8, ResizeTestGAPI,
101 Combine(Values(CV_8UC1, CV_8UC3),
102 Values(cv::INTER_LINEAR, cv::INTER_AREA),
103 Values(TEST_RESIZE_PAIRS),
104 Values(1))); // error not more than 1 unit
106 INSTANTIATE_TEST_CASE_P(ResizeTestFluid_F32, ResizeTestGAPI,
107 Combine(Values(CV_32FC1, CV_32FC3),
108 Values(cv::INTER_LINEAR, cv::INTER_AREA),
109 Values(TEST_RESIZE_PAIRS),
110 Values(0.015))); // accuracy like ~1.5%
112 INSTANTIATE_TEST_CASE_P(SplitTestFluid, SplitTestGAPI,
113 Combine(Values(2, 3, 4),
114 Values(CV_8U, CV_32F),
115 Values(TEST_SIZES)));
117 INSTANTIATE_TEST_CASE_P(MergeTestFluid, MergeTestGAPI,
118 Combine(Values(2, 3, 4),
119 Values(CV_8U, CV_32F),
120 Values(TEST_SIZES)));
122 //----------------------------------------------------------------------
124 INSTANTIATE_TEST_CASE_P(ResizeTestFluid_U8, ResizeTestIE,
125 Combine(Values(CV_8UC1, CV_8UC3),
126 Values(cv::INTER_LINEAR, cv::INTER_AREA),
127 Values(TEST_RESIZE_PAIRS),
128 Values(1))); // error not more than 1 unit
130 INSTANTIATE_TEST_CASE_P(ResizeTestFluid_F32, ResizeTestIE,
131 Combine(Values(CV_32FC1, CV_32FC3),
132 Values(cv::INTER_LINEAR, cv::INTER_AREA),
133 Values(TEST_RESIZE_PAIRS),
134 Values(0.05))); // error within 0.05 units
136 INSTANTIATE_TEST_CASE_P(SplitTestFluid, SplitTestIE,
137 Combine(Values(CV_8UC2, CV_8UC3, CV_8UC4,
138 CV_32FC2, CV_32FC3, CV_32FC4),
139 Values(TEST_SIZES)));
141 INSTANTIATE_TEST_CASE_P(MergeTestFluid, MergeTestIE,
142 Combine(Values(CV_8UC2, CV_8UC3, CV_8UC4,
143 CV_32FC2, CV_32FC3, CV_32FC4),
144 Values(TEST_SIZES)));
146 //------------------------------------------------------------------------------
148 namespace IE = InferenceEngine;
150 static const auto FRAME_SIZES =
151 Values(std::make_pair(cv::Size(1920,1080),
152 cv::Size(1024,1024)), // person-vehicle-bike-detection-crossroad-0078
153 std::make_pair(cv::Size(1024, 768),
154 cv::Size( 992, 544)), // person-detection-retail-0001
155 std::make_pair(cv::Size(1280, 720),
156 cv::Size( 896, 512)), // road-segmentation-adas-0001
157 std::make_pair(cv::Size(3840, 2160),
158 cv::Size(2048, 1024)), // semantic-segmentation-adas-0001
159 std::make_pair(cv::Size(1270, 720),
160 cv::Size(2048, 1024)), // semantic-segmentation-adas-0001 (UPSCALE)
161 std::make_pair(cv::Size( 640, 480),
162 cv::Size( 544, 320))); // 320 - face-person-detection-retail-0002,
163 // 320 - person-detection-retail-10013
164 // 300 - face-detection-retail-0004
166 static const auto PATCH_SIZES =
167 Values(std::make_pair(cv::Size(200,400),
168 cv::Size(128,384)), // person-reidentification-retail-0076
169 std::make_pair(cv::Size( 96,256),
170 cv::Size(128,384)), // person-reidentification-retail-0076 (UPSCALE)
171 std::make_pair(cv::Size(340,340),
172 cv::Size(320,256)), // vehicle-license-plate-detection-barrier-0007
173 std::make_pair(cv::Size(256,256),
174 cv::Size( 72,72)), // vehicle-attributes-recognition-barrier-0039
175 std::make_pair(cv::Size(96,96),
176 cv::Size(64,64)), // 60 - head-pose-estimation-adas-0001
177 // 62 - age-gender-recognition-retail-0013
178 // 64 - emotions-recognition-retail-0003
179 std::make_pair(cv::Size(128,48),
180 cv::Size( 94,24)), // license-plate-recognition-barrier-0001
181 std::make_pair(cv::Size(120,200),
182 cv::Size(80, 160))); // 80 - person-attributes-recognition-crossroad-0031
183 // 64 - person-reidentification-retail-0079
185 INSTANTIATE_TEST_CASE_P(ReorderResize_Frame, PreprocTest,
186 Combine(Values(IE::Precision::U8, IE::Precision::FP32),
187 Values(IE::ResizeAlgorithm::RESIZE_BILINEAR), // AREA is not there yet
188 Values(IE::Layout::NHWC),
189 Values(IE::Layout::NCHW),
193 INSTANTIATE_TEST_CASE_P(Scale3ch_Frame, PreprocTest,
194 Combine(Values(IE::Precision::U8, IE::Precision::FP32),
195 Values(IE::ResizeAlgorithm::RESIZE_BILINEAR), // AREA is not there yet
196 Values(IE::Layout::NHWC),
197 Values(IE::Layout::NHWC),
201 INSTANTIATE_TEST_CASE_P(ReorderResize_Patch, PreprocTest,
202 Combine(Values(IE::Precision::U8, IE::Precision::FP32),
203 Values(IE::ResizeAlgorithm::RESIZE_BILINEAR), // AREA is not there yet
204 Values(IE::Layout::NHWC),
205 Values(IE::Layout::NCHW, IE::Layout::NCHW),
209 INSTANTIATE_TEST_CASE_P(Everything, PreprocTest,
210 Combine(Values(IE::Precision::U8, IE::Precision::FP32),
211 Values(IE::ResizeAlgorithm::RESIZE_BILINEAR, IE::ResizeAlgorithm::RESIZE_AREA),
212 Values(IE::Layout::NHWC, IE::Layout::NCHW),
213 Values(IE::Layout::NHWC, IE::Layout::NCHW),
215 Values(std::make_pair(cv::Size(1920, 1080), cv::Size(1024,1024)),
216 std::make_pair(cv::Size(1280, 720), cv::Size(544,320)),
217 std::make_pair(cv::Size(640, 480), cv::Size(896, 512)),
218 std::make_pair(cv::Size(200, 400), cv::Size(128, 384)),
219 std::make_pair(cv::Size(256, 256), cv::Size(72, 72)),
220 std::make_pair(cv::Size(96, 256), cv::Size(128, 384)))));