Jaeyun [Thu, 20 Dec 2018 04:16:03 +0000 (13:16 +0900)]
[Filter/TF] fix warning
To fix coverity issue, init variables and code clean.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Tue, 18 Dec 2018 04:44:07 +0000 (13:44 +0900)]
[Filter/TF/TF-lite] remove link of tensor-common
remove dependency of tensor-common and unnecessary headers
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
HyoungjooAhn [Mon, 17 Dec 2018 10:26:01 +0000 (19:26 +0900)]
[Filter/Tensorflow] take the original rank of model internally
to run model, hold the original rank internally
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Wook Song [Mon, 17 Dec 2018 02:22:06 +0000 (11:22 +0900)]
[Test/TensorMux] Add test cases for multi-tensors multiplexing
This provides unit test cases for multiplexing of multi-tensors.
Signed-off-by: Wook Song <wook16.song@samsung.com>
Wook Song [Mon, 17 Dec 2018 02:14:03 +0000 (11:14 +0900)]
[TensorMux] Support multi-tensors for input
This patch makes the TensorMux element have multi-tensors as its input
stream.
Signed-off-by: Wook Song <wook16.song@samsung.com>
Jaeyun [Wed, 19 Dec 2018 03:44:24 +0000 (12:44 +0900)]
[Decoder] remove build warning
rename internal functions and sub-plugin callback
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Mon, 17 Dec 2018 04:29:04 +0000 (13:29 +0900)]
[Meson/Submodule] install both static/shared libraries
build and install both static/shared libraries (filter-submodules and common libs)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 12 Dec 2018 11:30:23 +0000 (20:30 +0900)]
[Meson] add installation
1. add option to install examples
2. set install path and add configuration
3. install libraries, headers, and examples
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 12 Dec 2018 07:45:18 +0000 (16:45 +0900)]
[Meson/Test] add code to make bmp2png for test
1. make bmp2png for the unittest
2. set gtest dependency false
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 12 Dec 2018 07:28:18 +0000 (16:28 +0900)]
[Meson/Example] dependency of examples
set proper dependencies for each examples.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 12 Dec 2018 06:24:58 +0000 (15:24 +0900)]
[Meson] code clean
1. add flags for tensorflow and tensorflow-lite
2. set objs with the flags and dependency of libraries
3. build with each plugin files
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Wook Song [Mon, 17 Dec 2018 08:05:29 +0000 (17:05 +0900)]
[Test] Set LD_PRELOAD to the nnstreamer library
Fixes #919
This patch set LD_PRELOAD to libnnstreamer.so in runTest.sh for testing
custom filter and arithmetic/dimchg/stand/transpose/typcast transforms
so that fixing the issue related to the warning messages about
libtensor_filter_tflitecore.so load failure.
Signed-off-by: Wook Song <wook16.song@samsung.com>
HyoungjooAhn [Fri, 14 Dec 2018 02:55:34 +0000 (11:55 +0900)]
[bugfix] fix checking the dimension of input tensor
logic is fixed to make it work properly for the any type of input dimension
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Jaeyun [Wed, 12 Dec 2018 04:25:08 +0000 (13:25 +0900)]
[Example/Cmake] remove unnecessary link
Examples don't need to link nnstreamer libs.
Remove this link and add modules for each examples.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 12 Dec 2018 03:57:27 +0000 (12:57 +0900)]
[Example] remove common header
In custom filter examples, remove tensor-common header.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 12 Dec 2018 07:34:29 +0000 (16:34 +0900)]
[Test] add plugin path
set plugin path for the unittest using nnstreamer elements.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
HyoungjooAhn [Tue, 11 Dec 2018 04:05:53 +0000 (13:05 +0900)]
[Filter] add condition to check input/output name
check the existance of the value before free for input/output name properties
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Jaeyun Jung [Mon, 10 Dec 2018 14:50:12 +0000 (23:50 +0900)]
[Transform/Orc] remove unnecessary memcpy
Related issue: #975
In arith mode, copying input array to output is unnecessary.
To fix this, add source in orc functions and set the data ptr for each operator.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Mon, 10 Dec 2018 10:27:33 +0000 (19:27 +0900)]
[Meson/CustomFilter] link custom-filter obj
In example custom-filter, link custom-filter.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Mon, 10 Dec 2018 04:53:48 +0000 (13:53 +0900)]
[Filter/TF] fix warning and check dependency
1. check dependency of protobuf, tensorflow
2. fix build warning and code indentation
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Sat, 8 Dec 2018 08:58:05 +0000 (17:58 +0900)]
[Filter] Build Error Fix (gcc > 6)
Recent code commit has introduced the following errors in
modern gcc:
```
[ 20%] Building C object gst/tensor_filter/CMakeFiles/tensor_filterOBJ.dir/tensor_filter.c.o
cd /<<PKGBUILDDIR>>/build/gst/tensor_filter && /usr/bin/cc -DENABLE_TENSORFLOW_LITE -DHAVE_ORC=1 -DVERSION=\"0.1.0\" -I/<<PKGBUILDDIR>>/gst/nnstreamer -isystem /usr/include/gstreamer-1.0 -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/orc-0.4 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Werror -fPIC -g -std=c89 -Wno-sign-compare -o CMakeFiles/tensor_filterOBJ.dir/tensor_filter.c.o -c /<<PKGBUILDDIR>>/gst/tensor_filter/tensor_filter.c
In file included from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9:0,
from /usr/include/glib-2.0/glib/gtypes.h:32,
from /usr/include/glib-2.0/glib/galloca.h:32,
from /usr/include/glib-2.0/glib.h:30,
from /usr/include/gstreamer-1.0/gst/gstinfo.h:27,
from /<<PKGBUILDDIR>>/gst/tensor_filter/tensor_filter.c:57:
/<<PKGBUILDDIR>>/gst/tensor_filter/tensor_filter.c: In function ‘gst_tensor_filter_set_property’:
/<<PKGBUILDDIR>>/gst/tensor_filter/tensor_filter.c:560:51: error: comparison between pointer and zero character constant [-Werror=pointer-compare]
g_assert (prop->input_meta.info[i].name != '\0');
^
/<<PKGBUILDDIR>>/gst/tensor_filter/tensor_filter.c:560:21: note: did you mean to dereference the pointer?
g_assert (prop->input_meta.info[i].name != '\0');
^
/<<PKGBUILDDIR>>/gst/tensor_filter/tensor_filter.c:581:52: error: comparison between pointer and zero character constant [-Werror=pointer-compare]
g_assert (prop->output_meta.info[i].name != '\0');
^
/<<PKGBUILDDIR>>/gst/tensor_filter/tensor_filter.c:581:21: note: did you mean to dereference the pointer?
g_assert (prop->output_meta.info[i].name != '\0');
^
```
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Fri, 7 Dec 2018 10:40:57 +0000 (19:40 +0900)]
[Meson] add unittest
check dependency of gtest and add exe to run unittest
(command '$ ninja test' will build and start gtest)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Fri, 7 Dec 2018 10:34:42 +0000 (19:34 +0900)]
[Meson] code clean
1. rename nnstreamer include path and dependencies
2. link proper objs
3. fix indentation
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Fri, 7 Dec 2018 07:55:03 +0000 (16:55 +0900)]
[Meson] rename gst/glib dependency
rename dependencies of gstreamer, glib (follows gst-base)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun Jung [Sat, 8 Dec 2018 02:05:47 +0000 (11:05 +0900)]
[Converter] code clean
1. move function video-stride to converter.
2. move mainpage tag to nnstreamer.c.
3. in nnstreamer.c, include config header for orc feature.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
HyoungjooAhn [Tue, 4 Dec 2018 07:14:25 +0000 (16:14 +0900)]
[Filter/Tensorflow] upload tensorflow draft
this is a draft of tensorflow filter
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Jaeyun [Thu, 6 Dec 2018 10:12:13 +0000 (19:12 +0900)]
[Test] add more testcases
Using gst-harness, add testcases for the property acceleration in tensor-transform.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Fri, 7 Dec 2018 03:50:57 +0000 (12:50 +0900)]
[Transform/Orc] code clean to prepare meson
1. Orc feature is defined in config, include config header to prepare meson build.
2. Set default property value with orc feature.
3. Add log message to indicate orc acceleration.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Fri, 7 Dec 2018 04:14:06 +0000 (13:14 +0900)]
[Meson] include orc
1. set base-args and include orc features
2. check orc lib and orcc, and generate orc files in tensor-transform
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 5 Dec 2018 08:14:33 +0000 (17:14 +0900)]
[Transform] apply orc functions
1. add flags to check orc support
2. add property to set orc acceleration
3. apply orc functions for arith/typecast
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 5 Dec 2018 08:10:32 +0000 (17:10 +0900)]
[Orc] update functions for divide, typecast
1. add function _div (float and double only)
2. add typecast to same type (copy input array to output)
3. update opcode for typecast
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
HyoungjooAhn [Wed, 5 Dec 2018 11:27:16 +0000 (20:27 +0900)]
[Filter] fix cmake typo about tensorflow
fix typos at CMakeLists.txt of tensor_filter
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Jaeyun [Tue, 4 Dec 2018 10:16:47 +0000 (19:16 +0900)]
[Orc] add functions for typecast
1. add typecast functions
2. add testcases for typecast
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
HyoungjooAhn [Tue, 4 Dec 2018 11:43:05 +0000 (20:43 +0900)]
[Bug Fix] fix unused variables bug
it resolves #957 about unused variables
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Geunsik Lim [Mon, 3 Dec 2018 11:50:07 +0000 (20:50 +0900)]
[Tool] Added a front-end GUI toolkit
Fixed issue #878.
This commit is to provide a front-end GUI application to connect
tools such as tracing, debugging, profiling packages.
After doing a packaging work of back-end applications, the each menu
is going to be interconnected each other.
**Changes proposed in this PR:**
1. Added front-end GUI application
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Jaeyun [Mon, 3 Dec 2018 08:31:35 +0000 (17:31 +0900)]
[Orc] update function for operator add/mul
1. add functions for operator add/mul
2. add functional testcases for orc
TODO :
1. support int64
2. add typecast functions
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Mon, 3 Dec 2018 06:33:04 +0000 (15:33 +0900)]
Start of 0.1.0 rc1 development
This commit marks the start of 0.1.0 rc1 development.
The version is jumped to 0.1.0 as it has now enough
number of features for a few real products/applications
and we have full CI/CD support.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 3 Dec 2018 05:45:54 +0000 (14:45 +0900)]
Release of v0.0.3
As Sprint 1811A and 1811B conclude along with Coverity/SVACE issues cleared, 0.0.3 is hereby released.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Tue, 27 Nov 2018 12:28:11 +0000 (21:28 +0900)]
[Common/Subplugin] Internal API to handle subplugins
Any subplugin-using elements may call get_subplugin () to
get internal data (set of callbacks) of the subplugin.
Next Step: modify tensor_decoder to use nnstreamer_subplugin.h
and test with it.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Fri, 30 Nov 2018 11:10:06 +0000 (20:10 +0900)]
[Filter] update macros to avoid assertion
1. check fw and fw-function before calling in macro
2. return true in _start() and _stop() vmethods
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Mon, 3 Dec 2018 00:56:47 +0000 (09:56 +0900)]
[Decoder] Coverity issue 1036581 fix
Coverity wants to check the return value of
_tensordec_process_plugin_options.
Let't check and log if there is an unwanted return value.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun Jung [Fri, 30 Nov 2018 16:15:51 +0000 (01:15 +0900)]
[Transform] limit typecast in arith mode
set typecast option only in the first
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Thu, 29 Nov 2018 08:30:25 +0000 (17:30 +0900)]
[Orc] initial commit to add orc file
add command to generate -orc c and h files in tensor-transform
TODO update orc functions and link to tensor-transform
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
sewon.oh [Thu, 29 Nov 2018 08:08:31 +0000 (17:08 +0900)]
[meson] add meson.build for example apps and custom filter
For ssat and example, add meson.build
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
MyungJoo Ham [Fri, 30 Nov 2018 02:28:42 +0000 (11:28 +0900)]
[Filter] Support pipeline stop and go.
Pipeline Stop does not always mean pipeline close.
A pipeline may be paused and resumed (stop and start).
Thus, do not clean up internal data structure for stop.
Instead just notify the plugins of the events with
callbacks.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 29 Nov 2018 02:26:11 +0000 (11:26 +0900)]
[Decoder] Do not die for option errors.
With dynamic pipeline configurations, the mode/option
properties may become incomplete. Do not die for such status
if the pipeline is not active.
This is critical for GUI toolkits.
Fixes a subitem of #827
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Wed, 28 Nov 2018 06:05:38 +0000 (15:05 +0900)]
[Repo] Add runTest.sh for the dummy LSTM Test
- Add python script to generate input stream & golden data.
- Add runTest.sh to run.
repository
+-----------+
+---------------------| slot 1 |<-------------------- ---+
| +-----------+ |
| +------------------| slot 0 |<----------------------+ |
| | +-----------+ | |
| | | |
| | +---+ +---+ +---+ | |
| +-->repo_src:0 --->| |-->| |->| |-->repo_sink:0 -+ |
+----->repo_src:1 --->| M | | F | | D |-->repo_sink:1 ---+
filesrc(new)-->| | | | | | |
+---+ +---+ +---+ -->out_%1d.log
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Tue, 27 Nov 2018 07:57:26 +0000 (16:57 +0900)]
[Repo] Split Cond variable to use push and pull the data
In order to keep the synchronization better, two cond variable is
used.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
MyungJoo Ham [Fri, 30 Nov 2018 02:43:20 +0000 (11:43 +0900)]
[Common/Conf] Fix coverity issue, uninitialized pointer read
With auto-ptr, it tries to access read the pointer.
Thus, it should be initialized somehow.
Fixes Coverity Issue 1036166
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Thu, 29 Nov 2018 11:00:50 +0000 (20:00 +0900)]
[Repo] Fix the test bug
Caps for the tensor_reposrc has bug. unit8 should be uint8.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Tue, 27 Nov 2018 00:34:10 +0000 (09:34 +0900)]
[Repo] Add MIME to limit for the tensor/tensors only for now.
Add MIME check becase currently onlye tensor/tensors are supported
for now.
**Changes proposed in this PR:**
- Added TOC generator for README.md
Resolves:
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Thu, 29 Nov 2018 02:05:47 +0000 (11:05 +0900)]
[Repo] Fix bug return without releasing lock
tensor_repo.c::gst_tensor_repo_add_repodata, unlock should be used
before return.
Resolves: #933
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Wed, 28 Nov 2018 02:33:42 +0000 (11:33 +0900)]
[DummyLSTM] Add Dummy LSTM custom example
Add Dymmy LSTM custom example. Two input stream and two outputstream.
First input is recursion and Second input is new input stream. First
output is recursion stream which is matched with first inputstream and
the second output stream is matched with second input stream.
- in2_tmp0 = (in2+in1)/2 (in2_tmp0 : mimic sigmoid)
- in2_tmp1 = tanh(in2)
- in0 = in0 x in2_tmp0
- in0 = in0 + (in2_tmp0 x in2_tmp1)
- out0 = in0
- out1 = in1 = (tanh(in0) x in2_tmp0)
+------------+
in0 ------->| |----> out0
in1 ------->| dummy LSTM |----> out1
in2 (new)-->| | |
+------------+ +--> out (equal out1)
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Mon, 26 Nov 2018 06:42:53 +0000 (15:42 +0900)]
[Repo/RNN] Add dummy RNN test case
In order to test recurtion & Tensor repo, dumm RNN test case is added.
It generate 10 4x4x4x1 tensors and use first input of RNN. Second
input for RNN is generated by tensor_reposrc which take from
Tensor_Repo. Of course, the first tensor of tensor_reposrc is filled
with zero. After simple calcution,
RNN (build/nnstreamer_exampel/custom_exampe_RNN/libdummyRNN.so ) push
the result and tensor_reposink upload this output into Tensor_Repo.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
MyungJoo Ham [Thu, 29 Nov 2018 00:39:32 +0000 (09:39 +0900)]
[Common/Conf] Close g_dir_open instance.
The returned object must be closed.
Reported-by: Wook Song <wook16.song@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Fri, 23 Nov 2018 02:12:06 +0000 (11:12 +0900)]
[Repo] Add testcases for tensor_reposink/tesnor_reposrc
3 testcases are added.
- ID 0 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
- ID 0 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
ID 1 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
- ID 0 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
ID 1 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
ID 2 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
Jaeyun [Wed, 28 Nov 2018 07:19:48 +0000 (16:19 +0900)]
[Orc] add init function
add orc_init to initialize orc library.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Tue, 27 Nov 2018 09:39:22 +0000 (18:39 +0900)]
[Transform/Orc] replace memcpy
1. define macro nns_memcpy/nns_memset
2. include liborc and use orc_memcpy instead in plugin tensor-transform and tensor-aggregator.
TODO check cmake to use orc lib
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
jijoong.moon [Tue, 27 Nov 2018 04:57:27 +0000 (13:57 +0900)]
[Repo] Add & Modify for meson.build for tensor_repo
- Add meson.build for tensor_reposrc & tensor_reposink
- Modify meson.build in nnstreamer root dir.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 10:24:32 +0000 (19:24 +0900)]
[Common/Conf] API to get conf values.
We are going to allow users to configure paths of
filters, decoders, and custom filters.
This is the API skeletons for the first step of #804
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 07:41:53 +0000 (16:41 +0900)]
[CMake] Do not download anything during build.
Let the user download the model at run-time with the given scripts.
They will be able to do so after #909
With #909, this concludes #866
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Wook Song [Mon, 26 Nov 2018 10:08:31 +0000 (19:08 +0900)]
[Filter/CMAKE] Remove unnecessary message printing out
This patch removes unnecessary message printed out by the cmake script
in the filter directory.
Signed-off-by: Wook Song <wook16.song@samsung.com>
jijoong.moon [Fri, 23 Nov 2018 02:53:29 +0000 (11:53 +0900)]
[Repo] Use GST_DEBUG instead of silent_debug
Replace custom debug/error/warning macro to GST_*
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Fri, 23 Nov 2018 07:49:28 +0000 (16:49 +0900)]
[Repo] Change GstTensorData to GstTensorRepoData
In order not to confuse, change the name GstTensorData to
GstTensorRepoData.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Fri, 23 Nov 2018 00:33:44 +0000 (09:33 +0900)]
[Repo] Change Element Name & Fix Sync Bug when EOS
- Element Name is changed.
. tensor_repopush -> tensor_reposink
. tensor_repopop -> tensor_reposrc
- There is hanging bug when reposrc is tryig to get buffer and
reposink set eos signal meanwhile. It is fixed by double check eos
signal during cond wait.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Thu, 22 Nov 2018 06:02:28 +0000 (15:02 +0900)]
[Repo/Push-Pop] Implement NYI part of tensor_reppop.
- Implement NYI part of tensor_reppop. It's parent element is
GstPushSrcClass and it's relevant vm functions are implemented such
as (create*).
- Several utility functions of tensor_repo is newly implemented.
- Some changes are made to handle thread synchronization.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Tue, 20 Nov 2018 10:03:29 +0000 (19:03 +0900)]
[Repo/Pop] Tensor_RepoPop Draft
This is the the anthor part to complete the tensor
repo. tensor_repopop get the tensor repo data.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Wed, 21 Nov 2018 01:46:32 +0000 (10:46 +0900)]
[Repo/Push] Use Has Table to handle repo & add slot_id property
- Instead of single linked list, Hash table is used to manage repo's
data. Hash Table is "key [slot_id], GstTensorData*" where slot_id is
given by user when the tensor_repopush is used.
- Slot Id is added to use as key for hash table. This should be same
with tensor_repopop element. "tensor_repopop" will withdraw the data
according to this slot_id.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 07:16:31 +0000 (16:16 +0900)]
[CMake] Install example apps to "EXAMPLE_EXEC_PREFIX".
Do not install example apps into /usr/bin, but to /usr/lib/nnstreamer/bin/
Partially addresses the third subitem of #866
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 05:18:52 +0000 (14:18 +0900)]
[Filter] Fix coverity issue, pointer out of scope.
This fixes the coverity issue, pointer out of scope.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 05:09:24 +0000 (14:09 +0900)]
[Meson] Support Ubuntu/Xenial and Tizen.
1. Both Tizen and Ubuntu/Xenial does not support meson 0.47.
Lower down the Meson version requirement.
2. Add meson support for repo-push
Fixes #897
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Mon, 26 Nov 2018 04:34:07 +0000 (13:34 +0900)]
[Example] remove unnecessary caps-filter
1. remove caps-filter between tensor-converter and tensor-filter. (tensor-converter will get peer caps and set possible caps.)
2. update download link to get tf-lite model
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 21 Nov 2018 10:41:34 +0000 (19:41 +0900)]
[Converter] get possible caps from downstream
When received caps query, get the possible caps of peer pad and convert it to media caps.
Related issue #818
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
HyoungjooAhn [Mon, 26 Nov 2018 10:45:00 +0000 (19:45 +0900)]
[Filter/TFLite] code clean
move unused method to private and remove extern methods
Signed-off-by: HyoungjooAhn <hello.ahn@samsung.com>
Wook Song [Mon, 26 Nov 2018 01:29:40 +0000 (10:29 +0900)]
[PkgConfig] Update 'Libs' field
This patch fills the 'Libs' field in the pkg-config file.
Signed-off-by: Wook Song <wook16.song@samsung.com>
Wook Song [Mon, 26 Nov 2018 01:25:22 +0000 (10:25 +0900)]
[Dist/Debian] Change installation directories based on multiarch scheme
This patch, based on the multiarch directory scheme of Debian/Ubuntu,
chages the installation directories of nnstreamer and nnstreamer
development packages.
Signed-off-by: Wook Song <wook16.song@samsung.com>
Wook Song [Mon, 26 Nov 2018 01:17:58 +0000 (10:17 +0900)]
[Filter/TFLite] Move shared object of tflitecore to libdir
This patch moves the shared object of tflitecore,
libtensor_filter_tflitecore.so, from GST_PLUGIN_PATH to INSTALL_LIBDIR.
Signed-off-by: Wook Song <wook16.song@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 07:27:46 +0000 (16:27 +0900)]
[Common] build error fix for ubuntu/example.
There is a missing header in typedef header.
Without stdint.h, you won't be able to find "uint8_t".
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Mon, 26 Nov 2018 01:40:42 +0000 (10:40 +0900)]
[Example] Change LSTM to RNN
It is more like RNN rather than LSTM. RNN is better name for this testcase.
**Changes proposed in this PR:**
- Change directory name and files LSTM to RNN
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
MyungJoo Ham [Fri, 23 Nov 2018 02:54:14 +0000 (11:54 +0900)]
[Filter] Update reaction to tensor dimension errors.
When input/output tensor dimension is not compatible,
don't exit with assert, let gstreamer handle the rest.
This will help looking at the issue of #886
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Wed, 21 Nov 2018 01:46:32 +0000 (10:46 +0900)]
[Repo/Push] Use Has Table to handle repo & add slot_id property
- Instead of single linked list, Hash table is used to manage repo's
data. Hash Table is "key [slot_id], GstTensorData*" where slot_id is
given by user when the tensor_repopush is used.
- Slot Id is added to use as key for hash table. This should be same
with tensor_repopop element. "tensor_repopop" will withdraw the data
according to this slot_id.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Tue, 20 Nov 2018 09:39:44 +0000 (18:39 +0900)]
[Repo/Push] Rename Repo_sink to repopush and implement NYI
**Changes proposed in this PR:**
- Rename tensor_reposink to tensor_repopush. It seems more reseanable.
- Split tensor_repo.h and tensor_repo.c for the repo utility function
and place them in gst/nnstreamer.
- Implement render fucntion to push GstBuffer into repo.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
jijoong.moon [Mon, 19 Nov 2018 11:15:08 +0000 (20:15 +0900)]
[TensorRepo/Sink] TensorRepo_Sink Draft
In order to enable the recursion, we may need this tensor
repository. In order to feed or get the tensor(s) to/from tensor
repository, we need tensor_reposink and tensor_reposrc element.
This PR includes initial draft for tensor_repo data structure and
tensor_reposink.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [ ]Passed [ ]Failed [X]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
sewon.oh [Fri, 23 Nov 2018 05:38:45 +0000 (14:38 +0900)]
[CI] update config files.
For ci server, update config files.
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
Jaeyun [Fri, 23 Nov 2018 03:05:39 +0000 (12:05 +0900)]
[Decoder] fix coverity issue
1. init struct detected-object
2. remove macro with no effect (unsigned compare)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Fri, 23 Nov 2018 05:27:03 +0000 (14:27 +0900)]
Trivial Typo Fix
We will be using typefind soon along with tensor_save/load.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Thu, 22 Nov 2018 05:11:27 +0000 (14:11 +0900)]
[Test] update git ignore
add .xraw file and change temp file format in unit-test
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun Jung [Wed, 21 Nov 2018 15:51:04 +0000 (00:51 +0900)]
[Common] remove macro to print log
nnstreamer elements use gst/glib macro to print logs.
remove unnecessary macros in common header.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun Jung [Wed, 21 Nov 2018 15:46:24 +0000 (00:46 +0900)]
[Filter/TFLite] change log format
1. change log format (use glib)
2. update indentation
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 21 Nov 2018 12:53:11 +0000 (21:53 +0900)]
Change log format
Use common gst macros to print debug logs.
TODO: remove log macro in common header
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Fri, 23 Nov 2018 04:54:22 +0000 (13:54 +0900)]
[Example] update arithmetic for normalization
update arith mode in tensor-transform to normalize
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Thu, 22 Nov 2018 07:20:08 +0000 (16:20 +0900)]
[Transform/Typecast] Fix float -> unsigned bug
It is supposed to do float -> signed -> unsigned.
This is regression due to the omitted per-pr arm testing :(
Fixes #882
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 06:11:22 +0000 (15:11 +0900)]
[Example] ObjectDetection(SSD) with Gst-Launch
With the new decoder/bounding-box, we can do
object-detection + labeling in gst-launch with
visualization.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 05:46:01 +0000 (14:46 +0900)]
[Decoder] Fix cap negotiation bug
Decoder::Main had been saying that it cannot accept other/tensors.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 15 Nov 2018 08:27:40 +0000 (17:27 +0900)]
[Decoder] Add bounding box plugin
1. The basic mechanism is imported from nnstreamer_example/example_object_detection.
2. The mechanism is updated to support
- Different tensor types (it supports integers and double as well if the two tensors have the same type)
- Input tensors may have smaller number of detections (less than DETECTION_MAX)
- A few performance updates to execute less loops
3. No more dependencies on graphics library for drawing boxes or rendering text
4. Imported "font.c" of Silicon Graphics Inc 1992 to render text. The license is open for any purpose as long as the license statement is in tact.
5. Tested with a basic case
```
gst-launch-1.0 --gst-debug=2 \
v4l2src name=cam_src ! videoscale ! videoconvert ! video/x-raw,width=640,height=480,format=RGB,framerate=30/1 ! tee name=t \
t. ! queue leaky=2 max-size-buffers=2 ! videoscale ! video/x-raw,width=300,height=300,format=RGB ! tensor_converter ! \
tensor_transform mode=arithmetic option=typecast:float32,add:-127,mul:0.007843 ! \
tensor_filter framework=tensorflow-lite model=ssd_mobilenet_v2_coco.tflite ! \
tensor_decoder mode=bounding_boxes option1=ssd option2=coco_labels_list.txt option3=box_priors.txt option4=640:480 option5=300:300 ! \
compositor name=mix sink_0::zorder=2 sink_1::zorder=1 ! videoconvert ! ximagesink \
t. ! queue leaky=2 max-size-buffers=10 ! mix.
```
In later PRs, we need
- Test cases (and probably some fixes)
- Hardcode the pre-processing results of font.h, then remove the "rasters" from font.h
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 09:31:28 +0000 (18:31 +0900)]
DIST: Fix broken OBS build log of unit tests
SSAT writes colored text by default.
Apply -n (nocolor) in .spec so that SSAT writes non-colored results,
which will no more break OBS build logs.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 07:40:12 +0000 (16:40 +0900)]
CMake Build Script Clean Up
- Remove libcommon.a from the project
- Remove multi-binary support
Fixes two subissues of the three in #866
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 10:20:28 +0000 (19:20 +0900)]
[Test] Suppress log messages for unit testing
- s/silent=false/silent=true/
- s/--gst-debug=[a-zA-Z_\:0-9]* / /
Fixes #872
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Geunsik Lim [Wed, 21 Nov 2018 04:51:40 +0000 (13:51 +0900)]
Tools/gst-instruments: Added how to profile a bottleneck among elements
Fixed issue #132 (Epic: Performance- Profiling)
This commit is to append how to use a gst-instruments tool in order to
do a profiling for performance optimization of NNStreamer.
This guide is experimented on Ubuntu 16.04 x86_64 distribution.
**Changes proposed in this PR:**
1. Added gst-top to display a performance report in real time such as top, perf-top
2. Added gst-report-1.0 to generate the trace file the below two goals as following:
a. It display CPU usage, time usage, and execution time amon the elements.
b. It generate a performance graph from a GStreamer pipeline.
3. Added screenshot of gst-top, gst-report, and generating pipeline graph
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Geunsik Lim [Wed, 21 Nov 2018 07:47:53 +0000 (16:47 +0900)]
Tests: Fixed incorrect link
It is trivial. This commit is to fix incorrect link.
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>