blob: acfbe6241f01a049c7b200f37172ec44a2c78459 [file] [log] [blame]
Jim Flynn3091b062019-02-15 14:45:04 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "CommandLineProcessor.hpp"
7#include <armnnDeserializer/IDeserializer.hpp>
8#include <armnn/INetworkQuantizer.hpp>
9#include <armnnSerializer/ISerializer.hpp>
10
11#include <iostream>
12#include <fstream>
13
14int main(int argc, char* argv[])
15{
16 armnnQuantizer::CommandLineProcessor cmdline;
17 if (!cmdline.ProcessCommandLine(argc, argv))
18 {
19 return -1;
20 }
21 armnnDeserializer::IDeserializerPtr parser = armnnDeserializer::IDeserializer::Create();
22 std::ifstream inputFileStream(cmdline.GetInputFileName(), std::ios::binary);
23 std::vector<std::uint8_t> binaryContent;
24 while (inputFileStream)
25 {
26 char c;
27 inputFileStream.get(c);
28 if (inputFileStream)
29 {
30 binaryContent.push_back(static_cast<std::uint8_t>(c));
31 }
32 }
33 inputFileStream.close();
34 armnn::INetworkPtr network = parser->CreateNetworkFromBinary(binaryContent);
35 armnn::INetworkPtr quantizedNetwork = armnn::INetworkQuantizer::Create(network.get())->ExportNetwork();
36
37 armnnSerializer::ISerializerPtr serializer = armnnSerializer::ISerializer::Create();
38 serializer->Serialize(*quantizedNetwork);
39
40 std::string output(cmdline.GetOutputDirectoryName());
41 output.append(cmdline.GetOutputFileName());
42 std::ofstream outputFileStream;
43 outputFileStream.open(output);
44 serializer->SaveSerializedToStream(outputFileStream);
45 outputFileStream.flush();
46 outputFileStream.close();
47
48 return 0;
49}