25.02
|
If you have downloaded the Arm NN Github binaries or built the TfLite delegate yourself, then this tutorial will show you how you can integrate it into TfLite to run models using python.
Here is an example python script showing how to do this. In this script we are making use of the external adaptor tool of TfLite that allows you to load delegates at runtime.
Pre-requisites:
If you haven't built the delegate yet then take a look at the build guide. Otherwise, you can download the binaries here. Set the following environment variable to the location of the .so binary files:
We recommend creating a virtual environment for this tutorial. For the following code to work python3 is needed. Please also check the documentation of the TfLite version you want to use. There might be additional prerequisites for the python version. We will use Tensorflow Lite 2.15.0 for this guide.
Now that the environment is active we can install additional packages we need for our example script. As you can see in the python script at the start of this page, this tutorial uses the tflite_runtime
rather than the whole tensorflow package. The tflite_runtime
is a package that wraps the TfLite Interpreter. Therefore it can only be used to run inferences of TfLite models. But since Arm NN is only an inference engine itself this is a perfect match. The tflite_runtime
is also much smaller than the whole tensorflow package and better suited to run models on mobile and embedded devices.
The TfLite website shows you two methods to download the tflite_runtime
package. In our experience, the use of the pip command works for most systems including debian. However, if you're using an older version of Tensorflow, you may need to build the pip package from source. You can find more information here. But in our case, with Tensorflow Lite 2.15.0, we can install through:
Your virtual environment is now all setup. Copy the final python script into a python file e.g. ExternalDelegatePythonTutorial.py
. Modify the python script above and replace <path-to-armnn-binaries>
and <your-armnn-repo-dir>
with the directories you have set up. If you've been using the native build guide this will be $BASEDIR/armnn/build
and $BASEDIR/armnn
.
Finally, execute the script:
The output should look similar to this:
For more details of the kind of options you can pass to the Arm NN delegate please check the parameters of function tflite_plugin_create_delegate.
You can also test the functionality of the external delegate adaptor by running some unit tests: