接口调用流程

活体检测SDK的接口调用主要是STLivefaceViewController。下面是详细介绍。

活体SDK-接口调用流程视频讲解

STLivefaceViewController调用流程

STLivefaceViewController 是我们提供的活体检测SDK示例。可以根据界面提示,设置动作序列,以及是否打开提示音等操作。设置完成后,就可以开始进行检测。

下图为接口调用说明图。

流程介绍图

详细说明如下:

1 实现 STLivenessDetectorDelegate 协议

@interface ViewController () <STLivenessDetectorDelegate>

2 获取资源路径

// 资源路径
NSString *strResourcesBundlePath = [[NSBundle mainBundle] pathForResource:@"st_liveness_resource" ofType:@"bundle"];

3 获取模型路径和授权文件路径

// 获取模型路径
NSString *trackModelPath = [[NSBundle mainBundle] pathForResource:@"track" ofType:@"model"];
NSString *livenessModelPath = [[NSBundle mainBundle] pathForResource:@"liveness" ofType:@"model"];
NSString *detectModelPath = [[NSBundle mainBundle] pathForResource:@"detect" ofType:@"model"];
// 获取授权文件路径
NSString *licensePath = [[NSBundle mainBundle] pathForResource:@"SenseID_Liveness" ofType:@"lic"];

4 初始化活体检测视图控制器

STLivefaceViewController *livenessVC = [[STLivefaceViewController alloc] initWithDuration:10.0f resourcesBundlePath:strResourcesBundlePath trackModelPath:trackModelPath livenessModelPath:livenessModelPath detectModelPath:detectModelPath licensePath:licensePath];

5 动作序列相关设置

你需要自己设置动作序列,设置难易程度,以及是否打开语音提示。SDK会根据您的设置,来进行活体检测。我们建议将 blink 放第一个检测,后面可以随意组合。

参数设置 值说明
动作序列 眨眼:LIVE_BLINK 点头:LIVE_NOD 张嘴:LIVE_MOUTH 摇头:LIVE_YAW
难易程度 简单模式: LIVE_COMPLEXITY_EASY 正常模式: LIVE_COMPLEXITY_NORMAL 困难模式: LIVE_COMPLEXITY_HARD 地狱模式: LIVE_COMPLEXITY_HELL
语音提示 打开语音: bVoicePrompt = true 关闭语音: bVoicePrompt = false
//可以根据实际需求自由组合,第一个动作需要为眨眼
NSArray *arrLivenessSequence = @[@(LIVE_BLINK) , @(LIVE_MOUTH) , @(LIVE_NOD) , @(LIVE_YAW)];
// 设置代理及回调线程
[livenessVC setDelegate:self callBackQueue:dispatch_get_main_queue() detectionSequence:arrLivenessSequence];
// 设置活体检测复杂度
[livenessVC setOutputType:LIVE_OUTPUT_SINGLE_IMAGE complexity:LIVE_COMPLEXITY_NORMAL];
// 设置默认语音提示状态,如不设置默认为开启
livenessVC.bVoicePrompt = YES;

6 present 活体检测视图控制器

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:livenessVC];
[navigationController setNavigationBarHidden:YES];
[self presentViewController:navigationController animated:YES completion:nil];

7 实现 STLivenessDetectorDelegate 中的回调方法

- (void)livenessDidStartDetectionWithDetectionType:(LivefaceDetectionType)iDetectionType
{
    // 每个模块开始检测时会回调此方法
}

- (void)livenessTimeDidPast:(double)dPast durationPerModel:(double)dDurationPerModel
{
    // 检测开始后,当初始化检测器时如果Duration大于0则每帧都会回调此方法(示例程序中为10),dPast为当前模块已耗时,dDurationPerModel为每个模块设定的最大时间
}

// 活体检测成功的回调 , data为加密后的数据 , arrSTImage 为 STImage 对象的数组
- (void)livenessDidSuccessfulGetData:(NSData *)data stImages:(NSArray *)arrSTImage
{   
}

