人脸比对SDK提供对人脸特征提取和比对的能力,输出两张人脸之间的相似度得分,用于辅助判断是否是同一个人。
根据 阈值可以计算出相似度,一般高于最低相似度就认为是同一个人
FPR | FRR | Threshold |
---|---|---|
1.00e-3 | 0.01 | 67.6 |
1.00e-4 | 0.05 | 70.7 |
1.00e-5 | 0.11 | 73.4 |
1.00e-6 | 0.20 | 75.6 |
1.00e-7 | 0.32 | 77.7 |
支持平台 | Android、iOS、Windows、Mac |
---|---|
支持角度 | yaw ≤ ±90° pitch ≤ ±90° |
支持输入格式 | RGBA8888、BGRA8888、BGR888、RGB888、NV21、NV12、YUV420P |
内存占用 | <10M(测试设备OppoR11) |
支持最小输入尺寸 | 短边128 |
支持距离 | 视频模式,人脸占屏幕短边1/8以上;图片模式,人脸占屏幕短边1/16以上 |
比对速度 | <18ms(测试设备iphone7) |
人脸识别及相似度相关头文件 bef_effect_ai_face_verify.h
BEF_SDK_API bef_effect_result_t bef_effect_ai_face_verify_create( const char *face_verify_param_path, const int max_face_num, bef_effect_handle_t *handle );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
face_verify_param_path | const char * | 人脸比对模型文件所在路径 |
max_face_num | int | 指定最多能够检测到的人脸数目 |
handle | bef_effect_handle_t* | 创建的人脸比对句柄 |
BEF_SDK_API bef_effect_result_t bef_effect_ai_face_verify_check_license( bef_effect_handle_t handle, const char *licensePath );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 已创建的人脸比对句柄 |
licensePath | const char * | 人脸比对授权文件的路径 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
BEF_SDK_API bef_effect_result_t bef_effect_ai_face_extract_feature( bef_effect_handle_t handle, const unsigned char *image, bef_ai_pixel_format pixel_format, int image_width, int image_height, int image_stride, bef_ai_rotate_type orientation, const bef_ai_face_info *face_input, bef_ai_face_verify_info *verify_info_ptr );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 已经创建的人脸比对的句柄 |
buffer | const unsigned char* | 图片数据的首地址 |
pixel_format | bef_ai_pixel_format | 图片数据格式 |
image_width | int | 图片宽度 |
image_height | int | 图片高度 |
image_stride | int | 图片每一行的步长 |
orientation | bef_ai_rotate_type | 图片旋转角度 旋转多少度图中人脸为正 |
face_input | const bef_ai_face_info * | 从人脸106点检测得到的结果 |
verify_info_ptr | bef_ai_face_verify_info | 保存人脸比对的特征 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
BEF_SDK_API bef_effect_result_t bef_effect_ai_face_extract_feature_single( bef_effect_handle_t handle, const unsigned char *image, bef_ai_pixel_format pixel_format, int image_width, int image_height, int image_stride, bef_ai_rotate_type orientation, const bef_ai_face_106 *face_input, float *verify_info_ptr );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 已经创建的人脸比对的句柄 |
buffer | const unsigned char* | 图片数据的首地址 |
pixel_format | bef_ai_pixel_format | 图片数据格式 |
image_width | int | 图片宽度 |
image_height | int | 图片高度 |
image_stride | int | 图片每一行的步长 |
orientation | bef_ai_rotate_type | 图片旋转角度 旋转多少度图中人脸为正 |
face_input | const bef_ai_face_106 * | 担任人脸106点检测得到的结果 |
verify_info_ptr | float* | 保存人脸比对的特征 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
BEF_SDK_API double bef_effect_ai_face_verify(const float *feature1, const float *feature2, int size );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
feature1 | const float * | 第一个人脸提取到的特征 |
feature2 | const float * | 第二个人脸提取到的特征 |
size | int | 人脸特征的维度,具体可见头文件的定义 BEF_AI_FACE_FEATURE_DIM |
返回值
返回人脸比对的结果的值
BEF_SDK_API double bef_effect_ai__dist2score( double d );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
d | double | bef_effect_ai_face_verify 函数返回的人脸比对的值 |
返回值
根据人脸比对的值,返回两个人人脸之间的相似度的值
BEF_SDK_API void bef_effect_ai_face_verify_destroy( bef_effect_handle_t handle );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 人脸比对创建的handle |
public int init(Context context, String faceModel,String faceVerifyModel,int maxFaceNum, String license)
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
context | Context | 上下文 |
faceModel | String | 人脸106点模型的文件路径 |
faceVerifyModel | String | 人脸比对模型文件的路径 |
maxFaceNum | Int | 最大人脸数 不超过10 |
license | String | 授权文件的路径 |
返回值
成功返回BEF_RESULT_SUC,否则返回对应的错误码
人脸特征提取,最多支持10人
public BefFaceFeature extractFeature(ByteBuffer buffer, BytedEffectConstants.PixlFormat pixel_format, int image_width, int image_height, int image_stride, BytedEffectConstants.Rotation orientation)
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
buffer | ByteBuffer | 图片数据 |
pixel_format | BytedEffectConstants.PixlFormat | 图片数据格式 |
image_width | int | 图片宽度 |
image_height | int | 图片高度 |
image_stride | int | 图片每一行的步长 |
orientation | BytedEffectConstants.Rotation | 图片旋转角度 旋转多少度图中人脸为正 |
返回值
人脸特征结果
单个人脸特征提取
public BefFaceFeature extractFeatureSingle(ByteBuffer buffer, BytedEffectConstants.PixlFormat pixel_format, int image_width, int image_height, int image_stride, BytedEffectConstants.Rotation orientation)
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
buffer | ByteBuffer | 图片数据 |
pixel_format | BytedEffectConstants.PixlFormat | 图片数据格式 |
image_width | int | 图片宽度 |
image_height | int | 图片高度 |
image_stride | int | 图片每一行的步长 |
orientation | BytedEffectConstants.Rotation | 图片旋转角度 旋转多少度图中人脸为正 |
返回值
人脸特征结果
public double verify(float[] feature1, float[] feature2)
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
feature1 | float[] | 人脸特征向量 |
feature2 | float[] | 人脸特征向量 |
返回值
特征距离
public double distToScore(double d)
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
d | double | 特征距离 |
返回值
返回相似度
public void release()
答:建议首先查看以下tag输出Error类型的日志:
bef_effect_ai 和SMASH_E_LOG 以及 EffectSDK
答:检查模型路径和授权文件路径是否正确
答:是的,对应
错误码请参考错误码表