NodeJS人脸识别(2)

上一篇介绍了NodeJS实现人脸识别中的人脸注册,搜索,检测功能。可以看到其实抛开用户量不说,其实任何想要实现的功能最终用NodeJS都是可以实现的。今天我们来看下SDK文档关于人脸识别其他的接口,我们可以来看看整套人脸识别具体有什么功能,我们可以怎么在实际应用中去进行应用呢?

人脸更新

我们上一篇讲到了人脸注册,每个人脸会绑定一个唯一的userId, 当然,既然注册了必须要有更新功能。人脸更新就是针对userId进行更新,这时候有两种可能性:

userId存在于用户组

userId不存在用户组

第一种情况很好理解,存在即更新。那如果第二种情况呢?我们可以先看看如果人脸库存在userId的情况:

17781779-b0fc7972115058d0

我们跑下测试下效果:

17781779-718fdcf40ade6b99

可以看到userId存在的情况下会成功更新人脸并返回图片新的face_token以及人脸相对图片的位置信息。那如果userId不存在呢?

17781779-f10114f1a895445a

可以看到人脸不存在会报错user  is  not  exist。这样的返回其实也是可以的,但是人脸识别本质就是为了提升用户体验,降低操作复杂性,所以其实还有一种方案可以在用户不存在的情况进行将该人脸静默注册到人脸库,就是添加参数action_type: REPLACE

PS:文档中这里存在一个坑:relace文档小写,实际需要大写,且选传参数文档并没有action_type这参数。

我们现在给本接口添加action_type参数:

17781779-7294a61d1d796a87

我们现在使用不存在的userId测试一下具体效果:

17781779-d49d4fc47b727a82

可以看到如果人脸不存在直接静默注册到人脸库,这样就可以大大提升用户体验。当然这个接口一样可以添加选传参数,我就不详细演示了。我直接贴上请求参数及接口返回参数:

17781779-a74fd10c57687786
17781779-69ba0220457ff93b

人脸删除

人脸删除会将用户人脸信息从用户组中进行删除。这里同样存在两种情况:

用户人脸可能只存在于一个用户组。

用户人脸可能同时存在于多个用户组。

如果用户人脸信息只存在于一个用户组,那直接删除不会出问题。如果用户人脸存在于多个用户组,我们一般不能直接全部删除,因为不同用户组可能应用于不同场景的应用。groupId指定从什么用户组删除人脸信息,如果同时从多个用户组删除则用逗号隔开。

17781779-6b9b668e76d2a969

我们先看下测试效果:

17781779-e3e596420fd707b4

可以看到如果在对应的用户组能够找到与userIdface_token匹配的人脸,就可以删除成功。

老规矩,我直接贴上请求参数以及返回参数:

17781779-8b078ee46ace0881

用户信息查询

这个接口的用法看标题就可以知道了,可以查询用户信息,人脸注册以及人脸更新进行静默注册都是可以选传用户信息user_info,通过这个接口查询就可以查询到用户绑定的个人信息。本接口可以直接通过用户组id以及用户的userId进行查询指定人脸的信息:

17781779-f52ee78587e3f40b.png

我们先看下测试结果:

17781779-ee75a9381a560d3e.png

可以看到返回的user_info为空,因为我注册人脸未进行保存用户个人信息。接下来贴上请求参数和返回参数:

17781779-b575a225d5beab44

查询用户人脸列表

一个用户可以注册多个人脸。本接口可以通过用户组id以及用户userId进行查询指定用户组中该用户所有人脸信息:

17781779-198d624c78108bd7.png

我们先看下测试结果:

17781779-289996756daf71eb.png

返回的结果只有一张人脸信息,因为该userId对应的人脸只有一张,会返回创建或更新时间。接下来贴上请求参数和返回参数:

17781779-e8919e9f5d6bd4d4.png

查询用户列表

本接口可以通过用户组id进行查询指定用户组中所有用户信息:

17781779-208e09e46a29526f

我们先看下测试结果:

17781779-61bf00b8ca299c58

返回的结果会有该groupId中所有userId的信息接下来贴上请求参数和返回参数:

17781779-4fc7c751150f1a1e

复制用户到新的用户组

如果用户人脸已存在一个用户组,使用本接口可以直接将用户人脸信息复制到新的用户组中。这个接口官方SDK文档是有问题的,我们可以先看看请求参数和返回参数:

