From 09d3451b4caf8d5e0e7cf2c6097e50a1f815d027 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Thu, 30 Aug 2018 16:02:11 +0100 Subject: 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 Reviewed-by: Michele DiGiorgio --- src/runtime/NEON/functions/NECannyEdge.cpp | 18 ++----- src/runtime/NEON/functions/NEHarrisCorners.cpp | 75 ++++++++------------------ 2 files changed, 26 insertions(+), 67 deletions(-) (limited to 'src/runtime') diff --git a/src/runtime/NEON/functions/NECannyEdge.cpp b/src/runtime/NEON/functions/NECannyEdge.cpp index d72c98bb50..0e5d50fd21 100644 --- a/src/runtime/NEON/functions/NECannyEdge.cpp +++ b/src/runtime/NEON/functions/NECannyEdge.cpp @@ -58,8 +58,7 @@ NECannyEdge::NECannyEdge(std::shared_ptr memory_manager) // NOLI { } -void NECannyEdge::configure(ITensor *input, ITensor *output, int32_t upper_thr, int32_t lower_thr, int32_t gradient_size, int32_t norm_type, BorderMode border_mode, uint8_t constant_border_value, - bool use_fp16) +void NECannyEdge::configure(ITensor *input, ITensor *output, int32_t upper_thr, int32_t lower_thr, int32_t gradient_size, int32_t norm_type, BorderMode border_mode, uint8_t constant_border_value) { ARM_COMPUTE_ERROR_ON_NULLPTR(input, output); ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::U8); @@ -127,18 +126,9 @@ void NECannyEdge::configure(ITensor *input, ITensor *output, int32_t upper_thr, _memory_group.manage(&_phase); // Configure gradient - if(use_fp16) - { - auto k = arm_compute::support::cpp14::make_unique(); - k->configure(&_gx, &_gy, &_magnitude, &_phase, norm_type); - _gradient = std::move(k); - } - else - { - auto k = arm_compute::support::cpp14::make_unique(); - k->configure(&_gx, &_gy, &_magnitude, &_phase, norm_type); - _gradient = std::move(k); - } + auto k = arm_compute::support::cpp14::make_unique(); + k->configure(&_gx, &_gy, &_magnitude, &_phase, norm_type); + _gradient = std::move(k); // Allocate intermediate tensors _gx.allocator()->allocate(); diff --git a/src/runtime/NEON/functions/NEHarrisCorners.cpp b/src/runtime/NEON/functions/NEHarrisCorners.cpp index 25e28d2213..db5e9265bb 100644 --- a/src/runtime/NEON/functions/NEHarrisCorners.cpp +++ b/src/runtime/NEON/functions/NEHarrisCorners.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -61,7 +61,7 @@ NEHarrisCorners::NEHarrisCorners(std::shared_ptr memory_manager) void NEHarrisCorners::configure(IImage *input, float threshold, float min_dist, float sensitivity, int32_t gradient_size, int32_t block_size, KeyPointArray *corners, - BorderMode border_mode, uint8_t constant_border_value, bool use_fp16) + BorderMode border_mode, uint8_t constant_border_value) { ARM_COMPUTE_ERROR_ON_TENSOR_NOT_2D(input); ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::U8); @@ -126,62 +126,31 @@ void NEHarrisCorners::configure(IImage *input, float threshold, float min_dist, // Manage intermediate buffers _memory_group.manage(&_score); - if(use_fp16) + // Set/init Harris Score kernel accordingly with block_size + switch(block_size) { - switch(block_size) + case 3: { - case 3: - { - auto k = arm_compute::support::cpp14::make_unique>(); - k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); - _harris_score = std::move(k); - } - break; - case 5: - { - auto k = arm_compute::support::cpp14::make_unique>(); - k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); - _harris_score = std::move(k); - } - break; - case 7: - { - auto k = arm_compute::support::cpp14::make_unique>(); - k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); - _harris_score = std::move(k); - } - default: - break; + auto k = arm_compute::support::cpp14::make_unique>(); + k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); + _harris_score = std::move(k); } - } - else - { - // Set/init Harris Score kernel accordingly with block_size - switch(block_size) + break; + case 5: { - case 3: - { - auto k = arm_compute::support::cpp14::make_unique>(); - k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); - _harris_score = std::move(k); - } - break; - case 5: - { - auto k = arm_compute::support::cpp14::make_unique>(); - k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); - _harris_score = std::move(k); - } - break; - case 7: - { - auto k = arm_compute::support::cpp14::make_unique>(); - k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); - _harris_score = std::move(k); - } - default: - break; + auto k = arm_compute::support::cpp14::make_unique>(); + k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); + _harris_score = std::move(k); } + break; + case 7: + { + auto k = arm_compute::support::cpp14::make_unique>(); + k->configure(&_gx, &_gy, &_score, norm_factor, threshold, sensitivity, border_mode == BorderMode::UNDEFINED); + _harris_score = std::move(k); + } + default: + break; } // Configure border filling before harris score -- cgit v1.2.1