NNStreamer: Efficient and Flexible Stream Pipeline
Framework for Complex Neural Network Applications

NNStreamer is an efficient and flexible stream pipeline framework for complex neural network applications. It was initially developed by Samsung and then transferred to LF AI Foundation as an incubation project.

NNStreamer provides a set of GStreamer plugins so developers may apply neural networks, attach related frameworks (including ROSIIOFlatBuffers, and Protocol Buffers), and manipulate tensor data streams in GStreamer pipelines easily and execute such pipelines efficiently.

It has already been adopted by various Android and Tizen devices in Samsung, which implies that it is reliable and robust enough for commercial products. It supports well-known neural network frameworks including Tensorflow, Tensorflow-lite, Caffe2, PyTorch, OpenVINO, ARMNN, and NEURUN. Users may include custom C functions, C++ objects, or Python objects as well as such frameworks as neural network filters of a pipeline in run-time. Users may also add and integrate support for such frameworks or hardware AI accelerators in run-time, which may exist as independent plugin binaries.

Get Started

NNStreamer’s official binary releases include supports for Tizen, Ubuntu, Android, macOS, and Yocto/OpenEmbedded; however, as long as the target system supports GStreamer, it should be compatible with NNStreamer as well. We provide APIs in C, Java, and .NET in case GStreamer APIs are overkill. NNStreamer APIs are the standard Machine Learning APIs of Tizen and various Samsung products as well.

Ubuntu (16.04/18.04)
sudo add-apt-repository ppa:nnstreamer/ppa
sudo apt-get update
sudo apt-get install nnstreamer nnstreamer-caffe2 nnstreamer-tensorflow nnstreamer-tensorflow-lite

Tizen 5.5 or Higher
Use Machine-Learning Inference APIs (Native / .NET) to use NNStreamer in Tizen applications.

Android
Use JCenter repository to use NNStreamer in Android Studio.

Yocto
OpenEmbedded’s meta-neural-network layer has NNStreamer included.

MacOS
MacOS users may install NNStreamer via Brew taps or build NNStreamer for their own systems.

Other
In general, you may build NNStreamer in any GStreamer-compatible systems.

Usage Examples

Object Detection Demo
Image Classification Demo

Join the Conversation

We invite you to visit the GitHub where NNStreamer and its sub projects are developed. Please join our community as a user and contributor. Your contribution is always welcomed! NNStreamer also maintains three mailing lists. You are invited to join the one that best meets your interest.

NNStreamer-Announce: Top-level milestone messages and announcements

NNStreamer-Technical-Discuss: Technical discussions

NNStreamer-TSC: Technical governance discussions