This repository shows developers how to create their applications with nnstreamer/gstreamer. We recommend to install nnstreamer by downloading prebuilt binary packages from Launchpad/PPA (Ubuntu) or Download.Tizen.org (Tizen). If you want to build nnstreamer in your system for your example application builds, pdebuild (Ubuntu) with PPA or gbs (Tizen) are recommended for building nnstreamer. This repository has been detached from nnstreamer.git to build examples independently from the nnstreamer source code since Jan-09-2019.
Ubuntu PPA: nnstreamer/ppa [PPA Main]
Tizen Project: devel:Tizen:6.0:AI [OBS Project] [RPM Repo]
We provide example nnstreamer applications:
- Traditional Linux native applications
- Linux/Ubuntu: GTK+ application
- gst-launch-1.0 based scripts
- Tizen GUI Application
- Tizen C/C++ application
- Tizen .NET (C#) application
- Tizen Web application
- Android applications
- NDK based C/C++ CLI applicaton
- JNI based GUI application
- Download nnstreamer :
$ sudo add-apt-repository ppa:nnstreamer/ppa
$ sudo apt-get update
$ sudo apt-get install nnstreamer
$ sudo apt-get install nnstreamer-example
$ cd /usr/lib/nnstreamer/bin # binary install directory
*note: nnstreamer-example
ppa was integrated into nnstreamer
ppa.
As of 2018/10/13, we support 16.04 and 18.04
If you want to build nnstreamer example yourself, please refer to the link : [Build example]
$ cd /usr/lib/nnstreamer/bin
$ ./nnstreamer_example_text_classification_tflite
Refer to this link for more examples : [NNStreamer example]
Application | Implementations | Used gstreamer/nnstreamer feature |
---|---|---|
Image Classification |
- C (tflite) - Python (tflite) - C (ONE) - C (caffe2) |
- v4l2src for input image stream - textoverlay for showing labels |
Object Detection |
- C++ (tf) - C++ (tflite) - Python (tflite) |
- v4l2src for input image stream - cairooverlay for drawing boxes |
Pose Estimation |
- C++ (tflite) - Python (tflite) |
- v4l2src for input image stream - cairooverlay for drawing body points |
Image Classification with tensor_decoder | - C++ (tflite) | - tensor_decoder mode=image_labeling for postprocessing |
Text Classification | - C (tflite) | - appsrc for input text data |
Object Detection with 2 cameras |
- C++ (tflite) | - v4l2src for input image stream - cairooverlay for drawing boxes |
Application | Implementations | Used gstreamer/nnstreamer feature |
---|---|---|
Object Detection | - tflite - tf |
- v4l2src for input image stream - tensor_decoder mode=bounding_boxes for postprocessing- compositor for drawing decoded boxes |
Image Segmentation | - tflite - Edge TPU * Edge-AI server * Edge-AI client |
- v4l2src for input image stream - tensor_decoder mode=image_segment for postprocessing- tcpclientsrc / tcpserversink / gdppay / gdpdepay for networking between devices - tensor_converter / tensor_decoder mode=flatbuf for using Flatbuffers |
Pipeline Flow Control in Face Detection | - OpenVINO + tflite + passthrough - OpenVINO + tflite + tensorpick |
- v4l2src for input image stream - tensor_if for flow control |
Application | Implementations | Used gstreamer/nnstreamer feature |
---|---|---|
Image Classification |
- Native App with Pipeline API - Native App with Single API |
- appsrc for input image data from hardward camera - Machine Learning Inference Native API |
Object Detection |
- Native App with Pipeline API | - appsrc for input image data from hardward camera - tensor_decoder mode=bounding_boxes for postprocessing- Pipeline API |
Text Classification |
- Native App with Pipeline API - .NET App with C# API |
- appsrc for input text data - Pipeline API - C# API |
Orientation Detection |
- Native App with Pipeline API - .NET App with C# API |
- tensor_src_tizensensor type=accelerometer for hardware sensor data- Pipeline API - C# API |
Face Landmark |
- Tizen IoT App | - v4l2src for input data from camera - tizenwlsink for lendering video to display - cairooverlay for drawing dots |
Application | Implementations | Used gstreamer/nnstreamer feature |
---|---|---|
Object Detection |
- w/ JNI + ahc2src - w/ JNI + amcsrc |
- ahc2src for hardware camera input- amcsrc for media file input |
NNStreamer Multi Model Face Detection + Hand Detection + Object Detection + Pose Estimation |
- JNI App - GooglePlay App |
- ahc2src for hardware camera input- application code for multiple pipeline control |
Sample App using NNStreamer JAVA API |
- JAVA w/o JNI | - appsrc for input image data from hardward camera- videoflip for flipping image- NNStreamer JAVA API |