From 3bb75d60ced0cefa503e90f5d0d8cfe3db3f8637 Mon Sep 17 00:00:00 2001 From: Michalis Spyrou Date: Mon, 23 Mar 2020 10:53:11 +0000 Subject: COMPMID-3175: Remove padding from NEBoundingBoxTransformKernel Change-Id: I24b465162a54011bf9b0210f46bdb1a96398c32c Signed-off-by: Michalis Spyrou Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2916 Comments-Addressed: Arm Jenkins Reviewed-by: Michele Di Giorgio Tested-by: Arm Jenkins --- .../NEON/kernels/NEBoundingBoxTransformKernel.cpp | 40 +++++++--------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/src/core/NEON/kernels/NEBoundingBoxTransformKernel.cpp b/src/core/NEON/kernels/NEBoundingBoxTransformKernel.cpp index e195c96722..ea8d47d57e 100644 --- a/src/core/NEON/kernels/NEBoundingBoxTransformKernel.cpp +++ b/src/core/NEON/kernels/NEBoundingBoxTransformKernel.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -76,30 +76,6 @@ Status validate_arguments(const ITensorInfo *boxes, const ITensorInfo *pred_boxe return Status{}; } - -std::pair validate_and_configure_window(ITensorInfo *boxes, ITensorInfo *pred_boxes, ITensorInfo *deltas, const BoundingBoxTransformInfo &bb_info) -{ - ARM_COMPUTE_UNUSED(bb_info); - ARM_COMPUTE_ERROR_ON_NULLPTR(boxes, pred_boxes); - - auto_init_if_empty(*pred_boxes, deltas->clone()->set_data_type(boxes->data_type()).set_quantization_info(boxes->quantization_info())); - - const unsigned int num_boxes = boxes->dimension(1); - - Window window; - window.set(Window::DimX, Window::Dimension(0, 1u)); - window.set(Window::DimY, Window::Dimension(0, num_boxes)); - - AccessWindowHorizontal input_access(boxes, 0, 4u); - AccessWindowHorizontal output_access(pred_boxes, 0, 4u); - - const bool window_changed = update_window_and_padding(window, input_access, output_access); - output_access.set_valid_region(window, ValidRegion(Coordinates(), pred_boxes->tensor_shape())); - - Status err = (window_changed) ? ARM_COMPUTE_CREATE_ERROR(ErrorCode::RUNTIME_ERROR, "Insufficient Padding!") : Status{}; - return std::make_pair(err, window); -} - } // namespace NEBoundingBoxTransformKernel::NEBoundingBoxTransformKernel() @@ -109,11 +85,11 @@ NEBoundingBoxTransformKernel::NEBoundingBoxTransformKernel() void NEBoundingBoxTransformKernel::configure(const ITensor *boxes, ITensor *pred_boxes, const ITensor *deltas, const BoundingBoxTransformInfo &info) { + ARM_COMPUTE_ERROR_ON_NULLPTR(boxes, pred_boxes, deltas); ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(boxes->info(), pred_boxes->info(), deltas->info(), info)); // Configure kernel window - auto win_config = validate_and_configure_window(boxes->info(), pred_boxes->info(), deltas->info(), info); - ARM_COMPUTE_ERROR_THROW_ON(win_config.first); + auto_init_if_empty(*pred_boxes->info(), deltas->info()->clone()->set_data_type(boxes->info()->data_type()).set_quantization_info(boxes->info()->quantization_info())); // Set instance variables _boxes = boxes; @@ -121,7 +97,15 @@ void NEBoundingBoxTransformKernel::configure(const ITensor *boxes, ITensor *pred _deltas = deltas; _bbinfo = info; - INEKernel::configure(win_config.second); + const unsigned int num_boxes = boxes->info()->dimension(1); + Window win = calculate_max_window(*pred_boxes->info(), Steps()); + Coordinates coord; + coord.set_num_dimensions(pred_boxes->info()->num_dimensions()); + pred_boxes->info()->set_valid_region(ValidRegion(coord, pred_boxes->info()->tensor_shape())); + win.set(Window::DimX, Window::Dimension(0, 1u)); + win.set(Window::DimY, Window::Dimension(0, num_boxes)); + + INEKernel::configure(win); } Status NEBoundingBoxTransformKernel::validate(const ITensorInfo *boxes, const ITensorInfo *pred_boxes, const ITensorInfo *deltas, const BoundingBoxTransformInfo &info) -- cgit v1.2.1