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