[Documentation] Update the root README.md
authorMyungJoo Ham <myungjoo.ham@samsung.com>
Wed, 5 Sep 2018 07:26:43 +0000 (16:26 +0900)
committerGeunsik Lim <leemgs@users.noreply.github.com>
Mon, 10 Sep 2018 07:42:53 +0000 (16:42 +0900)
- Updated the developmental status of each element.
- Updated URLs
- The whole document is revised.
- The component list is detached from the root. (per the comment of @leemgs)

Partially addressing #490.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Documentation/component-description.md [new file with mode: 0644]
README.md

diff --git a/Documentation/component-description.md b/Documentation/component-description.md
new file mode 100644 (file)
index 0000000..018802c
--- /dev/null
@@ -0,0 +1,81 @@
+# Gstreamer Stream Data Types
+
+- other/tensor
+- other/tensors
+- other/tensorsave (Planned)
+
+findtype specifics: refer to the wiki (other/tensorsave)
+
+Note that in any frame in a stream of other/tensor and other/tensors, there should be only ONE instance of other/tensor or other/tensors.
+
+Note that except for tensor\_decoder, which accepts data semantics from pipeline developers, and tensor\_converter, which accepts data semantics from sink pad caps, any NNStreamer tensor plugins or any instances of tensor streams should be agnostic to the data semantics. With data semantics, we know whether the corresponding tensor denotes for video, audio, text, or any other "meaningful data types". The NNStreamer elements and data-pipeline should treat every other/tensor and other/tensors as arrays of numbers only.
+
+# Gstreamer Elements (Plugins)
+
+Note that "stable" does not mean that it is complete. It means that it has enough test cases and complies with the overall design; thus, "stable" features probably won't be modified extensively. Features marked "experimental" can be modified extensively due to its incomplete design and implementation or crudeness.
+
+In this page, we focus on the status of each elements. For requirements and designs of each element, please refer to the README.md of the element.
+
+- [tensor\_converter](gst/tensor_converter/)
+  - Video (stable)
+    - video/x-raw. Colorspaces of RGB, BGRx, Gray8 are supported.
+    - Caution: if width is not divisible by 4, RGB/Gray8 video incurs memcpy.
+  - Audio (experimental)
+    - audio/x-raw. Users should specify the number of frames in a single buffer, which denotes the number of frames in a single tensor frame with the property of ```frames-per-buffer```. Needs more test cases.
+  - Text (experimental)
+    - text/x-raw. Partially implemented. Needs fixes and test cases.
+- [tensor\_filter](gst/tensor_filter/)
+  - Main (stable)
+    - Supported features
+      - Fixed input/ouput dimensions (fixed by subplugin)
+      - Flexible dimensions (output dimension determined by subplugin according to the input dimension determined by pipeline initialization)
+      - Invoke subplugin with pre-allocated buffers
+      - Invoke subplugin and let subplugin allocate output buffers.
+      - Accept other/tensors.
+    - TODO: Allow to manage synchronization policies.
+    - TODO: Recurrent models. The first target unit-test is LSTM.
+  - Tensorflow-Lite (stable)
+  - Custom (stable)
+  - Tensorflow (The next incoming TODO)
+  - Other NNFW TBD (caffe2, caffe, ...)
+- [tensor\_sink](gst/tensor_sink/) (stable)
+  - TODO: ROS integration (not determined if this will be yet another element or not)
+- [tensor\_transformer](gst/tensor_transformer/) (experimental)
+  - Only fraction of supposed features are supported.
+  - TODO: a lot more features to be implemented. Even the implemented feature is incomplete.
+  - Note: a few chosen partial features will be added & tested for Project:NS.
+- [tensor\_merge](gst/tensor_merge/) (planned)
+- [tensor\_split](gst/tensor_split/) (experimental)
+  - Basic feature is implemented. Need test & verficiation.
+  - Note: a few chosen partial features is being implemented & tested for Project:NS.
+- [tensor\_decoder](gst/tensor_decoder/) (experimental)
+  - An example feature is implemented as a template.
+  - TODO: prepare tensor-to-media transforms for many popular neural network models.
+    - Adding more functionalities for sample applications: jihyuck-park
+- [tensor\_mux](gst/tensor_mux/) (stable)
+- [tensor\_demux](gst/tensor_demux/) (stable)
+- [tensor\_source](gst/tensor_source/) (planned)
+- [tensor\_save](gst/tensor_save/) (planned)
+- [tensor\_load](gst/tensor_load/) (planned)
+- [tensor\_aggregator](gst/tensor_aggregator) (experimental)
+  - Basic features being implemented without enough test cases.
+  - Note: a few choen partial features is being implemented & tested for Project:NS.
+
+Note that test elements in /tests/ are not elements for applications. They exist as scaffoldings to test the above elements especially in the case where related elements are not yet implemented.
+
+# Other Components
+- CI ([@private server](http://nnsuite.mooo.com/) (stable): Up and running
+- CI (@AWS) (experimental): WIP (sewon-oh, leemgs)
+- CD (@launchpad / @OBS) (planned)
+- [Test cases](tests/): Mandatory unit test cases required to pass for each PR.
+  - Planned to use [SSAT](https://github.com/myungjoo/SSAT) later.
+  - Each element and feature is required to register its testcases here.
+- [Example applications](nnstreamer_example/): Example gstreamer applications using nnstreamer and example sub-plugins for nnstreamer. The binaries from this directory is not supposed to be packaged with the main binary package.
+- Packaing for Distros / SW-Platform Compatibility.
+  - [Tizen](packaging/) (stable): RPM packaging for Tizen 5.0+. It is expected to be compatible with other RPM-based distros; however, it is not tested or guaranteed.
+  - [Ubuntu](debian/) (stable): DEB packaging for Ubuntu 16.04. It is highly expected to be compatible with later versions as well; but, not tested yet. Debian is not tested, either.
+  - Yocto (experimental)
+  - Android (planned with high priority)
+  - iOS (planned with low priority)
+- [Common library](common/)
+- [Common headers](include/)
index 3b4c6bf..a03bda2 100644 (file)
--- a/README.md
+++ b/README.md
@@ -4,12 +4,14 @@ Neural Network Support as Gstreamer Plugins.
 
 NNStreamer is a set of Gstreamer plugins, which allows
 Gstreamer developers to adopt neural network models easily and efficiently and
-neural network developers to manage stream pipelines and their filters easily and efficiently
+neural network developers to manage stream pipelines and their filters easily and efficiently.
+
+[Architectural Description](https://github.com/nnsuite/nnstreamer/wiki/Architectural-Description) (WIP)
 
 ## Objectives
 
 - Provide neural network framework connectivities (e.g., tensorflow, caffe) for gstreamer streams.
-  - **Efficient Streaming for AI Projects**: Neural network models wanted to use efficient and flexible streaming management as well. 
+  - **Efficient Streaming for AI Projects**: Neural network models wanted to use efficient and flexible streaming management as well.
   - **Intelligent Media Filters!**: Use a neural network model as a media filter / converter.
   - **Composite Models!**: Allow to use multiple neural network models in a single stream instance.
   - **Multi Modal Intelligence!**: Allow to use multiple sources for neural network models.
@@ -19,88 +21,22 @@ neural network developers to manage stream pipelines and their filters easily an
   - Allow any neural network developers to manage media streams fairly easily.
 
 ## Maintainers
-* MyungJoo Ham (myungjoo.ham@samsung.com)
+* [MyungJoo Ham](https://github.com/myungjoo/)
 
 ## Reviewers
-* Jijoong Moon (jijoon.moon@samsung.com)
-* Geunsik Lim (geunsik.lim@samsung.com)
-* Sangjung Woo (sangjung.woo@samsung.com)
-* Wook Song (wook16.song@samsung.com)
-* Jaeyun Jung (jy1210.jung@samsung.com)
-* Jinhyuck Park (jinhyuck83.park@samsung.com)
-* Hyoungjoo Ahn (hello.ahn@samsung.com)
-* Sewon Oh (sewon.oh@samsung.com)
+* [Jijoong Moon](https://github.com/jijoongmoon)
+* [Geunsik Lim](https://github.com/leemgs)
+* [Sangjung Woo](https://github.com/again4you)
+* [Wook Song](https://github.com/wooksong)
+* [Jaeyun Jung](https://github.com/jaeyun-jung)
+* [Jinhyuck Park](https://github.com/jinhyuck-park)
+* [Hyoungjoo Ahn](https://github.com/helloahn)
+* [Sewon Oh](https://github.com/ohsewon)
 
 ## Components
 
-Note that this project has just started and most of the components are in design phase.
-
-### Gstreamer Type
-
-- other/tensor
-- other/tensors (W.I.P. jijoong-moon)
-- other/tensorsave (W.I.P. myungjoo)
-
-findtype specifics: refer to the wiki (other/tensorsave)
-meta specifics: W.I.P. jijoong-moon
-
-### Gstreamer Elements (Plugins)
-
-- tensor\_converter
-  - Video
-    - Prototype for video/xraw (RGB/BGRx) is implemented.
-    - Caution: if width is not divisible by 4, RGB video incurs memcpy.
-  - Audio
-    - Planned (wooksong)
-  - Text
-    - Planned
-- tensor\_filter
-  - Main
-    - Supported
-      - Fixed input/ouput dimensions (fixed by subplugin)
-      - Flexible dimensions (output dimension determined by subplugin according to the input dimension determined by pipeline initialization)
-      - Invoke subplugin with pre-allocated buffers
-      - Invoke subplugin and let subplugin allocate output buffers.
-    - TODO: Accept other/tensors.
-    - TODO: Allow to manage synchronization policies.
-  - Tensorflow-Lite
-    - Supported: jinhyuck83-park hello-ahn
-  - Custom
-    - Supported with example custom subplugins.
-  - Other NNFW TBD (coming soon: tensorflow, caffe2, caffe)
-- tensor\_sink
-  - Supported jy1210-jung
-  - TODO: ROS integration
-- tensor\_transformer
-  - Partially supported.
-  - TODO: a lot of features to be implemented
-- tensor\_merge
-  - Planned
-- tensor\_decode
-  - Partially supported: jijoong-moon
-  - TODO: prepare tensor-to-media transforms for many popular neural network models.
-- tensormux
-  - Supported
-    - Mux mutiple "other/tensor"s and make "other/tensors"
-    - Currently maximum number of tensor to be muxed is 16
-  - TODO: Allow to manage synchronization policies.
-- tensordemux
-  - Supported
-    - Demux "other/tensors' to "other/tensor"s
-    - tensor to be pushed to downstream can be choosen with "tensorpick" option.
-- tensor\_source
-  - Planned
-- tensor\_save
-  - Planned
-- tensor\_load
-  - Planned
-
-Note that test elements in /tests/ are not elements for applications. They exist as scaffoldings to test the above elements especially in the case where related elements are not yet implemented.
-
-### Other Components
-- CI (internal in-house): up and running. sewon-oh
-- CI (github.com): W.I.P. sewon-oh, leemgs
-- Stream test cases: partially supported. will be extended by sangjung-woo wook16-song
+Note that this project has just started and many of the components are in design phase.
+In [Component Description](Documentation/component-description.md) page, we describe nnstreamer components of the following three categories: data type definitions, gstreamer elements (plugins), and other misc components.
 
 ## Getting Started
 For more details, please access the following manual.
@@ -110,13 +46,10 @@ For more details, please access the following manual.
 * Press [Here](Documentation/how-to-use-testcases.md) to read how to write and run Test Cases.
 
 ## Usage Examples
-
-The implementation is not there yet for using neural network frameworks.
+- [Example app with camera](nnstreamer_example/example_cam) (stable)
+- Wiki page [usage example screenshots](https://github.com/nnsuite/nnstreamer/wiki/usage-examples-screenshots) (stable)
 
 ## CI Server
-For more details, please access the following web page.
-* Press [Here](http://aaci.mooo.com/nnstreamer/ci/standalone/).
-* Note that the CI server is being migrated and you won't be able to access it.
 
-TAOS-CI config files for nnstreamer
-* Press [Here](Documentation/ci-config).
+- [CI service status](http://nnsuite.mooo.com/)
+- [TAOS-CI config files for nnstreamer](Documentation/ci-config).