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 }