aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadik Armagan <sadik.armagan@arm.com>2019-04-26 17:11:47 +0100
committerLes Bell <les.bell@arm.com>2019-04-29 12:06:53 +0000
commitdc2f7f4bd79e59e0574461b563c77d4b1934aa09 (patch)
treebb0067315b071fda97407b3b68c1ff176bd046e5
parentae2c5f0350a7033f58578f9c509345445a639865 (diff)
downloadarmnn-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.cpp8
-rw-r--r--src/armnnQuantizer/CommandLineProcessor.cpp30
-rw-r--r--src/armnnQuantizer/CommandLineProcessor.hpp2
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