MLCE-347 'REDUCE_MIN, REDUCE_MAX, REDUCE_SUM Support'
[platform/upstream/armnn.git] / tests / CaffePreprocessor.cpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #include "InferenceTestImage.hpp"
6 #include "CaffePreprocessor.hpp"
7
8 #include <armnn/utility/NumericCast.hpp>
9
10 #include <iostream>
11 #include <fcntl.h>
12 #include <array>
13
14 const std::vector<ImageSet> g_DefaultImageSet =
15 {
16     {"shark.jpg", 2}
17 };
18
19 CaffePreprocessor::CaffePreprocessor(const std::string& binaryFileDirectory, unsigned int width, unsigned int height,
20                                    const std::vector<ImageSet>& imageSet)
21 :   m_BinaryDirectory(binaryFileDirectory)
22 ,   m_Height(height)
23 ,   m_Width(width)
24 ,   m_ImageSet(imageSet.empty() ? g_DefaultImageSet : imageSet)
25 {
26 }
27
28 std::unique_ptr<CaffePreprocessor::TTestCaseData> CaffePreprocessor::GetTestCaseData(unsigned int testCaseId)
29 {
30     testCaseId = testCaseId % armnn::numeric_cast<unsigned int>(m_ImageSet.size());
31     const ImageSet& imageSet = m_ImageSet[testCaseId];
32     const std::string fullPath = m_BinaryDirectory + imageSet.first;
33
34     InferenceTestImage image(fullPath.c_str());
35     image.Resize(m_Width, m_Height, CHECK_LOCATION());
36
37     // The model expects image data in BGR format.
38     std::vector<float> inputImageData = GetImageDataInArmNnLayoutAsFloatsSubtractingMean(ImageChannelLayout::Bgr,
39                                                                                          image, m_MeanBgr);
40
41     // List of labels: https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a
42     const unsigned int label = imageSet.second;
43     return std::make_unique<TTestCaseData>(label, std::move(inputImageData));
44 }