You need to enable JavaScript to run this app.
导航

人脸比对

最近更新时间2023.06.28 14:41:39

首次发布时间2022.02.25 17:16:51

简介

人脸比对SDK提供对人脸特征提取和比对的能力,输出两张人脸之间的相似度得分,用于辅助判断是否是同一个人。

人脸识别阈值

根据 阈值可以计算出相似度,一般高于最低相似度就认为是同一个人

FPRFRRThreshold
1.00e-30.0167.6
1.00e-40.0570.7
1.00e-50.1173.4
1.00e-60.2075.6
1.00e-70.3277.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)
C接口

人脸识别及相似度相关头文件 bef_effect_ai_face_verify.h

1. 创建人脸比对句柄

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_pathconst char *人脸比对模型文件所在路径
max_face_numint指定最多能够检测到的人脸数目
handlebef_effect_handle_t*创建的人脸比对句柄

2. 人脸比对授权

BEF_SDK_API bef_effect_result_t 
bef_effect_ai_face_verify_check_license(
	bef_effect_handle_t handle, 
	const char *licensePath
);

参数说明

参数名参数类型参数说明
handlebef_effect_handle_t已创建的人脸比对句柄
licensePathconst char *人脸比对授权文件的路径

返回值

成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h

3. 人脸识别特征提取

多个人脸特提取

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
);

参数说明

参数名参数类型参数说明
handlebef_effect_handle_t已经创建的人脸比对的句柄
bufferconst unsigned char*图片数据的首地址
pixel_formatbef_ai_pixel_format图片数据格式
image_widthint图片宽度
image_heightint图片高度
image_strideint图片每一行的步长
orientationbef_ai_rotate_type图片旋转角度 旋转多少度图中人脸为正
face_inputconst bef_ai_face_info *从人脸106点检测得到的结果
verify_info_ptrbef_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
);


参数说明

参数名参数类型参数说明
handlebef_effect_handle_t已经创建的人脸比对的句柄
bufferconst unsigned char*图片数据的首地址
pixel_formatbef_ai_pixel_format图片数据格式
image_widthint图片宽度
image_heightint图片高度
image_strideint图片每一行的步长
orientationbef_ai_rotate_type图片旋转角度 旋转多少度图中人脸为正
face_inputconst bef_ai_face_106 *担任人脸106点检测得到的结果
verify_info_ptrfloat*保存人脸比对的特征

返回值

成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h

4. 人脸特征比对

BEF_SDK_API double
bef_effect_ai_face_verify(const float *feature1, 
	const float *feature2, 
	int size
);

参数说明

参数名参数类型参数说明
feature1const float *第一个人脸提取到的特征
feature2const float *第二个人脸提取到的特征
sizeint人脸特征的维度,具体可见头文件的定义 BEF_AI_FACE_FEATURE_DIM

返回值
返回人脸比对的结果的值

5. 特征相似度计算

BEF_SDK_API double 
bef_effect_ai__dist2score(
	double d
);

参数说明

参数名参数类型参数说明
ddoublebef_effect_ai_face_verify 函数返回的人脸比对的值

返回值
根据人脸比对的值,返回两个人人脸之间的相似度的值

6. 销毁人脸比对句柄

BEF_SDK_API void
bef_effect_ai_face_verify_destroy(
        bef_effect_handle_t handle
);

参数说明

参数名参数类型参数说明
handlebef_effect_handle_t人脸比对创建的handle
Java接口

1. 创建人脸比对句柄

public int init(Context context, String faceModel,String faceVerifyModel,int maxFaceNum, String license)

参数说明

参数名参数类型参数说明
contextContext上下文
faceModelString人脸106点模型的文件路径
faceVerifyModelString人脸比对模型文件的路径
maxFaceNumInt最大人脸数 不超过10
licenseString授权文件的路径

返回值

成功返回BEF_RESULT_SUC,否则返回对应的错误码

2. 人脸特征提取

人脸特征提取,最多支持10人

public BefFaceFeature extractFeature(ByteBuffer buffer, BytedEffectConstants.PixlFormat pixel_format, int image_width, int image_height, int image_stride, BytedEffectConstants.Rotation orientation)  

参数说明

参数名参数类型参数说明
bufferByteBuffer图片数据
pixel_formatBytedEffectConstants.PixlFormat图片数据格式
image_widthint图片宽度
image_heightint图片高度
image_strideint图片每一行的步长
orientationBytedEffectConstants.Rotation图片旋转角度 旋转多少度图中人脸为正

返回值

人脸特征结果

单个人脸特征提取

public BefFaceFeature extractFeatureSingle(ByteBuffer buffer, BytedEffectConstants.PixlFormat pixel_format, int image_width, int image_height, int image_stride, BytedEffectConstants.Rotation orientation)

参数说明

参数名参数类型参数说明
bufferByteBuffer图片数据
pixel_formatBytedEffectConstants.PixlFormat图片数据格式
image_widthint图片宽度
image_heightint图片高度
image_strideint图片每一行的步长
orientationBytedEffectConstants.Rotation图片旋转角度 旋转多少度图中人脸为正

返回值

人脸特征结果

3. 人脸特征比对

public double verify(float[] feature1, float[] feature2)

参数说明

参数名参数类型参数说明
feature1float[]人脸特征向量
feature2float[]人脸特征向量

返回值

特征距离

4. 特征相似度计算

public double distToScore(double d)

参数说明

参数名参数类型参数说明
ddouble特征距离

返回值

返回相似度

5. 释放人脸比对句柄

public void release()

FAQ

1.如果出现任何异常,请查看是否有以下类型日志

答:建议首先查看以下tag输出Error类型的日志:
bef_effect_ai 和SMASH_E_LOG 以及 EffectSDK

2.人脸对比初始化失败

答:检查模型路径和授权文件路径是否正确

3.人脸比对提取多个特征时传入人脸信息数组和输出特征数组顺序是否对应

答:是的,对应

错误码

错误码请参考错误码表