mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
// |
|
// Copyright © 2017 Arm Ltd. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
// |
|
#pragma once |
|
|
|
#include "ClassifierTestCaseData.hpp" |
|
|
|
#include <array> |
|
#include <string> |
|
#include <vector> |
|
#include <memory> |
|
|
|
///Tf requires RGB images, normalized in range [0, 1] and resized using Bilinear algorithm |
|
|
|
|
|
using ImageSet = std::pair<const std::string, unsigned int>; |
|
|
|
template <typename TDataType> |
|
class ImagePreprocessor |
|
{ |
|
public: |
|
using DataType = TDataType; |
|
using TTestCaseData = ClassifierTestCaseData<DataType>; |
|
|
|
enum DataFormat |
|
{ |
|
NHWC, |
|
NCHW |
|
}; |
|
|
|
explicit ImagePreprocessor(const std::string& binaryFileDirectory, |
|
unsigned int width, |
|
unsigned int height, |
|
const std::vector<ImageSet>& imageSet, |
|
float scale=255.0f, |
|
const std::array<float, 3> mean={{0, 0, 0}}, |
|
const std::array<float, 3> stddev={{1, 1, 1}}, |
|
DataFormat dataFormat=DataFormat::NHWC, |
|
unsigned int batchSize=1) |
|
: m_BinaryDirectory(binaryFileDirectory) |
|
, m_Height(height) |
|
, m_Width(width) |
|
, m_BatchSize(batchSize) |
|
, m_Scale(scale) |
|
, m_ImageSet(imageSet) |
|
, m_Mean(mean) |
|
, m_Stddev(stddev) |
|
, m_DataFormat(dataFormat) |
|
{ |
|
} |
|
|
|
std::unique_ptr<TTestCaseData> GetTestCaseData(unsigned int testCaseId); |
|
|
|
private: |
|
unsigned int GetNumImageElements() const { return 3 * m_Width * m_Height; } |
|
unsigned int GetNumImageBytes() const { return sizeof(DataType) * GetNumImageElements(); } |
|
unsigned int GetLabelAndResizedImageAsFloat(unsigned int testCaseId, |
|
std::vector<float> & result); |
|
|
|
std::string m_BinaryDirectory; |
|
unsigned int m_Height; |
|
unsigned int m_Width; |
|
unsigned int m_BatchSize; |
|
// Quantization parameters |
|
float m_Scale; |
|
const std::vector<ImageSet> m_ImageSet; |
|
|
|
const std::array<float, 3> m_Mean; |
|
const std::array<float, 3> m_Stddev; |
|
|
|
DataFormat m_DataFormat; |
|
};
|
|
|