https://www.toutiao.com/a6717089581591691779/

本文为大家介绍的是一款在浏览器端运行的人脸识别框架,即faceapi.js 。它基于tensorflow.js,完成了从人脸检测,提取特征点,计算描述符和人脸匹配等一系列步骤。

识别效果图


由于此框架的易用性,通过寥寥几行JavaScript代码即可完成端到端的识别,以下介绍人脸识别的一般步骤:

人脸检测

首先,我们从图片或者视频帧中定位出人脸位置。框架为我们提供了三种用于人脸检测的模型。

Tiny Face Detector

Tiny Face Detector是一款性能非常高的实时人脸检测器,与SSD Mobilenet V1人脸检测器相比,它更快,更小,资源消耗更少,作为回报,它在检测小脸时的表现稍差。这个型号极具移动性和网络友好性,因此它应该是移动设备和资源有限的客户端上的GO-TO人脸检测器。量化模型的大小仅为190 KB(tiny_face_detector_model)。

SSD Mobilenet V1

对于面部检测,该项目实现了基于MobileNetV1的SSD(单次多盒检测器)。神经网络将计算图像中每个面部的位置,并将返回边界框以及每个面部的概率。该面部检测器旨在获得检测面部边界框而不是低推理时间的高精度。量化模型的大小约为5.4 MB(ssd_mobilenetv1_model)。

MTCNN

MTCNN(多任务级联卷积神经网络)代表了SSD Mobilenet v1和Tiny Yolo v2的替代面部检测器,它提供了更多的配置空间。通过调整输入参数,MTCNN应该能够检测各种面部边界框大小。MTCNN是一个3级级联CNN,它同时返回5个面部标志点以及每个面的边界框和分数。此外,型号尺寸仅为2MB。


提取68个特征点

该套件实现了一个非常轻巧,快速,准确的68点面部标志探测器。默认模型的大小仅为350kb(face_landmark_68_model),微小模型仅为80kb(face_landmark_68_tiny_model)。两种模型都采用深度可分离卷积以及密集连接块的思想。此外,模型已经在一个标有68个面部标志点的约35k个面部图像的数据集上进行了训练。

脸部特征点样图


计算描述符

对于面部识别,实现类似ResNet-34的体系结构以从任何给定面部图像计算面部描述符(具有128个值的特征向量),其用于描述人脸的特征。该模型不仅仅用于训练的面部集合,这意味着您可以将其用于任何人的面部识别,例如您自己。您可以通过比较它们的面部描述符来确定两个任意面的相似性,例如通过计算欧氏距离或使用您选择的任何其他分类器。


完成人脸识别

基于描述符,可以构建人脸识别匹配器。将其于视频帧中人脸描述符对比,若存在,则可输出人名及相似度。


补充

此外,项目还有其独特的表情检测和年龄检测功能,具体代码使用可见github开源项目。

https://github.com/justadudewhohacks/face-api.js

以下为额外功能效果图:

表情检测图

年龄检测图

基于faceapi.js框架,在前端完成人脸识别相关推荐

  1. vue基于face-api.js实现人脸识别

    一.face-api.js Face-api.js 是一个 JavaScript API,是基于 tensorflow.js 核心 API 的人脸检测和人脸识别的浏览器实现.它实现了一系列的卷积神经网 ...

  2. vue3 基于faceapi.js实现人脸识别

    vue3 基于faceapi.js实现人脸识别 先贴代码 <template><div class="app-container"><div>{ ...

  3. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计

    转载需经本人同意且标注本文原始地址:https://zhaomenghuan.github.io/blog/nodejs-eggjs-usersytem.html 前言 近来公司需要构建一套 EMM( ...

  4. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计 1

    前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...

  5. php微信里面换行符,如何在字符串中间加换行符js微信小程序实现人脸识别

    本文为大家分享了微信小程序人脸识别的具体代码,供大家参考,具体内容如下 首先,我们要有开发者工具,今天所说的是后端和前端联合起来实现的. 在PHP的控制器中写一个upload方法,代码如下: publ ...

  6. 纯前端实现人脸识别-提取-合成

    2017-09-17 前端大全 (点击上方公众号,可快速关注)   来源:雅X共赏 http://refined-x.com/2017/09/06/纯前端实现人脸识别-提取-合成/ 如有好文章投稿,请 ...

  7. 基于翔云OCR云平台的人脸识别(1)

    基于翔云OCR云平台的人脸识别 本节通过翔云OCR云平台来实现人脸识别.调用人脸对比API,通过https post方式向云服务器提交两张需要对比的图片Base64流以及其他信息,云服务器处理后返回判 ...

  8. 基于翔云OCR云平台的人脸识别(2)

    基于翔云OCR云平台的人脸识别(2) 项目思路 raspistill命令的相关参数说明 -v:调试信息查看 -w:图像宽度 -h:图像高度 -rot:图像旋转角度,只支持 0.90.180.270 度 ...

  9. Linux毕业设计:基于OpenCV和QT库实现的人脸识别考勤/门禁系统(arm嵌入式ubuntu)

    本文介绍:Linux上以opencv和qt库实现的人脸识别系统,可应用于考勤.门禁等场景,具有人脸录入.删除.人脸检测.识别.用户管理等完整功能.可运行于ARM嵌入式linux.ubuntu即纯软件. ...

最新文章

  1. spring security 注解不生效的一些隐含问题
  2. Karp 21个规约问题 笔记 (1~13个规约问题)
  3. zen cart 操作-修改
  4. 前端学习(2520):环境搭建
  5. 405 not allowed怎么解决_英语口语:“您拨叫的用户不在服务区”这类电话常用语怎么说...
  6. 小米公布Q1手机出货量:驳斥暴跌谣言
  7. 架构师Jack专访:全面认识软件测试架构师
  8. python selenium 获取接口数据
  9. 无法登录谷歌账号,提示次浏览器或应用可能不安全
  10. 独家|神秘SDK暗刷百度广告 植入数千款APP
  11. windows7系统安装中文语言包汉化问题
  12. 微信小程序后端用python_使用django开发微信小程序后端
  13. html5 摇骰子游戏,HTML5+JavaScript实现掷骰子游戏代码
  14. java new什么意思_java里的new到底是什么意思?
  15. Android证书信任问题与大表哥
  16. 【coq】函数语言设计 笔记 07 - indProp
  17. 【转载】BAPI_GOODSMVT_CREATE FUNCITON FOR MIGO 各种移动类型 源代码参考
  18. fiddler证书安装
  19. Bootstrap4动态切换主题
  20. 今日芯声 | 大大大!世界上最大的移动电源将前往北极圈

热门文章

  1. JAVA对接OPC协议-Utgard
  2. 贪心NLP——jieba分词、停用词过滤、词的标准化,词袋模型
  3. QQ微信微博联合登录流程总结
  4. py2neo 创建关系_py2neo在已有节点上批量创建关系
  5. 创建和导出SVG的技巧
  6. Android Animator(动画)类 详解
  7. 靠Find X5 Pro冲击高端市场?OPPO还需继续努力
  8. Signoff Criteria --- ocv/aocv/pocv之POCV介绍
  9. IOS微信跳一跳调试
  10. BUUCTF-Crypto【21-40T】loading……