diff options
author | Sadik Armagan <sadik.armagan@arm.com> | 2019-04-26 17:11:47 +0100 |
---|---|---|
committer | Les Bell <les.bell@arm.com> | 2019-04-29 12:06:53 +0000 |
commit | dc2f7f4bd79e59e0574461b563c77d4b1934aa09 (patch) | |
tree | bb0067315b071fda97407b3b68c1ff176bd046e5 | |
parent | ae2c5f0350a7033f58578f9c509345445a639865 (diff) | |
download | armnn-dc2f7f4bd79e59e0574461b563c77d4b1934aa09.tar.gz |
IVGCVSW-2843 Support QSymm16 via Command-line quantizer tool
* Added quantization scheme support to ArmnnQuantizer
Change-Id: Ia0202bfcd8cac0695aa3b18f9447a19b27f74f67
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
-rw-r--r-- | src/armnnQuantizer/ArmNNQuantizerMain.cpp | 8 | ||||
-rw-r--r-- | src/armnnQuantizer/CommandLineProcessor.cpp | 30 | ||||
-rw-r--r-- | src/armnnQuantizer/CommandLineProcessor.hpp | 2 |
3 files changed, 39 insertions, 1 deletions
diff --git a/src/armnnQuantizer/ArmNNQuantizerMain.cpp b/src/armnnQuantizer/ArmNNQuantizerMain.cpp index d7fc932327..9ac8966753 100644 --- a/src/armnnQuantizer/ArmNNQuantizerMain.cpp +++ b/src/armnnQuantizer/ArmNNQuantizerMain.cpp @@ -32,8 +32,14 @@ int main(int argc, char* argv[]) } } inputFileStream.close(); + + armnn::QuantizerOptions quantizerOptions; + quantizerOptions.m_ActivationFormat = cmdline.GetQuantizationScheme() == "QSymm16" + ? armnn::DataType::QuantisedSymm16 + : armnn::DataType::QuantisedAsymm8; + armnn::INetworkPtr network = parser->CreateNetworkFromBinary(binaryContent); - armnn::INetworkQuantizerPtr quantizer = armnn::INetworkQuantizer::Create(network.get()); + armnn::INetworkQuantizerPtr quantizer = armnn::INetworkQuantizer::Create(network.get(), quantizerOptions); std::string csvFileName = cmdline.GetCsvFileName(); if (csvFileName != "") diff --git a/src/armnnQuantizer/CommandLineProcessor.cpp b/src/armnnQuantizer/CommandLineProcessor.cpp index a7baa5cac4..16afe289f6 100644 --- a/src/armnnQuantizer/CommandLineProcessor.cpp +++ b/src/armnnQuantizer/CommandLineProcessor.cpp @@ -59,6 +59,29 @@ bool ValidateProvidedFile(const std::string& inputFileName) return true; } +bool ValidateQuantizationScheme(const std::string& scheme) +{ + if (scheme.empty()) + { + std::cerr << "No Quantization Scheme specified" << std::endl; + return false; + } + + std::vector<std::string> supportedSchemes = { + "QAsymm8", + "QSymm16" + }; + + auto iterator = std::find(supportedSchemes.begin(), supportedSchemes.end(), scheme); + if (iterator == supportedSchemes.end()) + { + std::cerr << "Quantization Scheme [" << scheme << "] is not supported" << std::endl; + return false; + } + + return true; +} + bool CommandLineProcessor::ProcessCommandLine(int argc, char* argv[]) { namespace po = boost::program_options; @@ -70,6 +93,8 @@ bool CommandLineProcessor::ProcessCommandLine(int argc, char* argv[]) ("help,h", "Display help messages") ("infile,f", po::value<std::string>(&m_InputFileName)->required(), "Input file containing float 32 ArmNN Input Graph") + ("scheme,s", po::value<std::string>(&m_QuantizationScheme)->default_value("QAsymm8"), + "Quantization scheme, \"QAsymm8\" or \"QSymm16\", default value QAsymm8") ("csvfile,c", po::value<std::string>(&m_CsvFileName)->default_value(""), "CSV file containing paths for RAW input tensors") ("outdir,d", po::value<std::string>(&m_OutputDirectory)->required(), @@ -108,6 +133,11 @@ bool CommandLineProcessor::ProcessCommandLine(int argc, char* argv[]) return false; } + if (!ValidateQuantizationScheme(m_QuantizationScheme)) + { + return false; + } + if (m_CsvFileName != "") { if (!armnnQuantizer::ValidateProvidedFile(m_CsvFileName)) diff --git a/src/armnnQuantizer/CommandLineProcessor.hpp b/src/armnnQuantizer/CommandLineProcessor.hpp index 852fcd4070..7e366a7664 100644 --- a/src/armnnQuantizer/CommandLineProcessor.hpp +++ b/src/armnnQuantizer/CommandLineProcessor.hpp @@ -30,12 +30,14 @@ public: std::string GetCsvFileDirectory() {return m_CsvFileDirectory;} std::string GetOutputDirectoryName() {return m_OutputDirectory;} std::string GetOutputFileName() {return m_OutputFileName;} + std::string GetQuantizationScheme() {return m_QuantizationScheme;} private: std::string m_InputFileName; std::string m_CsvFileName; std::string m_CsvFileDirectory; std::string m_OutputDirectory; std::string m_OutputFileName; + std::string m_QuantizationScheme; }; } // namespace armnnQuantizer |