aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/test/ResizeEndToEndTestImpl.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/backendsCommon/test/ResizeEndToEndTestImpl.hpp')
-rw-r--r--src/backends/backendsCommon/test/ResizeEndToEndTestImpl.hpp62
1 files changed, 51 insertions, 11 deletions
diff --git a/src/backends/backendsCommon/test/ResizeEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/ResizeEndToEndTestImpl.hpp
index f8d17a89b7..071daa7a31 100644
--- a/src/backends/backendsCommon/test/ResizeEndToEndTestImpl.hpp
+++ b/src/backends/backendsCommon/test/ResizeEndToEndTestImpl.hpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017, 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#pragma once
@@ -37,7 +37,9 @@ armnn::INetworkPtr CreateResizeNetwork(const armnn::ResizeDescriptor& descriptor
template<armnn::DataType ArmnnType>
void ResizeEndToEnd(const std::vector<armnn::BackendId>& backends,
armnn::DataLayout dataLayout,
- armnn::ResizeMethod resizeMethod)
+ armnn::ResizeMethod resizeMethod,
+ bool alignCorners = false,
+ bool halfPixel = false)
{
using namespace armnn;
using T = ResolveType<ArmnnType>;
@@ -64,6 +66,11 @@ void ResizeEndToEnd(const std::vector<armnn::BackendId>& backends,
7.f, 8.f, 9.f
};
+ if (alignCorners && halfPixel)
+ {
+ throw InvalidArgumentException("alignCorners and halfPixel cannot be true simultaneously ");
+ }
+
std::vector<float> expectedOutputData;
switch(resizeMethod)
{
@@ -81,14 +88,42 @@ void ResizeEndToEnd(const std::vector<armnn::BackendId>& backends,
}
case ResizeMethod::NearestNeighbor:
{
- expectedOutputData =
+ if (alignCorners)
{
- 1.f, 1.f, 2.f, 2.f, 3.f,
- 1.f, 1.f, 2.f, 2.f, 3.f,
- 4.f, 4.f, 5.f, 5.f, 6.f,
- 4.f, 4.f, 5.f, 5.f, 6.f,
- 7.f, 7.f, 8.f, 8.f, 9.f
- };
+ expectedOutputData =
+ {
+ 1.f, 2.f, 2.f, 3.f, 3.f,
+ 4.f, 5.f, 5.f, 6.f, 6.f,
+ 4.f, 5.f, 5.f, 6.f, 6.f,
+ 7.f, 8.f, 8.f, 9.f, 9.f,
+ 7.f, 8.f, 8.f, 9.f, 9.f
+ };
+ }
+ else
+ {
+ if (halfPixel)
+ {
+ expectedOutputData =
+ {
+ 1.f, 1.f, 2.f, 3.f, 3.f,
+ 1.f, 1.f, 2.f, 3.f, 3.f,
+ 4.f, 4.f, 5.f, 6.f, 6.f,
+ 7.f, 7.f, 8.f, 9.f, 9.f,
+ 7.f, 7.f, 8.f, 9.f, 9.f
+ };
+ }
+ else
+ {
+ expectedOutputData =
+ {
+ 1.f, 1.f, 2.f, 2.f, 3.f,
+ 1.f, 1.f, 2.f, 2.f, 3.f,
+ 4.f, 4.f, 5.f, 5.f, 6.f,
+ 4.f, 4.f, 5.f, 5.f, 6.f,
+ 7.f, 7.f, 8.f, 8.f, 9.f
+ };
+ }
+ }
break;
}
default:
@@ -102,6 +137,9 @@ void ResizeEndToEnd(const std::vector<armnn::BackendId>& backends,
descriptor.m_TargetHeight = outputHeight;
descriptor.m_Method = resizeMethod;
descriptor.m_DataLayout = dataLayout;
+ descriptor.m_AlignCorners = alignCorners;
+ descriptor.m_HalfPixelCenters = halfPixel;
+
// swizzle data if needed
if (dataLayout == armnn::DataLayout::NHWC)
@@ -137,7 +175,9 @@ void ResizeBilinearEndToEnd(const std::vector<armnn::BackendId>& backends,
template<armnn::DataType ArmnnType>
void ResizeNearestNeighborEndToEnd(const std::vector<armnn::BackendId>& backends,
- armnn::DataLayout dataLayout)
+ armnn::DataLayout dataLayout,
+ bool alignCorners = false,
+ bool halfPixel = false)
{
- ResizeEndToEnd<ArmnnType>(backends, dataLayout, armnn::ResizeMethod::NearestNeighbor);
+ ResizeEndToEnd<ArmnnType>(backends, dataLayout, armnn::ResizeMethod::NearestNeighbor, alignCorners, halfPixel);
}