xref: /aosp_15_r20/external/armnn/samples/ObjectDetection/include/YoloResultDecoder.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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