ArmNN
 21.02
Cifar10Database Class Reference

#include <Cifar10Database.hpp>

Public Types

using DataType = float
 
using TTestCaseData = ClassifierTestCaseData< DataType >
 

Public Member Functions

 Cifar10Database (const std::string &binaryFileDirectory, bool rgbPack=false)
 
std::unique_ptr< TTestCaseDataGetTestCaseData (unsigned int testCaseId)
 

Detailed Description

Definition at line 12 of file Cifar10Database.hpp.

Member Typedef Documentation

◆ DataType

using DataType = float

Definition at line 15 of file Cifar10Database.hpp.

◆ TTestCaseData

Definition at line 16 of file Cifar10Database.hpp.

Constructor & Destructor Documentation

◆ Cifar10Database()

Cifar10Database ( const std::string &  binaryFileDirectory,
bool  rgbPack = false 
)
explicit

Definition at line 15 of file Cifar10Database.cpp.

16  : m_BinaryDirectory(binaryFileDirectory), m_RgbPack(rgbPack)
17 {
18 }

Member Function Documentation

◆ GetTestCaseData()

std::unique_ptr< Cifar10Database::TTestCaseData > GetTestCaseData ( unsigned int  testCaseId)

Definition at line 20 of file Cifar10Database.cpp.

References ARMNN_LOG, g_kCifar10ImageByteSize, and armnn::numeric_cast().

Referenced by main().

21 {
22  std::vector<unsigned char> I(g_kCifar10ImageByteSize);
23 
24  std::string fullpath = m_BinaryDirectory + std::string("test_batch.bin");
25 
26  std::ifstream fileStream(fullpath, std::ios::binary);
27  if (!fileStream.is_open())
28  {
29  ARMNN_LOG(fatal) << "Failed to load " << fullpath;
30  return nullptr;
31  }
32 
33  fileStream.seekg(testCaseId * g_kCifar10ImageByteSize, std::ios_base::beg);
34  fileStream.read(reinterpret_cast<char*>(&I[0]), g_kCifar10ImageByteSize);
35 
36  if (!fileStream.good())
37  {
38  ARMNN_LOG(fatal) << "Failed to read " << fullpath;
39  return nullptr;
40  }
41 
42 
43  std::vector<float> inputImageData;
44  inputImageData.resize(g_kCifar10ImageByteSize - 1);
45 
46  unsigned int step;
47  unsigned int countR_o;
48  unsigned int countG_o;
49  unsigned int countB_o;
50  unsigned int countR = 1;
51  unsigned int countG = 1 + 32 * 32;
52  unsigned int countB = 1 + 2 * 32 * 32;
53 
54  if (m_RgbPack)
55  {
56  countR_o = 0;
57  countG_o = 1;
58  countB_o = 2;
59  step = 3;
60  }
61  else
62  {
63  countR_o = 0;
64  countG_o = 32 * 32;
65  countB_o = 2 * 32 * 32;
66  step = 1;
67  }
68 
69  for (unsigned int h = 0; h < 32; h++)
70  {
71  for (unsigned int w = 0; w < 32; w++)
72  {
73  // Static_cast of unsigned char is safe with float
74  inputImageData[countR_o] = static_cast<float>(I[countR++]);
75  inputImageData[countG_o] = static_cast<float>(I[countG++]);
76  inputImageData[countB_o] = static_cast<float>(I[countB++]);
77 
78  countR_o += step;
79  countG_o += step;
80  countB_o += step;
81  }
82  }
83 
84  const unsigned int label = armnn::numeric_cast<unsigned int>(I[0]);
85  return std::make_unique<TTestCaseData>(label, std::move(inputImageData));
86 }
#define ARMNN_LOG(severity)
Definition: Logging.hpp:202
constexpr unsigned int g_kCifar10ImageByteSize
std::enable_if_t< std::is_unsigned< Source >::value &&std::is_unsigned< Dest >::value, Dest > numeric_cast(Source source)
Definition: NumericCast.hpp:35

The documentation for this class was generated from the following files: