From cc5171b85654b9f19a5f52bbe8abea0572ee0163 Mon Sep 17 00:00:00 2001 From: Manuel Bottini Date: Wed, 9 Jan 2019 17:04:39 +0000 Subject: COMPMID-1677: Change ROIPooling layer interface to accept ROIs as tensors Change-Id: If16b572a4d906187b77f32133a72a44316fa74e4 Reviewed-on: https://review.mlplatform.org/490 Tested-by: Arm Jenkins Reviewed-by: Georgios Pinitas --- arm_compute/core/CL/ICLArray.h | 4 +--- arm_compute/core/CL/kernels/CLROIPoolingLayerKernel.h | 9 +++++---- arm_compute/core/IArray.h | 5 +---- arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h | 11 ++++++----- arm_compute/core/Types.h | 9 +-------- 5 files changed, 14 insertions(+), 24 deletions(-) (limited to 'arm_compute/core') diff --git a/arm_compute/core/CL/ICLArray.h b/arm_compute/core/CL/ICLArray.h index 22fc7cf32e..eb57ea4ce3 100644 --- a/arm_compute/core/CL/ICLArray.h +++ b/arm_compute/core/CL/ICLArray.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -121,8 +121,6 @@ using ICLKeyPointArray = ICLArray; using ICLCoordinates2DArray = ICLArray; /** Interface for OpenCL Array of Detection Windows. */ using ICLDetectionWindowArray = ICLArray; -/** Interface for OpenCL Array of ROIs. */ -using ICLROIArray = ICLArray; /** Interface for OpenCL Array of 2D Sizes. */ using ICLSize2DArray = ICLArray; /** Interface for OpenCL Array of uint8s. */ diff --git a/arm_compute/core/CL/kernels/CLROIPoolingLayerKernel.h b/arm_compute/core/CL/kernels/CLROIPoolingLayerKernel.h index 93bfb3004c..106a4b9b6d 100644 --- a/arm_compute/core/CL/kernels/CLROIPoolingLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLROIPoolingLayerKernel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -52,7 +52,8 @@ public: /** Set the input and output tensors. * * @param[in] input Source tensor. Data types supported: F16/F32. - * @param[in] rois Array containing @ref ROI. + * @param[in] rois ROIs tensor, it is a 2D tensor of size [5, N] (where N is the number of ROIs) containing top left and bottom right corner + * as coordinate of an image and batch_id of ROI [ batch_id, x1, y1, x2, y2 ]. Data types supported: U16 * @param[out] output Destination tensor. Data types supported: Same as @p input. * @param[in] pool_info Contains pooling operation information described in @ref ROIPoolingLayerInfo. * @@ -61,14 +62,14 @@ public: * @note The z dimensions of @p output tensor and @p input tensor must be the same. * @note The fourth dimension of @p output tensor must be the same as the number of elements in @p rois array. */ - void configure(const ICLTensor *input, const ICLROIArray *rois, ICLTensor *output, const ROIPoolingLayerInfo &pool_info); + void configure(const ICLTensor *input, const ICLTensor *rois, ICLTensor *output, const ROIPoolingLayerInfo &pool_info); // Inherited methods overridden: void run(const Window &window, cl::CommandQueue &queue) override; private: const ICLTensor *_input; - const ICLROIArray *_rois; + const ICLTensor *_rois; ICLTensor *_output; ROIPoolingLayerInfo _pool_info; }; diff --git a/arm_compute/core/IArray.h b/arm_compute/core/IArray.h index f9e09a308b..35ab16c22a 100644 --- a/arm_compute/core/IArray.h +++ b/arm_compute/core/IArray.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -34,7 +34,6 @@ struct KeyPoint; struct Coordinates2D; struct DetectionWindow; class Size2D; -struct ROI; /** Array of type T */ template @@ -142,8 +141,6 @@ using IKeyPointArray = IArray; using ICoordinates2DArray = IArray; /** Interface for Array of Detection Windows. */ using IDetectionWindowArray = IArray; -/** Interface for Array of ROIs. */ -using IROIArray = IArray; /** Interface for Array of 2D Sizes. */ using ISize2DArray = IArray; /** Interface for Array of uint8s. */ diff --git a/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h b/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h index 5d9a7cfbf6..cae305ba43 100644 --- a/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -56,23 +56,24 @@ public: /** Set the input and output tensors. * * @param[in] input Source tensor. Data types supported: F32. - * @param[in] rois Array containing @ref ROI. + * @param[in] rois ROIs tensor, it is a 2D tensor of size [5, N] (where N is the number of ROIs) containing top left and bottom right corner + * as coordinate of an image and batch_id of ROI [ batch_id, x1, y1, x2, y2 ]. Data types supported: U16 * @param[out] output Destination tensor. Data types supported: Same as @p input. * @param[in] pool_info Contains pooling operation information described in @ref ROIPoolingLayerInfo. * * @note The x and y dimensions of @p output tensor must be the same as that specified by @p pool_info 's pooled * width and pooled height. * @note The z dimensions of @p output tensor and @p input tensor must be the same. - * @note The fourth dimension of @p output tensor must be the same as the number of elements in @p rois array. + * @note The fourth dimension of @p output tensor must be the same as the number of elements in @p rois tensor. */ - void configure(const ITensor *input, const IROIArray *rois, ITensor *output, const ROIPoolingLayerInfo &pool_info); + void configure(const ITensor *input, const ITensor *rois, ITensor *output, const ROIPoolingLayerInfo &pool_info); // Inherited methods overridden: void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input; - const IROIArray *_rois; + const ITensor *_rois; ITensor *_output; ROIPoolingLayerInfo _pool_info; }; diff --git a/arm_compute/core/Types.h b/arm_compute/core/Types.h index 02001a2438..dc87617f55 100644 --- a/arm_compute/core/Types.h +++ b/arm_compute/core/Types.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -501,13 +501,6 @@ using PaddingList = std::vector; /** Information to produce a tiled version of a Tensor */ using Multiples = std::vector; -/** Region of interest */ -struct ROI -{ - Rectangle rect; /**< Rectangle specifying the region of interest */ - uint16_t batch_idx; /**< The batch index of the region of interest */ -}; - /** Available channels */ enum class Channel { -- cgit v1.2.1