17781779-f83e86a26872c025.png

接口文档只有用户userId是必传参数,实际经过测试,三个参数都为必传参数。复制与被复制的人脸组都必须已经存在。

17781779-090281eeac586abc

我们先看下测试结果:

17781779-8ab43cc8f8c28242

删除用户

本接口可以通过将用户从某个用户组中进行删除。这个接口与人脸删除接口最大的区别是人脸删除接口是将某个用户组中指定用户的指定人脸进行删除,本接口是删除某用户组指定用户。

17781779-6cef065d17013ee0

我们先看下测试结果:

17781779-fe2a4a2f8bc219dd

可以看到返回success,代表用户从指定的用户组中被删除成功。接下来贴上请求参数和返回参数:

17781779-cd32a328a59d77ad.png

创建用户组

本接口可以创建新的用户组,若用户组已存在则会返回错误信息

17781779-9780195317b971b6

我们先看下测试结果:

17781779-d4c2c8ab79139c5e

可以看到返回success,代表新的用户组创建成功。接下来贴上请求参数和返回参数:

17781779-5f60819c94126d1e

删除用户组

本接口可以删除用户组,若用户组不存在则会返回错误信息

17781779-b6119eda6c557fe8

我们先看下测试结果:

17781779-f6ea5147376b4fa5.png

可以看到返回success,代表删除用户组成功。接下来贴上请求参数和返回参数:

17781779-7194c809e86a6724.png

查询用户组列表

本接口可以查询用户组列表

17781779-9fa839736b61e912

我们先看下测试结果:

17781779-88db1e14a3a257a0

可以看到存在用户组有15。接下来贴上请求参数和返回参数:

17781779-94fc2c364dbb4cf5

在线活体检测

本接口主要功能有:

人脸基础信息:包括人脸框位置,人脸空间旋转角度,人脸置信度等信息。人脸质量检测:判断人脸的遮挡、光照、模糊度、完整度等质量信息。可用于判断上传的人脸是否符合标准。基于图片的活体检测:基于单张图片,判断图片中的人脸是否为二次翻拍举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节)。此能力可用于H5场景下的一些人脸采集场景中,增加人脸注册的安全性和真实性。

17781779-6f9d7b2c524864c0

我们先看下测试结果:

17781779-a4d7c2b62f1ab2b9

这里最重要的返回参数有:

face_liveness:活体分数值thresholds:由服务端返回最新的阈值数据,将此参数与返回的face_liveness进行比较,可以作为活体判断的依据。 frr_1e-4:万分之一误识率的阈值;frr_1e-3:千分之一误识率的阈值;frr_1e-2:百分之一误识率的阈值。误识率越低,准确率越高,相应的拒绝率也越高

可以看到返回的thresholds值为0.97.代表基本上不可能为同一个人。因为我选择的是两张不同的网络图片。其他参数不多进行解释,接下来贴上请求参数和返回参数可以自行理解:

17781779-b6836a77a9ceff40

返回参数过多我只对必返回参数进行截图:

17781779-d35b69c69db2c469

人脸对比

本接口主要功能有:

两张人脸图片相似度对比:比对两张图片中人脸的相似度,并返回相似度分值;多种图片类型:支持生活照、证件照、身份证芯片照、带网纹照四种类型的人脸对比;活体检测:基于图片中的破绽分析,判断其中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节。);质量检测:返回模糊、光照等质量检测信息,用于辅助判断图片是否符合识别要求;

17781779-ac165870ead4a793

我们先看下测试结果:

17781779-0a36cb4199f5aa88

这里最重要的返回参数有:

score:人脸相似得分

可以看到返回的score值为7.644287109.代表基本上不可能为同一个人。因为我选择的是两张不同的网络图片。其他参数不多进行解释,接下来贴上请求参数和返回参数可以自行理解:

17781779-31bc49fb56c6be53

到这里其实SDK关于人脸识别的所有接口都介绍完毕了。其实还有几个接口,必须账户进行企业实名认证才有权限调用,在这里我就不介绍了。本篇内容到这里差不多结束了。如果喜欢我的文章请关注我的个人公众号:周先生自留地。

17781779-73e84fcc53170b73.jpg

猜你喜欢

转载自blog.csdn.net/weixin_33963189/article/details/90808476