• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include "armnn/Types.hpp"
8 #include "armnn/NetworkFwd.hpp"
9 #include "armnn/Tensor.hpp"
10 #include "armnn/INetwork.hpp"
11 
12 #include <memory>
13 #include <map>
14 #include <vector>
15 
16 namespace armnnCaffeParser
17 {
18 
19 using BindingPointInfo = armnn::BindingPointInfo;
20 
21 class ICaffeParser;
22 using ICaffeParserPtr = std::unique_ptr<ICaffeParser, void(*)(ICaffeParser* parser)>;
23 
24 class ICaffeParser
25 {
26 public:
27     static ICaffeParser* CreateRaw();
28     static ICaffeParserPtr Create();
29     static void Destroy(ICaffeParser* parser);
30 
31     /// Create the network from a protobuf text file on the disk.
32     virtual armnn::INetworkPtr CreateNetworkFromTextFile(
33         const char* graphFile,
34         const std::map<std::string, armnn::TensorShape>& inputShapes,
35         const std::vector<std::string>& requestedOutputs) = 0;
36 
37     /// Create the network from a protobuf binary file on the disk.
38     virtual armnn::INetworkPtr CreateNetworkFromBinaryFile(
39         const char* graphFile,
40         const std::map<std::string, armnn::TensorShape>& inputShapes,
41         const std::vector<std::string>& requestedOutputs) = 0;
42 
43     /// Create the network directly from protobuf text in a string. Useful for debugging/testin.g
44     virtual armnn::INetworkPtr CreateNetworkFromString(
45         const char* protoText,
46         const std::map<std::string, armnn::TensorShape>& inputShapes,
47         const std::vector<std::string>& requestedOutputs) = 0;
48 
49     /// Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name.
50     virtual BindingPointInfo GetNetworkInputBindingInfo(const std::string& name) const = 0;
51 
52     /// Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name.
53     virtual BindingPointInfo GetNetworkOutputBindingInfo(const std::string& name) const = 0;
54 
55 protected:
~ICaffeParser()56     virtual ~ICaffeParser() {};
57 };
58 
59 }