ArmNN  NotReleased
CommandLineProcessor Class Reference

#include <CommandLineProcessor.hpp>

Public Member Functions

bool ProcessCommandLine (int argc, char *argv[])
 
std::string GetInputFileName ()
 
std::string GetCsvFileName ()
 
std::string GetCsvFileDirectory ()
 
std::string GetOutputDirectoryName ()
 
std::string GetOutputFileName ()
 
std::string GetQuantizationScheme ()
 
QuantizationDataSet GetQuantizationDataSet ()
 
bool HasPreservedDataType ()
 
bool HasQuantizationData ()
 

Protected Attributes

std::string m_InputFileName
 
std::string m_CsvFileName
 
std::string m_CsvFileDirectory
 
std::string m_OutputDirectory
 
std::string m_OutputFileName
 
std::string m_QuantizationScheme
 
QuantizationDataSet m_QuantizationDataSet
 
bool m_PreserveDataType
 

Detailed Description

Definition at line 25 of file CommandLineProcessor.hpp.

Member Function Documentation

◆ GetCsvFileDirectory()

std::string GetCsvFileDirectory ( )
inline

◆ GetCsvFileName()

std::string GetCsvFileName ( )
inline

◆ GetInputFileName()

std::string GetInputFileName ( )
inline

Definition at line 30 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_InputFileName.

Referenced by main().

◆ GetOutputDirectoryName()

std::string GetOutputDirectoryName ( )
inline

Definition at line 33 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_OutputDirectory.

Referenced by main().

◆ GetOutputFileName()

std::string GetOutputFileName ( )
inline

Definition at line 34 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_OutputFileName.

Referenced by main().

◆ GetQuantizationDataSet()

QuantizationDataSet GetQuantizationDataSet ( )
inline

Definition at line 36 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_QuantizationDataSet.

Referenced by main().

◆ GetQuantizationScheme()

std::string GetQuantizationScheme ( )
inline

◆ HasPreservedDataType()

bool HasPreservedDataType ( )
inline

◆ HasQuantizationData()

bool HasQuantizationData ( )
inline

◆ ProcessCommandLine()

bool ProcessCommandLine ( int  argc,
char *  argv[] 
)

Definition at line 85 of file CommandLineProcessor.cpp.

References CommandLineProcessor::m_CsvFileDirectory, CommandLineProcessor::m_CsvFileName, CommandLineProcessor::m_InputFileName, CommandLineProcessor::m_OutputDirectory, CommandLineProcessor::m_OutputFileName, CommandLineProcessor::m_PreserveDataType, CommandLineProcessor::m_QuantizationDataSet, CommandLineProcessor::m_QuantizationScheme, armnnQuantizer::ValidateOutputDirectory(), armnnQuantizer::ValidateProvidedFile(), and armnnQuantizer::ValidateQuantizationScheme().

Referenced by main().

86 {
87  namespace po = boost::program_options;
88 
89  po::options_description desc("Options");
90  try
91  {
92  desc.add_options()
93  ("help,h", "Display help messages")
94  ("infile,f", po::value<std::string>(&m_InputFileName)->required(),
95  "Input file containing float 32 ArmNN Input Graph")
96  ("scheme,s", po::value<std::string>(&m_QuantizationScheme)->default_value("QAsymm8"),
97  "Quantization scheme, \"QAsymm8\" or \"QSymm16\", default value QAsymm8")
98  ("csvfile,c", po::value<std::string>(&m_CsvFileName)->default_value(""),
99  "CSV file containing paths for RAW input tensors")
100  ("preserve-data-type,p", po::bool_switch(&m_PreserveDataType)->default_value(false),
101  "Preserve the input and output data types")
102  ("outdir,d", po::value<std::string>(&m_OutputDirectory)->required(),
103  "Directory that output file will be written to")
104  ("outfile,o", po::value<std::string>(&m_OutputFileName)->required(), "ArmNN output file name");
105  }
106  catch (const std::exception& e)
107  {
108  std::cerr << "Fatal internal error: [" << e.what() << "]" << std::endl;
109  return false;
110  }
111 
112  po::variables_map vm;
113 
114  try
115  {
116  po::store(po::parse_command_line(argc, argv, desc), vm);
117 
118  if (vm.count("help") || argc <= 1)
119  {
120  std::cout << "Convert a Fp32 ArmNN model to a quantized ArmNN model." << std::endl;
121  std::cout << std::endl;
122  std::cout << desc << std::endl;
123  return false;
124  }
125 
126  po::notify(vm);
127  }
128  catch (const po::error& e)
129  {
130  std::cerr << e.what() << std::endl << std::endl;
131  std::cerr << desc << std::endl;
132  return false;
133  }
134 
136  {
137  return false;
138  }
139 
141  {
142  return false;
143  }
144 
145  if (m_CsvFileName != "")
146  {
148  {
149  return false;
150  }
151  else
152  {
153  boost::filesystem::path csvFilePath(m_CsvFileName);
154  m_CsvFileDirectory = csvFilePath.parent_path().c_str();
155  }
156 
157  // If CSV file is defined, create a QuantizationDataSet for specified CSV file.
158  m_QuantizationDataSet = QuantizationDataSet(m_CsvFileName);
159  }
160 
162  {
163  return false;
164  }
165 
166  std::string output(m_OutputDirectory);
167  output.append(m_OutputFileName);
168 
169  if (boost::filesystem::exists(output))
170  {
171  std::cerr << "Output file [" << output << "] already exists" << std::endl;
172  return false;
173  }
174 
175  return true;
176 }
bool ValidateQuantizationScheme(const std::string &scheme)
bool ValidateProvidedFile(const std::string &inputFileName)
bool ValidateOutputDirectory(std::string &dir)

Member Data Documentation

◆ m_CsvFileDirectory

std::string m_CsvFileDirectory
protected

◆ m_CsvFileName

std::string m_CsvFileName
protected

◆ m_InputFileName

std::string m_InputFileName
protected

◆ m_OutputDirectory

std::string m_OutputDirectory
protected

◆ m_OutputFileName

std::string m_OutputFileName
protected

◆ m_PreserveDataType

bool m_PreserveDataType
protected

◆ m_QuantizationDataSet

◆ m_QuantizationScheme

std::string m_QuantizationScheme
protected

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