1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker #pragma once 6*89c4ff92SAndroid Build Coastguard Worker 7*89c4ff92SAndroid Build Coastguard Worker #include "Types.hpp" 8*89c4ff92SAndroid Build Coastguard Worker #include "ArmnnNetworkExecutor.hpp" 9*89c4ff92SAndroid Build Coastguard Worker #include "DetectedObject.hpp" 10*89c4ff92SAndroid Build Coastguard Worker #include "IDetectionResultDecoder.hpp" 11*89c4ff92SAndroid Build Coastguard Worker #include "NonMaxSuppression.hpp" 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker namespace od 14*89c4ff92SAndroid Build Coastguard Worker { 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker class YoloResultDecoder : public IDetectionResultDecoder 17*89c4ff92SAndroid Build Coastguard Worker { 18*89c4ff92SAndroid Build Coastguard Worker 19*89c4ff92SAndroid Build Coastguard Worker public: 20*89c4ff92SAndroid Build Coastguard Worker /** 21*89c4ff92SAndroid Build Coastguard Worker * Constructs Yolo V3 inference reuslts decoder. 22*89c4ff92SAndroid Build Coastguard Worker * 23*89c4ff92SAndroid Build Coastguard Worker * @param NMSThreshold non max suppression threshold 24*89c4ff92SAndroid Build Coastguard Worker * @param ClsThreshold class probability threshold 25*89c4ff92SAndroid Build Coastguard Worker * @param ObjectThreshold detected object score threshold 26*89c4ff92SAndroid Build Coastguard Worker */ 27*89c4ff92SAndroid Build Coastguard Worker YoloResultDecoder(float NMSThreshold, float ClsThreshold, float ObjectThreshold); 28*89c4ff92SAndroid Build Coastguard Worker 29*89c4ff92SAndroid Build Coastguard Worker DetectedObjects Decode(const common::InferenceResults<float>& results, 30*89c4ff92SAndroid Build Coastguard Worker const common::Size& outputFrameSize, 31*89c4ff92SAndroid Build Coastguard Worker const common::Size& resizedFrameSize, 32*89c4ff92SAndroid Build Coastguard Worker const std::vector <std::string>& labels) override; 33*89c4ff92SAndroid Build Coastguard Worker private: 34*89c4ff92SAndroid Build Coastguard Worker float m_NmsThreshold; 35*89c4ff92SAndroid Build Coastguard Worker float m_ClsThreshold; 36*89c4ff92SAndroid Build Coastguard Worker float m_objectThreshold; 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker unsigned int m_boxElements = 4U; 39*89c4ff92SAndroid Build Coastguard Worker unsigned int m_confidenceElements = 1U; 40*89c4ff92SAndroid Build Coastguard Worker unsigned int m_numClasses = 80U; 41*89c4ff92SAndroid Build Coastguard Worker unsigned int m_numBoxes = 2535U; 42*89c4ff92SAndroid Build Coastguard Worker }; 43*89c4ff92SAndroid Build Coastguard Worker }// namespace od