前端如何玩转人脸识别

62次阅读

共计 1511 个字符,预计需要花费 4 分钟才能阅读完成。

背景
人脸识别技术在当下曾经非常成熟,但次要在挪动端和专有设施利用上较为遍及,而在 Web 端并不多见,本着学习的目标从零实现 web 端的人脸登录性能。

视频流:应用 navigator.getUserMedia 办法在浏览器中获取视频流 + 音频流(通过摄像头麦克风),未来能够用于获取任意数据流,比方光盘和传感器。

face_recognition:被称为世界上最简略的人脸识别库(应用的确超简略)。你能够通过 Python 援用或者命令行的模式应用它,来治理和辨认人脸。该软件包应用 dlib 中最先进的人脸识别深度学习算法,使得辨认准确率在《Labled Faces in the world》测试基准下达到了 99.38%。它同时提供了一个叫 face_recognition 的命令行工具,以便你能够用命令行对一个文件夹中的图片进行辨认操作。

总体流程:

  1. 启动 web 服务,应用 face_recognition 将根底库图片进行建模,将建模后果(辨认到的人脸在图片中的地位和人脸特色)加载到内存。
  2. 前端通过 h5 页面的 getUserMedia 办法调用摄像头获取视频流。
  3. 通过 canvas 抓取一帧视频转化为图片(base64),应用 http 或 websocket 发送到后盾。
  4. 后盾承受 base64 参数并转化为图片保留。
  5. 调用 face_recognition.locations 和 face_recognition.face_encodings 进行图片建模。
  6. 调用 face_recognition.compare_faces 将图片建模后果与根底库后果比对。
  7. 依据定义的比对阈值(被称为容忍度,个别为 0.6)返回比对后果,如果阈值小于该值,判断是该用户,认定容许登录,返回零碎界面。否则返回人脸识别失败的信息。

功能模块图:

性能时序图:

效率:

经测试,最终实现能够底库数据为 10 人时,1s 左右实现刷脸登录,辨认成果也能承受,在侧脸,半脸(鼻子到额头)测试后果能够通过。

理论利用可行性

在可视化我的项目中人脸识别联合传统的账号密码登录,可晋升零碎安全性和更好的用户体验。

限度

浏览器调用摄像头只有在 https 协定、127.0.0.1、localhost 下有权限,理论我的项目须要反对 https。

兼容性

Desktop

Mobile


留神:

本文只介绍了简略实现,零碎安全性没有过多思考,比方在这个简略零碎中,前端的数据获取流程,非注册用户应用注册用户的照片也能骗过零碎,在照片数据传输的过程中,也会有数据泄露的危险。前面将会针对这些状况进行一系列的优化。

代码
https://github.com/James-Nie/…

阐明

装置 face-recognition

首先阐明,我的零碎是 win10,python 版本是 python3.7,须要当时下载一下 3 个包并装置:

1、vs c++ 2015, 必须是 2015,不要问为什么

能够用这个链接:https://www.microsoft.com/zh-…

也能够用社区版

2、Boost C++ Libraries,能够用这个链接:

https://dl.bintray.com/boosto…

抉择 boost_1_66_0-msvc-14.0-64.exe,装置到 C 盘即可

3、cmake

能够用这个链接:https://cmake.org/download/

抉择 cmake-3.15.0-rc4-win64-x64.msi

留神!!!cmake 在装置过程中切记抉择增加门路到环境变量中。

4、当下面 3 个都装置好之后,能够间接在命令窗口装置 pip install face-recognition 即可,在这过程中会主动装置好 dlib,当然也能够先装置 dlib,这就看各位情绪了。

正文完
 0