Bug: 161933712

Clone this repo:
  1. c768eeb [LSC] Add LOCAL_LICENSE_KINDS to external/armnn by Bob Badour · 10 months ago android12-qpr1-d-release android12-qpr1-d-s1-release android12-qpr1-d-s2-release android12-qpr1-d-s3-release main-cg-testing-release master sdk-release simpleperf-release android-12.0.0_r18 android-12.0.0_r19 android-12.0.0_r20 android-12.0.0_r21 android-12.0.0_r27
  2. a6543fa armnn: sync to 20.11 release by Kevin DuBois · 11 months ago
  3. 16d6461 add missing owners file for armnn. by Kevin DuBois · 1 year ago
  4. fc55a19 IVGCVSW-5348 Update Doxygen Docu by James Ward · 1 year, 2 months ago
  5. 3bfadb0 IVGCVSW-5457 Add How-To documentation for the TfLite Delegate by Jan Eilers · 1 year, 2 months ago

Arm NN

Arm NN is a key component of the machine learning platform, which is part of the Linaro Machine Intelligence Initiative. For more information on the machine learning platform and Arm NN, see: https://mlplatform.org/, also there is further Arm NN information available from https://developer.arm.com/products/processors/machine-learning/arm-nn

There is a getting started guide here using TensorFlow: https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/how-to-guides/configuring-the-arm-nn-sdk-build-environment-for-tensorflow

There is a getting started guide here using TensorFlow Lite: https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/how-to-guides/configuring-the-arm-nn-sdk-build-environment-for-tensorflow-lite

There is a getting started guide here using Caffe: https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/how-to-guides/configure-the-arm-nn-sdk-build-environment-for-caffe

There is a getting started guide here using ONNX: https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/how-to-guides/configuring-the-arm-nn-sdk-build-environment-for-onnx

There is a guide for backend development: Backend development guide

There is a guide for installation of ArmNN, Tensorflow Lite Parser and PyArmnn via our Apt Repository: Installation via Apt Repository

There is a getting started guide for our ArmNN TfLite Delegate: Build the TfLite Delegate natively

API Documentation is available at https://github.com/ARM-software/armnn/wiki/Documentation.

Dox files to generate Arm NN doxygen files can be found at armnn/docs/. Following generation the xhtml files can be found at armnn/documentation/

Build Instructions

Arm tests the build system of Arm NN with the following build environments:

Arm NN is written using portable C++14 and the build system uses CMake, therefore it is possible to build for a wide variety of target platforms, from a wide variety of host environments.

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 of some of the tests are available freely on the Internet, for those who wish to experiment.

The ‘armnn/samples’ directory contains SimpleSample.cpp, a very basic example of the ArmNN SDK API in use, and DynamicSample.cpp, a very basic example of using the ArmNN SDK API with the standalone sample dynamic backend.

The ‘ExecuteNetwork’ program, in armnn/tests/ExecuteNetwork, has no additional dependencies beyond those required by Arm NN and the model parsers. It takes any model and any input tensor, and simply prints out the output tensor. Run it with no arguments to see command-line help.

The ‘ArmnnConverter’ program, in armnn/src/armnnConverter, has no additional dependencies beyond those required by Arm NN and the model parsers. It takes a model in TensorFlow format and produces a serialized model in Arm NN format. Run it with no arguments to see command-line help. Note that this program can only convert models for which all operations are supported by the serialization tool src/armnnSerializer.

The ‘ArmnnQuantizer’ program, in armnn/src/armnnQuantizer, has no additional dependencies beyond those required by Arm NN and the model parsers. It takes a 32-bit float network and converts it into a quantized asymmetric 8-bit or quantized symmetric 16-bit network. Static quantization is supported by default but dynamic quantization can be enabled if CSV file of raw input tensors is specified. Run it with no arguments to see command-line help.

Note that Arm NN needs to be built against a particular version of ARM's Compute Library. The get_compute_library.sh in the scripts subdirectory will clone the compute library from the review.mlplatform.org github repository into a directory alongside armnn named ‘clframework’ and checks out the correct revision.

For FAQs and troubleshooting advice, see FAQ.md


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/

Third party tools used by Arm NN:

ToolLicense (SPDX ID)DescriptionVersionProvenience
cxxoptsMITA lightweight C++ option parser librarySHA 12e496da3d486b87fa9df43edea65232ed852510https://github.com/jarro2783/cxxopts
fmtMIT{fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams.7.0.1https://github.com/fmtlib/fmt
ghcMITA header-only single-file std::filesystem compatible helper library1.3.2https://github.com/gulrak/filesystem
halfMITIEEE 754 conformant 16-bit half-precision floating point library1.12.0http://half.sourceforge.net
mapbox/variantBSDA header-only alternative to ‘boost::variant’1.1.3https://github.com/mapbox/variant
stbMITImage loader, resize and writer2.16https://github.com/nothings/stb


The Arm NN project welcomes contributions. For more details on contributing to Arm NN see the Contributing page on the MLPlatform.org website, or see the Contributor Guide.