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 <vector> 12 #include <memory> 13 14 /// Caffe requires BGR images, not normalized, mean adjusted and resized using smooth resize of STB library 15 16 using ImageSet = std::pair<const std::string, unsigned int>; 17 18 class CaffePreprocessor 19 { 20 public: 21 using DataType = float; 22 using TTestCaseData = ClassifierTestCaseData<DataType>; 23 24 explicit CaffePreprocessor(const std::string& binaryFileDirectory, 25 unsigned int width = 227, 26 unsigned int height = 227, 27 const std::vector<ImageSet>& imageSet = std::vector<ImageSet>()); 28 std::unique_ptr<TTestCaseData> GetTestCaseData(unsigned int testCaseId); 29 30 private: GetNumImageElements() const31 unsigned int GetNumImageElements() const { return 3 * m_Width * m_Height; } GetNumImageBytes() const32 unsigned int GetNumImageBytes() const { return 4 * GetNumImageElements(); } 33 34 std::string m_BinaryDirectory; 35 unsigned int m_Height; 36 unsigned int m_Width; 37 // Mean value of the database [B, G, R]. 38 const std::array<float, 3> m_MeanBgr = {{104.007965f, 116.669472f, 122.675102f}}; 39 const std::vector<ImageSet> m_ImageSet; 40 }; 41