Git Product home page Git Product logo

isabella232 / armnn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from arm-software/armnn

0.0 0.0 0.0 208.44 MB

Arm NN ML Software. The code here is a read-only mirror of https://review.mlplatform.org/admin/repos/ml/armnn

Home Page: https://developer.arm.com/products/processors/machine-learning/arm-nn

License: MIT License

Shell 0.09% C++ 95.19% Python 2.03% Assembly 0.01% Makefile 0.29% Mako 0.01% CMake 1.22% Dockerfile 0.11% SWIG 1.07%

armnn's Introduction

Arm NN

Arm NN is the most performant machine learning (ML) inference engine for Android and Linux, accelerating ML on Arm Cortex-A CPUs and Arm Mali GPUs. This ML inference engine is an open source SDK which bridges the gap between existing neural network frameworks and power-efficient Arm IP.

Arm NN outperforms generic ML libraries due to Arm architecture-specific optimizations (e.g. SVE2) by utilizing Arm Compute Library (ACL). To target Arm Ethos-N NPUs, Arm NN utilizes the Ethos-N NPU Driver. For Arm Cortex-M acceleration, please see CMSIS-NN.

Arm NN is written using portable C++14 and built using CMake - enabling builds for a wide variety of target platforms, from a wide variety of host environments. Python developers can interface with Arm NN through the use of our Arm NN TF Lite Delegate.

Quick Start Guides

The Arm NN TF Lite Delegate provides the widest ML operator support in Arm NN and is an easy way to accelerate your ML model. To start using the TF Lite Delegate, first download the Pre-Built Binaries for the latest release of Arm NN. Using a Python interpreter, you can load your TF Lite model into the Arm NN TF Lite Delegate and run accelerated inference. Please see this Quick Start Guide on GitHub or this more comprehensive Arm Developer Guide for information on how to accelerate your TF Lite model using the Arm NN TF Lite Delegate.

The fastest way to integrate Arm NN into an Android app is by using our Arm NN AAR (Android Archive) file with Android Studio. The AAR file nicely packages up the Arm NN TF Lite Delegate, Arm NN itself and ACL; ready to be integrated into your Android ML application. Using the AAR allows you to benefit from the vast operator support of the Arm NN TF Lite Delegate. We held an Arm AI Tech Talk on how to accelerate an ML Image Segmentation app in 5 minutes using this AAR file, with the supporting guide here. To download the Arm NN AAR file, please see the Pre-Built Binaries section below.

We also provide Debian packages for Arm NN, which are a quick way to start using Arm NN and the TF Lite Parser (albeit with less ML operator support than the TF Lite Delegate). There is an installation guide available here which provides instructions on how to install the Arm NN Core and the TF Lite Parser for Ubuntu 20.04.

Pre-Built Binaries

Operating System Architecture-specific Release Archive (Download)
Android (AAR)
Android 27
Android 28
Android 29
Linux

Software Overview

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:

  • Use our Arm NN AAR (Android Archive) file with Android Studio as described in the Quick Start Guides section
  • Download and use our Pre-Built Binaries for the Android platform
  • Build Arm NN from scratch with the Android NDK using this GitHub guide

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.

Get Involved

The best way to get involved is by using our software. If you need help or encounter and 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.

Contributions

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.

Disclaimer

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.

License

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

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

Build Flags

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

armnn's People

Contributors

arovir01 avatar brunomorishita avatar catcor01 avatar colm-in-arm avatar davmon01 avatar dbeck-arm avatar dereklambertiofarm avatar eanoca01 avatar ferbal01 avatar finnwilliamsarm avatar francismurtagh-arm avatar james-conroy-arm avatar janeil01 avatar jimfly01 avatar keidav01 avatar kevinarm avatar matjac02 avatar matteoarm avatar matthewarm avatar matthewsloyanarm avatar mikejkelly avatar narumol-arm avatar nattapat-arm avatar nikraj01 avatar ninaarm avatar rob-hughes-arm avatar ryanatarm avatar sadikarm avatar saoirsearm avatar teresaarm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.