diff --git a/src/armnnQuantizer/ArmNNQuantizerMain.cpp b/src/armnnQuantizer/ArmNNQuantizerMain.cpp
index d7fc932..9ac8966 100644
--- a/src/armnnQuantizer/ArmNNQuantizerMain.cpp
+++ b/src/armnnQuantizer/ArmNNQuantizerMain.cpp
@@ -32,8 +32,14 @@
         }
     }
     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 a7baa5c..16afe28 100644
--- a/src/armnnQuantizer/CommandLineProcessor.cpp
+++ b/src/armnnQuantizer/CommandLineProcessor.cpp
@@ -59,6 +59,29 @@
     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 @@
                 ("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 @@
         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 852fcd4..7e366a7 100644
--- a/src/armnnQuantizer/CommandLineProcessor.hpp
+++ b/src/armnnQuantizer/CommandLineProcessor.hpp
@@ -30,12 +30,14 @@
     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
