mv_machine_learning: add a new feature key checking function 22/301922/5 accepted/tizen_8.0_unified tizen_8.0 accepted/tizen/8.0/unified/20240104.165418
authorInki Dae <inki.dae@samsung.com>
Mon, 27 Nov 2023 09:30:17 +0000 (18:30 +0900)
committerInki Dae <inki.dae@samsung.com>
Thu, 7 Dec 2023 01:41:43 +0000 (10:41 +0900)
[Version] : 0.28.20
[Issue type] : bug fix

Add a new feature key checking function for machine learning based face
recognition API.

In the previous version of face recognition API, we used below key only.
http://tizen.org/feature/vision.inference.face

However, the key is used by face detection and other API - key checking
duplicated. So add a new feature key checking function so that the face
recognition API can check four keys,
- http://tizen.org/feature/vision.inference
- http://tizen.org/feature/vision.training
- http://tizen.org/feature/vision.inference.face_recognition
- http://tizen.org/feature/vision.training.face_recognition

Change-Id: I79ca9465bdec810029298323ea4c11e1ede36dee
Signed-off-by: Inki Dae <inki.dae@samsung.com>
doc/mediavision_doc.h
mv_common/include/mv_private.h
mv_common/src/mv_private.c
mv_machine_learning/face_recognition/src/mv_face_recognition.cpp
packaging/capi-media-vision.spec

index c79eb86..ef77289 100644 (file)
@@ -66,6 +66,9 @@
  *  - %http://tizen.org/feature/vision.face_recognition\n
  *  - %http://tizen.org/feature/vision.image_recognition\n
  *  - %http://tizen.org/feature/vision.inference\n
+ *  - %http://tizen.org/feature/vision.training\n
+ *  - %http://tizen.org/feature/vision.inference.face_recognition\n
+ *  - %http://tizen.org/feature/vision.training.face_recognition\n
  *  - %http://tizen.org/feature/vision.inference.image\n
  *  - %http://tizen.org/feature/vision.inference.face\n
  *
  *
  * @section CAPI_MEDIA_VISION_FACE_RECOGNITION_MODULE_FEATURE Related Features
  * This API is related with the following features:\n
- *  - %http://tizen.org/feature/vision.face_recognition\n
+ *  - %http://tizen.org/feature/vision.inference\n
+ *  - %http://tizen.org/feature/vision.training\n
+ *  - %http://tizen.org/feature/vision.inference.face_recognition\n
+ *  - %http://tizen.org/feature/vision.training.face_recognition\n
  *
  * It is recommended to design feature related codes in your application for
  * reliability.\n
index 94c5a7b..f7303a2 100644 (file)
@@ -64,8 +64,12 @@ bool _mv_check_system_info_feature_supported(void);
 bool _mv_barcode_detect_check_system_info_feature_supported(void);
 bool _mv_barcode_generate_check_system_info_feature_supported(void);
 bool _mv_face_check_system_info_feature_supported(void);
+bool _mv_inference_face_recognition_check_system_info_feature_supported(void);
+bool _mv_training_face_recognition_check_system_info_feature_supported(void);
 bool _mv_image_check_system_info_feature_supported(void);
 bool _mv_inference_check_system_info_feature_supported(void);
+bool _mv_inference_group_check_system_info_feature_supported(void);
+bool _mv_training_group_check_system_info_feature_supported(void);
 bool _mv_inference_image_check_system_info_feature_supported(void);
 bool _mv_inference_face_check_system_info_feature_supported(void);
 bool _mv_roi_tracking_check_system_info_feature_supported(void);
index a4884b3..f43e73a 100644 (file)
@@ -161,6 +161,85 @@ bool _mv_face_check_system_info_feature_supported(void)
        return isFaceRecognitionSupported;
 }
 
