[Documentation] Update README.md entry for tensor_filter
authorMyungJoo Ham <myungjoo.ham@samsung.com>
Fri, 7 Sep 2018 06:27:51 +0000 (15:27 +0900)
committerGeunsik Lim <leemgs@users.noreply.github.com>
Mon, 10 Sep 2018 07:46:51 +0000 (16:46 +0900)
Addressing #490, this adds more information about tensor_filter.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
gst/tensor_filter/README.md

index c5cf42a..147dad1 100644 (file)
@@ -1,10 +1,50 @@
 # NNStreamer::tensor\_filter
 
-## Motivation
+This is the main element of the whole NNStreamer project. This connects gstreamer data stream with neural network frameworks (NNFW) such as Tensorflow or Caffe. ```tensor_filter``` is supposed to attach an instance of neural network model with the given NNFW as a filter to a gstreamer stream. The input/output stream data type is either ```other/tensor``` or ```other/tensors```.
 
-This is the main element of the whole NNStreamer suite. This connects gstreamer data stream with neural network frameworks (NNFW) such as Tensorflow or Caffe. ```tensor_filter``` is supposed to attach an instance of neural network model with the given NNFW as a filter to a gstreamer stream. The input/output stream data type is ```other/tensor```.
+With ```other/tensor```, you may push (or pull) a single tensor for an instance of inference for the given model.
 
-## Components
+With ```other/tensors```, you may push (or pull) multiple tensors for an instance of inference for the given model. For example, if the output of a neural network model has two distinctive output tensors, "Bounding boxes, uint32[100][4]" and "Labels, uint32[100]", you may use ```other/tensors``` as the source pad capability to have both tensors in a single frame of the source pad. Note that ```tensor_filter``` supports one always source pad and one always sink pad.
+
+# Supported Features
+
+- Multi-tensor (experimental. from 0.0.2+)
+- Tensorflow-lite (stable. from 0.0.1)
+- Custom filters (stable. from 0.0.1)
+
+# Planned Features
+
+- Framerate policies (for 0.0.2)
+- Timestamp handling (for 0.0.2)
+- Recurrent network support (for 0.0.2)
+- Tensorflow (later than 0.0.2)
+- Caffe/Caffe2 (later than 0.0.2)
+
+# Known Bugs or Concerns
+
+- Multi-tensor input/output is not throughly tested.
+
+# Sink Pads
+
+One always sink pad exists. The capability of sink pad is ```other/tensor``` and ```other/tensors```.
+
+The number of frames in a buffer is always 1. Althugh the data semantics of a tensor may have multiple distinct data frames in a single tensor.
+
+# Source Pads
+
+One always source pad exists. The capability of source pad is ```other/tensor``` and ```other/tensors```.
+
+The number of frames in a buffer is always 1. Althugh the data semantics of a tensor may have multiple distinct data frames in a single tensor.
+
+# Performance Characteristics
+
+- We do not support in-place operations with tensor\_filter. Actually, with tensor\_filter, in-place operations are considered harmful for the performance and correctness.
+- It is supposed that There is no memcpy from the previous element's source pad to this element's sink or from this element's source to the next element's sink pad.
+    - This is something we need to verify later (later than 0.0.2).
+
+# Details
+
+## Sub-Components
 
 ### Main ```tensor_filter.c```