From: hyunil park Date: Wed, 7 Dec 2022 02:56:21 +0000 (+0900) Subject: [SUBPLUGIN] Support nnstreamer trainer subplugin X-Git-Tag: accepted/tizen/unified/20221226.070009~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3793939be79b69675844d753226d52f101725388;p=platform%2Fupstream%2Fnnstreamer.git [SUBPLUGIN] Support nnstreamer trainer subplugin Allow to add trainer subplugin in runtime - Add NNS_SUBPLUGIN_TRAINER to subpluginType - Add NNSTREAMER_TRAINERS to meson.build - Add group name(trainer) to nnstreamer.ini.in - Add NNSTREAMER_TRAINER to spec Signed-off-by: hyunil park --- diff --git a/debian/rules b/debian/rules index 33c6d3a..fc6ce90 100755 --- a/debian/rules +++ b/debian/rules @@ -24,6 +24,7 @@ export NNSTREAMER_CONF=${NNSTREAMER_BUILD_ROOT_PATH}/nnstreamer-test.ini export NNSTREAMER_FILTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_filter export NNSTREAMER_DECODERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_decoder export NNSTREAMER_CONVERTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_converter +export NNSTREAMER_TRAINERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_trainer export PYTHONIOENCODING=utf-8 ifeq ($(DEB_BUILD_ARCH_CPU), arm) diff --git a/gst/nnstreamer/nnstreamer_conf.c b/gst/nnstreamer/nnstreamer_conf.c index f5536df..c2a84b0 100644 --- a/gst/nnstreamer/nnstreamer_conf.c +++ b/gst/nnstreamer/nnstreamer_conf.c @@ -40,6 +40,7 @@ #define NNSTREAMER_PREFIX_FILTER "libnnstreamer_filter_" #define NNSTREAMER_PREFIX_CUSTOMFILTERS "" #define NNSTREAMER_PREFIX_CONVERTER "libnnstreamer_converter_" +#define NNSTREAMER_PREFIX_TRAINER "libnnstreamer_trainer_" /* Custom filter does not have prefix */ /* Env-var names */ @@ -47,7 +48,8 @@ static const gchar *NNSTREAMER_ENVVAR[NNSCONF_PATH_END] = { [NNSCONF_PATH_FILTERS] = "NNSTREAMER_FILTERS", [NNSCONF_PATH_DECODERS] = "NNSTREAMER_DECODERS", [NNSCONF_PATH_CUSTOM_FILTERS] = "NNSTREAMER_CUSTOMFILTERS", - [NNSCONF_PATH_CONVERTERS] = "NNSTREAMER_CONVERTERS" + [NNSCONF_PATH_CONVERTERS] = "NNSTREAMER_CONVERTERS", + [NNSCONF_PATH_TRAINERS] = "NNSTREAMER_TRAINERS" }; static const gchar *NNSTREAMER_PATH[NNSCONF_PATH_END] = { @@ -55,6 +57,7 @@ static const gchar *NNSTREAMER_PATH[NNSCONF_PATH_END] = { [NNSCONF_PATH_DECODERS] = "/usr/lib/nnstreamer/decoders/", [NNSCONF_PATH_CUSTOM_FILTERS] = "/usr/lib/nnstreamer/customfilters/", [NNSCONF_PATH_CONVERTERS] = "/usr/lib/nnstreamer/converters/", + [NNSCONF_PATH_TRAINERS] = "/usr/lib/nnstreamer/trainers/" }; static const gchar *subplugin_prefixes[] = { @@ -63,6 +66,7 @@ static const gchar *subplugin_prefixes[] = { [NNSCONF_PATH_CUSTOM_FILTERS] = NNSTREAMER_PREFIX_CUSTOMFILTERS, [NNSCONF_PATH_EASY_CUSTOM_FILTERS] = NNSTREAMER_PREFIX_CUSTOMFILTERS, /**< Same as Custom Filters */ [NNSCONF_PATH_CONVERTERS] = NNSTREAMER_PREFIX_CONVERTER, + [NNSCONF_PATH_TRAINERS] = NNSTREAMER_PREFIX_TRAINER, [NNSCONF_PATH_END] = NULL }; @@ -329,6 +333,8 @@ _fill_subplugin_path (confdata * cdata, GKeyFile * key_file, conf_sources src) g_key_file_get_string (key_file, "filter", "customfilters", NULL); cdata->conf[NNSCONF_PATH_CONVERTERS].path[src] = g_key_file_get_string (key_file, "converter", "converters", NULL); + cdata->conf[NNSCONF_PATH_TRAINERS].path[src] = + g_key_file_get_string (key_file, "trainer", "trainer", NULL); } /** @brief Public function defined in the header */ @@ -689,7 +695,8 @@ void nnsconf_subplugin_dump (gchar * str, gulong size) { static const nnsconf_type_path dump_list_type[] = { - NNSCONF_PATH_FILTERS, NNSCONF_PATH_DECODERS, NNSCONF_PATH_CONVERTERS + NNSCONF_PATH_FILTERS, NNSCONF_PATH_DECODERS, NNSCONF_PATH_CONVERTERS, + NNSCONF_PATH_TRAINERS }; static const char *dump_list_str[] = { "Filter", "Decoder", "Conterver" diff --git a/gst/nnstreamer/nnstreamer_conf.h b/gst/nnstreamer/nnstreamer_conf.h index 332058d..575d357 100644 --- a/gst/nnstreamer/nnstreamer_conf.h +++ b/gst/nnstreamer/nnstreamer_conf.h @@ -66,6 +66,7 @@ typedef enum { NNSCONF_PATH_CUSTOM_FILTERS, NNSCONF_PATH_EASY_CUSTOM_FILTERS, NNSCONF_PATH_CONVERTERS, + NNSCONF_PATH_TRAINERS, NNSCONF_PATH_END, } nnsconf_type_path; diff --git a/gst/nnstreamer/nnstreamer_subplugin.c b/gst/nnstreamer/nnstreamer_subplugin.c index a43194a..e7d227b 100644 --- a/gst/nnstreamer/nnstreamer_subplugin.c +++ b/gst/nnstreamer/nnstreamer_subplugin.c @@ -73,6 +73,7 @@ static subpluginSearchLogic searchAlgorithm[] = { [NNS_SUBPLUGIN_DECODER] = NNS_SEARCH_FILENAME, [NNS_EASY_CUSTOM_FILTER] = NNS_SEARCH_FILENAME, [NNS_SUBPLUGIN_CONVERTER] = NNS_SEARCH_GETALL, + [NNS_SUBPLUGIN_TRAINER] = NNS_SEARCH_FILENAME, [NNS_CUSTOM_CONVERTER] = NNS_SEARCH_NO_OP, [NNS_CUSTOM_DECODER] = NNS_SEARCH_NO_OP, [NNS_IF_CUSTOM] = NNS_SEARCH_NO_OP, @@ -233,6 +234,7 @@ register_subplugin (subpluginType type, const char *name, const void *data) case NNS_SUBPLUGIN_DECODER: case NNS_EASY_CUSTOM_FILTER: case NNS_SUBPLUGIN_CONVERTER: + case NNS_SUBPLUGIN_TRAINER: case NNS_CUSTOM_DECODER: case NNS_IF_CUSTOM: case NNS_CUSTOM_CONVERTER: diff --git a/gst/nnstreamer/nnstreamer_subplugin.h b/gst/nnstreamer/nnstreamer_subplugin.h index c070c3b..d62f6bf 100644 --- a/gst/nnstreamer/nnstreamer_subplugin.h +++ b/gst/nnstreamer/nnstreamer_subplugin.h @@ -42,6 +42,7 @@ typedef enum { NNS_SUBPLUGIN_DECODER = NNSCONF_PATH_DECODERS, NNS_EASY_CUSTOM_FILTER = NNSCONF_PATH_EASY_CUSTOM_FILTERS, NNS_SUBPLUGIN_CONVERTER = NNSCONF_PATH_CONVERTERS, + NNS_SUBPLUGIN_TRAINER = NNSCONF_PATH_TRAINERS, NNS_CUSTOM_CONVERTER, NNS_CUSTOM_DECODER, NNS_IF_CUSTOM, diff --git a/meson.build b/meson.build index 3669e4b..56cca54 100644 --- a/meson.build +++ b/meson.build @@ -699,6 +699,7 @@ if get_option('enable-test') path_nns_plugin_filters = join_paths(path_nns_plugin_prefix, 'tensor_filter') path_nns_plugin_decoders = join_paths(path_nns_plugin_prefix, 'tensor_decoder') path_nns_plugin_converters = join_paths(path_nns_plugin_prefix, 'tensor_converter') + path_nns_plugin_trainers = join_paths(path_nns_plugin_prefix, 'tensor_trainer') testenv = environment() testenv.set('GST_PLUGIN_PATH', path_gst_plugin + ':' + path_ext_plugin) @@ -706,6 +707,7 @@ if get_option('enable-test') testenv.set('NNSTREAMER_FILTERS', path_nns_plugin_filters) testenv.set('NNSTREAMER_DECODERS', path_nns_plugin_decoders) testenv.set('NNSTREAMER_CONVERTERS', path_nns_plugin_converters) + testenv.set('NNSTREAMER_TRAINERS', path_nns_plugin_trainers) testenv.set('NNSTREAMER_SOURCE_ROOT_PATH', meson.source_root()) testenv.set('NNSTREAMER_BUILD_ROOT_PATH', meson.build_root()) diff --git a/nnstreamer.ini.in b/nnstreamer.ini.in index 41a0a11..ae1d168 100644 --- a/nnstreamer.ini.in +++ b/nnstreamer.ini.in @@ -21,6 +21,9 @@ decoders=@SUBPLUGIN_INSTALL_PREFIX@/decoders/ [converter] converters=@SUBPLUGIN_INSTALL_PREFIX@/converters/ +[trainer] +trainers=@SUBPLUGIN_INSTALL_PREFIX@/trainers/ + # Set 1 or True if you want to use GPU with pytorch for computation. [pytorch] enable_use_gpu=@TORCH_USE_GPU@ diff --git a/packaging/nnstreamer.spec b/packaging/nnstreamer.spec index d6f983f..a3ec337 100644 --- a/packaging/nnstreamer.spec +++ b/packaging/nnstreamer.spec @@ -860,6 +860,7 @@ export NNSTREAMER_CONF=${NNSTREAMER_BUILD_ROOT_PATH}/nnstreamer-test.ini export NNSTREAMER_FILTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_filter export NNSTREAMER_DECODERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_decoder export NNSTREAMER_CONVERTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_converter +export NNSTREAMER_TRAINERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_trainer %define test_script $(pwd)/packaging/run_unittests_binaries.sh diff --git a/packaging/run_unittests_binaries.sh b/packaging/run_unittests_binaries.sh index 39c7872..e388f46 100755 --- a/packaging/run_unittests_binaries.sh +++ b/packaging/run_unittests_binaries.sh @@ -47,6 +47,7 @@ export NNSTREAMER_CONF=${NNSTREAMER_BUILD_ROOT_PATH}/nnstreamer-test.ini export NNSTREAMER_FILTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_filter export NNSTREAMER_DECODERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_decoder export NNSTREAMER_CONVERTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_converter +export NNSTREAMER_TRAINERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_trainer export _PYTHONPATH=${PYTHONPATH} run_entry() { diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index 296076d..49efece 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -53,6 +53,7 @@ ENV GST_PLUGIN_PATH=/home/${USERNAME}/nnstreamer/${BUILDDIR}/gst/nnstreamer \ NNSTREAMER_FILTERS=/home/${USERNAME}/nnstreamer/${BUILDDIR}/ext/nnstreamer/tensor_filter \ NNSTREAMER_DECODERS=/home/${USERNAME}/nnstreamer/${BUILDDIR}/ext/nnstreamer/tensor_decoder \ NNSTREAMER_CONVERTERS=/home/${USERNAME}/nnstreamer/${BUILDDIR}/ext/nnstreamer/tensor_converter \ + NNSTREAMER_TRAINERS=/home/${USERNAME}/nnstreamer/${BUILDDIR}/ext/nnstreamer/tensor_trainer \ NNS_USERNAME=${USERNAME} \ NNS_BUILDDIR=${BUILDDIR}