diff options
author | Manuel Bottini <manuel.bottini@arm.com> | 2020-06-01 14:40:54 +0100 |
---|---|---|
committer | Manuel Bottini <manuel.bottini@arm.com> | 2020-06-02 15:51:16 +0000 |
commit | 16bd6dd97fb704e31cd96e404e8c4148fe24d834 (patch) | |
tree | e326ea4817835de6ab5d9caa5a3a67c5c7bd2ad7 /src/core | |
parent | 7d6b5772c8854a470a08b3415eda1ceca531601d (diff) | |
download | ComputeLibrary-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>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/NEON/kernels/NEROIAlignLayerKernel.cpp | 47 | ||||
-rw-r--r-- | src/core/NEON/kernels/NEROIPoolingLayerKernel.cpp | 13 |
2 files changed, 19 insertions, 41 deletions
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); } |