diff options
Diffstat (limited to 'source/use_case/object_detection/include')
4 files changed, 0 insertions, 307 deletions
diff --git a/source/use_case/object_detection/include/DetectionResult.hpp b/source/use_case/object_detection/include/DetectionResult.hpp deleted file mode 100644 index aa74d90..0000000 --- a/source/use_case/object_detection/include/DetectionResult.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2022 Arm Limited. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef DETECTION_RESULT_HPP -#define DETECTION_RESULT_HPP - - -namespace arm { -namespace app { -namespace object_detection { - - /** - * @brief Class representing a single detection result. - */ - class DetectionResult { - public: - /** - * @brief Constructor - * @param[in] normalisedVal Result normalized value - * @param[in] x0 Top corner x starting point - * @param[in] y0 Top corner y starting point - * @param[in] w Detection result width - * @param[in] h Detection result height - **/ - DetectionResult(double normalisedVal,int x0,int y0, int w,int h) : - m_normalisedVal(normalisedVal), - m_x0(x0), - m_y0(y0), - m_w(w), - m_h(h) - { - } - - DetectionResult() = default; - ~DetectionResult() = default; - - double m_normalisedVal{0.0}; - int m_x0{0}; - int m_y0{0}; - int m_w{0}; - int m_h{0}; - }; - -} /* namespace object_detection */ -} /* namespace app */ -} /* namespace arm */ - -#endif /* DETECTION_RESULT_HPP */ diff --git a/source/use_case/object_detection/include/DetectorPostProcessing.hpp b/source/use_case/object_detection/include/DetectorPostProcessing.hpp deleted file mode 100644 index b3ddb2c..0000000 --- a/source/use_case/object_detection/include/DetectorPostProcessing.hpp +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2022 Arm Limited. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef DETECTOR_POST_PROCESSING_HPP -#define DETECTOR_POST_PROCESSING_HPP - -#include "UseCaseCommonUtils.hpp" -#include "ImageUtils.hpp" -#include "DetectionResult.hpp" -#include "YoloFastestModel.hpp" -#include "BaseProcessing.hpp" - -#include <forward_list> - -namespace arm { -namespace app { - -namespace object_detection { - - struct Branch { - int resolution; - int numBox; - const float* anchor; - int8_t* modelOutput; - float scale; - int zeroPoint; - size_t size; - }; - - struct Network { - int inputWidth; - int inputHeight; - int numClasses; - std::vector<Branch> branches; - int topN; - }; - -} /* namespace object_detection */ - - /** - * @brief Post-processing class for Object Detection use case. - * Implements methods declared by BasePostProcess and anything else needed - * to populate result vector. - */ - class DetectorPostProcess : public BasePostProcess { - public: - /** - * @brief Constructor. - * @param[in] outputTensor0 Pointer to the TFLite Micro output Tensor at index 0. - * @param[in] outputTensor1 Pointer to the TFLite Micro output Tensor at index 1. - * @param[out] results Vector of detected results. - * @param[in] inputImgRows Number of rows in the input image. - * @param[in] inputImgCols Number of columns in the input image. - * @param[in] threshold Post-processing threshold. - * @param[in] nms Non-maximum Suppression threshold. - * @param[in] numClasses Number of classes. - * @param[in] topN Top N for each class. - **/ - explicit DetectorPostProcess(TfLiteTensor* outputTensor0, - TfLiteTensor* outputTensor1, - std::vector<object_detection::DetectionResult>& results, - int inputImgRows, - int inputImgCols, - float threshold = 0.5f, - float nms = 0.45f, - int numClasses = 1, - int topN = 0); - - /** - * @brief Should perform YOLO post-processing of the result of inference then - * populate Detection result data for any later use. - * @return true if successful, false otherwise. - **/ - bool DoPostProcess() override; - - private: - TfLiteTensor* m_outputTensor0; /* Output tensor index 0 */ - TfLiteTensor* m_outputTensor1; /* Output tensor index 1 */ - std::vector<object_detection::DetectionResult>& m_results; /* Single inference results. */ - int m_inputImgRows; /* Number of rows for model input. */ - int m_inputImgCols; /* Number of cols for model input. */ - float m_threshold; /* Post-processing threshold. */ - float m_nms; /* NMS threshold. */ - int m_numClasses; /* Number of classes. */ - int m_topN; /* TopN. */ - object_detection::Network m_net; /* YOLO network object. */ - - /** - * @brief Insert the given Detection in the list. - * @param[in] detections List of detections. - * @param[in] det Detection to be inserted. - **/ - void InsertTopNDetections(std::forward_list<image::Detection>& detections, image::Detection& det); - - /** - * @brief Given a Network calculate the detection boxes. - * @param[in] net Network. - * @param[in] imageWidth Original image width. - * @param[in] imageHeight Original image height. - * @param[in] threshold Detections threshold. - * @param[out] detections Detection boxes. - **/ - void GetNetworkBoxes(object_detection::Network& net, - int imageWidth, - int imageHeight, - float threshold, - std::forward_list<image::Detection>& detections); - }; - -} /* namespace app */ -} /* namespace arm */ - -#endif /* DETECTOR_POST_PROCESSING_HPP */ diff --git a/source/use_case/object_detection/include/DetectorPreProcessing.hpp b/source/use_case/object_detection/include/DetectorPreProcessing.hpp deleted file mode 100644 index 4936048..0000000 --- a/source/use_case/object_detection/include/DetectorPreProcessing.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2022 Arm Limited. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef DETECTOR_PRE_PROCESSING_HPP -#define DETECTOR_PRE_PROCESSING_HPP - -#include "BaseProcessing.hpp" -#include "Classifier.hpp" - -namespace arm { -namespace app { - - /** - * @brief Pre-processing class for Object detection use case. - * Implements methods declared by BasePreProcess and anything else needed - * to populate input tensors ready for inference. - */ - class DetectorPreProcess : public BasePreProcess { - - public: - /** - * @brief Constructor - * @param[in] inputTensor Pointer to the TFLite Micro input Tensor. - * @param[in] rgb2Gray Convert image from 3 channel RGB to 1 channel grayscale. - * @param[in] convertToInt8 Convert the image from uint8 to int8 range. - **/ - explicit DetectorPreProcess(TfLiteTensor* inputTensor, bool rgb2Gray, bool convertToInt8); - - /** - * @brief Should perform pre-processing of 'raw' input image data and load it into - * TFLite Micro input tensor ready for inference - * @param[in] input Pointer to the data that pre-processing will work on. - * @param[in] inputSize Size of the input data. - * @return true if successful, false otherwise. - **/ - bool DoPreProcess(const void* input, size_t inputSize) override; - - private: - TfLiteTensor* m_inputTensor; - bool m_rgb2Gray; - bool m_convertToInt8; - }; - -} /* namespace app */ -} /* namespace arm */ - -#endif /* DETECTOR_PRE_PROCESSING_HPP */
\ No newline at end of file diff --git a/source/use_case/object_detection/include/YoloFastestModel.hpp b/source/use_case/object_detection/include/YoloFastestModel.hpp deleted file mode 100644 index 2986a58..0000000 --- a/source/use_case/object_detection/include/YoloFastestModel.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2022 Arm Limited. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef YOLO_FASTEST_MODEL_HPP -#define YOLO_FASTEST_MODEL_HPP - -#include "Model.hpp" - -extern const int originalImageSize; -extern const int channelsImageDisplayed; -extern const float anchor1[]; -extern const float anchor2[]; - -namespace arm { -namespace app { - - class YoloFastestModel : public Model { - - public: - /* Indices for the expected model - based on input tensor shape */ - static constexpr uint32_t ms_inputRowsIdx = 1; - static constexpr uint32_t ms_inputColsIdx = 2; - static constexpr uint32_t ms_inputChannelsIdx = 3; - - protected: - /** @brief Gets the reference to op resolver interface class. */ - const tflite::MicroOpResolver& GetOpResolver() override; - - /** @brief Adds operations to the op resolver instance. */ - bool EnlistOperations() override; - - const uint8_t* ModelPointer() override; - - size_t ModelSize() override; - - private: - /* Maximum number of individual operations that can be enlisted. */ - static constexpr int ms_maxOpCnt = 8; - - /* A mutable op resolver instance. */ - tflite::MicroMutableOpResolver<ms_maxOpCnt> m_opResolver; - }; - -} /* namespace app */ -} /* namespace arm */ - -#endif /* YOLO_FASTEST_MODEL_HPP */ |