The Arm NN SDK supports ML models in TensorFlow Lite (TF Lite) and ONNX formats.
Arm NN's TF Lite Delegate accelerates TF Lite models through Python or C++ APIs. Supported TF Lite operators are accelerated by Arm NN and any unsupported operators are delegated (fallback) to the reference TF Lite runtime - ensuring extensive ML operator support. The recommended way to use Arm NN is to convert your model to TF Lite format and use the TF Lite Delegate. Please refer to the Quick Start Guides for more information on how to use the TF Lite Delegate.
Arm NN also provides TF Lite and ONNX parsers which are C++ libraries for integrating TF Lite or ONNX models into your ML application. Please note that these parsers do not provide extensive ML operator coverage as compared to the Arm NN TF Lite Delegate.
Android ML application developers have a number of options for using Arm NN:
Arm also provides an Android-NN-Driver which implements a hardware abstraction layer (HAL) for the Android NNAPI. When the Android NN Driver is integrated on an Android device, ML models used in Android applications will automatically be accelerated by Arm NN.
For more information about the Arm NN components, please refer to our documentation.
Arm NN is a key component of the machine learning platform, which is part of the Linaro Machine Intelligence Initiative.
For FAQs and troubleshooting advice, see the FAQ or take a look at previous GitHub Issues.
The best way to get involved is by using our software. If you need help or encounter an issue, please raise it as a GitHub Issue. Feel free to have a look at any of our open issues too. We also welcome feedback on our documentation.
Feature requests without a volunteer to implement them are closed, but have the ‘Help wanted’ label, these can be found here. Once you find a suitable Issue, feel free to re-open it and add a comment, so that Arm NN engineers know you are working on it and can help.
When the feature is implemented the ‘Help wanted’ label will be removed.
The Arm NN project welcomes contributions. For more details on contributing to Arm NN please see the Contributing page on the MLPlatform.org website, or see the Contributor Guide.
Particularly if you'd like to implement your own backend next to our CPU, GPU and NPU backends there are guides for backend development: Backend development guide, Dynamic backend development guide.
The armnn/tests directory contains tests used during Arm NN development. Many of them depend on third-party IP, model protobufs and image files not distributed with Arm NN. The dependencies for some tests are available freely on the Internet, for those who wish to experiment, but they won't run out of the box.
Arm NN is provided under the MIT license. See LICENSE for more information. Contributions to this project are accepted under the same license.
Individual files contain the following tag instead of the full license text.
SPDX-License-Identifier: MIT
This enables machine processing of license information based on the SPDX License Identifiers that are available here: http://spdx.org/licenses/
Arm NN conforms to Arm's inclusive language policy and, to the best of our knowledge, does not contain any non-inclusive language.
If you find something that concerns you, please email [email protected]
Third party tools used by Arm NN:
Tool | License (SPDX ID) | Description | Version | Provenience |
---|---|---|---|---|
cxxopts | MIT | A lightweight C++ option parser library | SHA 12e496da3d486b87fa9df43edea65232ed852510 | https://github.com/jarro2783/cxxopts |
doctest | MIT | Header-only C++ testing framework | 2.4.6 | https://github.com/onqtam/doctest |
fmt | MIT | {fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams. | 7.0.1 | https://github.com/fmtlib/fmt |
ghc | MIT | A header-only single-file std::filesystem compatible helper library | 1.3.2 | https://github.com/gulrak/filesystem |
half | MIT | IEEE 754 conformant 16-bit half-precision floating point library | 1.12.0 | http://half.sourceforge.net |
mapbox/variant | BSD | A header-only alternative to ‘boost::variant’ | 1.1.3 | https://github.com/mapbox/variant |
stb | MIT | Image loader, resize and writer | 2.16 | https://github.com/nothings/stb |
Arm NN uses the following security related build flags in their code:
Build flags |
---|
-Wall |
-Wextra |
-Wold-style-cast |
-Wno-missing-braces |
-Wconversion |
-Wsign-conversion |
-Werror |