From 1710133b05a9ed1fcc1cc68624c2ce0e09eae495 Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Mon, 1 Jun 2020 12:07:50 +0100 Subject: COMPMID-2395: Add support for U8 datatype to CropResize on NEON Change-Id: Ia356b3545e01ccc98056951f3a20ed2712240dac Signed-off-by: Michele Di Giorgio Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3283 Tested-by: Arm Jenkins Reviewed-by: Sang-Hoon Park Reviewed-by: Georgios Pinitas Comments-Addressed: Arm Jenkins --- tests/validation/NEON/CropResize.cpp | 27 ++++++++++++++++++--------- tests/validation/reference/CropResize.cpp | 4 +++- 2 files changed, 21 insertions(+), 10 deletions(-) (limited to 'tests/validation') diff --git a/tests/validation/NEON/CropResize.cpp b/tests/validation/NEON/CropResize.cpp index 1feed3d9d2..c6a1046b7e 100644 --- a/tests/validation/NEON/CropResize.cpp +++ b/tests/validation/NEON/CropResize.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -52,7 +52,6 @@ using NECropResizeFixture = CropResizeFixture // clang-format off DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( framework::dataset::make("InputInfo", { TensorInfo(TensorShape(15U, 30U, 40U, 10U), 1, DataType::S32), - TensorInfo(TensorShape(15U, 30U, 40U, 10U), 1, DataType::U8), // Invalid input data type. TensorInfo(TensorShape(15U, 30U, 40U, 10U), 1, DataType::S32), // Invalid box_ind shape. TensorInfo(TensorShape(15U, 30U, 40U, 10U), 1, DataType::S32), // Invalid output shape. TensorInfo(TensorShape(15U, 30U, 40U, 10U), 1, DataType::S32), // Invalid output data type. @@ -64,11 +63,9 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( TensorInfo(TensorShape(4, 20), 1, DataType::F32), TensorInfo(TensorShape(4, 20), 1, DataType::F32), TensorInfo(TensorShape(4, 20), 1, DataType::F32), - TensorInfo(TensorShape(4, 20), 1, DataType::F32), TensorInfo(TensorShape(3, 20), 1, DataType::F32), })), framework::dataset::make("BoxIndInfo",{ TensorInfo(TensorShape(20), 1, DataType::S32), - TensorInfo(TensorShape(20), 1, DataType::S32), TensorInfo(TensorShape(10), 1, DataType::S32), TensorInfo(TensorShape(20), 1, DataType::S32), TensorInfo(TensorShape(20), 1, DataType::S32), @@ -76,14 +73,13 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( TensorInfo(TensorShape(20), 1, DataType::S32), })), framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(15U, 5, 5, 20U), 1, DataType::F32), - TensorInfo(TensorShape(15U, 5, 5, 20U), 1, DataType::F32), TensorInfo(TensorShape(15U, 5, 5, 20U), 1, DataType::F32), TensorInfo(TensorShape(15U, 5, 5, 10U), 1, DataType::F32), TensorInfo(TensorShape(15U, 5, 5, 20U), 1, DataType::S32), TensorInfo(TensorShape(5U, 5, 5, 20U), 1, DataType::F32), TensorInfo(TensorShape(15U, 5, 5, 20U), 1, DataType::F32), })), - framework::dataset::make("Expected", { true, false, false, false, false, false, false})), + framework::dataset::make("Expected", { true, false, false, false, false, false})), input, boxes, box_ind, output, expected) { ARM_COMPUTE_EXPECT(bool(NECropResize::validate(&input.clone()->set_data_layout(DataLayout::NHWC).set_is_resizable(false), @@ -100,7 +96,7 @@ TEST_SUITE(Float) TEST_SUITE(F16) FIXTURE_DATA_TEST_CASE(RunSmall, NECropResizeFixture, - framework::DatasetMode::PRECOMMIT, + framework::DatasetMode::ALL, combine(datasets::SmallCropResizeDataset(), combine(framework::dataset::make("IsOutOfBounds", { true, false }), framework::dataset::make("DataType", DataType::F16)))) @@ -114,7 +110,7 @@ TEST_SUITE_END() // F16 TEST_SUITE(F32) FIXTURE_DATA_TEST_CASE(RunSmall, NECropResizeFixture, - framework::DatasetMode::PRECOMMIT, + framework::DatasetMode::ALL, combine(datasets::SmallCropResizeDataset(), combine(framework::dataset::make("IsOutOfBounds", { true, false }), framework::dataset::make("DataType", DataType::F32)))) @@ -125,10 +121,23 @@ FIXTURE_DATA_TEST_CASE(RunSmall, TEST_SUITE_END() // F32 TEST_SUITE_END() // Float +TEST_SUITE(U8) +FIXTURE_DATA_TEST_CASE(RunSmall, + NECropResizeFixture, + framework::DatasetMode::ALL, + combine(datasets::SmallCropResizeDataset(), + combine(framework::dataset::make("IsOutOfBounds", { true, false }), + framework::dataset::make("DataType", DataType::U8)))) +{ + // Validate output + validate(Accessor(_target), _reference, tolerance_fp32, 0.01); +} +TEST_SUITE_END() // U8 + TEST_SUITE(U16) FIXTURE_DATA_TEST_CASE(RunSmall, NECropResizeFixture, - framework::DatasetMode::PRECOMMIT, + framework::DatasetMode::ALL, combine(datasets::SmallCropResizeDataset(), combine(framework::dataset::make("IsOutOfBounds", { true, false }), framework::dataset::make("DataType", DataType::U16)))) diff --git a/tests/validation/reference/CropResize.cpp b/tests/validation/reference/CropResize.cpp index 68ee4557fb..f1b49f6673 100644 --- a/tests/validation/reference/CropResize.cpp +++ b/tests/validation/reference/CropResize.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -193,6 +193,8 @@ template SimpleTensor crop_and_resize(const SimpleTensor &src, c Coordinates2D crop_size, InterpolationPolicy method, float extrapolation_value); template SimpleTensor crop_and_resize(const SimpleTensor &src, const SimpleTensor &boxes, SimpleTensor box_ind, Coordinates2D crop_size, InterpolationPolicy method, float extrapolation_value); +template SimpleTensor crop_and_resize(const SimpleTensor &src, const SimpleTensor &boxes, SimpleTensor box_ind, + Coordinates2D crop_size, InterpolationPolicy method, float extrapolation_value); } // namespace reference } // namespace validation } // namespace test -- cgit v1.2.1