// 活体检测失败的回调 , 包括失败的类型 , 失败时检测类型 , 失败时检测类型所在检测序列中的位置 , 0 为第一个 .
- (void)livenessDidFailWithErrorType:(LivefaceErrorType)iErrorType detectionType:(LivefaceDetectionType)iDetectionType detectionIndex:(int)iDetectionIndexdata:(NSData ) data stImages:(NSArray )arrSTImage
{
}

// 活体检测取消的回调 , 活体检测取消时的检测类型 , 取消时检测类型所在检测序列中的位置 , 0 为第一个
- (void)livenessDidCancelWithDetectionType:(LivefaceDetectionType)iDetectionType detectionIndex:(int)iDetectionIndex
{
}

STMultipleLivenessController调用流程

STMultipleLivenessController是对STLivefaceViewController的一层封装,已经写好了一部分内部逻辑。如果没有内部定制化的要求,可以直接使用STMultipleLivenessController。

1 实现 STLivenessDetectorDelegate 协议

@interface ViewController () <STMultipleLivenessDelegate>

2 初始化参数设置

STMultipleLivenessController是以json串作为初始化参数的,例子:
@"{\"outType\":\"singleImg\",\"Complexity\":1,\"sequence\":[\"BLINK\",\"MOUTH\",\"NOD\",\"YAW\"]};
参数设置 参数名 值说明
动作序列 sequence 眨眼:LIVE_BLINK 点头:LIVE_NOD 张嘴:LIVE_MOUTH 摇头:LIVE_YAW
检测难易程度 Complexity 对应阈值:LIVE_COMPLEXITY_HELL:0.7~1,LIVE_COMPLEXITY_HARD:0.5~0.7,LIVE_COMPLEXITY_NORMAL:0~0.5,LIVE_COMPLEXITY_EASY:0~0.5(允许人脸丢失,人脸切换)
输出格式 outType singleImg单图, multiImg多图, video视频, fullVideo视频

除了json, 声音的开关,可以设置bOpenPromptSound来控制。

3 present 活体检测视图控制器

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:multipleLiveVC];
[navigationController setNavigationBarHidden:YES];
[self presentViewController:navigationController animated:YES completion:^{
        //如果需要自动开始,而不是按钮触发,调用下面这行代码
        //[multipleLiveVC restart];
}];

4 实现 STMultipleLivenessDelegate 中的回调方法

//活体检测已经开始的回调.
- (void)STMultiLivenessDidStart;
// 活体检测成功回调方法.
- (void)STMultiLivenessDidSuccessfulGetData:(NSData *)encryTarData stImages:(NSArray *)arrSTImage stVideoData:(NSData *)stVideoData;
// 活体检测失败回调方法.
- (void)STMultiLivenessDidFailWithType:(STMultipleLivenessError)iErrorType DetectionType:(STDetectionType)iDetectionType DetectionIndex:(NSInteger)iIndex Data:(NSData *)encryTarData;
// 取消活体检测指令回调方法.
- (void)STMultiLivenessDidCancel;

调用公有云接口,得到防hack得分或者进行人脸比对

活体检测成功之后,SDK会返回对应的人脸图片以及一个加密的二进制文件。您可以把这个加密的二进制文件(或者保存的人脸图片)上传到公有云接口,进行防hack校验或者人脸比对。

1.进行活体防hack校验:

如果上传加密的二进制文件,请参考:http://devdoc.cloud.linkface.cn/hackness/hackness_liveness_hack_detect.html

如果上传人脸图片,请参考: http://devdoc.cloud.linkface.cn/hackness/hackness_selfie_hack_detect.html

2.进行人脸比对:

如果上传加密的二进制文件,请参考: http://devdoc.cloud.linkface.cn/identity/identity_liveness_selfie_verification.html

如果上传人脸图片,请参考:http://devdoc.cloud.linkface.cn/identity/identity_historical_selfie_verification.html

results matching ""

    No results matching ""