多种条件限制之下,如何完成真人实景游戏场景下的人脸识别开锁功能?云加社区邀请到腾讯科技产品经理—高树磊,分享他是如何用200行代码,从系统架构、硬件选型、到系统搭建,一步步地实现此精致小巧的人脸识别开锁应用的,希望能和大家一道交流。
一、案例概述
1. 背景
帮朋友实现了一个人脸识别进行开锁的功能,用在他的真人实景游戏业务中。几个月来运行稳定,体验良好,借着此次宅家的时间,整理一下这个应用的实现过程。
总的来说需求描述简单,但由于约束比较多,在架构与选型上还是花了些心思。
2. 部署效果
由于该游戏还在线上服务中,此处就不放出具体操作的视频了。部署效果如下图所示:
3. 玩家体验
- 玩家发现并进入空间后,在显示屏看到自己在当前场景出镜的实时画面。
- 玩家靠近观察时,捕获当前帧进行人脸识别,实时画面中出现水印字幕“认证中”
- 人脸认证失败时,实时画面水印字幕变更为“认证失败”,字幕维持2秒后消失,恢复初始状态。玩家继续寻找游戏线索,重新进行认证。
- 人脸认证成功时,实时画面水印字幕变更为“认证成功”,并弹开保险箱门。进入后续游戏环节。
二、产品要求
1. 需求说明
需求提出时比较明确,核心逻辑不复杂。
- 人脸识别:通过人脸识别进行鉴权。
- 开锁管理:通过鉴权则打开箱门,未通过则保持锁定。
- 反馈提示:需要有实时视频反馈,指引明确,便于优化玩家体验。
2. 约束说明
毕竟是生意,所以在商言商,对实用性和成本要求很高,关键是不要影响游戏过程,同时保证玩家体验。
- 低成本:需要低建设成本,低维护成本。
- 易维护:对维护人员技术水平要求低,出现软硬件故障时,任意店员可以快速恢复。
- 高可靠:识别准确率高,容错能力强,系统持续运行中故障率低。
- 有限空间:整套系统在去除显示屏、电磁锁、保险箱后,其它结构实施空间不能超过20cm*15cm*15cm 体积。
- 采光不足:实景空间小,有顶光无侧光,曝光时间较长。
- 通用供电:只提供5V、12V两种直流电接口。
- 并行处理:鉴权流程与反馈流程并行,鉴权过程中,反馈系统不能出现中断、阻塞等情况,使玩家有明显的中断、卡死体验。
- 弱网络环境:由于房间隔断多,网络共用,所以网速有限,有突发延迟情况。
3. 功能设计
可能的架构方案有多种(不同方案间的比较,在文末进行),下面展开说明一下最终上线的方案。
(1) 设定流程
流程与效果,请参考前文“玩家体验” 部分内容。
(2)可配置内容
a. 腾讯云密钥对
修改配置文件,用于适配腾讯云账号切换功能(测试账号/正式账号)。
b. 人员库ID
修改配置文件,用于指定不同人员库(测试库/正式库)。
c. 水印提示
更换对应图片,实现更换水印。使用图片管理,而不是文字配置的原因,是由于图片配置模式无需字库支持,无需配置显示大小,易于图案嵌入。由于所见即所得