aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Bottini <manuel.bottini@arm.com>2020-06-01 14:40:54 +0100
committerManuel Bottini <manuel.bottini@arm.com>2020-06-02 15:51:16 +0000
commit16bd6dd97fb704e31cd96e404e8c4148fe24d834 (patch)
treee326ea4817835de6ab5d9caa5a3a67c5c7bd2ad7
parent7d6b5772c8854a470a08b3415eda1ceca531601d (diff)
downloadComputeLibrary-16bd6dd97fb704e31cd96e404e8c4148fe24d834.tar.gz
COMPMID-3167: Remove padding from NEROIPoolingLayerKernel and NEROIAlignLayerKernel
Change-Id: I19106e4bb0f6886a23dccc5c71e864a8364f40f9 Signed-off-by: Manuel Bottini <manuel.bottini@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3288 Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
-rw-r--r--arm_compute/runtime/NEON/functions/NEROIAlignLayer.h3
-rw-r--r--src/core/NEON/kernels/NEROIAlignLayerKernel.cpp47
-rw-r--r--src/core/NEON/kernels/NEROIPoolingLayerKernel.cpp13
3 files changed, 20 insertions, 43 deletions
diff --git a/arm_compute/runtime/NEON/functions/NEROIAlignLayer.h b/arm_compute/runtime/NEON/functions/NEROIAlignLayer.h
index 7a504961d5..04a24ac7ec 100644
--- a/arm_compute/runtime/NEON/functions/NEROIAlignLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEROIAlignLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019 ARM Limited.
+ * Copyright (c) 2019-2020 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -24,7 +24,6 @@
#ifndef ARM_COMPUTE_NEROIALIGNLAYER_H
#define ARM_COMPUTE_NEROIALIGNLAYER_H
-#include "arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h"
#include "arm_compute/runtime/NEON/INESimpleFunction.h"
namespace arm_compute
diff --git a/src/core/NEON/kernels/NEROIAlignLayerKernel.cpp b/src/core/NEON/kernels/NEROIAlignLayerKernel.cpp
index 3b944ab8d0..5ad6ba2832 100644
--- a/src/core/NEON/kernels/NEROIAlignLayerKernel.cpp
+++ b/src/core/NEON/kernels/NEROIAlignLayerKernel.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019 ARM Limited.
+ * Copyright (c) 2019-2020 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -72,34 +72,6 @@ Status validate_arguments(const ITensorInfo *input, const ITensorInfo *rois, ITe
return Status{};
}
-
-std::pair<Status, Window> validate_and_configure_window(ITensorInfo *input, ITensorInfo *rois, ITensorInfo *output, const ROIPoolingLayerInfo &pool_info)
-{
- ARM_COMPUTE_ERROR_ON_NULLPTR(input, output);
-
- // Output auto inizialitation if not yet initialized
- const TensorShape output_shape = compute_roi_align_shape(*input, *rois, pool_info);
- auto_init_if_empty((*output), output_shape, 1, input->data_type());
- output->set_data_layout(input->data_layout());
-
- const unsigned int num_rois = rois->dimension(1);
- Window window;
- window.set(Window::DimX, Window::Dimension(0, num_rois));
- window.set(Window::DimY, Window::Dimension(0, 1));
-
- AccessWindowStatic input_access(input,
- input->valid_region().start(0),
- input->valid_region().start(1),
- input->valid_region().end(0),
- input->valid_region().end(1));
- AccessWindowStatic output_access(output, 0, 0, pool_info.pooled_width(), pool_info.pooled_height());
-
- const bool window_changed = update_window_and_padding(window, input_access, output_access);
- output_access.set_valid_region(window, ValidRegion(Coordinates(), output->tensor_shape()));
-
- Status err = (window_changed) ? ARM_COMPUTE_CREATE_ERROR(ErrorCode::RUNTIME_ERROR, "Insufficient Padding!") : Status{};
- return std::make_pair(err, window);
-}
} // namespace
NEROIAlignLayerKernel::NEROIAlignLayerKernel()
@@ -111,9 +83,20 @@ void NEROIAlignLayerKernel::configure(const ITensor *input, const ITensor *rois,
{
ARM_COMPUTE_ERROR_ON_NULLPTR(input, output, rois);
ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), rois->info(), output->info(), pool_info));
+ // Output auto inizialitation if not yet initialized
+ const TensorShape output_shape = compute_roi_align_shape(*input->info(), *rois->info(), pool_info);
+ auto_init_if_empty((*output->info()), output_shape, 1, input->info()->data_type(), input->info()->quantization_info());
+ output->info()->set_data_layout(input->info()->data_layout());
+
// Configure kernel window
- auto win_config = validate_and_configure_window(input->info(), rois->info(), output->info(), pool_info);
- ARM_COMPUTE_ERROR_THROW_ON(win_config.first);
+ const unsigned int num_rois = rois->info()->dimension(1);
+ Window window;
+ window.set(Window::DimX, Window::Dimension(0, num_rois));
+ window.set(Window::DimY, Window::Dimension(0, 1));
+
+ Coordinates coord;
+ coord.set_num_dimensions(output->info()->num_dimensions());
+ output->info()->set_valid_region(ValidRegion(coord, output->info()->tensor_shape()));
// Set instance variables
_input = input;
@@ -121,7 +104,7 @@ void NEROIAlignLayerKernel::configure(const ITensor *input, const ITensor *rois,
_output = output;
_pool_info = pool_info;
- INEKernel::configure(win_config.second);
+ INEKernel::configure(window);
}
Status NEROIAlignLayerKernel::validate(const ITensorInfo *input, const ITensorInfo *rois, ITensorInfo *output, const ROIPoolingLayerInfo &pool_info)
diff --git a/src/core/NEON/kernels/NEROIPoolingLayerKernel.cpp b/src/core/NEON/kernels/NEROIPoolingLayerKernel.cpp
index 708420c67e..00c3f98334 100644
--- a/src/core/NEON/kernels/NEROIPoolingLayerKernel.cpp
+++ b/src/core/NEON/kernels/NEROIPoolingLayerKernel.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2019 ARM Limited.
+ * Copyright (c) 2017-2020 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -82,15 +82,10 @@ void NEROIPoolingLayerKernel::configure(const ITensor *input, const ITensor *roi
window.set(Window::DimX, Window::Dimension(0, rois->info()->dimension(1)));
window.set(Window::DimY, Window::Dimension(0, 1));
- AccessWindowStatic input_access(input->info(),
- input->info()->valid_region().start(0),
- input->info()->valid_region().start(1),
- input->info()->valid_region().end(0),
- input->info()->valid_region().end(1));
- AccessWindowStatic output_access(output->info(), 0, 0, pool_info.pooled_width(), pool_info.pooled_height());
+ Coordinates coord;
+ coord.set_num_dimensions(output->info()->num_dimensions());
+ output->info()->set_valid_region(ValidRegion(coord, output->info()->tensor_shape()));
- ARM_COMPUTE_UNUSED(update_window_and_padding(window, input_access, output_access));
- output_access.set_valid_region(window, ValidRegion(Coordinates(), output->info()->tensor_shape()));
INEKernel::configure(window);
}