From c6f9510bcb754afaadfe9477ff85d6c55ffcf43b Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Tue, 30 Mar 2021 10:03:01 +0100 Subject: Remove Computer Vision generic interfaces and types Removes: - reference validation routines - CV related types and structures - CV related interfaces Signed-off-by: Georgios Pinitas Change-Id: I3a203da12d9b04c154059b190aeba18a611149a9 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5340 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Comments-Addressed: Arm Jenkins --- arm_compute/core/CL/CLDevice.h | 3 +- arm_compute/core/CL/CLHelpers.h | 1 + arm_compute/core/CL/CLTypes.h | 37 +--- arm_compute/core/CL/ICLArray.h | 10 +- arm_compute/core/CL/ICLDistribution1D.h | 102 ----------- arm_compute/core/CL/ICLHOG.h | 113 ------------ arm_compute/core/CL/ICLLut.h | 94 ---------- arm_compute/core/CL/ICLMultiHOG.h | 56 ------ arm_compute/core/CL/ICLMultiImage.h | 59 ------ arm_compute/core/CPP/CPPKernels.h | 5 +- .../core/CPP/kernels/CPPCornerCandidatesKernel.h | 80 -------- .../CPPDetectionWindowNonMaximaSuppressionKernel.h | 77 -------- .../CPP/kernels/CPPSortEuclideanDistanceKernel.h | 73 -------- arm_compute/core/HOGInfo.h | 152 ---------------- arm_compute/core/IArray.h | 15 +- arm_compute/core/IDistribution.h | 59 ------ arm_compute/core/IDistribution1D.h | 84 --------- arm_compute/core/IHOG.h | 54 ------ arm_compute/core/ILut.h | 69 ------- arm_compute/core/IMultiHOG.h | 61 ------- arm_compute/core/IMultiImage.h | 60 ------ arm_compute/core/IPyramid.h | 56 ------ arm_compute/core/KernelDescriptors.h | 24 --- arm_compute/core/MultiImageInfo.h | 66 ------- arm_compute/core/PyramidInfo.h | 131 -------------- arm_compute/core/TensorInfo.h | 28 --- arm_compute/core/Types.h | 87 --------- arm_compute/core/Utils.h | 201 --------------------- arm_compute/core/Validate.h | 28 +-- arm_compute/runtime/Array.h | 10 +- arm_compute/runtime/CL/CLArray.h | 11 +- arm_compute/runtime/CL/CLDistribution1D.h | 79 -------- arm_compute/runtime/CL/CLHOG.h | 80 -------- arm_compute/runtime/CL/CLLut.h | 89 --------- arm_compute/runtime/CL/CLLutAllocator.h | 94 ---------- arm_compute/runtime/CL/CLMultiHOG.h | 56 ------ arm_compute/runtime/CL/CLMultiImage.h | 87 --------- arm_compute/runtime/CL/CLPyramid.h | 82 --------- .../runtime/CL/functions/CLROIPoolingLayer.h | 3 +- arm_compute/runtime/Distribution1D.h | 56 ------ arm_compute/runtime/HOG.h | 56 ------ arm_compute/runtime/ILutAllocator.h | 84 --------- arm_compute/runtime/Lut.h | 68 ------- arm_compute/runtime/LutAllocator.h | 61 ------- arm_compute/runtime/MultiHOG.h | 58 ------ arm_compute/runtime/MultiImage.h | 96 ---------- arm_compute/runtime/Pyramid.h | 76 -------- arm_compute/runtime/common/LSTMParams.h | 4 +- 48 files changed, 12 insertions(+), 3023 deletions(-) delete mode 100644 arm_compute/core/CL/ICLDistribution1D.h delete mode 100644 arm_compute/core/CL/ICLHOG.h delete mode 100644 arm_compute/core/CL/ICLLut.h delete mode 100644 arm_compute/core/CL/ICLMultiHOG.h delete mode 100644 arm_compute/core/CL/ICLMultiImage.h delete mode 100644 arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h delete mode 100644 arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h delete mode 100644 arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h delete mode 100644 arm_compute/core/HOGInfo.h delete mode 100644 arm_compute/core/IDistribution.h delete mode 100644 arm_compute/core/IDistribution1D.h delete mode 100644 arm_compute/core/IHOG.h delete mode 100644 arm_compute/core/ILut.h delete mode 100644 arm_compute/core/IMultiHOG.h delete mode 100644 arm_compute/core/IMultiImage.h delete mode 100644 arm_compute/core/IPyramid.h delete mode 100644 arm_compute/core/MultiImageInfo.h delete mode 100644 arm_compute/core/PyramidInfo.h delete mode 100644 arm_compute/runtime/CL/CLDistribution1D.h delete mode 100644 arm_compute/runtime/CL/CLHOG.h delete mode 100644 arm_compute/runtime/CL/CLLut.h delete mode 100644 arm_compute/runtime/CL/CLLutAllocator.h delete mode 100644 arm_compute/runtime/CL/CLMultiHOG.h delete mode 100644 arm_compute/runtime/CL/CLMultiImage.h delete mode 100644 arm_compute/runtime/CL/CLPyramid.h delete mode 100644 arm_compute/runtime/Distribution1D.h delete mode 100644 arm_compute/runtime/HOG.h delete mode 100644 arm_compute/runtime/ILutAllocator.h delete mode 100644 arm_compute/runtime/Lut.h delete mode 100644 arm_compute/runtime/LutAllocator.h delete mode 100644 arm_compute/runtime/MultiHOG.h delete mode 100644 arm_compute/runtime/MultiImage.h delete mode 100644 arm_compute/runtime/Pyramid.h (limited to 'arm_compute') diff --git a/arm_compute/core/CL/CLDevice.h b/arm_compute/core/CL/CLDevice.h index 033bf8fa96..06aaac88f4 100644 --- a/arm_compute/core/CL/CLDevice.h +++ b/arm_compute/core/CL/CLDevice.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Arm Limited. + * Copyright (c) 2020-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -30,6 +30,7 @@ #include "arm_compute/core/IDevice.h" #include +#include #include namespace arm_compute diff --git a/arm_compute/core/CL/CLHelpers.h b/arm_compute/core/CL/CLHelpers.h index 0e9aa5d6e5..03f956f6f8 100644 --- a/arm_compute/core/CL/CLHelpers.h +++ b/arm_compute/core/CL/CLHelpers.h @@ -26,6 +26,7 @@ #include "arm_compute/core/CL/CLTypes.h" #include "arm_compute/core/CL/OpenCL.h" +#include "arm_compute/core/Types.h" #include #include diff --git a/arm_compute/core/CL/CLTypes.h b/arm_compute/core/CL/CLTypes.h index 0f6eb0dfa4..2ba2e8dd62 100644 --- a/arm_compute/core/CL/CLTypes.h +++ b/arm_compute/core/CL/CLTypes.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -75,40 +75,5 @@ struct CLQuantization const ICLFloatArray *scale; /**< Quantization scale array */ const ICLInt32Array *offset; /**< Quantization offset array */ }; - -/** Internal keypoint structure for Lucas-Kanade Optical Flow */ -struct CLLKInternalKeypoint -{ - float x{ 0.f }; /**< x coordinate of the keypoint */ - float y{ 0.f }; /**< y coordinate of the keypoint */ - float tracking_status{ 0.f }; /**< the tracking status of the keypoint */ - float dummy{ 0.f }; /**< Dummy field, to make sure the data structure 128-bit align, so that GPU can use vload4 */ -}; - -/** Structure for storing Spatial Gradient Matrix and the minimum eigenvalue for each keypoint */ -struct CLCoefficientTable -{ - float A11; /**< iA11 * FLT_SCALE */ - float A12; /**< iA11 * FLT_SCALE */ - float A22; /**< iA11 * FLT_SCALE */ - float min_eig; /**< Minimum eigenvalue */ -}; - -/** Structure for storing ival, ixval and iyval for each point inside the window */ -struct CLOldValue -{ - int16_t ival; /**< ival extracts from old image */ - int16_t ixval; /**< ixval extracts from scharr Gx image */ - int16_t iyval; /**< iyval extracts from scharr Gy image */ - int16_t dummy; /**< Dummy field, to make sure the data structure 128-bit align, so that GPU can use vload4 */ -}; - -/** Interface for OpenCL Array of Internal Key Points. */ -using ICLLKInternalKeypointArray = ICLArray; -/** Interface for OpenCL Array of Coefficient Tables. */ -using ICLCoefficientTableArray = ICLArray; -/** Interface for OpenCL Array of Old Values. */ -using ICLOldValArray = ICLArray; - } // namespace arm_compute #endif /* ARM_COMPUTE_CL_TYPES_H */ diff --git a/arm_compute/core/CL/ICLArray.h b/arm_compute/core/CL/ICLArray.h index 2fa2f34c5d..b900117724 100644 --- a/arm_compute/core/CL/ICLArray.h +++ b/arm_compute/core/CL/ICLArray.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 Arm Limited. + * Copyright (c) 2016-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -115,14 +115,6 @@ private: uint8_t *_mapping; }; -/** Interface for OpenCL Array of Key Points. */ -using ICLKeyPointArray = ICLArray; -/** Interface for OpenCL Array of 2D Coordinates. */ -using ICLCoordinates2DArray = ICLArray; -/** Interface for OpenCL Array of Detection Windows. */ -using ICLDetectionWindowArray = ICLArray; -/** Interface for OpenCL Array of 2D Sizes. */ -using ICLSize2DArray = ICLArray; /** Interface for OpenCL Array of uint8s. */ using ICLUInt8Array = ICLArray; /** Interface for OpenCL Array of uint16s. */ diff --git a/arm_compute/core/CL/ICLDistribution1D.h b/arm_compute/core/CL/ICLDistribution1D.h deleted file mode 100644 index 18afabd52e..0000000000 --- a/arm_compute/core/CL/ICLDistribution1D.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_ICLDISTRIBUTION1D_H -#define ARM_COMPUTE_ICLDISTRIBUTION1D_H - -#include "arm_compute/core/IDistribution1D.h" - -#include -#include - -namespace cl -{ -class Buffer; -class CommandQueue; -} - -namespace arm_compute -{ -/** ICLDistribution1D interface class */ -class ICLDistribution1D : public IDistribution1D -{ -public: - /** Constructor: Creates a 1D CLDistribution of a consecutive interval [offset, offset + range - 1] - * defined by a start offset and valid range, divided equally into num_bins parts. - * - * @param[in] num_bins The number of bins the distribution is divided in. - * @param[in] offset The start of the values to use. - * @param[in] range The total number of the consecutive values of the distribution interval. - */ - ICLDistribution1D(size_t num_bins, int32_t offset, uint32_t range); - /** Prevent instances of this class from being copied (As this class contains pointers) */ - ICLDistribution1D(const ICLDistribution1D &) = delete; - /** Prevent instances of this class from being copied (As this class contains pointers) */ - const ICLDistribution1D &operator=(const ICLDistribution1D &) = delete; - /** Enqueue a map operation of the allocated buffer on the given queue. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer. - */ - void map(cl::CommandQueue &q, bool blocking = true); - /** Enqueue an unmap operation of the allocated and mapped buffer on the given queue. - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - */ - void unmap(cl::CommandQueue &q); - /** Interface to be implemented by the child class to return a reference to the OpenCL buffer containing the distribution's data. - * - * @return A reference to an OpenCL buffer containing the distribution's data. - */ - virtual cl::Buffer &cl_buffer() = 0; - // Inherited methods overridden: - uint32_t *buffer() const override; - -protected: - /** Method to be implemented by the child class to map the OpenCL buffer - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer. - */ - virtual uint32_t *do_map(cl::CommandQueue &q, bool blocking) = 0; - /** Method to be implemented by the child class to unmap the OpenCL buffer - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - */ - virtual void do_unmap(cl::CommandQueue &q) = 0; - -protected: - uint32_t *_mapping; /**< The distribution data. */ -}; -} -#endif /* ARM_COMPUTE_ICLDISTRIBUTION1D_H */ diff --git a/arm_compute/core/CL/ICLHOG.h b/arm_compute/core/CL/ICLHOG.h deleted file mode 100644 index da3c0c65c8..0000000000 --- a/arm_compute/core/CL/ICLHOG.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2017-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_ICLHOG_H -#define ARM_COMPUTE_ICLHOG_H - -#include "arm_compute/core/IHOG.h" - -#include - -namespace cl -{ -class Buffer; -class CommandQueue; -} - -namespace arm_compute -{ -/** Interface for OpenCL HOG data-object */ -class ICLHOG : public IHOG -{ -public: - /** Default constructor */ - ICLHOG(); - /** Prevent instances of this class from being copied (As this class contains pointers) */ - ICLHOG(const ICLHOG &) = delete; - /** Prevent instances of this class from being copied (As this class contains pointers) */ - ICLHOG &operator=(const ICLHOG &) = delete; - /** Allow instances of this class to be moved */ - ICLHOG(ICLHOG &&) = default; - /** Allow instances of this class to be moved */ - ICLHOG &operator=(ICLHOG &&) = default; - /** Default destructor */ - virtual ~ICLHOG() = default; - - /** Interface to be implemented by the child class to return a reference to the OpenCL buffer containing the hog's descriptor - * - * @return A reference to an OpenCL buffer containing the hog's descriptor - */ - virtual const cl::Buffer &cl_buffer() const = 0; - - /** Enqueue a map operation of the allocated buffer on the given queue. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer. - * - * @return The mapping address. - */ - void map(cl::CommandQueue &q, bool blocking = true); - - /** Enqueue an unmap operation of the allocated and mapped buffer on the given queue. - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - */ - void unmap(cl::CommandQueue &q); - - /** Interface to be implemented by the child class to free the allocated cl buffer. - * - * @warning The buffer must have been allocated previously. Otherwise calling the function will fail. - */ - virtual void free() = 0; - - // Inherited methods overridden: - float *descriptor() const override; - -protected: - /** Method to be implemented by the child class to map the OpenCL buffer - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer. - */ - virtual uint8_t *do_map(cl::CommandQueue &q, bool blocking) = 0; - /** Method to be implemented by the child class to unmap the OpenCL buffer - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - */ - virtual void do_unmap(cl::CommandQueue &q) = 0; - -private: - uint8_t *_mapping; -}; -} -#endif /*ARM_COMPUTE_ICLHOG_H */ diff --git a/arm_compute/core/CL/ICLLut.h b/arm_compute/core/CL/ICLLut.h deleted file mode 100644 index b4d7471e1f..0000000000 --- a/arm_compute/core/CL/ICLLut.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_ICLLUT_H -#define ARM_COMPUTE_ICLLUT_H - -#include "arm_compute/core/ILut.h" - -#include - -namespace cl -{ -class Buffer; -class CommandQueue; -} - -namespace arm_compute -{ -/** Interface for OpenCL LUT */ -class ICLLut : public ILut -{ -public: - ICLLut(); - ICLLut(const ICLLut &) = delete; - ICLLut &operator=(const ICLLut &) = delete; - - /** Interface to be implemented by the child class to return a reference to the OpenCL buffer containing the lut's data. - * - * @return A reference to an OpenCL buffer containing the lut's data. - */ - virtual const cl::Buffer &cl_buffer() const = 0; - /** Enqueue a map operation of the allocated buffer on the given queue. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer. - */ - void map(cl::CommandQueue &q, bool blocking = true); - /** Enqueue an unmap operation of the allocated and mapped buffer on the given queue. - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - */ - void unmap(cl::CommandQueue &q); - - // Inherited methods overridden: - uint8_t *buffer() const override; - -protected: - /** Method to be implemented by the child class to map the OpenCL buffer - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer. - */ - virtual uint8_t *do_map(cl::CommandQueue &q, bool blocking) = 0; - /** Method to be implemented by the child class to unmap the OpenCL buffer - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - */ - virtual void do_unmap(cl::CommandQueue &q) = 0; - -private: - uint8_t *_mapping; -}; -} -#endif /*ARM_COMPUTE_ICLLUT_H */ diff --git a/arm_compute/core/CL/ICLMultiHOG.h b/arm_compute/core/CL/ICLMultiHOG.h deleted file mode 100644 index 109b4d480d..0000000000 --- a/arm_compute/core/CL/ICLMultiHOG.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2017-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_ICLMULTIHOG_H -#define ARM_COMPUTE_ICLMULTIHOG_H - -#include "arm_compute/core/CL/ICLHOG.h" -#include "arm_compute/core/IMultiHOG.h" - -namespace arm_compute -{ -/** Interface for storing multiple HOG data-objects */ -class ICLMultiHOG : public IMultiHOG -{ -public: - /** Return a pointer to the requested OpenCL HOG model - * - * @param[in] index The index of the wanted OpenCL HOG model. - * - * @return A pointer pointed to the HOG model - */ - virtual ICLHOG *cl_model(size_t index) = 0; - /** Return a constant pointer to the requested OpenCL HOG model - * - * @param[in] index The index of the wanted OpenCL HOG model. - * - * @return A constant pointer pointed to the OpenCL HOG model - */ - virtual const ICLHOG *cl_model(size_t index) const = 0; - - // Inherited methods overridden: - IHOG *model(size_t index) override; - const IHOG *model(size_t index) const override; -}; -} -#endif /*ARM_COMPUTE_ICLMULTIHOG_H */ diff --git a/arm_compute/core/CL/ICLMultiImage.h b/arm_compute/core/CL/ICLMultiImage.h deleted file mode 100644 index 23ed04a484..0000000000 --- a/arm_compute/core/CL/ICLMultiImage.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_ICLMULTIIMAGE_H -#define ARM_COMPUTE_ICLMULTIIMAGE_H - -#include "arm_compute/core/IMultiImage.h" - -namespace arm_compute -{ -class ICLTensor; -/** Interface for OpenCL images */ -using ICLImage = ICLTensor; - -/** Interface for OpenCL multi-planar images */ -class ICLMultiImage : public IMultiImage -{ -public: - /** Return a pointer to the requested OpenCL plane of the image. - * - * @param[in] index The index of the wanted planed. - * - * @return A pointer pointed to the OpenCL plane - */ - virtual ICLImage *cl_plane(unsigned int index) = 0; - /** Return a constant pointer to the requested OpenCL plane of the image. - * - * @param[in] index The index of the wanted planed. - * - * @return A constant pointer pointed to the OpenCL plane - */ - virtual const ICLImage *cl_plane(unsigned int index) const = 0; - - // Inherited methods overridden: - IImage *plane(unsigned int index) override; - const IImage *plane(unsigned int index) const override; -}; -} -#endif /*ARM_COMPUTE_ICLMULTIIMAGE_H */ diff --git a/arm_compute/core/CPP/CPPKernels.h b/arm_compute/core/CPP/CPPKernels.h index 7187613488..f6f36596c4 100644 --- a/arm_compute/core/CPP/CPPKernels.h +++ b/arm_compute/core/CPP/CPPKernels.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -26,11 +26,8 @@ /* Header regrouping all the CPP kernels */ #include "arm_compute/core/CPP/kernels/CPPBoxWithNonMaximaSuppressionLimitKernel.h" -#include "arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h" -#include "arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h" #include "arm_compute/core/CPP/kernels/CPPNonMaximumSuppressionKernel.h" #include "arm_compute/core/CPP/kernels/CPPPermuteKernel.h" -#include "arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h" #include "arm_compute/core/CPP/kernels/CPPTopKVKernel.h" #include "arm_compute/core/CPP/kernels/CPPUpsampleKernel.h" diff --git a/arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h b/arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h deleted file mode 100644 index e4fd250a61..0000000000 --- a/arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2017-2020 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CPPCORNERCANDIDATESKERNEL_H -#define ARM_COMPUTE_CPPCORNERCANDIDATESKERNEL_H - -#include "arm_compute/core/CPP/ICPPKernel.h" -#include "arm_compute/core/IArray.h" - -#include "support/Mutex.h" - -#include - -namespace arm_compute -{ -class ITensor; -/** Interface for CPP Images. */ -using IImage = ITensor; - -/** CPP kernel to perform corner candidates - */ -class CPPCornerCandidatesKernel : public ICPPKernel -{ -public: - const char *name() const override - { - return "CPPCornerCandidatesKernel"; - } - /** Default constructor */ - CPPCornerCandidatesKernel(); - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CPPCornerCandidatesKernel(const CPPCornerCandidatesKernel &) = delete; - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CPPCornerCandidatesKernel &operator=(const CPPCornerCandidatesKernel &) = delete; - /** Prevent instances of this class from being moved (As this class contains non movable objects) */ - CPPCornerCandidatesKernel(CPPCornerCandidatesKernel &&) = delete; - /** Prevent instances of this class from being moved (As this class contains non movable objects) */ - CPPCornerCandidatesKernel &operator=(CPPCornerCandidatesKernel &&) = delete; - /** Default destructor */ - ~CPPCornerCandidatesKernel() = default; - - /** Setup the kernel parameters - * - * @param[in] input Source image (harris score). Format supported F32 - * @param[out] output Destination array of InternalKeypoint - * @param[out] num_corner_candidates Number of corner candidates - */ - void configure(const IImage *input, InternalKeypoint *output, int32_t *num_corner_candidates); - - // Inherited methods overridden: - void run(const Window &window, const ThreadInfo &info) override; - -private: - int32_t *_num_corner_candidates; /**< Number of corner candidates */ - arm_compute::Mutex _corner_candidates_mutex; /**< Mutex to preventing race conditions */ - const IImage *_input; /**< Source image - Harris score */ - InternalKeypoint *_output; /**< Array of NEInternalKeypoint */ -}; -} // namespace arm_compute -#endif /* ARM_COMPUTE_CPPCORNERCANDIDATESKERNEL_H */ diff --git a/arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h b/arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h deleted file mode 100644 index 5275a357b3..0000000000 --- a/arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2017-2020 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CPPDETECTIONWINDOWNONMAXIMASUPPRESSIONKERNEL_H -#define ARM_COMPUTE_CPPDETECTIONWINDOWNONMAXIMASUPPRESSIONKERNEL_H - -#include "arm_compute/core/CPP/ICPPKernel.h" -#include "arm_compute/core/IArray.h" -#include "arm_compute/core/IHOG.h" -#include "arm_compute/core/Types.h" - -namespace arm_compute -{ -/** CPP kernel to perform in-place computation of euclidean distance on IDetectionWindowArray - * - * @note This kernel is meant to be used alongside HOG or other object detection algorithms to perform a non-maxima suppression on a - * IDetectionWindowArray - */ -class CPPDetectionWindowNonMaximaSuppressionKernel : public ICPPKernel -{ -public: - const char *name() const override - { - return "CPPDetectionWindowNonMaximaSuppressionKernel"; - } - /** Default constructor */ - CPPDetectionWindowNonMaximaSuppressionKernel(); - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CPPDetectionWindowNonMaximaSuppressionKernel(const CPPDetectionWindowNonMaximaSuppressionKernel &) = delete; - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CPPDetectionWindowNonMaximaSuppressionKernel &operator=(const CPPDetectionWindowNonMaximaSuppressionKernel &) = delete; - /** Allow instances of this class to be moved */ - CPPDetectionWindowNonMaximaSuppressionKernel(CPPDetectionWindowNonMaximaSuppressionKernel &&) = default; - /** Allow instances of this class to be moved */ - CPPDetectionWindowNonMaximaSuppressionKernel &operator=(CPPDetectionWindowNonMaximaSuppressionKernel &&) = default; - /** Default destructor */ - ~CPPDetectionWindowNonMaximaSuppressionKernel() = default; - /** Initialise the kernel's input, output and the euclidean minimum distance - * - * @attention: If @ref IDetectionWindowArray is passed to the kernel, the map() and unmap() methods @ref IDetectionWindowArray must be called respectively before and after - * the run() method of @ref CPPDetectionWindowNonMaximaSuppressionKernel - * - * @param[in, out] input_output Input/Output array of @ref DetectionWindow - * @param[in] min_distance Radial Euclidean distance for non-maxima suppression - */ - void configure(IDetectionWindowArray *input_output, float min_distance); - - // Inherited methods overridden: - void run(const Window &window, const ThreadInfo &info) override; - bool is_parallelisable() const override; - -private: - IDetectionWindowArray *_input_output; - float _min_distance; -}; -} // namespace arm_compute -#endif /* ARM_COMPUTE_CPPDETECTIONWINDOWNONMAXIMASUPPRESSIONKERNEL_H */ diff --git a/arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h b/arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h deleted file mode 100644 index be4076f5ce..0000000000 --- a/arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2017-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CPPSORTEUCLIDEANDISTANCEKERNEL_H -#define ARM_COMPUTE_CPPSORTEUCLIDEANDISTANCEKERNEL_H - -#include "arm_compute/core/CPP/ICPPKernel.h" -#include "arm_compute/core/IArray.h" - -#include -#include - -namespace arm_compute -{ -/** CPP kernel to perform sorting and euclidean distance */ -class CPPSortEuclideanDistanceKernel : public ICPPKernel -{ -public: - const char *name() const override - { - return "CPPSortEuclideanDistanceKernel"; - } - /** Default constructor */ - CPPSortEuclideanDistanceKernel(); - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CPPSortEuclideanDistanceKernel(const CPPSortEuclideanDistanceKernel &) = delete; - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CPPSortEuclideanDistanceKernel &operator=(const CPPSortEuclideanDistanceKernel &) = delete; - /** Allow instances of this class to be moved */ - CPPSortEuclideanDistanceKernel(CPPSortEuclideanDistanceKernel &&) = default; - /** Allow instances of this class to be moved */ - CPPSortEuclideanDistanceKernel &operator=(CPPSortEuclideanDistanceKernel &&) = default; - /** Initialise the kernel's source, destination and border mode. - * - * @param[in,out] in_out Input internal keypoints. Marked as out as the kernel writes 0 in the strength member. - * @param[out] output Output keypoints. - * @param[in] num_corner_candidates Pointer to the number of corner candidates in the input array - * @param[in] min_distance Radial Euclidean distance to use - */ - void configure(InternalKeypoint *in_out, IKeyPointArray *output, const int32_t *num_corner_candidates, float min_distance); - - // Inherited methods overridden: - void run(const Window &window, const ThreadInfo &info) override; - bool is_parallelisable() const override; - -private: - const int32_t *_num_corner_candidates; /**< Number of corner candidates */ - float _min_distance; /**< Radial Euclidean distance */ - InternalKeypoint *_in_out; /**< Source array of InternalKeypoint */ - IKeyPointArray *_output; /**< Destination array of IKeyPointArray */ -}; -} // namespace arm_compute -#endif /* ARM_COMPUTE_CPPSORTEUCLIDEANDISTANCEKERNEL_H */ diff --git a/arm_compute/core/HOGInfo.h b/arm_compute/core/HOGInfo.h deleted file mode 100644 index 7314d9a638..0000000000 --- a/arm_compute/core/HOGInfo.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_HOGINFO_H -#define ARM_COMPUTE_HOGINFO_H - -#include "arm_compute/core/Size2D.h" -#include "arm_compute/core/Types.h" - -#include - -namespace arm_compute -{ -/** Store the HOG's metadata */ -class HOGInfo -{ -public: - /** Default constructor */ - HOGInfo(); - /** Default destructor */ - virtual ~HOGInfo() = default; - /** Allow instances of this class to be copy constructed */ - HOGInfo(const HOGInfo &) = default; - /** Allow instances of this class to be copied */ - HOGInfo &operator=(const HOGInfo &) = default; - /** Allow instances of this class to be move constructed */ - HOGInfo(HOGInfo &&) = default; - /** Allow instances of this class to be moved */ - HOGInfo &operator=(HOGInfo &&) = default; - /** Constructor - * - * @param[in] cell_size Cell size in pixels - * @param[in] block_size Block size in pixels. Must be a multiple of cell_size. - * @param[in] detection_window_size Detection window size in pixels. Must be a multiple of block_size and block_stride. - * @param[in] block_stride Distance in pixels between 2 consecutive blocks along the x and y direction. Must be a multiple of cell size - * @param[in] num_bins Number of histogram bins for each cell - * @param[in] normalization_type (Optional) Normalization type to use for each block - * @param[in] l2_hyst_threshold (Optional) Threshold used for L2HYS_NORM normalization method - * @param[in] phase_type (Optional) Type of @ref PhaseType - */ - HOGInfo(const Size2D &cell_size, const Size2D &block_size, const Size2D &detection_window_size, const Size2D &block_stride, size_t num_bins, - HOGNormType normalization_type = HOGNormType::L2HYS_NORM, float l2_hyst_threshold = 0.2f, PhaseType phase_type = PhaseType::UNSIGNED); - /** Initialize the metadata structure with the given parameters - * - * @param[in] cell_size Cell size in pixels - * @param[in] block_size Block size in pixels. Must be a multiple of cell_size. - * @param[in] detection_window_size Detection window size in pixels. Must be a multiple of block_size and block_stride. - * @param[in] block_stride Distance in pixels between 2 consecutive blocks along the x and y direction. Must be a multiple of cell size - * @param[in] num_bins Number of histogram bins for each cell - * @param[in] normalization_type (Optional) Normalization type to use for each block - * @param[in] l2_hyst_threshold (Optional) Threshold used for L2HYS_NORM normalization method - * @param[in] phase_type (Optional) Type of @ref PhaseType - */ - void init(const Size2D &cell_size, const Size2D &block_size, const Size2D &detection_window_size, const Size2D &block_stride, size_t num_bins, - HOGNormType normalization_type = HOGNormType::L2HYS_NORM, float l2_hyst_threshold = 0.2f, PhaseType phase_type = PhaseType::UNSIGNED); - /** The cell size in pixels - * - * @return The cell size in pixels - */ - const Size2D &cell_size() const; - /** The block size in pixels - * - * @return The block size in pixels - */ - const Size2D &block_size() const; - /** The detection window size in pixels - * - * @return The detection window size in pixels - */ - const Size2D &detection_window_size() const; - /** The block stride in pixels. The block stride is the distance between 2 consecutive blocks - * - * @return The block stride in pixels - */ - const Size2D &block_stride() const; - /** The number of histogram bins for each cell - * - * @return The number of histogram bins for each cell - */ - size_t num_bins() const; - /** The normalization type - * - * @return The normalization type - */ - HOGNormType normalization_type() const; - /** Threshold used for L2HYS_NORM normalization type - * - * @return Threshold used for L2HYS_NORM normalization type - */ - float l2_hyst_threshold() const; - /** The type of @ref PhaseType - * - * @return The type of @ref PhaseType - */ - PhaseType phase_type() const; - /** The size of HOG descriptor - * - * @return The size of HOG descriptor - */ - size_t descriptor_size() const; - /** Calculates the number of cells for each block - * - * @return The Size2D data object which stores the number of cells along the x and y directions - */ - Size2D num_cells_per_block() const; - - /** Calculates the number of cells per block stride - * - * @return The Size2D data object which stores the number of cells per block stride along the x and y directions - */ - Size2D num_cells_per_block_stride() const; - /** Calculates the number of block positions for the given image size - * - * @param[in] image_size The input image size data object - * - * @return The Size2D data object which stores the number of block positions along the x and y directions - */ - Size2D num_block_positions_per_image(const Size2D &image_size) const; - -private: - Size2D _cell_size; - Size2D _block_size; - Size2D _detection_window_size; - Size2D _block_stride; - size_t _num_bins; - HOGNormType _normalization_type; - float _l2_hyst_threshold; - PhaseType _phase_type; - size_t _descriptor_size; -}; -} -#endif /*ARM_COMPUTE_HOGINFO_H */ diff --git a/arm_compute/core/IArray.h b/arm_compute/core/IArray.h index 5f8b13d7f9..6edbc1d5d5 100644 --- a/arm_compute/core/IArray.h +++ b/arm_compute/core/IArray.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 Arm Limited. + * Copyright (c) 2016-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -30,11 +30,6 @@ namespace arm_compute { -struct KeyPoint; -struct Coordinates2D; -struct DetectionWindow; -class Size2D; - /** Array of type T */ template class IArray @@ -135,14 +130,6 @@ private: size_t _num_values; size_t _max_size; }; -/** Interface for Array of Key Points. */ -using IKeyPointArray = IArray; -/** Interface for Array of 2D Coordinates. */ -using ICoordinates2DArray = IArray; -/** Interface for Array of Detection Windows. */ -using IDetectionWindowArray = IArray; -/** Interface for Array of 2D Sizes. */ -using ISize2DArray = IArray; /** Interface for Array of uint8s. */ using IUInt8Array = IArray; /** Interface for Array of uint16s. */ diff --git a/arm_compute/core/IDistribution.h b/arm_compute/core/IDistribution.h deleted file mode 100644 index dd511bf8a9..0000000000 --- a/arm_compute/core/IDistribution.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_IDISTRIBUTION_H -#define ARM_COMPUTE_IDISTRIBUTION_H - -#include -#include - -namespace arm_compute -{ -/** Interface for distribution objects */ -class IDistribution -{ -public: - /** Default virtual destructor */ - virtual ~IDistribution() = default; - /** Returns the dimensions of the distribution. - * - * @note This is fixed to 1-dimensional distribution for now. - * @return Dimensions of the distribution. - */ - virtual size_t dimensions() const = 0; - /** Returns the total size in bytes of the distribution. - * - * @return Total size of the distribution in bytes. - */ - virtual size_t size() const = 0; - /** Returns a pointer to the start of the distribution. - * Other elements of the array can be accessed using buffer()[idx] for 0 <= idx < num_bins() - * - * @return Pointer to the start of the distribution. - */ - virtual uint32_t *buffer() const = 0; - /** Clears the distribution by setting every element to zero. */ - void clear() const; -}; -} -#endif /* ARM_COMPUTE_IDISTRIBUTION_H */ diff --git a/arm_compute/core/IDistribution1D.h b/arm_compute/core/IDistribution1D.h deleted file mode 100644 index 28a38f4c78..0000000000 --- a/arm_compute/core/IDistribution1D.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_IDISTRIBUTION1D_H -#define ARM_COMPUTE_IDISTRIBUTION1D_H - -#include "arm_compute/core/IDistribution.h" - -#include -#include - -namespace arm_compute -{ -/** 1D Distribution interface */ -class IDistribution1D : public IDistribution -{ -public: - /** Constructor: Creates a 1D Distribution of a consecutive interval [offset, offset + range - 1] - * defined by a start offset and valid range, divided equally into num_bins parts. - * - * @param[in] num_bins The number of bins the distribution is divided in. - * @param[in] offset The start of the values to use. - * @param[in] range The total number of the consecutive values of the distribution interval. - */ - IDistribution1D(size_t num_bins, int32_t offset, uint32_t range); - /** Returns the number of bins that the distribution has. - * - * @return Number of bins of the distribution. - */ - size_t num_bins() const; - /** Returns the offset of the distribution. - * - * @return Offset of the distribution. - */ - int32_t offset() const; - /** Returns the range of the distribution. - * - * @return Range of the distribution. - */ - uint32_t range() const; - /** Returns the window of the distribution, which is the range divided by the number of bins. - * - * @note If range is not divided by the number of bins then it is invalid. - * - * @return Window of the distribution. - */ - uint32_t window() const; - /** Sets the range of the distribution. - * - * @param[in] range New range of the distribution to be set. - */ - void set_range(uint32_t range); - - // Inherited methods overridden: - size_t size() const override; - size_t dimensions() const override; - -private: - size_t _num_bins; /**< Number of bins. */ - int32_t _offset; /**< Offset, which indicate the start of the usable values. */ - uint32_t _range; /**< The total number of consecutive values of the distribution interval */ -}; -} -#endif /* ARM_COMPUTE_IDISTRIBUTION1D_H */ diff --git a/arm_compute/core/IHOG.h b/arm_compute/core/IHOG.h deleted file mode 100644 index a21095af5d..0000000000 --- a/arm_compute/core/IHOG.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_IHOG_H -#define ARM_COMPUTE_IHOG_H - -#include "arm_compute/core/Types.h" - -#include - -namespace arm_compute -{ -class HOGInfo; -/** Interface for HOG data-object */ -class IHOG -{ -public: - /** Interface to be implemented by the child class to return the HOG's metadata - * - * @return A pointer to the HOG's metadata. - */ - virtual const HOGInfo *info() const = 0; - /** Default virtual destructor */ - virtual ~IHOG() = default; - /** Pointer to the first element of the array which stores the linear SVM coefficients of HOG descriptor - * - * @note Other elements of the array can be accessed using descriptor()[idx] for idx=[0, descriptor_size() - 1] - * - * @return A pointer to the first element of the array which stores the linear SVM coefficients of HOG descriptor - */ - virtual float *descriptor() const = 0; -}; -} -#endif /* ARM_COMPUTE_IHOG_H */ diff --git a/arm_compute/core/ILut.h b/arm_compute/core/ILut.h deleted file mode 100644 index bb0ae8b070..0000000000 --- a/arm_compute/core/ILut.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_ILUT_H -#define ARM_COMPUTE_ILUT_H - -#include "arm_compute/core/Types.h" - -#include - -namespace arm_compute -{ -/** Lookup Table object interface. */ -class ILut -{ -public: - /** Default virtual destructor */ - virtual ~ILut() = default; - /** Returns the total number of elements in the LUT. - * - * @return Total number of elements. - */ - virtual size_t num_elements() const = 0; - /** Indicates the offset that needs to be applied to the raw index before performing a lookup in the LUT. - * - * @return The normalization offset. - */ - virtual uint32_t index_offset() const = 0; - /** Returns the total size in bytes of the LUT. - * - * @return Total size of the LUT in bytes. - */ - virtual size_t size_in_bytes() const = 0; - /** Returns the type of the LUT. - * - * @return The type of the LUT. - */ - virtual DataType type() const = 0; - /** Returns a pointer to the start of the LUT. - * Other elements of the LUT can be accessed using buffer()[idx] for 0 <= idx < num_elements(). - * - * @return Pointer to the start of the lut. - */ - virtual uint8_t *buffer() const = 0; - /** Clears the LUT by setting every element to zero. */ - virtual void clear() = 0; -}; -} -#endif /* ARM_COMPUTE_ILUT_H */ diff --git a/arm_compute/core/IMultiHOG.h b/arm_compute/core/IMultiHOG.h deleted file mode 100644 index 6b93fcfd31..0000000000 --- a/arm_compute/core/IMultiHOG.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_IMULTIHOG_H -#define ARM_COMPUTE_IMULTIHOG_H - -#include "arm_compute/core/IHOG.h" - -#include - -namespace arm_compute -{ -/** Interface for storing multiple HOG data-objects */ -class IMultiHOG -{ -public: - /** Default destructor */ - virtual ~IMultiHOG() = default; - /** The number of HOG models stored - * - * @return The number of HOG models stored - */ - virtual size_t num_models() const = 0; - /** Return a pointer to the requested HOG model - * - * @param[in] index The index of the wanted HOG model. - * - * @return A pointer pointed to the HOG model - */ - virtual IHOG *model(size_t index) = 0; - /** Return a const pointer to the requested HOG model - * - * @param[in] index The index of the wanted HOG model. - * - * @return A const pointer pointed to the HOG model - */ - virtual const IHOG *model(size_t index) const = 0; -}; -} - -#endif /* ARM_COMPUTE_IMULTIHOG_H */ diff --git a/arm_compute/core/IMultiImage.h b/arm_compute/core/IMultiImage.h deleted file mode 100644 index 672c2fefde..0000000000 --- a/arm_compute/core/IMultiImage.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_IMULTIIMAGE_H -#define ARM_COMPUTE_IMULTIIMAGE_H - -namespace arm_compute -{ -class ITensor; -using IImage = ITensor; -class MultiImageInfo; - -/** Interface for multi-planar images */ -class IMultiImage -{ -public: - /** Destructor */ - virtual ~IMultiImage() = default; - /** Interface to be implemented by the child class to return the multi-planar image's metadata - * - * @return A pointer to the image's metadata. - */ - virtual const MultiImageInfo *info() const = 0; - /** Return a pointer to the requested plane of the image. - * - * @param[in] index The index of the wanted planed. - * - * @return A pointer pointed to the plane - */ - virtual IImage *plane(unsigned int index) = 0; - /** Return a constant pointer to the requested plane of the image. - * - * @param[in] index The index of the wanted planed. - * - * @return A constant pointer pointed to the plane - */ - virtual const IImage *plane(unsigned int index) const = 0; -}; -} -#endif /*ARM_COMPUTE_IMULTIIMAGE_H */ diff --git a/arm_compute/core/IPyramid.h b/arm_compute/core/IPyramid.h deleted file mode 100644 index 58fb0b4620..0000000000 --- a/arm_compute/core/IPyramid.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_IPYRAMID_H -#define ARM_COMPUTE_IPYRAMID_H - -#include "arm_compute/core/ITensor.h" -#include "arm_compute/core/PyramidInfo.h" -#include "arm_compute/core/Types.h" - -#include - -namespace arm_compute -{ -/** Interface for pyramid data-object */ -class IPyramid -{ -public: - /** Default virtual destructor */ - virtual ~IPyramid() = default; - /** Interface to be implemented by the child class to return the Pyramid's metadata - * - * @return A pointer to the Pyramid's metadata. - */ - virtual const PyramidInfo *info() const = 0; - /** Retrieves a level of the pyramid as a ITensor pointer - * - * @param[in] index The index of the level, such that index is less than levels. - * - * @return An ITensor pointer - */ - virtual ITensor *get_pyramid_level(size_t index) const = 0; -}; -} - -#endif /* ARM_COMPUTE_IPYRAMID_H */ diff --git a/arm_compute/core/KernelDescriptors.h b/arm_compute/core/KernelDescriptors.h index 0025301e48..1a7ead4700 100644 --- a/arm_compute/core/KernelDescriptors.h +++ b/arm_compute/core/KernelDescriptors.h @@ -210,29 +210,5 @@ struct ScaleKernelInfo bool align_corners; /**< Align corners of input and output */ DataLayout data_layout; /**< Data layout to use */ }; - -struct ThresholdKernelInfo -{ - /** Default constructor */ - ThresholdKernelInfo() = default; - /** Constructor - * - * @param[in] threshold Threshold. When the threshold type is RANGE, this is used as the lower threshold. - * @param[in] false_value value to set when the condition is not respected. - * @param[in] true_value value to set when the condition is respected. - * @param[in] type Thresholding type. Either RANGE or BINARY. - * @param[in] upper Upper threshold. Only used when the thresholding type is RANGE. - */ - ThresholdKernelInfo(uint8_t threshold, uint8_t false_value, uint8_t true_value, ThresholdType type, uint8_t upper) - : threshold(threshold), false_value(false_value), true_value(true_value), type(type), upper(upper) - { - } - - uint8_t threshold{ 0 }; - uint8_t false_value{ 0 }; - uint8_t true_value{ 0 }; - ThresholdType type{ ThresholdType::BINARY }; - uint8_t upper{ 0 }; -}; } // namespace arm_compute #endif /* ARM_COMPUTE_CORE_KERNEL_DESCRIPTORS_H */ diff --git a/arm_compute/core/MultiImageInfo.h b/arm_compute/core/MultiImageInfo.h deleted file mode 100644 index 0d776e1723..0000000000 --- a/arm_compute/core/MultiImageInfo.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_MULTIIMAGEINFO_H -#define ARM_COMPUTE_MULTIIMAGEINFO_H - -#include "arm_compute/core/Types.h" - -namespace arm_compute -{ -/** Store the multi-planar image's metadata */ -class MultiImageInfo -{ -public: - /** Constructor */ - MultiImageInfo(); - /** Initialize the metadata structure with the given parameters - * - * @param[in] width Width of the image (in number of pixels) - * @param[in] height Height of the image (in number of pixels) - * @param[in] format Colour format of the image. - */ - void init(unsigned int width, unsigned int height, Format format); - /** Colour format of the image - * - * @return Colour format of the image - */ - Format format() const; - /** Width in pixels - * - * @return The width in pixels - */ - unsigned int width() const; - /** Height in pixels - * - * @return The height in pixels - */ - unsigned int height() const; - -protected: - unsigned int _width; - unsigned int _height; - Format _format; -}; -} -#endif /*ARM_COMPUTE_MULTIIMAGEINFO_H */ diff --git a/arm_compute/core/PyramidInfo.h b/arm_compute/core/PyramidInfo.h deleted file mode 100644 index c6bfa1bba1..0000000000 --- a/arm_compute/core/PyramidInfo.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_PYRAMIDINFO_H -#define ARM_COMPUTE_PYRAMIDINFO_H - -#include "arm_compute/core/TensorShape.h" -#include "arm_compute/core/Types.h" - -#include - -namespace arm_compute -{ -/** Store the Pyramid's metadata */ -class PyramidInfo -{ -public: - /** Default constructor */ - PyramidInfo(); - /** Default destructor */ - virtual ~PyramidInfo() = default; - /** Allow instances of this class to be copy constructed */ - PyramidInfo(const PyramidInfo &) = default; - /** Allow instances of this class to be copied */ - PyramidInfo &operator=(const PyramidInfo &) = default; - /** Allow instances of this class to be move constructed */ - PyramidInfo(PyramidInfo &&) = default; - /** Allow instances of this class to be moved */ - PyramidInfo &operator=(PyramidInfo &&) = default; - - /** Create pyramid info for 2D tensors - * - * @param[in] num_levels The number of pyramid levels. This is required to be a non-zero value - * @param[in] scale Used to indicate the scale between the pyramid levels. - * This is required to be a non-zero positive value. - * @param[in] width The width of the 2D tensor at 0th pyramid level - * @param[in] height The height of the 2D tensor at 0th pyramid level - * @param[in] format The format of all 2D tensors in the pyramid - * NV12, NV21, IYUV, UYVY and YUYV formats are not supported. - */ - PyramidInfo(size_t num_levels, float scale, size_t width, size_t height, Format format); - - /** Create pyramid info using TensorShape - * - * @param[in] num_levels The number of pyramid levels. This is required to be a non-zero value - * @param[in] scale Used to indicate the scale between the pyramid levels. - * This is required to be a non-zero positive value. - * @param[in] tensor_shape It specifies the size for each dimension of the tensor 0th pyramid level in number of elements - * @param[in] format The format of all tensors in the pyramid - */ - PyramidInfo(size_t num_levels, float scale, const TensorShape &tensor_shape, Format format); - - /** Initialize pyramid's metadata for 2D tensors - * - * @param[in] num_levels The number of pyramid levels. This is required to be a non-zero value - * @param[in] scale Used to indicate the scale between the pyramid levels. - * This is required to be a non-zero positive value. - * @param[in] width The width of the 2D tensor at 0th pyramid level - * @param[in] height The height of the 2D tensor at 0th pyramid level - * @param[in] format The format of all 2D tensors in the pyramid - * NV12, NV21, IYUV, UYVY and YUYV formats are not supported. - */ - void init(size_t num_levels, float scale, size_t width, size_t height, Format format); - /** Initialize pyramid's metadata using TensorShape - * - * @param[in] num_levels The number of pyramid levels. This is required to be a non-zero value - * @param[in] scale Used to indicate the scale between the pyramid levels. - * This is required to be a non-zero positive value. - * @param[in] tensor_shape It specifies the size for each dimension of the tensor 0th pyramid level in number of elements - * @param[in] format The format of all tensors in the pyramid - */ - void init(size_t num_levels, float scale, const TensorShape &tensor_shape, Format format); - /** Return the number of the pyramid levels - * - * @return The number of the pyramid levels - */ - size_t num_levels() const; - /** Return the width of the 0th level tensor - * - * @return The width of the 0th level tensor - */ - size_t width() const; - /** Return the height of the 0th level tensor - * - * @return The height of the 0th level tensor - */ - size_t height() const; - /** Return the TensorShape of the o-th level tensor - * - * @return - */ - const TensorShape &tensor_shape() const; - /** Return the image format of all tensor in the pyramid - * - * @return The image format - */ - Format format() const; - /** Return the scale factor of the pyramid - * - * @return Return the scale factor - */ - float scale() const; - -private: - size_t _num_levels; - TensorShape _tensor_shape; - Format _format; - float _scale; -}; -} -#endif /*ARM_COMPUTE_PYRAMIDINFO_H */ diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h index 633daca063..a4330849bf 100644 --- a/arm_compute/core/TensorInfo.h +++ b/arm_compute/core/TensorInfo.h @@ -39,8 +39,6 @@ namespace arm_compute { -class HOGInfo; - /** Store the tensor's metadata */ class TensorInfo final : public ITensorInfo { @@ -117,14 +115,6 @@ public: */ TensorInfo(const TensorShape &tensor_shape, size_t num_channels, DataType data_type, QuantizationInfo quantization_info); - /** Constructor - * - * @param[in] hog_info HOG's metadata used to allocate normalized HOG space - * @param[in] width Width of the 2D tensor where the HOG descriptor will be computed on - * @param[in] height Height of the 2D tensor where the HOG descriptor will be computed on - */ - TensorInfo(const HOGInfo &hog_info, unsigned int width, unsigned int height); - /** Initialize the tensor info with just a format. * * Can be used for automatic derivation of the shape by the function. @@ -177,13 +167,6 @@ public: */ void init(const TensorShape &tensor_shape, size_t num_channels, DataType data_type, const Strides &strides_in_bytes, size_t offset_first_element_in_bytes, size_t total_size_in_bytes); - /** Initialize the metadata structure for the given HOG's metadata - * - * @param[in] hog_info HOG's metadata used to allocate normalized HOG space - * @param[in] width Width of the 2D tensor where the HOG descriptor will be computed on - * @param[in] height Height of the 2D tensor where the HOG descriptor will be computed on - */ - void init(const HOGInfo &hog_info, unsigned int width, unsigned int height); /** Initialize the metadata structure for the given tensor shape and single-plane format, (Padding is automatically calculated) * * @note The padding used by this method is really conservative so that the tensor can be used for most functions. @@ -206,17 +189,6 @@ public: * @return Total allocation size including padding in bytes. */ size_t init_auto_padding(const TensorShape &tensor_shape, size_t num_channels, DataType data_type); - /** Initialize the metadata structure for the given HOG's metadata - * - * @note init_auto_padding will be used for the tensor initialization. - * - * @param[in] hog_info HOG's metadata used to allocate normalized HOG space - * @param[in] width Width of the 2D tensor where the HOG descriptor will be computed on - * @param[in] height Height of the 2D tensor where the HOG descriptor will be computed on - * - * @return Total allocation size including padding in bytes. - */ - size_t init_auto_padding(const HOGInfo &hog_info, unsigned int width, unsigned int height); // Inherited methods overridden: std::unique_ptr clone() const override; diff --git a/arm_compute/core/Types.h b/arm_compute/core/Types.h index a2ad51526b..53333ff608 100644 --- a/arm_compute/core/Types.h +++ b/arm_compute/core/Types.h @@ -108,12 +108,6 @@ enum class SamplingPolicy /** Constant value of the border pixels when using BorderMode::CONSTANT */ constexpr uint8_t CONSTANT_BORDER_VALUE = 199; -/** Constant value used to indicate a half-scale pyramid */ -constexpr float SCALE_PYRAMID_HALF = 0.5f; - -/** Constant value used to indicate a ORB scaled pyramid */ -constexpr float SCALE_PYRAMID_ORB = 8.408964152537146130583778358414e-01; - /** [DataLayout enum definition] **/ /** Supported tensor data layouts */ @@ -409,53 +403,6 @@ enum class BilinearInterpolation BILINEAR_SCHARR /**< Scharr method */ }; -/** Threshold mode */ -enum class ThresholdType -{ - BINARY, /**< Threshold with one value */ - RANGE /**< Threshold with two values*/ -}; - -/** Termination criteria */ -enum class Termination -{ - TERM_CRITERIA_EPSILON, /**< Terminate when within epsilon of a threshold */ - TERM_CRITERIA_ITERATIONS, /**< Terminate after a maximum number of iterations */ - TERM_CRITERIA_BOTH /**< Terminate on whichever of the other conditions occurs first */ -}; - -/** Magnitude calculation type. */ -enum class MagnitudeType -{ - L1NORM, /**< L1 normalization type */ - L2NORM /**< L2 normalization type */ -}; - -/** Phase calculation type. - * - * @note When PhaseType == SIGNED, each angle is mapped to the range 0 to 255 inclusive otherwise angles between 0 and 180 - */ -enum class PhaseType -{ - SIGNED, /**< Angle range: [0, 360] */ - UNSIGNED /**< Angle range: [0, 180] */ -}; - -/** Keypoint type */ -struct KeyPoint -{ - int32_t x{ 0 }; /**< X coordinates */ - int32_t y{ 0 }; /**< Y coordinates */ - float strength{ 0.f }; /**< Strength of the point */ - float scale{ 0.f }; /**< Scale initialized to 0 by the corner detector */ - float orientation{ 0.f }; /**< Orientation initialized to 0 by the corner detector */ - int32_t tracking_status{ 0 }; /**< Status initialized to 1 by the corner detector, set to 0 when the point is lost */ - float error{ 0.f }; /**< Tracking error initialized to 0 by the corner detector */ -}; - -/** Internal key point */ -using InternalKeypoint = std::tuple; /* x,y,strength */ - /** Rectangle type */ struct Rectangle { @@ -506,23 +453,6 @@ enum class Channel V /**< Cr/V/Value channel. */ }; -/** Available matrix patterns */ -enum class MatrixPattern -{ - BOX, /**< Box pattern matrix. */ - CROSS, /**< Cross pattern matrix. */ - DISK, /**< Disk pattern matrix. */ - OTHER /**< Any other matrix pattern. */ -}; - -/** Available non linear functions. */ -enum class NonLinearFilterFunction : unsigned -{ - MEDIAN = 0, /**< Non linear median filter. */ - MIN = 1, /**< Non linear erode. */ - MAX = 2, /**< Non linear dilate. */ -}; - /** Available reduction operations */ enum class ReductionOperation { @@ -579,14 +509,6 @@ enum class NormType CROSS_MAP /**< Normalization applied cross maps */ }; -/** Normalization type for Histogram of Oriented Gradients (HOG) */ -enum class HOGNormType -{ - L2_NORM = 1, /**< L2-norm */ - L2HYS_NORM = 2, /**< L2-norm followed by clipping */ - L1_NORM = 3 /**< L1 norm */ -}; - /** Detection window used for the object detection. The detection window keeps the following information: * * -# Geometry of the rectangular window (x/y of top-left corner and width/height) @@ -2263,14 +2185,5 @@ struct IOFormatInfo /** Align columns */ bool align_columns; }; - -/** Internal keypoint class for Lucas-Kanade Optical Flow */ -struct NELKInternalKeypoint -{ - float x{ 0.f }; /**< x coordinate of the keypoint */ - float y{ 0.f }; /**< y coordinate of the keypoint */ - bool tracking_status{ false }; /**< the tracking status of the keypoint */ -}; - } // namespace arm_compute #endif /* ARM_COMPUTE_TYPES_H */ diff --git a/arm_compute/core/Utils.h b/arm_compute/core/Utils.h index 19ed73781e..d5c365e6ab 100644 --- a/arm_compute/core/Utils.h +++ b/arm_compute/core/Utils.h @@ -655,82 +655,6 @@ inline bool has_format_vertical_subsampling(Format format) return (format == Format::NV12 || format == Format::NV21 || format == Format::IYUV || format == Format::UV88) ? true : false; } -/** Separate a 2D convolution into two 1D convolutions - * - * @param[in] conv 2D convolution - * @param[out] conv_col 1D vertical convolution - * @param[out] conv_row 1D horizontal convolution - * @param[in] size Size of the 2D convolution - * - * @return true if the separation was successful - */ -inline bool separate_matrix(const int16_t *conv, int16_t *conv_col, int16_t *conv_row, uint8_t size) -{ - int32_t min_col = -1; - int16_t min_col_val = -1; - - for(int32_t i = 0; i < size; ++i) - { - if(conv[i] != 0 && (min_col < 0 || abs(min_col_val) > abs(conv[i]))) - { - min_col = i; - min_col_val = conv[i]; - } - } - - if(min_col < 0) - { - return false; - } - - for(uint32_t j = 0; j < size; ++j) - { - conv_col[j] = conv[min_col + j * size]; - } - - for(uint32_t i = 0; i < size; i++) - { - if(static_cast(i) == min_col) - { - conv_row[i] = 1; - } - else - { - int16_t coeff = conv[i] / conv[min_col]; - - for(uint32_t j = 1; j < size; ++j) - { - if(conv[i + j * size] != (conv_col[j] * coeff)) - { - return false; - } - } - - conv_row[i] = coeff; - } - } - - return true; -} - -/** Calculate the scale of the given square matrix - * - * The scale is the absolute value of the sum of all the coefficients in the matrix. - * - * @note If the coefficients add up to 0 then the scale is set to 1. - * - * @param[in] matrix Matrix coefficients - * @param[in] matrix_size Number of elements per side of the square matrix. (Number of coefficients = matrix_size * matrix_size). - * - * @return The absolute value of the sum of the coefficients if they don't add up to 0, otherwise 1. - */ -inline uint32_t calculate_matrix_scale(const int16_t *matrix, unsigned int matrix_size) -{ - const size_t size = matrix_size * matrix_size; - - return std::max(1, std::abs(std::accumulate(matrix, matrix + size, 0))); -} - /** Adjust tensor shape size if width or height are odd for a given multi-planar format. No modification is done for other formats. * * @note Adding here a few links discussing the issue of odd size and sharing the same solution: @@ -794,117 +718,6 @@ inline TensorShape calculate_subsampled_shape(const TensorShape &shape, Format f return output; } -/** Calculate accurary required by the horizontal and vertical convolution computations - * - * @param[in] conv_col Pointer to the vertical vector of the separated convolution filter - * @param[in] conv_row Pointer to the horizontal vector of the convolution filter - * @param[in] size Number of elements per vector of the separated matrix - * - * @return The return type is a pair. The first element of the pair is the biggest data type needed for the first stage. The second - * element of the pair is the biggest data type needed for the second stage. - */ -inline std::pair data_type_for_convolution(const int16_t *conv_col, const int16_t *conv_row, size_t size) -{ - DataType first_stage = DataType::UNKNOWN; - DataType second_stage = DataType::UNKNOWN; - - auto gez = [](const int16_t &v) - { - return v >= 0; - }; - - auto accu_neg = [](const int &first, const int &second) - { - return first + (second < 0 ? second : 0); - }; - - auto accu_pos = [](const int &first, const int &second) - { - return first + (second > 0 ? second : 0); - }; - - const bool only_positive_coefficients = std::all_of(conv_row, conv_row + size, gez) && std::all_of(conv_col, conv_col + size, gez); - - if(only_positive_coefficients) - { - const int max_row_value = std::accumulate(conv_row, conv_row + size, 0) * UINT8_MAX; - const int max_value = std::accumulate(conv_col, conv_col + size, 0) * max_row_value; - - first_stage = (max_row_value <= UINT16_MAX) ? DataType::U16 : DataType::S32; - - second_stage = (max_value <= UINT16_MAX) ? DataType::U16 : DataType::S32; - } - else - { - const int min_row_value = std::accumulate(conv_row, conv_row + size, 0, accu_neg) * UINT8_MAX; - const int max_row_value = std::accumulate(conv_row, conv_row + size, 0, accu_pos) * UINT8_MAX; - const int neg_coeffs_sum = std::accumulate(conv_col, conv_col + size, 0, accu_neg); - const int pos_coeffs_sum = std::accumulate(conv_col, conv_col + size, 0, accu_pos); - const int min_value = neg_coeffs_sum * max_row_value + pos_coeffs_sum * min_row_value; - const int max_value = neg_coeffs_sum * min_row_value + pos_coeffs_sum * max_row_value; - - first_stage = ((INT16_MIN <= min_row_value) && (max_row_value <= INT16_MAX)) ? DataType::S16 : DataType::S32; - - second_stage = ((INT16_MIN <= min_value) && (max_value <= INT16_MAX)) ? DataType::S16 : DataType::S32; - } - - return std::make_pair(first_stage, second_stage); -} - -/** Calculate the accuracy required by the squared convolution calculation. - * - * - * @param[in] conv Pointer to the squared convolution matrix - * @param[in] size The total size of the convolution matrix - * - * @return The return is the biggest data type needed to do the convolution - */ -inline DataType data_type_for_convolution_matrix(const int16_t *conv, size_t size) -{ - auto gez = [](const int16_t v) - { - return v >= 0; - }; - - const bool only_positive_coefficients = std::all_of(conv, conv + size, gez); - - if(only_positive_coefficients) - { - const int max_conv_value = std::accumulate(conv, conv + size, 0) * UINT8_MAX; - if(max_conv_value <= UINT16_MAX) - { - return DataType::U16; - } - else - { - return DataType::S32; - } - } - else - { - const int min_value = std::accumulate(conv, conv + size, 0, [](int a, int b) - { - return b < 0 ? a + b : a; - }) - * UINT8_MAX; - - const int max_value = std::accumulate(conv, conv + size, 0, [](int a, int b) - { - return b > 0 ? a + b : a; - }) - * UINT8_MAX; - - if((INT16_MIN <= min_value) && (INT16_MAX >= max_value)) - { - return DataType::S16; - } - else - { - return DataType::S32; - } - } -} - /** Permutes the given dimensions according the permutation vector * * @param[in,out] dimensions Dimensions to be permuted. @@ -1024,13 +837,6 @@ const std::string &string_from_data_layout(DataLayout dl); * @return The string describing the data type. */ const std::string &string_from_data_type(DataType dt); -/** Convert a matrix pattern into a string. - * - * @param[in] pattern @ref MatrixPattern to be translated to string. - * - * @return The string describing the matrix pattern. - */ -const std::string &string_from_matrix_pattern(MatrixPattern pattern); /** Translates a given activation function to a string. * * @param[in] act @ref ActivationLayerInfo::ActivationFunction to be translated to string. @@ -1038,13 +844,6 @@ const std::string &string_from_matrix_pattern(MatrixPattern pattern); * @return The string describing the activation function. */ const std::string &string_from_activation_func(ActivationLayerInfo::ActivationFunction act); -/** Translates a given non linear function to a string. - * - * @param[in] function @ref NonLinearFilterFunction to be translated to string. - * - * @return The string describing the non linear function. - */ -const std::string &string_from_non_linear_filter_function(NonLinearFilterFunction function); /** Translates a given interpolation policy to a string. * * @param[in] policy @ref InterpolationPolicy to be translated to string. diff --git a/arm_compute/core/Validate.h b/arm_compute/core/Validate.h index 68b3de56ce..e755cacae6 100644 --- a/arm_compute/core/Validate.h +++ b/arm_compute/core/Validate.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 Arm Limited. + * Copyright (c) 2016-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -25,12 +25,8 @@ #define ARM_COMPUTE_VALIDATE_H #include "arm_compute/core/Error.h" -#include "arm_compute/core/HOGInfo.h" #include "arm_compute/core/IKernel.h" -#include "arm_compute/core/IMultiHOG.h" -#include "arm_compute/core/IMultiImage.h" #include "arm_compute/core/ITensor.h" -#include "arm_compute/core/MultiImageInfo.h" #include "arm_compute/core/Window.h" #include @@ -905,28 +901,6 @@ arm_compute::Status error_on_channel_not_in_known_format(const char *function, c #define ARM_COMPUTE_RETURN_ERROR_ON_CHANNEL_NOT_IN_KNOWN_FORMAT(f, c) \ ARM_COMPUTE_RETURN_ON_ERROR(::arm_compute::error_on_channel_not_in_known_format(__func__, __FILE__, __LINE__, f, c)) -/** Return an error if the @ref IMultiHOG container is invalid - * - * An @ref IMultiHOG container is invalid if: - * - * -# it is a nullptr - * -# it doesn't contain models - * -# it doesn't have the HOG data objects with the same phase_type, normalization_type and l2_hyst_threshold (if normalization_type == L2HYS_NORM) - * - * @param[in] function Function in which the error occurred. - * @param[in] file Name of the file where the error occurred. - * @param[in] line Line on which the error occurred. - * @param[in] multi_hog IMultiHOG container to validate - * - * @return Status - */ -arm_compute::Status error_on_invalid_multi_hog(const char *function, const char *file, const int line, - const IMultiHOG *multi_hog); -#define ARM_COMPUTE_ERROR_ON_INVALID_MULTI_HOG(m) \ - ARM_COMPUTE_ERROR_THROW_ON(::arm_compute::error_on_invalid_multi_hog(__func__, __FILE__, __LINE__, m)) -#define ARM_COMPUTE_RETURN_ERROR_ON_INVALID_MULTI_HOG(m) \ - ARM_COMPUTE_RETURN_ON_ERROR(::arm_compute::error_on_invalid_multi_hog(__func__, __FILE__, __LINE__, m)) - /** Return an error if the kernel is not configured. * * @param[in] function Function in which the error occurred. diff --git a/arm_compute/runtime/Array.h b/arm_compute/runtime/Array.h index 5b98b6c2bc..21d9c25c87 100644 --- a/arm_compute/runtime/Array.h +++ b/arm_compute/runtime/Array.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Arm Limited. + * Copyright (c) 2016-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -60,14 +60,6 @@ private: std::unique_ptr _values; }; -/** Array of Key Points. */ -using KeyPointArray = Array; -/** Array of 2D Coordinates. */ -using Coordinates2DArray = Array; -/** Array of Detection Windows. */ -using DetectionWindowArray = Array; -/** Array of 2D Sizes. */ -using Size2DArray = Array; /** Array of uint8s. */ using UInt8Array = Array; /** Array of uint16s. */ diff --git a/arm_compute/runtime/CL/CLArray.h b/arm_compute/runtime/CL/CLArray.h index 76d0ee6777..7efe208b9f 100644 --- a/arm_compute/runtime/CL/CLArray.h +++ b/arm_compute/runtime/CL/CLArray.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 Arm Limited. + * Copyright (c) 2016-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -102,15 +102,6 @@ protected: private: cl::Buffer _buffer; }; - -/** OpenCL Array of Key Points. */ -using CLKeyPointArray = CLArray; -/** OpenCL Array of 2D Coordinates. */ -using CLCoordinates2DArray = CLArray; -/** OpenCL Array of Detection Windows. */ -using CLDetectionWindowArray = CLArray; -/** OpenCL Array of 2D Sizes. */ -using CLSize2DArray = CLArray; /** OpenCL Array of uint8s. */ using CLUInt8Array = CLArray; /** OpenCL Array of uint16s. */ diff --git a/arm_compute/runtime/CL/CLDistribution1D.h b/arm_compute/runtime/CL/CLDistribution1D.h deleted file mode 100644 index 0597582d68..0000000000 --- a/arm_compute/runtime/CL/CLDistribution1D.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CLDISTRIBUTION1D_H -#define ARM_COMPUTE_CLDISTRIBUTION1D_H - -#include "arm_compute/core/CL/ICLDistribution1D.h" -#include "arm_compute/core/CL/OpenCL.h" - -#include -#include - -namespace arm_compute -{ -/** CLDistribution1D object class */ -class CLDistribution1D : public ICLDistribution1D -{ -public: - /** Constructor: Creates a 1D CLDistribution of a consecutive interval [offset, offset + range - 1] - * defined by a start offset and valid range, divided equally into num_bins parts. - * - * @param[in] num_bins The number of bins the distribution is divided in. - * @param[in] offset The start of the values to use. - * @param[in] range The total number of the consecutive values of the distribution interval. - */ - CLDistribution1D(size_t num_bins, int32_t offset, uint32_t range); - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CLDistribution1D(const CLDistribution1D &) = delete; - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CLDistribution1D &operator=(const CLDistribution1D &) = delete; - /** Enqueue a map operation of the allocated buffer. - * - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed. - */ - void map(bool blocking = true); - using ICLDistribution1D::map; - /** Enqueue an unmap operation of the allocated and mapped buffer. - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - */ - void unmap(); - using ICLDistribution1D::unmap; - - // Inherited methods overridden: - cl::Buffer &cl_buffer() override; - -protected: - // Inherited methods overridden: - uint32_t *do_map(cl::CommandQueue &q, bool blocking) override; - void do_unmap(cl::CommandQueue &q) override; - -private: - cl::Buffer _mem; -}; -} -#endif /* ARM_COMPUTE_CLDISTRIBUTION1D_H */ diff --git a/arm_compute/runtime/CL/CLHOG.h b/arm_compute/runtime/CL/CLHOG.h deleted file mode 100644 index 7594f46107..0000000000 --- a/arm_compute/runtime/CL/CLHOG.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2017-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CLHOG_H -#define ARM_COMPUTE_CLHOG_H - -#include "arm_compute/core/CL/ICLHOG.h" -#include "arm_compute/core/CL/OpenCL.h" -#include "arm_compute/core/HOGInfo.h" -#include "arm_compute/core/Types.h" - -#include - -namespace arm_compute -{ -/** OpenCL implementation of HOG data-object */ -class CLHOG : public ICLHOG -{ -public: - /** Default constructor */ - CLHOG(); - /** Allocate the HOG descriptor using the given HOG's metadata - * - * @param[in] input HOG's metadata used to allocate the HOG descriptor - */ - void init(const HOGInfo &input); - - /** Enqueue a map operation of the allocated buffer. - * - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed. - */ - void map(bool blocking = true); - using ICLHOG::map; - - /** Enqueue an unmap operation of the allocated and mapped buffer. - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - */ - void unmap(); - using ICLHOG::unmap; - - // Inherited method overridden: - void free() override; - const HOGInfo *info() const override; - const cl::Buffer &cl_buffer() const override; - -protected: - // Inherited methods overridden: - uint8_t *do_map(cl::CommandQueue &q, bool blocking) override; - void do_unmap(cl::CommandQueue &q) override; - -private: - HOGInfo _info; - cl::Buffer _buffer; -}; -} -#endif /* ARM_COMPUTE_CLHOG_H */ diff --git a/arm_compute/runtime/CL/CLLut.h b/arm_compute/runtime/CL/CLLut.h deleted file mode 100644 index 8c48863418..0000000000 --- a/arm_compute/runtime/CL/CLLut.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CLLUT_H -#define ARM_COMPUTE_CLLUT_H - -#include "arm_compute/core/CL/ICLLut.h" -#include "arm_compute/core/CL/OpenCL.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/CL/CLLutAllocator.h" - -#include -#include - -namespace arm_compute -{ -class ILutAllocator; - -/** Basic implementation of the OpenCL lut interface */ -class CLLut : public ICLLut -{ -public: - /** Constructor */ - CLLut(); - /** Constructor: initializes a LUT which can contain num_values values of data_type type. - * - * @param[in] num_elements Number of elements of the LUT. - * @param[in] data_type Data type of each element. - */ - CLLut(size_t num_elements, DataType data_type); - /** Return a pointer to the lut's allocator - * - * @return A pointer to the lut's allocator - */ - ILutAllocator *allocator(); - /** Enqueue a map operation of the allocated buffer. - * - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed. - */ - void map(bool blocking = true); - using ICLLut::map; - /** Enqueue an unmap operation of the allocated and mapped buffer. - * - * @note This method simply enqueues the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - */ - void unmap(); - using ICLLut::unmap; - - // Inherited methods overridden: - size_t num_elements() const override; - uint32_t index_offset() const override; - size_t size_in_bytes() const override; - DataType type() const override; - const cl::Buffer &cl_buffer() const override; - void clear() override; - -protected: - // Inherited methods overridden: - uint8_t *do_map(cl::CommandQueue &q, bool blocking) override; - void do_unmap(cl::CommandQueue &q) override; - -private: - CLLutAllocator _allocator; /**< Instance of the OpenCL lut allocator */ -}; -} -#endif /*ARM_COMPUTE_CLLUT_H */ diff --git a/arm_compute/runtime/CL/CLLutAllocator.h b/arm_compute/runtime/CL/CLLutAllocator.h deleted file mode 100644 index 169442c739..0000000000 --- a/arm_compute/runtime/CL/CLLutAllocator.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CLLUTALLOCATOR_H -#define ARM_COMPUTE_CLLUTALLOCATOR_H - -#include "arm_compute/runtime/ILutAllocator.h" - -#include "arm_compute/core/CL/OpenCL.h" - -#include - -namespace arm_compute -{ -/** Basic implementation of a CL memory LUT allocator. */ -class CLLutAllocator : public ILutAllocator -{ -public: - /** Default constructor. */ - CLLutAllocator(); - /** Default destructor. */ - ~CLLutAllocator() = default; - /** Prevent instances of this class from being copied (As this class contains pointers) */ - CLLutAllocator(const CLLutAllocator &) = delete; - /** Prevent instances of this class from being copy assigned (As this class contains pointers) */ - const CLLutAllocator &operator=(const CLLutAllocator &) = delete; - /** Interface to be implemented by the child class to return the pointer to the mapped data. - * - * @return pointer to the mapped data. - */ - uint8_t *data(); - /** Interface to be implemented by the child class to return the pointer to the CL data. - * - * @return pointer to the CL data. - */ - const cl::Buffer &cl_data() const; - /** Enqueue a map operation of the allocated buffer on the given queue. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] blocking If true, then the mapping will be ready to use by the time - * this method returns, else it is the caller's responsibility - * to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer. - * - * @return The mapping address. - */ - uint8_t *map(cl::CommandQueue &q, bool blocking); - /** Enqueue an unmap operation of the allocated buffer on the given queue. - * - * @note This method simply enqueue the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before - * the memory is accessed by the device. - * - * @param[in,out] q The CL command queue to use for the mapping operation. - * @param[in] mapping The cpu mapping to unmap. - */ - void unmap(cl::CommandQueue &q, uint8_t *mapping); - -protected: - /** Allocate num_elements() * sizeof(type()) of OpenCL memory. */ - void allocate() override; - /** Call map() on the OpenCL buffer. - * - * @return A pointer to the beginning of the LUT's allocation. - */ - uint8_t *lock() override; - /** Call unmap() on the OpenCL buffer. */ - void unlock() override; - -private: - cl::Buffer _buffer; /**< OpenCL buffer containing the LUT data. */ - uint8_t *_mapping; /**< Pointer to the CPU mapping of the OpenCL buffer. */ -}; -} - -#endif /* ARM_COMPUTE_CLLUTALLOCATOR_H */ diff --git a/arm_compute/runtime/CL/CLMultiHOG.h b/arm_compute/runtime/CL/CLMultiHOG.h deleted file mode 100644 index 5b26467ac1..0000000000 --- a/arm_compute/runtime/CL/CLMultiHOG.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2017-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CLMULTIHOG_H -#define ARM_COMPUTE_CLMULTIHOG_H - -#include "arm_compute/core/CL/ICLMultiHOG.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/CL/CLHOG.h" - -#include - -namespace arm_compute -{ -/** Basic implementation of the CL multi HOG data-objects */ -class CLMultiHOG : public ICLMultiHOG -{ -public: - /** Constructor - * - * @param[in] num_models Number of HOG data objects to contain - * - */ - CLMultiHOG(size_t num_models); - - // Inherited methods overridden: - size_t num_models() const override; - ICLHOG *cl_model(size_t index) override; - const ICLHOG *cl_model(size_t index) const override; - -private: - size_t _num_models; - std::vector _model; -}; -} -#endif /*ARM_COMPUTE_CLMULTIHOG_H */ diff --git a/arm_compute/runtime/CL/CLMultiImage.h b/arm_compute/runtime/CL/CLMultiImage.h deleted file mode 100644 index a12108c023..0000000000 --- a/arm_compute/runtime/CL/CLMultiImage.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CLMULTIIMAGE_H -#define ARM_COMPUTE_CLMULTIIMAGE_H - -#include "arm_compute/core/CL/ICLMultiImage.h" -#include "arm_compute/core/MultiImageInfo.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/CL/CLTensor.h" - -#include - -namespace arm_compute -{ -class ICLTensor; -using ICLImage = ICLTensor; - -/** Basic implementation of the CL multi-planar image interface */ -class CLMultiImage : public ICLMultiImage -{ -public: - /** Constructor */ - CLMultiImage(); - /** Init the multi-planar image - * - * @param[in] width Width of the whole image - * @param[in] height Heigth of the whole image - * @param[in] format Format of the whole image - */ - void init(unsigned int width, unsigned int height, Format format); - /** Init the multi-planar image - * - * @note Uses conservative padding strategy which fits all kernels. - * - * @param[in] width Width of the whole image - * @param[in] height Height of the whole image - * @param[in] format Format of the whole image - */ - void init_auto_padding(unsigned int width, unsigned int height, Format format); - /** Allocated a previously initialised multi image - * - * @note The multi image must not already be allocated when calling this function. - * - **/ - void allocate(); - - // Inherited methods overridden: - const MultiImageInfo *info() const override; - CLImage *cl_plane(unsigned int index) override; - const CLImage *cl_plane(unsigned int index) const override; - -private: - /** Init the multi-planar image - * - * @param[in] width Width of the whole image - * @param[in] height Height of the whole image - * @param[in] format Format of the whole image - * @param[in] auto_padding Specifies whether the image uses auto padding - */ - void internal_init(unsigned int width, unsigned int height, Format format, bool auto_padding); - - MultiImageInfo _info; /** Instance of the multi-planar image's meta data */ - std::array _plane; /* Instance CLImage to hold the planar's information */ -}; -} -#endif /*ARM_COMPUTE_CLMULTIIMAGE_H */ diff --git a/arm_compute/runtime/CL/CLPyramid.h b/arm_compute/runtime/CL/CLPyramid.h deleted file mode 100644 index 573b0fd182..0000000000 --- a/arm_compute/runtime/CL/CLPyramid.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_CLPYRAMID_H -#define ARM_COMPUTE_CLPYRAMID_H - -#include "arm_compute/core/IPyramid.h" -#include "arm_compute/core/PyramidInfo.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/CL/CLTensor.h" - -#include -#include - -namespace arm_compute -{ -class CLTensor; - -/** Basic implementation of the OpenCL pyramid interface */ -class CLPyramid : public IPyramid -{ -public: - /** Default constructor */ - CLPyramid(); - /** Initialize pyramid data-object using the given Pyramid's metadata - * - * @param[in] info Pyramid's metadata - */ - void init(const PyramidInfo &info); - - /** Initialize pyramid data-object using the given Pyramid's metadata - * - * @note Uses conservative padding strategy which fits all kernels. - * - * @param[in] info Pyramid's metadata - */ - void init_auto_padding(const PyramidInfo &info); - - /** Allocate the planes in the pyramid - * - * @note The pyramid must not already be allocated when calling this function. - * - **/ - void allocate(); - - // Inherited method overridden - const PyramidInfo *info() const override; - CLTensor *get_pyramid_level(size_t index) const override; - -private: - /** Initialize pyramid data-object using the given Pyramid's metadata - * - * @param[in] info Pyramid's metadata - * @param[in] auto_padding Specifies whether the image in the pyramid use auto padding - */ - void internal_init(const PyramidInfo &info, bool auto_padding); - - PyramidInfo _info; - mutable std::vector _pyramid; -}; -} -#endif /*ARM_COMPUTE_CLPYRAMID_H */ diff --git a/arm_compute/runtime/CL/functions/CLROIPoolingLayer.h b/arm_compute/runtime/CL/functions/CLROIPoolingLayer.h index 836575ef68..fded3006ad 100644 --- a/arm_compute/runtime/CL/functions/CLROIPoolingLayer.h +++ b/arm_compute/runtime/CL/functions/CLROIPoolingLayer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,7 +24,6 @@ #ifndef ARM_COMPUTE_CLROIPOOLINGLAYER_H #define ARM_COMPUTE_CLROIPOOLINGLAYER_H -#include "arm_compute/core/CL/ICLArray.h" #include "arm_compute/runtime/CL/ICLSimpleFunction.h" namespace arm_compute diff --git a/arm_compute/runtime/Distribution1D.h b/arm_compute/runtime/Distribution1D.h deleted file mode 100644 index 5f98f8fc3c..0000000000 --- a/arm_compute/runtime/Distribution1D.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_DISTRIBUTION1D_H -#define ARM_COMPUTE_DISTRIBUTION1D_H - -#include "arm_compute/core/IDistribution1D.h" - -#include -#include -#include -#include - -namespace arm_compute -{ -/** Basic implementation of the 1D distribution interface */ -class Distribution1D : public IDistribution1D -{ -public: - /** Constructor: Creates a 1D Distribution of a consecutive interval [offset, offset + range - 1] - * defined by a start offset and valid range, divided equally into num_bins parts. - * - * @param[in] num_bins The number of bins the distribution is divided in. - * @param[in] offset The start of the values to use. - * @param[in] range The total number of the consecutive values of the distribution interval. - */ - Distribution1D(size_t num_bins, int32_t offset, uint32_t range); - - // Inherited methods overridden: - uint32_t *buffer() const override; - -private: - mutable std::vector _data; /**< The distribution data. */ -}; -} -#endif /* ARM_COMPUTE_DISTRIBUTION1D_H */ diff --git a/arm_compute/runtime/HOG.h b/arm_compute/runtime/HOG.h deleted file mode 100644 index 5aa724c31e..0000000000 --- a/arm_compute/runtime/HOG.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_HOG_H -#define ARM_COMPUTE_HOG_H - -#include "arm_compute/core/HOGInfo.h" -#include "arm_compute/core/IHOG.h" -#include "arm_compute/core/Types.h" - -#include - -namespace arm_compute -{ -/** CPU implementation of HOG data-object */ -class HOG : public IHOG -{ -public: - /** Default constructor */ - HOG(); - /** Allocate the HOG descriptor using the given HOG's metadata - * - * @param[in] input HOG's metadata used to allocate the HOG descriptor - */ - void init(const HOGInfo &input); - - // Inherited method overridden: - const HOGInfo *info() const override; - float *descriptor() const override; - -private: - HOGInfo _info; - mutable std::vector _descriptor; -}; -} -#endif /* ARM_COMPUTE_HOG_H */ diff --git a/arm_compute/runtime/ILutAllocator.h b/arm_compute/runtime/ILutAllocator.h deleted file mode 100644 index 227e8221df..0000000000 --- a/arm_compute/runtime/ILutAllocator.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_ILUTALLOCATOR_H -#define ARM_COMPUTE_ILUTALLOCATOR_H - -#include "arm_compute/core/Types.h" - -#include -#include - -namespace arm_compute -{ -/** Basic interface to allocate LUTs' */ -class ILutAllocator -{ -public: - /** Default constructor */ - ILutAllocator(); - /** Default virtual destructor */ - virtual ~ILutAllocator() = default; - /** Allow instances of this class to be move constructed */ - ILutAllocator(ILutAllocator &&) = default; - /** Allow instances of this class to be moved */ - ILutAllocator &operator=(ILutAllocator &&) = default; - /** Allocate an LUT of the requested number of elements and data_type. - * - * @param[in] num_elements Number of elements of the LUT. - * @param[in] data_type Data type of each element. - */ - void init(size_t num_elements, DataType data_type); - /** Returns the total number of elements in the LUT. - * - * @return Total number of elements. - */ - size_t num_elements() const; - /** Returns the type of the LUT. - * - * @return The type of the LUT. - */ - DataType type() const; - /** Returns the total size in bytes of the LUT. - * - * @return Total size of the LUT in bytes. - */ - size_t size() const; - -protected: - /** Interface to be implemented by the child class to allocate the LUT. */ - virtual void allocate() = 0; - /** Interface to be implemented by the child class to lock the memory allocation for the CPU to access. - * - * @return Pointer to a CPU mapping of the memory - */ - virtual uint8_t *lock() = 0; - /** Interface to be implemented by the child class to unlock the memory allocation after the CPU is done accessing it. */ - virtual void unlock() = 0; - -private: - size_t _num_elements; /**< Number of elements allocated */ - DataType _data_type; /**< Data type of LUT elements. */ -}; -} -#endif /* ARM_COMPUTE_ILUTALLOCATOR_H */ diff --git a/arm_compute/runtime/Lut.h b/arm_compute/runtime/Lut.h deleted file mode 100644 index af18680801..0000000000 --- a/arm_compute/runtime/Lut.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_LUT_H -#define ARM_COMPUTE_LUT_H - -#include "arm_compute/core/ILut.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/LutAllocator.h" - -#include -#include - -namespace arm_compute -{ -class ILutAllocator; - -/** Basic implementation of the LUT interface */ -class Lut : public ILut -{ -public: - /** Constructor */ - Lut(); - /** Constructor: initializes a LUT which can contain num_values values of data_type type. - * - * @param[in] num_elements Number of elements of the LUT. - * @param[in] data_type Data type of each element. - */ - Lut(size_t num_elements, DataType data_type); - /** Return a pointer to the lut's allocator - * - * @return A pointer to the lut's allocator - */ - ILutAllocator *allocator(); - - // Inherited methods overridden: - size_t num_elements() const override; - uint32_t index_offset() const override; - size_t size_in_bytes() const override; - DataType type() const override; - uint8_t *buffer() const override; - void clear() override; - -private: - LutAllocator _allocator; /**< Instance of the basic CPU allocator.*/ -}; -} -#endif /* ARM_COMPUTE_LUT_H */ diff --git a/arm_compute/runtime/LutAllocator.h b/arm_compute/runtime/LutAllocator.h deleted file mode 100644 index 3be863558f..0000000000 --- a/arm_compute/runtime/LutAllocator.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_LUTALLOCATOR_H -#define ARM_COMPUTE_LUTALLOCATOR_H - -#include "arm_compute/runtime/ILutAllocator.h" - -#include -#include - -namespace arm_compute -{ -/** Basic implementation of a CPU memory LUT allocator. */ -class LutAllocator : public ILutAllocator -{ -public: - /** Default constructor. */ - LutAllocator(); - /** Interface to be implemented by the child class to return the pointer to the allocate data. - * - * @return a pointer to the data. - */ - uint8_t *data() const; - -protected: - /** Allocate num_elements() * sizeof(type()) of CPU memory. */ - void allocate() override; - /** No-op for CPU memory - * - * @return A pointer to the beginning of the look up table's allocation. - */ - uint8_t *lock() override; - /** No-op for CPU memory. */ - void unlock() override; - -private: - mutable std::vector _buffer; /**< CPU memory allocation. */ -}; -} -#endif /* ARM_COMPUTE_LUTALLOCATOR_H */ diff --git a/arm_compute/runtime/MultiHOG.h b/arm_compute/runtime/MultiHOG.h deleted file mode 100644 index ca946191ad..0000000000 --- a/arm_compute/runtime/MultiHOG.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_MULTIHOG_H -#define ARM_COMPUTE_MULTIHOG_H - -#include "arm_compute/core/Helpers.h" -#include "arm_compute/core/IMultiHOG.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/HOG.h" - -#include - -namespace arm_compute -{ -/** CPU implementation of multi HOG data-object */ -class MultiHOG : public IMultiHOG -{ -public: - /** Constructor - * - * @param[in] num_models Number of HOG data objects to contain - * - */ - MultiHOG(size_t num_models); - - // Inherited methods overridden: - size_t num_models() const override; - IHOG *model(size_t index) override; - const IHOG *model(size_t index) const override; - -private: - size_t _num_models; - std::vector _model; -}; -} - -#endif /* ARM_COMPUTE_MULTIHOG_H */ diff --git a/arm_compute/runtime/MultiImage.h b/arm_compute/runtime/MultiImage.h deleted file mode 100644 index 0be91ada7c..0000000000 --- a/arm_compute/runtime/MultiImage.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_MULTIIMAGE_H -#define ARM_COMPUTE_MULTIIMAGE_H - -#include "arm_compute/core/IMultiImage.h" -#include "arm_compute/core/MultiImageInfo.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/Tensor.h" - -#include - -namespace arm_compute -{ -class Coordinates; -class ITensor; -using IImage = ITensor; - -/** Basic implementation of the multi-planar image interface */ -class MultiImage : public IMultiImage -{ -public: - /** Constructor */ - MultiImage(); - /** Allocate the multi-planar image - * - * @param[in] width Width of the whole image - * @param[in] height Height of the whole image - * @param[in] format Format of the whole image - */ - void init(unsigned int width, unsigned int height, Format format); - /** Allocate the multi-planar image - * - * @note Uses conservative padding strategy which fits all kernels. - * - * @param[in] width Width of the whole image - * @param[in] height Height of the whole image - * @param[in] format Format of the whole image - */ - void init_auto_padding(unsigned int width, unsigned int height, Format format); - /** Allocated a previously initialised multi image - * - * @note The multi image must not already be allocated when calling this function. - * - **/ - void allocate(); - /** Create a subimage from an existing MultiImage. - * - * @param[in] image Image to use backing memory from - * @param[in] coords Starting coordinates of the new image. Should be within the parent image sizes - * @param[in] width The width of the subimage - * @param[in] height The height of the subimage - */ - void create_subimage(MultiImage *image, const Coordinates &coords, unsigned int width, unsigned int height); - - // Inherited methods overridden: - const MultiImageInfo *info() const override; - Image *plane(unsigned int index) override; - const Image *plane(unsigned int index) const override; - -private: - /** Init the multi-planar image - * - * @param[in] width Width of the whole image - * @param[in] height Height of the whole image - * @param[in] format Format of the whole image - * @param[in] auto_padding Specifies whether the image uses auto padding - */ - void internal_init(unsigned int width, unsigned int height, Format format, bool auto_padding); - - MultiImageInfo _info; /** Instance of the multi-planar image's meta data */ - std::array _plane; /* Instance Image to hold the planar's information */ -}; -} -#endif /*ARM_COMPUTE_MULTIIMAGE_H */ diff --git a/arm_compute/runtime/Pyramid.h b/arm_compute/runtime/Pyramid.h deleted file mode 100644 index 6e6fecaede..0000000000 --- a/arm_compute/runtime/Pyramid.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2016-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_PYRAMID_H -#define ARM_COMPUTE_PYRAMID_H - -#include "arm_compute/core/IPyramid.h" -#include "arm_compute/core/PyramidInfo.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/Tensor.h" - -#include -#include - -namespace arm_compute -{ -class Tensor; - -/** Basic implementation of the pyramid interface */ -class Pyramid : public IPyramid -{ -public: - /** Initialize pyramid data-object using the given Pyramid's metadata - * - * @param[in] info Pyramid's metadata - */ - void init(const PyramidInfo &info); - - /** Initialize pyramid data-object using the given Pyramid's metadata - * - * @note Uses conservative padding strategy which fits all kernels. - * - * @param[in] info Pyramid's metadata - */ - void init_auto_padding(const PyramidInfo &info); - - /** Allocate the planes in the pyramid */ - void allocate(); - - // Inherited method overridden - const PyramidInfo *info() const override; - Tensor *get_pyramid_level(size_t index) const override; - -private: - /** Initialize pyramid data-object using the given Pyramid's metadata - * - * @param[in] info Pyramid's metadata - * @param[in] auto_padding Specifies whether the image in the pyramid use auto padding - */ - void internal_init(const PyramidInfo &info, bool auto_padding); - - PyramidInfo _info{}; - mutable std::vector _pyramid{}; -}; -} -#endif /*ARM_COMPUTE_PYRAMID_H */ diff --git a/arm_compute/runtime/common/LSTMParams.h b/arm_compute/runtime/common/LSTMParams.h index ffb4ddd9d3..aedb9c0d46 100644 --- a/arm_compute/runtime/common/LSTMParams.h +++ b/arm_compute/runtime/common/LSTMParams.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,8 +24,6 @@ #ifndef ARM_COMPUTE_LSTMPARAMS_H #define ARM_COMPUTE_LSTMPARAMS_H -#include "arm_compute/core/IPyramid.h" -#include "arm_compute/core/PyramidInfo.h" #include "arm_compute/core/Types.h" #include "arm_compute/runtime/Tensor.h" -- cgit v1.2.1