[TOC]

人脸识别可以检测出照片中的人脸。相关概念的说明如下:

名称 说明
enroll/注册 上传包含一张人脸的图片到云端,引擎对其进行特征抽取,生成一个与之对应的模型,返回模型id(gid)。
verify/验证 注册成功后,上传包含一张人脸的图片到云端,引擎将其与所注册的人脸模型进行比对,验证是否为同一个人,返回验证结果。
delete/删除 删除注册的人脸模型
auth_id/用户id 由应用传入,用于标识用户身份,长度为6-18个字符(由英文字母、数字、下划线组成,不能以数字开头),注:注册和验证都必须指定auth_id.

为了获得较高的准确率,请确保输入的图片满足以下要求:

项目 要求
色彩、格式 彩色,PNG、JPG、BMP格式的图片。
人脸大小 、角度 大小应超过100*100像素,可以允许一定程度的侧脸,为保证识别准确率,最好使用正脸图片。
光照 均匀光照,可允许部分阴影。
遮挡物 脸部尽量无遮挡,眼镜等物品会一定程度上影响准确率。

在人脸识别过程的主要参数有:

  • 人脸识别会话类型(MFV_SST):λ 会话类型,包括注册(enroll),验证(verify),删除(delete)

  • 用户ID(AUTH_ID):标识每个使用人脸功能的终端用户的唯一ID

  • 业务场景(MFV_SCENES):业务类型,人脸业务为ifr

人脸注册

人脸注册,示例代码如下:

// 人脸参数
// 设置sub 参数请求业务类型
[self.identityVerifier setParameter:@"mfv" forKey:[IFlySpeechConstant MFV_SUB]];

// 设置scenes,ifr(人脸)
// 指明注册的特征种类
[self.identityVerifier setParameter:@"ifr" forKey:[IFlySpeechConstant MFV_SCENES]];
NSString* auth_id=self.authIdLabel.text;
[self.identityVerifier setParameter:@"enroll" forKey:[IFlySpeechConstant MFV_SST]];

// 设置delegate ,auth_id,开始会话
[self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]];
[self.identityVerifier startWorking];

// 人脸数据参数
NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"enroll"];
dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_AUTH_ID],auth_id];

// 压缩人脸数据并写入
NSData* data=[self.face compressedData];
[self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams];
[self.identityVerifier stopWrite:@"ifr"];

// 实现IFlyIdentityVerifierDelegate协议
// 消息回调
- (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj;

// 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
- (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}

// 结束回调,没有错误时,error为nil
- (void) onCompleted:(IFlySpeechError*) error{}

人脸验证

人脸验证,示例代码如下:

// 设置会话场景
[self.identityVerifier setParameter:@"ifr" forKey:[IFlySpeechConstant MFV_SCENES]];

// 设置会话类型
[self.identityVerifier setParameter:@"verify" forKey:[IFlySpeechConstant MFV_SST]];

// 用户id
[self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]];
// 人脸数据参数
NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_AUTH_ID],auth_id];
dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"verify"];

// 压缩人脸数据并写入
[self.identityVerifier startWorking];
NSData* data=[self.face compressedData];
[self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams];
[self.identityVerifier stopWrite:@"ifr"];

// 实现IFlyIdentityVerifierDelegate协议

// 消息回调
- (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj;

// 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
- (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}

// 结束回调,没有错误时,error为nil
- (void) onCompleted:(IFlySpeechError*) error{}

人脸删除

人脸验证,示例代码如下:

// 设置会话场景
[self.identityVerifier setParameter:@"ifr" forKey:[IFlySpeechConstant MFV_SCENES]];

// 用户id
[self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]];

// 人脸数据参数
NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_AUTH_ID],auth_id];

// 删除人脸数据
[self.identityVerifier execute:@"ifr" cmd:@"delete" params:dwtParams];

// 实现IFlyIdentityVerifierDelegate协议
// 消息回调
- (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj;

// 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
- (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}

// 结束回调,没有错误时,error为nil
- (void) onCompleted:(IFlySpeechError*) error{}

安全性问题

在人脸识别中,最重要的问题,可能是图片的可复制重复使用的问题。根据前文可知道, MSC SDK 在人脸识别时,并不是直接使用摄像头等硬件,只要应用传入二进制的图片数据即可。这时,在验证时,即使用一张他人照片,MSC SDK 也是无法分辨的;同时,应用即使是使用摄像头来拍摄实时照片,也有可能被用户使用照片来欺骗。所以,在这样的情况下,人为的管理则显得尤其重要:如要求用户验证时,有管理员在场保证其不使用他人照片(在公司打卡、门禁的场景)等。

results matching ""

    No results matching ""