bef_effect_ai_face_clustering.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #ifndef ANDROIDDEMO_BEF_EFFECT_AI_FACE_CLUSTERING_H
  2. #define ANDROIDDEMO_BEF_EFFECT_AI_FACE_CLUSTERING_H
  3. #if defined(__ANDROID__) || defined(TARGET_OS_ANDROID)
  4. #include<jni.h>
  5. #endif
  6. #include "bef_effect_ai_public_define.h"
  7. typedef enum {
  8. BEF_RecognitionfThreshold = 1, //人脸识别阈值,值越大,召回越高,默认值0.3
  9. BEF_FeatureDim = 2, //特征长度,默认为512
  10. BEF_ClustingThreshold = 3, //聚类时,两个临时类被合并的距离阈值 越小约准,但是越不全,容易漏掉同一个人差异比较大的脸,越大越全,但是越不准,容易把不是同一人但是相似的脸聚进来
  11. // 默认值dist_threshold = 1.11 * 0.82;
  12. BEF_LinkageType = 4, // 链接方法,默认AvgLinkage
  13. BEF_DistanceType = 5, // 距离度量方法 默认Consine
  14. BEF_HP1 = 6, // 超参1, 默认0.765;
  15. BEF_HP2 = 7 // 超参2,默认0.178
  16. } bef_ai_fc_param_type;
  17. typedef enum {
  18. BEF_EUCLIDEAN = 1, //欧式距离
  19. BEF_COSINE = 2, //余弦距离, 默认值
  20. BEF_BHATTACHARYYAH = 3, //巴氏距离
  21. }bef_ai_fc_distance_type;
  22. typedef enum {
  23. BEF_AVERAGE_LINKAGE = 1, /* choose average distance default*/
  24. BEF_CENTROID_LINKAGE = 2, /* choose distance between cluster centroids */
  25. BEF_COMPLETE_LINKAGE = 3, /* choose maximum distance */
  26. BEF_SINGLE_LINKAGE = 4, /* choose minimum distance */
  27. }bef_ai_fc_link_type;
  28. typedef struct {
  29. int * ids;
  30. int num;
  31. }bef_ai_fc_node;
  32. typedef struct {
  33. bef_ai_fc_node * cluster;
  34. int clusters;
  35. }bef_ai_fc_cluster;
  36. /**
  37. * @brief 创建人脸聚类句柄
  38. * @param handle 创建的人脸聚类句柄
  39. * @return If succeed return BEF_RESULT_SUC, other value please see bef_effect_ai_public_define.h
  40. * 成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
  41. */
  42. BEF_SDK_API bef_effect_result_t bef_effect_ai_fc_create(bef_effect_handle_t *handle);
  43. /**
  44. * @brief 人脸聚类参数设置
  45. * @param handle 人脸聚类句柄
  46. * @param type param type 参数类型
  47. * @param value 参数值
  48. * @return If succeed return BEF_RESULT_SUC, other value please see bef_effect_ai_public_define.h
  49. * 成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
  50. */
  51. BEF_SDK_API bef_effect_result_t bef_effect_ai_fc_set_param(bef_effect_handle_t handle, bef_ai_fc_param_type type, float value);
  52. /**
  53. *@brief 人脸特征聚类
  54. *@param features 人脸特征,大小为 num_samples * FACE_FEATURE_DIM
  55. *@param num_samples 人脸的数量
  56. *@param clusters 输出的人脸聚类结果
  57. */
  58. BEF_SDK_API bef_effect_result_t bef_effect_ai_fc_do_clustering(bef_effect_handle_t handle,
  59. float *const features,
  60. const int num_samples,
  61. int *clusters);
  62. /**
  63. * 释放人脸聚类句柄
  64. * @param handle
  65. * @return
  66. */
  67. BEF_SDK_API bef_effect_result_t bef_effect_ai_fc_release(bef_effect_handle_t handle);
  68. /**
  69. * @brief 人脸聚类授权
  70. * @param [in] handle Created face detect handle
  71. * 已创建的人脸聚类句柄
  72. * @param [in] license 授权文件字符串
  73. * @param [in] length 授权文件字符串长度
  74. * @return If succeed return BEF_RESULT_SUC, other value please refer bef_effect_ai_public_define.h
  75. * 成功返回 BEF_RESULT_SUC, 授权码非法返回 BEF_RESULT_INVALID_LICENSE ,其它失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
  76. */
  77. #if defined(__ANDROID__) || defined(TARGET_OS_ANDROID)
  78. BEF_SDK_API bef_effect_result_t bef_effect_ai_face_cluster_check_license(JNIEnv *env, jobject context,
  79. bef_effect_handle_t handle,
  80. const char *licensePath);
  81. #else
  82. #ifdef __APPLE__
  83. BEF_SDK_API bef_effect_result_t bef_effect_ai_face_cluster_check_license(bef_effect_handle_t handle, const char *licensePath);
  84. #endif
  85. #endif
  86. BEF_SDK_API bef_effect_result_t
  87. bef_effect_ai_face_cluster_check_online_license(bef_effect_handle_t handle, const char *licensePath);
  88. #endif //ANDROIDDEMO_BEF_EFFECT_AI_FACE_CLUSTERING_H