+bool _mv_inference_group_check_system_info_feature_supported(void)
+{
+       bool isInferenceSupported = false;
+
+       const int nRetVal =
+                       system_info_get_platform_bool("http://tizen.org/feature/vision.inference", &isInferenceSupported);
+
+       if (nRetVal != SYSTEM_INFO_ERROR_NONE) {
+               LOGE("SYSTEM_INFO_ERROR: vision.inference");
+               return false;
+       }
+
+       isInferenceSupported ? LOGI("system_info_get_platform_bool returned "
+                                                               "Supported inference group feature capability\n") :
+                                                  LOGE("system_info_get_platform_bool returned "
+                                                               "Unsupported inference group feature capability\n");
+
+       return (isInferenceSupported);
+}
+
+bool _mv_training_group_check_system_info_feature_supported(void)
+{
+       bool isTrainingSupported = false;
+
+       const int nRetVal = system_info_get_platform_bool("http://tizen.org/feature/vision.training", &isTrainingSupported);
+
+       if (nRetVal != SYSTEM_INFO_ERROR_NONE) {
+               LOGE("SYSTEM_INFO_ERROR: vision.training");
+               return false;
+       }
+
+       isTrainingSupported ? LOGI("system_info_get_platform_bool returned "
+                                                          "Supported training group feature capability\n") :
+                                                 LOGE("system_info_get_platform_bool returned "
+                                                          "Unsupported training group feature capability\n");
+
+       return (isTrainingSupported);
+}
+
+bool _mv_inference_face_recognition_check_system_info_feature_supported(void)
+{
+       bool isInferenceFaceSupported = false;
+
+       const int nRetVal = system_info_get_platform_bool("http://tizen.org/feature/vision.inference.face_recognition",
+                                                                                                         &isInferenceFaceSupported);
+
+       if (nRetVal != SYSTEM_INFO_ERROR_NONE) {
+               LOGE("SYSTEM_INFO_ERROR: vision.inference.face_recognition");
+               return false;
+       }
+
+       isInferenceFaceSupported ? LOGI("system_info_get_platform_bool returned "
+                                                                       "Supported inference face recognition feature capability\n") :
+                                                          LOGE("system_info_get_platform_bool returned "
+                                                                       "Unsupported inference face recognition feature capability\n");
+
+       return (_mv_inference_group_check_system_info_feature_supported() && isInferenceFaceSupported);
+}
+
+bool _mv_training_face_recognition_check_system_info_feature_supported(void)
+{
+       bool isFaceRecognitionSupported = false;
+
+       const int nRetVal = system_info_get_platform_bool("http://tizen.org/feature/vision.training.face_recognition",
+                                                                                                         &isFaceRecognitionSupported);
+
+       if (nRetVal != SYSTEM_INFO_ERROR_NONE) {
+               LOGE("SYSTEM_INFO_ERROR: vision.training.face_recognition");
+               return false;
+       }
+
+       isFaceRecognitionSupported ? LOGI("system_info_get_platform_bool returned "
+                                                                         "Supported training face recognition feature capability\n") :
+                                                                LOGE("system_info_get_platform_bool returned "
+                                                                         "Unsupported training face recognition feature capability\n");
+
+       return (_mv_training_group_check_system_info_feature_supported() && isFaceRecognitionSupported);
+}
+
 bool _mv_image_check_system_info_feature_supported(void)
 {
        bool isImageRecognitionSupported = false;
index 7ce9642..1dfed48 100644 (file)
@@ -39,7 +39,8 @@ static mutex g_face_recognition_mutex;
 
 int mv_face_recognition_create(mv_face_recognition_h *out_handle)
 {
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_NULL_ARG_CHECK(out_handle);
 
@@ -100,7 +101,8 @@ int mv_face_recognition_destroy(mv_face_recognition_h handle)
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
 
@@ -134,7 +136,8 @@ int mv_face_recognition_prepare(mv_face_recognition_h handle)
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
 
@@ -163,7 +166,8 @@ int mv_face_recognition_register(mv_face_recognition_h handle, mv_source_h sourc
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
        MEDIA_VISION_INSTANCE_CHECK(source);
@@ -202,7 +206,8 @@ int mv_face_recognition_unregister(mv_face_recognition_h handle, const char *lab
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
        MEDIA_VISION_INSTANCE_CHECK(label);
@@ -232,7 +237,8 @@ int mv_face_recognition_inference(mv_face_recognition_h handle, mv_source_h sour
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
        MEDIA_VISION_INSTANCE_CHECK(source);
@@ -268,7 +274,8 @@ int mv_face_recognition_get_label(mv_face_recognition_h handle, const char **out
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
        MEDIA_VISION_INSTANCE_CHECK(out_label);
@@ -295,7 +302,8 @@ int mv_face_recognition_get_confidence(mv_face_recognition_h handle, const float
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
        MEDIA_VISION_NULL_ARG_CHECK(confidences);
@@ -323,7 +331,8 @@ int mv_face_recognition_get_label_with_index(mv_face_recognition_h handle, const
 {
        lock_guard<mutex> lock(g_face_recognition_mutex);
 
-       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_inference_face_recognition_check_system_info_feature_supported());
+       MEDIA_VISION_SUPPORT_CHECK(_mv_training_face_recognition_check_system_info_feature_supported());
 
        MEDIA_VISION_INSTANCE_CHECK(handle);
        MEDIA_VISION_INSTANCE_CHECK(label);
index 8da3d41..5d5b86a 100644 (file)
@@ -1,6 +1,6 @@
 Name:        capi-media-vision
 Summary:     Media Vision library for Tizen Native API
-Version:     0.28.19
+Version:     0.28.20
 Release:     1
 Group:       Multimedia/Framework
 License:     Apache-2.0