diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2018-08-30 16:02:11 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:54:54 +0000 |
commit | 09d3451b4caf8d5e0e7cf2c6097e50a1f815d027 (patch) | |
tree | 8e9b8e9882d0120c85ff08473dbf3721b7602677 /tests/validation | |
parent | b57be0da77370e5e71fe82dfa281f528279e8127 (diff) | |
download | ComputeLibrary-09d3451b4caf8d5e0e7cf2c6097e50a1f815d027.tar.gz |
COMPMID-1548: NEON FP16 mismatches on CannyEdge and HarrisCorners.
Removes FP16 from HarrisCorners and CannyEdge.
Change-Id: I5e4f9205fdbe4de85f04f55ecf1568c837e56cc0
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/146247
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele DiGiorgio <michele.digiorgio@arm.com>
Diffstat (limited to 'tests/validation')
-rw-r--r-- | tests/validation/CL/CannyEdge.cpp | 9 | ||||
-rw-r--r-- | tests/validation/CL/HarrisCorners.cpp | 10 | ||||
-rw-r--r-- | tests/validation/NEON/CannyEdge.cpp | 14 | ||||
-rw-r--r-- | tests/validation/NEON/HarrisCorners.cpp | 14 | ||||
-rw-r--r-- | tests/validation/fixtures/CannyEdgeFixture.h | 23 | ||||
-rw-r--r-- | tests/validation/fixtures/HarrisCornersFixture.h | 25 | ||||
-rw-r--r-- | tests/validation/reference/CannyEdgeDetector.cpp | 6 | ||||
-rw-r--r-- | tests/validation/reference/CannyEdgeDetector.h | 3 | ||||
-rw-r--r-- | tests/validation/reference/HarrisCornerDetector.h | 7 |
9 files changed, 29 insertions, 82 deletions
diff --git a/tests/validation/CL/CannyEdge.cpp b/tests/validation/CL/CannyEdge.cpp index 7aa178adba..d130aa4bd1 100644 --- a/tests/validation/CL/CannyEdge.cpp +++ b/tests/validation/CL/CannyEdge.cpp @@ -48,21 +48,16 @@ namespace /* Allowed ratio of mismatches between target and reference (1.0 = 100%) */ const float allowed_mismatch_ratio = 0.1f; -const auto use_fp16 = framework::dataset::make("UseFP16", { false }); - const auto data = combine(framework::dataset::make("GradientSize", { 3, 5, 7 }), - combine(framework::dataset::make("Normalization", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }), combine(datasets::BorderModes(), use_fp16))); + combine(framework::dataset::make("Normalization", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }), datasets::BorderModes())); } // namespace TEST_SUITE(CL) TEST_SUITE(CannyEdge) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), data), framework::dataset::make("Format", Format::U8)), - shape, gradient_size, normalization, border_mode, use_fp16, format) + shape, gradient_size, normalization, border_mode, format) { - ARM_COMPUTE_UNUSED(use_fp16); - ARM_COMPUTE_ERROR_ON(use_fp16); - CannyEdgeParameters params = canny_edge_parameters(); // Convert normalisation type to integer const auto norm_type = static_cast<int>(normalization) + 1; diff --git a/tests/validation/CL/HarrisCorners.cpp b/tests/validation/CL/HarrisCorners.cpp index 890367c166..ccc9293fef 100644 --- a/tests/validation/CL/HarrisCorners.cpp +++ b/tests/validation/CL/HarrisCorners.cpp @@ -46,21 +46,15 @@ namespace validation { namespace { -const auto use_fp16 = framework::dataset::make("UseFP16", -{ false }); - -const auto data = combine(framework::dataset::make("GradientSize", { 3, 5, 7 }), combine(framework::dataset::make("BlockSize", { 3, 5, 7 }), combine(datasets::BorderModes(), use_fp16))); +const auto data = combine(framework::dataset::make("GradientSize", { 3, 5, 7 }), combine(framework::dataset::make("BlockSize", { 3, 5, 7 }), datasets::BorderModes())); } // namespace TEST_SUITE(CL) TEST_SUITE(HarrisCorners) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), data), framework::dataset::make("Format", Format::U8)), shape, - gradient_size, block_size, border_mode, use_fp16, format) + gradient_size, block_size, border_mode, format) { - ARM_COMPUTE_UNUSED(use_fp16); - ARM_COMPUTE_ERROR_ON(use_fp16); - std::mt19937 gen(library->seed()); std::uniform_real_distribution<float> real_dist(0.f, 0.01f); diff --git a/tests/validation/NEON/CannyEdge.cpp b/tests/validation/NEON/CannyEdge.cpp index 5697b622f2..7c4cd8090f 100644 --- a/tests/validation/NEON/CannyEdge.cpp +++ b/tests/validation/NEON/CannyEdge.cpp @@ -48,23 +48,15 @@ namespace /* Allowed ratio of mismatches between target and reference (1.0 = 100%) */ const float allowed_mismatch_ratio = 0.1f; -const auto use_fp16 = framework::dataset::make("UseFP16", -{ -#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC - true, -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ - false -}); - const auto data = combine(framework::dataset::make("GradientSize", { 3, 5, 7 }), - combine(framework::dataset::make("Normalization", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }), combine(datasets::BorderModes(), use_fp16))); + combine(framework::dataset::make("Normalization", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }), datasets::BorderModes())); } // namespace TEST_SUITE(NEON) TEST_SUITE(CannyEdge) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), data), framework::dataset::make("Format", Format::U8)), - shape, gradient_size, normalization, border_mode, use_fp16, format) + shape, gradient_size, normalization, border_mode, format) { CannyEdgeParameters params = canny_edge_parameters(); // Convert normalisation type to integer @@ -81,7 +73,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(conca // Create Canny edge configure function NECannyEdge canny_edge; - canny_edge.configure(&src, &dst, params.upper_thresh, params.lower_thresh, gradient_size, norm_type, border_mode, params.constant_border_value, use_fp16); + canny_edge.configure(&src, &dst, params.upper_thresh, params.lower_thresh, gradient_size, norm_type, border_mode, params.constant_border_value); // Validate valid region validate(src.info()->valid_region(), shape_to_valid_region(shape, (BorderMode::UNDEFINED == border_mode))); diff --git a/tests/validation/NEON/HarrisCorners.cpp b/tests/validation/NEON/HarrisCorners.cpp index 3474a96f8f..e0bbd92a2e 100644 --- a/tests/validation/NEON/HarrisCorners.cpp +++ b/tests/validation/NEON/HarrisCorners.cpp @@ -50,22 +50,14 @@ const float allowed_missing_percentage = 10.f; /* Allowed percentage of keypoints mismatching between target and reference */ const float allowed_mismatch_percentage = 10.f; -const auto use_fp16 = framework::dataset::make("UseFP16", -{ -#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC - true, -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ - false -}); - -const auto data = combine(framework::dataset::make("GradientSize", { 3, 5, 7 }), combine(framework::dataset::make("BlockSize", { 3, 5, 7 }), combine(datasets::BorderModes(), use_fp16))); +const auto data = combine(framework::dataset::make("GradientSize", { 3, 5, 7 }), combine(framework::dataset::make("BlockSize", { 3, 5, 7 }), datasets::BorderModes())); } // namespace TEST_SUITE(NEON) TEST_SUITE(HarrisCorners) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), data), framework::dataset::make("Format", Format::U8)), shape, - gradient_size, block_size, border_mode, use_fp16, format) + gradient_size, block_size, border_mode, format) { std::mt19937 gen(library->seed()); std::uniform_real_distribution<float> real_dist(0.f, 0.01f); @@ -90,7 +82,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(conca // Create harris corners configure function NEHarrisCorners harris_corners; - harris_corners.configure(&src, threshold, min_dist, sensitivity, gradient_size, block_size, &corners, border_mode, constant_border_value, use_fp16); + harris_corners.configure(&src, threshold, min_dist, sensitivity, gradient_size, block_size, &corners, border_mode, constant_border_value); // Validate padding PaddingCalculator calculator(shape.x(), 8); diff --git a/tests/validation/fixtures/CannyEdgeFixture.h b/tests/validation/fixtures/CannyEdgeFixture.h index 0f37c46641..d52b17e550 100644 --- a/tests/validation/fixtures/CannyEdgeFixture.h +++ b/tests/validation/fixtures/CannyEdgeFixture.h @@ -47,12 +47,11 @@ class CannyEdgeValidationFixture : public framework::Fixture { public: template <typename...> - void setup(std::string image, int gradient_size, MagnitudeType norm_type, BorderMode border_mode, bool use_fp16, Format format) + void setup(std::string image, int gradient_size, MagnitudeType norm_type, BorderMode border_mode, Format format) { CannyEdgeParameters params = canny_edge_parameters(); - _target = compute_target(image, gradient_size, norm_type, border_mode, use_fp16, format, params); - //TODO(COMPMID-543): Add use_fp16 to reference + _target = compute_target(image, gradient_size, norm_type, border_mode, format, params); _reference = compute_reference(image, gradient_size, norm_type, border_mode, format, params); } @@ -63,21 +62,7 @@ protected: library->fill(tensor, raw); } - template <typename F, typename std::enable_if<std::is_same<F, NECannyEdge>::value, int>::type = 0> - void configure_target(F &func, TensorType &src, TensorType &dst, int gradient_size, int norm_type, BorderMode border_mode, bool use_fp16, const CannyEdgeParameters ¶ms) - { - func.configure(&src, &dst, params.upper_thresh, params.lower_thresh, gradient_size, norm_type, border_mode, params.constant_border_value, use_fp16); - } - - template <typename F, typename std::enable_if<std::is_same<F, CLCannyEdge>::value, int>::type = 0> - void configure_target(F &func, TensorType &src, TensorType &dst, int gradient_size, int norm_type, BorderMode border_mode, bool use_fp16, const CannyEdgeParameters ¶ms) - { - ARM_COMPUTE_UNUSED(use_fp16); - ARM_COMPUTE_ERROR_ON(use_fp16); - func.configure(&src, &dst, params.upper_thresh, params.lower_thresh, gradient_size, norm_type, border_mode, params.constant_border_value); - } - - TensorType compute_target(const std::string &image, int gradient_size, MagnitudeType norm_type, BorderMode border_mode, bool use_fp16, Format format, const CannyEdgeParameters ¶ms) + TensorType compute_target(const std::string &image, int gradient_size, MagnitudeType norm_type, BorderMode border_mode, Format format, const CannyEdgeParameters ¶ms) { // Load the image (cached by the library if loaded before) const RawTensor &raw = library->get(image, format); @@ -90,7 +75,7 @@ protected: // Create Canny edge configure function FunctionType canny_edge; - configure_target<FunctionType>(canny_edge, src, dst, gradient_size, static_cast<int>(norm_type) + 1, border_mode, use_fp16, params); + canny_edge.configure(&src, &dst, params.upper_thresh, params.lower_thresh, gradient_size, static_cast<int>(norm_type) + 1, border_mode, params.constant_border_value); ARM_COMPUTE_EXPECT(src.info()->is_resizable(), framework::LogLevel::ERRORS); ARM_COMPUTE_EXPECT(dst.info()->is_resizable(), framework::LogLevel::ERRORS); diff --git a/tests/validation/fixtures/HarrisCornersFixture.h b/tests/validation/fixtures/HarrisCornersFixture.h index 1c30157344..f1d1f2d135 100644 --- a/tests/validation/fixtures/HarrisCornersFixture.h +++ b/tests/validation/fixtures/HarrisCornersFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -47,12 +47,11 @@ class HarrisCornersValidationFixture : public framework::Fixture { public: template <typename...> - void setup(std::string image, int gradient_size, int block_size, BorderMode border_mode, bool use_fp16, Format format) + void setup(std::string image, int gradient_size, int block_size, BorderMode border_mode, Format format) { HarrisCornersParameters params = harris_corners_parameters(); - _target = compute_target(image, gradient_size, block_size, border_mode, use_fp16, format, params); - //TODO(COMPMID-543): Add use_fp16 to reference + _target = compute_target(image, gradient_size, block_size, border_mode, format, params); _reference = compute_reference(image, gradient_size, block_size, border_mode, format, params); } @@ -63,21 +62,7 @@ protected: library->fill(tensor, raw); } - template <typename F, typename std::enable_if<std::is_same<F, NEHarrisCorners>::value, int>::type = 0> - void configure_target(F &func, TensorType &src, ArrayType &corners, int gradient_size, int block_size, BorderMode border_mode, bool use_fp16, const HarrisCornersParameters ¶ms) - { - func.configure(&src, params.threshold, params.min_dist, params.sensitivity, gradient_size, block_size, &corners, border_mode, params.constant_border_value, use_fp16); - } - - template <typename F, typename std::enable_if<std::is_same<F, CLHarrisCorners>::value, int>::type = 0> - void configure_target(F &func, TensorType &src, ArrayType &corners, int gradient_size, int block_size, BorderMode border_mode, bool use_fp16, const HarrisCornersParameters ¶ms) - { - ARM_COMPUTE_UNUSED(use_fp16); - ARM_COMPUTE_ERROR_ON(use_fp16); - func.configure(&src, params.threshold, params.min_dist, params.sensitivity, gradient_size, block_size, &corners, border_mode, params.constant_border_value); - } - - ArrayType compute_target(std::string image, int gradient_size, int block_size, BorderMode border_mode, bool use_fp16, Format format, const HarrisCornersParameters ¶ms) + ArrayType compute_target(std::string image, int gradient_size, int block_size, BorderMode border_mode, Format format, const HarrisCornersParameters ¶ms) { // Load the image (cached by the library if loaded before) const RawTensor &raw = library->get(image, format); @@ -90,7 +75,7 @@ protected: // Create harris corners configure function FunctionType harris_corners; - configure_target<FunctionType>(harris_corners, src, corners, gradient_size, block_size, border_mode, use_fp16, params); + harris_corners.configure(&src, params.threshold, params.min_dist, params.sensitivity, gradient_size, block_size, &corners, border_mode, params.constant_border_value); ARM_COMPUTE_EXPECT(src.info()->is_resizable(), framework::LogLevel::ERRORS); diff --git a/tests/validation/reference/CannyEdgeDetector.cpp b/tests/validation/reference/CannyEdgeDetector.cpp index cfe8ae8100..d50452bfe8 100644 --- a/tests/validation/reference/CannyEdgeDetector.cpp +++ b/tests/validation/reference/CannyEdgeDetector.cpp @@ -231,7 +231,8 @@ SimpleTensor<T> canny_edge_detector_impl(const SimpleTensor<T> &src, int32_t upp } // namespace template <typename T> -SimpleTensor<T> canny_edge_detector(const SimpleTensor<T> &src, int32_t upper_thresh, int32_t lower_thresh, int gradient_size, MagnitudeType norm_type, +SimpleTensor<T> canny_edge_detector(const SimpleTensor<T> &src, + int32_t upper_thresh, int32_t lower_thresh, int gradient_size, MagnitudeType norm_type, BorderMode border_mode, T constant_border_value) { if(gradient_size < 7) @@ -244,7 +245,8 @@ SimpleTensor<T> canny_edge_detector(const SimpleTensor<T> &src, int32_t upper_th } } -template SimpleTensor<uint8_t> canny_edge_detector(const SimpleTensor<uint8_t> &src, int32_t upper_thresh, int32_t lower_thresh, int gradient_size, MagnitudeType norm_type, +template SimpleTensor<uint8_t> canny_edge_detector(const SimpleTensor<uint8_t> &src, + int32_t upper_thresh, int32_t lower_thresh, int gradient_size, MagnitudeType norm_type, BorderMode border_mode, uint8_t constant_border_value); } // namespace reference } // namespace validation diff --git a/tests/validation/reference/CannyEdgeDetector.h b/tests/validation/reference/CannyEdgeDetector.h index a46c145153..ee6199d96e 100644 --- a/tests/validation/reference/CannyEdgeDetector.h +++ b/tests/validation/reference/CannyEdgeDetector.h @@ -36,7 +36,8 @@ namespace validation namespace reference { template <typename T> -SimpleTensor<T> canny_edge_detector(const SimpleTensor<T> &src, int32_t upper_thresh, int32_t lower_thresh, int gradient_size, MagnitudeType norm_type, +SimpleTensor<T> canny_edge_detector(const SimpleTensor<T> &src, + int32_t upper_thresh, int32_t lower_thresh, int gradient_size, MagnitudeType norm_type, BorderMode border_mode, T constant_border_value = 0); } // namespace reference } // namespace validation diff --git a/tests/validation/reference/HarrisCornerDetector.h b/tests/validation/reference/HarrisCornerDetector.h index 042e8570c2..f208eaa743 100644 --- a/tests/validation/reference/HarrisCornerDetector.h +++ b/tests/validation/reference/HarrisCornerDetector.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -38,8 +38,9 @@ namespace validation namespace reference { template <typename T> -std::vector<KeyPoint> harris_corner_detector(const SimpleTensor<T> &src, float threshold, float min_dist, float sensitivity, int gradient_size, int block_size, BorderMode border_mode, - T constant_border_value = 0); +std::vector<KeyPoint> harris_corner_detector(const SimpleTensor<T> &src, + float threshold, float min_dist, float sensitivity, int gradient_size, int block_size, + BorderMode border_mode, T constant_border_value = 0); } // namespace reference } // namespace validation } // namespace test |