1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Worker #include "ResizeTestHelper.hpp"
7*89c4ff92SAndroid Build Coastguard Worker
8*89c4ff92SAndroid Build Coastguard Worker #include <armnn_delegate.hpp>
9*89c4ff92SAndroid Build Coastguard Worker
10*89c4ff92SAndroid Build Coastguard Worker #include <flatbuffers/flatbuffers.h>
11*89c4ff92SAndroid Build Coastguard Worker #include <tensorflow/lite/interpreter.h>
12*89c4ff92SAndroid Build Coastguard Worker #include <tensorflow/lite/kernels/register.h>
13*89c4ff92SAndroid Build Coastguard Worker #include <tensorflow/lite/model.h>
14*89c4ff92SAndroid Build Coastguard Worker #include <schema_generated.h>
15*89c4ff92SAndroid Build Coastguard Worker #include <tensorflow/lite/version.h>
16*89c4ff92SAndroid Build Coastguard Worker
17*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
18*89c4ff92SAndroid Build Coastguard Worker
19*89c4ff92SAndroid Build Coastguard Worker namespace armnnDelegate
20*89c4ff92SAndroid Build Coastguard Worker {
21*89c4ff92SAndroid Build Coastguard Worker
ResizeBiliniarFloat32Test(std::vector<armnn::BackendId> & backends)22*89c4ff92SAndroid Build Coastguard Worker void ResizeBiliniarFloat32Test(std::vector<armnn::BackendId>& backends)
23*89c4ff92SAndroid Build Coastguard Worker {
24*89c4ff92SAndroid Build Coastguard Worker // Set input data
25*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values
26*89c4ff92SAndroid Build Coastguard Worker {
27*89c4ff92SAndroid Build Coastguard Worker 0.0f, 1.0f, 2.0f,
28*89c4ff92SAndroid Build Coastguard Worker 3.0f, 4.0f, 5.0f,
29*89c4ff92SAndroid Build Coastguard Worker 6.0f, 7.0f, 8.0f
30*89c4ff92SAndroid Build Coastguard Worker };
31*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> input2NewShape { 5, 5 };
32*89c4ff92SAndroid Build Coastguard Worker
33*89c4ff92SAndroid Build Coastguard Worker // Calculate output data
34*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues
35*89c4ff92SAndroid Build Coastguard Worker {
36*89c4ff92SAndroid Build Coastguard Worker 0.0f, 0.6f, 1.2f, 1.8f, 2.0f,
37*89c4ff92SAndroid Build Coastguard Worker 1.8f, 2.4f, 3.0f, 3.6f, 3.8f,
38*89c4ff92SAndroid Build Coastguard Worker 3.6f, 4.2f, 4.8f, 5.4f, 5.6f,
39*89c4ff92SAndroid Build Coastguard Worker 5.4f, 6.0f, 6.6f, 7.2f, 7.4f,
40*89c4ff92SAndroid Build Coastguard Worker 6.0f, 6.6f, 7.2f, 7.8f, 8.0f
41*89c4ff92SAndroid Build Coastguard Worker };
42*89c4ff92SAndroid Build Coastguard Worker
43*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> input1Shape { 1, 3, 3, 1 };
44*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> input2Shape { 2 };
45*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> expectedOutputShape = { 1, 5, 5, 1 };
46*89c4ff92SAndroid Build Coastguard Worker
47*89c4ff92SAndroid Build Coastguard Worker ResizeFP32TestImpl(tflite::BuiltinOperator_RESIZE_BILINEAR,
48*89c4ff92SAndroid Build Coastguard Worker backends,
49*89c4ff92SAndroid Build Coastguard Worker input1Values,
50*89c4ff92SAndroid Build Coastguard Worker input1Shape,
51*89c4ff92SAndroid Build Coastguard Worker input2NewShape,
52*89c4ff92SAndroid Build Coastguard Worker input2Shape,
53*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
54*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape);
55*89c4ff92SAndroid Build Coastguard Worker }
56*89c4ff92SAndroid Build Coastguard Worker
ResizeNearestNeighbourFloat32Test(std::vector<armnn::BackendId> & backends)57*89c4ff92SAndroid Build Coastguard Worker void ResizeNearestNeighbourFloat32Test(std::vector<armnn::BackendId>& backends)
58*89c4ff92SAndroid Build Coastguard Worker {
59*89c4ff92SAndroid Build Coastguard Worker // Set input data
60*89c4ff92SAndroid Build Coastguard Worker std::vector<float> input1Values { 1.0f, 2.0f, 3.0f, 4.0f }
61*89c4ff92SAndroid Build Coastguard Worker ;
62*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> input2NewShape { 1, 1 };
63*89c4ff92SAndroid Build Coastguard Worker
64*89c4ff92SAndroid Build Coastguard Worker // Calculate output data
65*89c4ff92SAndroid Build Coastguard Worker std::vector<float> expectedOutputValues { 1.0f };
66*89c4ff92SAndroid Build Coastguard Worker
67*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> input1Shape { 1, 2, 2, 1 };
68*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> input2Shape { 2 };
69*89c4ff92SAndroid Build Coastguard Worker const std::vector<int32_t> expectedOutputShape = { 1, 1, 1, 1 };
70*89c4ff92SAndroid Build Coastguard Worker
71*89c4ff92SAndroid Build Coastguard Worker ResizeFP32TestImpl(tflite::BuiltinOperator_RESIZE_NEAREST_NEIGHBOR,
72*89c4ff92SAndroid Build Coastguard Worker backends,
73*89c4ff92SAndroid Build Coastguard Worker input1Values,
74*89c4ff92SAndroid Build Coastguard Worker input1Shape,
75*89c4ff92SAndroid Build Coastguard Worker input2NewShape,
76*89c4ff92SAndroid Build Coastguard Worker input2Shape,
77*89c4ff92SAndroid Build Coastguard Worker expectedOutputValues,
78*89c4ff92SAndroid Build Coastguard Worker expectedOutputShape);
79*89c4ff92SAndroid Build Coastguard Worker }
80*89c4ff92SAndroid Build Coastguard Worker
81*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ResizeTests_GpuAccTests")
82*89c4ff92SAndroid Build Coastguard Worker {
83*89c4ff92SAndroid Build Coastguard Worker
84*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Resize_Biliniar_Float32_GpuAcc_Test")
85*89c4ff92SAndroid Build Coastguard Worker {
86*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
87*89c4ff92SAndroid Build Coastguard Worker ResizeBiliniarFloat32Test(backends);
88*89c4ff92SAndroid Build Coastguard Worker }
89*89c4ff92SAndroid Build Coastguard Worker
90*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Resize_NearestNeighbour_Float32_GpuAcc_Test")
91*89c4ff92SAndroid Build Coastguard Worker {
92*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
93*89c4ff92SAndroid Build Coastguard Worker ResizeNearestNeighbourFloat32Test(backends);
94*89c4ff92SAndroid Build Coastguard Worker }
95*89c4ff92SAndroid Build Coastguard Worker
96*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("ResizeTests_GpuAccTests")
97*89c4ff92SAndroid Build Coastguard Worker
98*89c4ff92SAndroid Build Coastguard Worker
99*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ResizeTests_CpuAccTests")
100*89c4ff92SAndroid Build Coastguard Worker {
101*89c4ff92SAndroid Build Coastguard Worker
102*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Resize_Biliniar_Float32_CpuAcc_Test")
103*89c4ff92SAndroid Build Coastguard Worker {
104*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
105*89c4ff92SAndroid Build Coastguard Worker ResizeBiliniarFloat32Test(backends);
106*89c4ff92SAndroid Build Coastguard Worker }
107*89c4ff92SAndroid Build Coastguard Worker
108*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Resize_NearestNeighbour_Float32_CpuAcc_Test")
109*89c4ff92SAndroid Build Coastguard Worker {
110*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
111*89c4ff92SAndroid Build Coastguard Worker ResizeNearestNeighbourFloat32Test(backends);
112*89c4ff92SAndroid Build Coastguard Worker }
113*89c4ff92SAndroid Build Coastguard Worker
114*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("ResizeTests_CpuAccTests")
115*89c4ff92SAndroid Build Coastguard Worker
116*89c4ff92SAndroid Build Coastguard Worker
117*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ResizeTests_CpuRefTests")
118*89c4ff92SAndroid Build Coastguard Worker {
119*89c4ff92SAndroid Build Coastguard Worker
120*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Resize_Biliniar_Float32_CpuRef_Test")
121*89c4ff92SAndroid Build Coastguard Worker {
122*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
123*89c4ff92SAndroid Build Coastguard Worker ResizeBiliniarFloat32Test(backends);
124*89c4ff92SAndroid Build Coastguard Worker }
125*89c4ff92SAndroid Build Coastguard Worker
126*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Resize_NearestNeighbour_Float32_CpuRef_Test")
127*89c4ff92SAndroid Build Coastguard Worker {
128*89c4ff92SAndroid Build Coastguard Worker std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
129*89c4ff92SAndroid Build Coastguard Worker ResizeNearestNeighbourFloat32Test(backends);
130*89c4ff92SAndroid Build Coastguard Worker }
131*89c4ff92SAndroid Build Coastguard Worker
132*89c4ff92SAndroid Build Coastguard Worker } // TEST_SUITE("ResizeTests_CpuRefTests")
133*89c4ff92SAndroid Build Coastguard Worker
134*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate
135