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