/nnstreamer-example

Example applications of nnstreamer. Note that we have to enable the 'apptest" CI module in the near future.

Primary LanguageCGNU Lesser General Public License v2.1LGPL-2.1

NNStreamer Examples

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

Quick start guide for NNStreamer example

Use PPA

  • 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]

Usage Examples

Text classification

$ cd /usr/lib/nnstreamer/bin
$ ./nnstreamer_example_text_classification_tflite

Refer to this link for more examples : [NNStreamer example]

Example List

Ubuntu Native

Application Implementations Used gstreamer/nnstreamer feature
image-classification
Image Classification
- C (tflite)
- Python (tflite)
- C (ONE)
- C (caffe2)
- v4l2src for input image stream
- textoverlay for showing labels
object-detection
Object Detection
- C++ (tf)
- C++ (tflite)
- Python (tflite)
- v4l2src for input image stream
- cairooverlay for drawing boxes
pose-estimation
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-2cam
Object Detection with 2 cameras
- C++ (tflite) - v4l2src for input image stream
- cairooverlay for drawing boxes

With gst-launch-1.0

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

Tizen Applications

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
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
Text Classification
- Native App with Pipeline API
- .NET App with C# API
- appsrc for input text data
- Pipeline API
- C# API
orientation-detection
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
Face Landmark
- Tizen IoT App - v4l2src for input data from camera
- tizenwlsink for lendering video to display
- cairooverlay for drawing dots

Android Applications

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
camera-java-api
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