diff options
author | Sadik Armagan <sadik.armagan@arm.com> | 2019-04-12 15:17:02 +0100 |
---|---|---|
committer | Sadik Armagan <sadik.armagan@arm.com> | 2019-04-12 15:17:02 +0100 |
commit | 2b03d64da2a3a39d069a7a2366f14439afb1ad39 (patch) | |
tree | 7a6ed87ad3c9feeea779fa4e241d6f589cb0dc56 /src/armnnQuantizer/ArmNNQuantizerMain.cpp | |
parent | 7b4886faccb52af9afe7fdeffcbae87e7fbc1484 (diff) | |
download | armnn-2b03d64da2a3a39d069a7a2366f14439afb1ad39.tar.gz |
IVGCVSW-2955 Update the Quantizer Tool to take an additional parameter for the user to specify a CSV file
Change-Id: Id56e09f147cca5c1301ec1b6bac656cd50bfd583
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Diffstat (limited to 'src/armnnQuantizer/ArmNNQuantizerMain.cpp')
-rw-r--r-- | src/armnnQuantizer/ArmNNQuantizerMain.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/armnnQuantizer/ArmNNQuantizerMain.cpp b/src/armnnQuantizer/ArmNNQuantizerMain.cpp index acfbe6241f..d7fc932327 100644 --- a/src/armnnQuantizer/ArmNNQuantizerMain.cpp +++ b/src/armnnQuantizer/ArmNNQuantizerMain.cpp @@ -8,8 +8,9 @@ #include <armnn/INetworkQuantizer.hpp> #include <armnnSerializer/ISerializer.hpp> -#include <iostream> +#include <algorithm> #include <fstream> +#include <iostream> int main(int argc, char* argv[]) { @@ -32,8 +33,36 @@ int main(int argc, char* argv[]) } inputFileStream.close(); armnn::INetworkPtr network = parser->CreateNetworkFromBinary(binaryContent); - armnn::INetworkPtr quantizedNetwork = armnn::INetworkQuantizer::Create(network.get())->ExportNetwork(); + armnn::INetworkQuantizerPtr quantizer = armnn::INetworkQuantizer::Create(network.get()); + + std::string csvFileName = cmdline.GetCsvFileName(); + if (csvFileName != "") + { + // Call the Quantizer::Refine() function which will update the min/max ranges for the quantize constants + std::ifstream csvFileStream(csvFileName); + std::string line; + std::string csvDirectory = cmdline.GetCsvFileDirectory(); + while(getline(csvFileStream, line)) + { + std::istringstream s(line); + std::vector<std::string> row; + std::string entry; + while(getline(s, entry, ',')) + { + entry.erase(std::remove(entry.begin(), entry.end(), ' '), entry.end()); + entry.erase(std::remove(entry.begin(), entry.end(), '"'), entry.end()); + row.push_back(entry); + } + std::string rawFileName = cmdline.GetCsvFileDirectory() + "/" + row[2]; + // passId: row[0] + // bindingId: row[1] + // rawFileName: file contains the RAW input tensor data + // LATER: Quantizer::Refine() function will be called with those arguments when it is implemented + } + csvFileStream.close(); + } + armnn::INetworkPtr quantizedNetwork = quantizer->ExportNetwork(); armnnSerializer::ISerializerPtr serializer = armnnSerializer::ISerializer::Create(); serializer->Serialize(*quantizedNetwork); |