人脸识别 face detect & recognize

前言

最近有一个项目要升级. 它是一个在线教育的 web app. 由于学生年龄小, 不适合用 username/password 这种方式做登入.

所以项目开始之初是使用 RFID 来登入的. 但由于疫情影响, 学生自家的平板电脑无法扫描 RFID. 

曾想改用 QR code 但是后来觉得如果可以使用人脸识别体验会更好一些.

人脸识别自然不可能自己去实现, 所以找了一些方案.

Azure 

Azure 提供的人脸识别服务叫 Face API, 给它 2 张图, 它会告诉你相似度. 1000 次访问 MYR 5.00

由于它是 web service 需要一直发 api 传图片, 所以速度不是很快体验自然也不顺畅. 

face-api.js

face-api.js, 这个库可厉害了. 它基于 Google 的 tensorflow.js. 它可以在 node.js 跑, 也可以在游览器上跑. 

这个库提供人从图片获取人脸的功能, 也提供了对比相似度的功能.

它可以在游览器上跑不需要往返传图片, 速度自然快了, 体验也好了. 

具体实现看这一篇: face-api.js 学习笔记

用于登入需要注意的事:

流程是这样的:

用户点击 Login by Face ID

打开摄像头, 识别人脸位置.

从 local storage 获取用户 Id, 然后去服务端获取用户的人脸图 (由于用户太多了,总不能把所有用户的图都调出来对比)

对比人脸图. 如果失败就 error

成功就发图片发送到服务器 (我们不能只在前端检查, 因为做登入,为了安全还是得让后端来把关, 都一次对比)

成功后就可以让用户登入了. 

原文地址:https://www.cnblogs.com/keatkeat/p/15106314.html