From 245d64c60d0ea30f5080ff53225b5169927e24d6 Mon Sep 17 00:00:00 2001 From: Matthew Bentham Date: Mon, 2 Dec 2019 12:59:43 +0000 Subject: Work in progress of python bindings for Arm NN Not built or tested in any way Signed-off-by: Matthew Bentham Change-Id: Ie7f92b529aa5087130f0c5cc8c17db1581373236 --- python/pyarmnn/src/pyarmnn/swig/armnn_onnxparser.i | 96 ++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 python/pyarmnn/src/pyarmnn/swig/armnn_onnxparser.i (limited to 'python/pyarmnn/src/pyarmnn/swig/armnn_onnxparser.i') diff --git a/python/pyarmnn/src/pyarmnn/swig/armnn_onnxparser.i b/python/pyarmnn/src/pyarmnn/swig/armnn_onnxparser.i new file mode 100644 index 0000000000..e72a425374 --- /dev/null +++ b/python/pyarmnn/src/pyarmnn/swig/armnn_onnxparser.i @@ -0,0 +1,96 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +%module pyarmnn_onnxparser +%{ +#define SWIG_FILE_WITH_INIT +#include "armnnOnnxParser/IOnnxParser.hpp" +#include "armnn/INetwork.hpp" +%} + +//typemap definitions and other common stuff +%include "standard_header.i" + +namespace std { + %template(BindingPointInfo) pair; + %template(MapStringTensorShape) map; + %template(StringVector) vector; +} + +namespace armnnOnnxParser +{ +%feature("docstring", +" +Interface for creating a parser object using ONNX (https://onnx.ai/) onnx files. + +Parsers are used to automatically construct Arm NN graphs from model files. + +") IOnnxParser; + +%nodefaultctor IOnnxParser; +class IOnnxParser +{ +public: + %feature("docstring", + " + Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name. + + Args: + name (string): Name of the input node. + + Returns: + tuple: (`int`, `TensorInfo`) + ") GetNetworkInputBindingInfo; + std::pair GetNetworkInputBindingInfo(const std::string& name); + + %feature("docstring", + " + Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name. + + Args: + name (string): Name of the output node. + + Returns: + tuple: (`int`, `TensorInfo`) + ") GetNetworkOutputBindingInfo; + std::pair GetNetworkOutputBindingInfo(const std::string& name); +}; + +%extend IOnnxParser { + // This is not a substitution of the default constructor of the Armnn class. It tells swig to create custom __init__ + // method for IOnnxParser python object that will use static factory method to do the job. + IOnnxParser() { + return armnnOnnxParser::IOnnxParser::CreateRaw(); + } + + // The following does not replace a real destructor of the Armnn class. + // It creates a functions that will be called when swig object goes out of the scope to clean resources. + // so the user doesn't need to call IOnnxParser::Destroy himself. + // $self` is a pointer to extracted ArmNN IOnnxParser object. + ~IOnnxParser() { + armnnOnnxParser::IOnnxParser::Destroy($self); + } + + %feature("docstring", + " + Create the network from a binary file on disk. + + Args: + graphFile (str): Path to the onnx model to be parsed. + + Returns: + INetwork: Parsed network. + + Raises: + RuntimeError: If model file was not found. + ") CreateNetworkFromBinaryFile; + %newobject CreateNetworkFromBinaryFile; + armnn::INetwork* CreateNetworkFromBinaryFile(const char* graphFile) { + return $self->CreateNetworkFromBinaryFile(graphFile).release(); + } +} + +} +// Clear exception typemap. +%exception; -- cgit v1.2.1