xref: /aosp_15_r20/external/armnn/tests/YoloDatabase.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd. 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 "ClassifierTestCaseData.hpp"
8*89c4ff92SAndroid Build Coastguard Worker 
9*89c4ff92SAndroid Build Coastguard Worker #include <array>
10*89c4ff92SAndroid Build Coastguard Worker #include <string>
11*89c4ff92SAndroid Build Coastguard Worker #include <memory>
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker struct YoloBoundingBox
14*89c4ff92SAndroid Build Coastguard Worker {
15*89c4ff92SAndroid Build Coastguard Worker     float m_X;
16*89c4ff92SAndroid Build Coastguard Worker     float m_Y;
17*89c4ff92SAndroid Build Coastguard Worker     float m_W;
18*89c4ff92SAndroid Build Coastguard Worker     float m_H;
19*89c4ff92SAndroid Build Coastguard Worker };
20*89c4ff92SAndroid Build Coastguard Worker 
21*89c4ff92SAndroid Build Coastguard Worker struct YoloDetectedObject
22*89c4ff92SAndroid Build Coastguard Worker {
YoloDetectedObjectYoloDetectedObject23*89c4ff92SAndroid Build Coastguard Worker     YoloDetectedObject(unsigned int yoloClass,
24*89c4ff92SAndroid Build Coastguard Worker         const YoloBoundingBox& box,
25*89c4ff92SAndroid Build Coastguard Worker         float confidence)
26*89c4ff92SAndroid Build Coastguard Worker      : m_Class(yoloClass)
27*89c4ff92SAndroid Build Coastguard Worker      , m_Box(box)
28*89c4ff92SAndroid Build Coastguard Worker      , m_Confidence(confidence)
29*89c4ff92SAndroid Build Coastguard Worker     {}
30*89c4ff92SAndroid Build Coastguard Worker 
31*89c4ff92SAndroid Build Coastguard Worker     unsigned int m_Class;
32*89c4ff92SAndroid Build Coastguard Worker     YoloBoundingBox m_Box;
33*89c4ff92SAndroid Build Coastguard Worker     float m_Confidence;
34*89c4ff92SAndroid Build Coastguard Worker };
35*89c4ff92SAndroid Build Coastguard Worker 
36*89c4ff92SAndroid Build Coastguard Worker class YoloTestCaseData
37*89c4ff92SAndroid Build Coastguard Worker {
38*89c4ff92SAndroid Build Coastguard Worker public:
YoloTestCaseData(std::vector<float> inputImage,std::vector<YoloDetectedObject> topObjectDetections)39*89c4ff92SAndroid Build Coastguard Worker     YoloTestCaseData(std::vector<float> inputImage,
40*89c4ff92SAndroid Build Coastguard Worker         std::vector<YoloDetectedObject> topObjectDetections)
41*89c4ff92SAndroid Build Coastguard Worker      : m_InputImage(std::move(inputImage))
42*89c4ff92SAndroid Build Coastguard Worker      , m_TopObjectDetections(std::move(topObjectDetections))
43*89c4ff92SAndroid Build Coastguard Worker     {
44*89c4ff92SAndroid Build Coastguard Worker     }
45*89c4ff92SAndroid Build Coastguard Worker 
46*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> m_InputImage;
47*89c4ff92SAndroid Build Coastguard Worker     std::vector<YoloDetectedObject> m_TopObjectDetections;
48*89c4ff92SAndroid Build Coastguard Worker };
49*89c4ff92SAndroid Build Coastguard Worker 
50*89c4ff92SAndroid Build Coastguard Worker constexpr unsigned int YoloImageWidth = 448;
51*89c4ff92SAndroid Build Coastguard Worker constexpr unsigned int YoloImageHeight = 448;
52*89c4ff92SAndroid Build Coastguard Worker 
53*89c4ff92SAndroid Build Coastguard Worker class YoloDatabase
54*89c4ff92SAndroid Build Coastguard Worker {
55*89c4ff92SAndroid Build Coastguard Worker public:
56*89c4ff92SAndroid Build Coastguard Worker     using TTestCaseData = YoloTestCaseData;
57*89c4ff92SAndroid Build Coastguard Worker 
58*89c4ff92SAndroid Build Coastguard Worker     explicit YoloDatabase(const std::string& imageDir);
59*89c4ff92SAndroid Build Coastguard Worker     std::unique_ptr<TTestCaseData> GetTestCaseData(unsigned int testCaseId);
60*89c4ff92SAndroid Build Coastguard Worker 
61*89c4ff92SAndroid Build Coastguard Worker private:
62*89c4ff92SAndroid Build Coastguard Worker     std::string m_ImageDir;
63*89c4ff92SAndroid Build Coastguard Worker };
64