24 struct ResizeTestParams
29 , m_InQuantScale(1.0f)
31 , m_OutQuantScale(1.0f)
32 , m_OutQuantOffset(0) {}
40 std::vector<float> m_InputData;
41 std::vector<float> m_ExpectedOutputData;
44 int32_t m_InQuantOffset;
46 float m_OutQuantScale;
47 int32_t m_OutQuantOffset;
49 void SetInQuantParams(
float quantScale, int32_t quantOffset)
51 m_InQuantScale = quantScale;
52 m_InQuantOffset = quantOffset;
55 void SetOutQuantParams(
float quantScale, int32_t quantOffset)
57 m_OutQuantScale = quantScale;
58 m_OutQuantOffset = quantOffset;
61 void SetInOutQuantParams(
float quantScale, int32_t quantOffset)
63 SetInQuantParams(quantScale, quantOffset);
64 SetOutQuantParams(quantScale, quantOffset);
68 template<
size_t NumDims,
74 const ResizeTestParams& params)
80 if (armnn::IsQuantizedType<T>())
82 inputInfo.SetQuantizationScale(params.m_InQuantScale);
83 inputInfo.SetQuantizationOffset(params.m_InQuantOffset);
85 outputInfo.SetQuantizationScale(params.m_OutQuantScale);
86 outputInfo.SetQuantizationOffset(params.m_OutQuantOffset);
89 std::vector<T> inputData =
90 armnnUtils::QuantizedVector<T>(params.m_InputData, params.m_InQuantScale, params.m_InQuantOffset);
92 std::vector<T> expectedOutputData =
93 armnnUtils::QuantizedVector<T>(params.m_ExpectedOutputData,
94 params.m_OutQuantScale,
95 params.m_OutQuantOffset);
103 auto input = MakeTensor<T, NumDims>(inputInfo, inputData);
106 result.outputExpected = MakeTensor<T, NumDims>(outputInfo, expectedOutputData);
108 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputInfo);
109 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputInfo);
120 AddInputToWorkload(descriptor, info, inputInfo, inputHandle.get());
121 AddOutputToWorkload(descriptor, info, outputInfo, outputHandle.get());
123 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateResize(descriptor, info);
125 inputHandle->Allocate();
126 outputHandle->Allocate();
129 workload->PostAllocationConfigure();
142 template<armnn::DataType ArmnnType,
typename T>
148 ResizeTestParams testParams;
150 testParams.m_DataLayout = dataLayout;
152 testParams.m_InputShape = { 1, 2, 4, 4 };
153 testParams.m_OutputShape = testParams.m_InputShape;
155 testParams.m_InputData =
157 1.0f, 2.0f, 3.0f, 4.0f,
158 2.0f, 3.0f, 4.0f, 5.0f,
159 3.0f, 4.0f, 5.0f, 6.0f,
160 4.0f, 5.0f, 6.0f, 7.0f,
162 1.0f, 2.0f, 3.0f, 4.0f,
163 2.0f, 3.0f, 4.0f, 5.0f,
164 3.0f, 4.0f, 5.0f, 6.0f,
165 4.0f, 5.0f, 6.0f, 7.0f
168 testParams.m_ExpectedOutputData = testParams.m_InputData;
170 testParams.SetInOutQuantParams(1.5f, 3);
172 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
175 template<armnn::DataType ArmnnType,
typename T>
181 ResizeTestParams testParams;
183 testParams.m_DataLayout = dataLayout;
185 testParams.m_InputShape = { 1, 2, 2, 2 };
186 testParams.m_OutputShape = { 1, 2, 1, 1 };
188 testParams.m_InputData =
202 testParams.m_ExpectedOutputData =
209 testParams.SetInOutQuantParams(0.1567f, 1);
211 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
214 template<armnn::DataType ArmnnType,
typename T>
220 ResizeTestParams testParams;
222 testParams.m_DataLayout = dataLayout;
224 testParams.m_InputShape = { 1, 2, 4, 4 };
225 testParams.m_OutputShape = { 1, 2, 2, 2 };
227 testParams.m_InputData =
229 1.0f, 2.0f, 3.0f, 4.0f,
230 2.0f, 3.0f, 4.0f, 5.0f,
231 3.0f, 4.0f, 5.0f, 6.0f,
232 4.0f, 5.0f, 6.0f, 7.0f,
234 7.0f, 6.0f, 5.0f, 4.0f,
235 6.0f, 5.0f, 4.0f, 3.0f,
236 5.0f, 4.0f, 3.0f, 2.0f,
237 4.0f, 3.0f, 2.0f, 1.0f
240 testParams.m_ExpectedOutputData =
249 testParams.SetInOutQuantParams(3.141592f, 3);
251 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
254 template<armnn::DataType ArmnnType,
typename T>
260 ResizeTestParams testParams;
262 testParams.m_DataLayout = dataLayout;
264 testParams.m_InputShape = { 1, 2, 3, 5 };
265 testParams.m_OutputShape = { 1, 2, 2, 3 };
267 testParams.m_InputData =
269 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
270 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
271 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
273 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
274 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
275 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
278 testParams.m_ExpectedOutputData =
281 12.75f, 15.25f, 17.75f,
283 16.50f, 19.00f, 21.50f,
287 testParams.SetInOutQuantParams(1.5f, -1);
289 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
292 template<armnn::DataType ArmnnType,
typename T>
298 ResizeTestParams testParams;
300 testParams.m_DataLayout = dataLayout;
302 testParams.m_InputShape = { 1, 2, 3, 2 };
303 testParams.m_OutputShape = { 1, 2, 3, 5 };
305 testParams.m_InputData =
316 testParams.m_ExpectedOutputData =
318 1.0f, 1.4f, 1.8f, 2.0f, 2.0f,
319 13.0f, 16.2f, 19.4f, 21.0f, 21.0f,
320 144.0f, 179.6f, 215.2f, 233.0f, 233.0f,
322 233.0f, 197.4f, 161.8f, 144.0f, 144.0f,
323 21.0f, 17.8f, 14.6f, 13.0f, 13.0f,
324 2.0f, 1.6f, 1.2f, 1.0f, 1.0f
327 testParams.SetInQuantParams(1.0f, 0);
329 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
336 template<armnn::DataType ArmnnType,
typename T>
342 ResizeTestParams testParams;
344 testParams.m_DataLayout = dataLayout;
346 testParams.m_InputShape = { 1, 2, 4, 4 };
347 testParams.m_OutputShape = testParams.m_InputShape;
349 testParams.m_InputData =
351 1.0f, 2.0f, 3.0f, 4.0f,
352 2.0f, 3.0f, 4.0f, 5.0f,
353 3.0f, 4.0f, 5.0f, 6.0f,
354 4.0f, 5.0f, 6.0f, 7.0f,
356 1.0f, 2.0f, 3.0f, 4.0f,
357 2.0f, 3.0f, 4.0f, 5.0f,
358 3.0f, 4.0f, 5.0f, 6.0f,
359 4.0f, 5.0f, 6.0f, 7.0f
362 testParams.m_ExpectedOutputData = testParams.m_InputData;
364 testParams.SetInOutQuantParams(1.5f, 3);
366 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
369 template<armnn::DataType ArmnnType,
typename T>
375 ResizeTestParams testParams;
377 testParams.m_DataLayout = dataLayout;
379 testParams.m_InputShape = { 1, 2, 2, 2 };
380 testParams.m_OutputShape = { 1, 2, 1, 1 };
382 testParams.m_InputData =
396 testParams.m_ExpectedOutputData =
403 testParams.SetInOutQuantParams(0.1567f, 1);
405 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
408 template<armnn::DataType ArmnnType,
typename T>
414 ResizeTestParams testParams;
416 testParams.m_DataLayout = dataLayout;
418 testParams.m_InputShape = { 1, 2, 4, 4 };
419 testParams.m_OutputShape = { 1, 2, 2, 2 };
421 testParams.m_InputData =
423 1.0f, 2.0f, 3.0f, 4.0f,
424 2.0f, 3.0f, 4.0f, 5.0f,
425 3.0f, 4.0f, 5.0f, 6.0f,
426 4.0f, 5.0f, 6.0f, 7.0f,
428 7.0f, 6.0f, 5.0f, 4.0f,
429 6.0f, 5.0f, 4.0f, 3.0f,
430 5.0f, 4.0f, 3.0f, 2.0f,
431 4.0f, 3.0f, 2.0f, 1.0f
434 testParams.m_ExpectedOutputData =
443 testParams.SetInOutQuantParams(3.141592f, 3);
445 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
448 template<armnn::DataType ArmnnType,
typename T>
454 ResizeTestParams testParams;
456 testParams.m_DataLayout = dataLayout;
458 testParams.m_InputShape = { 1, 2, 3, 5 };
459 testParams.m_OutputShape = { 1, 2, 2, 3 };
461 testParams.m_InputData =
463 1.5f, 3.0f, 4.5f, 6.0f, 7.5f,
464 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
465 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
467 16.5f, 18.0f, 19.5f, 21.0f, 22.5f,
468 9.0f, 10.5f, 12.0f, 13.5f, 15.0f,
469 1.5f, 3.0f, 4.5f, 6.0f, 7.5f
472 testParams.m_ExpectedOutputData =
481 testParams.SetInOutQuantParams(1.5f, -1);
483 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
486 template<armnn::DataType ArmnnType,
typename T>
492 int32_t inQuantOffset,
494 int32_t outQuantOffset)
496 ResizeTestParams testParams;
498 testParams.m_DataLayout = dataLayout;
500 testParams.m_InputShape = { 1, 2, 3, 2 };
501 testParams.m_OutputShape = { 1, 2, 3, 5 };
503 testParams.m_InputData =
505 0.183005f, 2.379065f,
506 1.054970f, 1.302565f,
507 2.400595f, 0.688960f,
509 2.400595f, 0.688960f,
510 1.054970f, 1.302565f,
511 0.183005f, 2.379065f,
514 testParams.m_ExpectedOutputData =
516 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f,
517 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
518 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
520 2.400595f, 2.400595f, 2.400595f, 0.688960f, 0.688960f,
521 1.054970f, 1.054970f, 1.054970f, 1.302565f, 1.302565f,
522 0.183005f, 0.183005f, 0.183005f, 2.379065f, 2.379065f
525 testParams.SetInQuantParams(inQuantScale, inQuantOffset);
526 testParams.SetOutQuantParams(outQuantScale, outQuantOffset);
528 return ResizeTestImpl<4, ArmnnType>(workloadFactory, memoryManager, testParams);
537 ResizeBilinearNopTest<armnn::DataType::Float32>(
542 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
543 SimpleResizeBilinearTest<armnn::DataType::Float32>(
548 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
549 ResizeBilinearSqMinTest<armnn::DataType::Float32>(
554 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
555 ResizeBilinearMinTest<armnn::DataType::Float32>(
560 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
561 ResizeBilinearMagTest<armnn::DataType::Float32>(
566 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
567 ResizeNearestNeighborNopTest<armnn::DataType::Float32>(
572 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
573 SimpleResizeNearestNeighborTest<armnn::DataType::Float32>(
578 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
579 ResizeNearestNeighborSqMinTest<armnn::DataType::Float32>(
584 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
585 ResizeNearestNeighborMinTest<armnn::DataType::Float32>(
590 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
591 ResizeNearestNeighborMagTest<armnn::DataType::Float32>(
596 int32_t inQuantOffset,
598 int32_t outQuantOffset);
602 ResizeBilinearNopTest<armnn::DataType::Float16>(
607 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
608 SimpleResizeBilinearTest<armnn::DataType::Float16>(
613 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
614 ResizeBilinearSqMinTest<armnn::DataType::Float16>(
619 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
620 ResizeBilinearMinTest<armnn::DataType::Float16>(
625 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
626 ResizeBilinearMagTest<armnn::DataType::Float16>(
631 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
632 ResizeNearestNeighborNopTest<armnn::DataType::Float16>(
637 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
638 SimpleResizeNearestNeighborTest<armnn::DataType::Float16>(
643 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
644 ResizeNearestNeighborSqMinTest<armnn::DataType::Float16>(
649 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
650 ResizeNearestNeighborMinTest<armnn::DataType::Float16>(
655 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
656 ResizeNearestNeighborMagTest<armnn::DataType::Float16>(
661 int32_t inQuantOffset,
663 int32_t outQuantOffset);
667 ResizeBilinearNopTest<armnn::DataType::QAsymmU8>(
672 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
673 SimpleResizeBilinearTest<armnn::DataType::QAsymmU8>(
678 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
679 ResizeBilinearSqMinTest<armnn::DataType::QAsymmU8>(
684 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
685 ResizeBilinearMinTest<armnn::DataType::QAsymmU8>(
690 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
691 ResizeBilinearMagTest<armnn::DataType::QAsymmU8>(
696 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
697 ResizeNearestNeighborNopTest<armnn::DataType::QAsymmU8>(
702 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
703 SimpleResizeNearestNeighborTest<armnn::DataType::QAsymmU8>(
708 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
709 ResizeNearestNeighborSqMinTest<armnn::DataType::QAsymmU8>(
714 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
715 ResizeNearestNeighborMinTest<armnn::DataType::QAsymmU8>(
720 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
721 ResizeNearestNeighborMagTest<armnn::DataType::QAsymmU8>(
726 int32_t inQuantOffset,
728 int32_t outQuantOffset);
732 ResizeBilinearNopTest<armnn::DataType::QSymmS16>(
737 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
738 SimpleResizeBilinearTest<armnn::DataType::QSymmS16>(
743 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
744 ResizeBilinearSqMinTest<armnn::DataType::QSymmS16>(
749 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
750 ResizeBilinearMinTest<armnn::DataType::QSymmS16>(
755 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
756 ResizeBilinearMagTest<armnn::DataType::QSymmS16>(
761 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
762 ResizeNearestNeighborNopTest<armnn::DataType::QSymmS16>(
767 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
768 SimpleResizeNearestNeighborTest<armnn::DataType::QSymmS16>(
773 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
774 ResizeNearestNeighborSqMinTest<armnn::DataType::QSymmS16>(
779 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
780 ResizeNearestNeighborMinTest<armnn::DataType::QSymmS16>(
785 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
786 ResizeNearestNeighborMagTest<armnn::DataType::QSymmS16>(
791 int32_t inQuantOffset,
793 int32_t outQuantOffset);
LayerTestResult< T, 4 > ResizeNearestNeighborMinTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
ResizeMethod m_Method
The Interpolation method to use (Bilinear, NearestNeighbor).
typename ResolveTypeImpl< DT >::Type ResolveType
LayerTestResult< T, 4 > ResizeBilinearMinTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
Copyright (c) 2020 ARM Limited.
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
LayerTestResult< T, 4 > ResizeNearestNeighborNopTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
void PermuteTensorNchwToNhwc(armnn::TensorInfo &tensorInfo, std::vector< T > &tensorData)
virtual std::unique_ptr< IWorkload > CreateResize(const ResizeQueueDescriptor &descriptor, const WorkloadInfo &info) const
LayerTestResult< T, 4 > ResizeBilinearNopTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
LayerTestResult< T, 4 > ResizeBilinearMagTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...
LayerTestResult< T, 4 > ResizeNearestNeighborMagTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout, float inQuantScale, int32_t inQuantOffset, float outQuantScale, int32_t outQuantOffset)
LayerTestResult< T, 4 > SimpleResizeBilinearTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
uint32_t m_TargetWidth
Target width value.
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
uint32_t m_TargetHeight
Target height value.
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
LayerTestResult< T, 4 > ResizeNearestNeighborSqMinTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
LayerTestResult< T, 4 > ResizeBilinearSqMinTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
Contains information about inputs and outputs to a layer.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
LayerTestResult< T, 4 > SimpleResizeNearestNeighborTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout dataLayout)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)