Face-api.js:利用TensorFlow.js的JavaScript人脸识别

2018 年 11 月 18 日

Face-api.js:利用TensorFlow.js的JavaScript人脸识别

Face-api.js是一个 JavaScript API,是基于tensorflow.js核心API的人脸检测和人脸识别的浏览器实现。它实现了一系列的卷积神经网络(CNN),针对网络和移动设备进行了优化。


在 InfoQ 的访谈中,face-api 和 face-recognition.js的创造者文森特•穆勒解释了他们的动机:


其实,我有另一个类库face-recognition.js,它能够检测脸部和用node.js进行人脸识别。在某个时候,我发现了tensorflow.js,并对浏览器中的机器学习产生了浓厚的兴趣。

因此,我很好奇如果可以移植现有的人脸检测和人脸识别模型到tensorflow.js,它能否可以依然运转如常。


这一切怎么开始呢。



(图片来自 github.com


对于人脸检测来说,face-api.js 实现了模型 SSD Mobilenet V1,这是个微小的人脸检测器,是个实验性的暂态混沌神经网络(MTCNN)。


SSD(单发多盒探测器)MobileNet V1 是一个基于 MobileNet V1 的模型,旨在获得高精度检测边界框。这个模型主要计算每张脸在图像中的位置,并返回边界框以及每个脸的检测概率。


这个微小的人脸检测器是个实时人脸检测的模型,相比于 SSD Mobilenet V1,它更快,更小,消耗的资源更少。这个模型已经在 14 千张标记有边界框的图像上做过训练了。据穆勒说,只有有限资源的客户使用这个模型应该不会有问题的。


MTCNN(多任务级联卷积神经网络)是一种实验模型,以另一种人脸检测器 SSD MobileNet V1 和 Tiny Yolo V2 的面貌出现,从而提供了更多配置的可能性。


对于 68 点人脸标记检测,有两个轻量级和快速模式,face_landmark_68_model 只需要 350 kb, 而 face_landmark_68_tiny_model 则只要求 80 kb。两种模型都采用了深度可分离卷积和紧密连接块的思想。该模型已经在大约 35 千张标有 68 脸部标记点的脸部图片集上训练过了。


对于人脸识别,是基于 ResNet-34 类架构的一个模型,提供以 face.js 从任何脸图像对脸部描述的计算。这个模型不仅限于用于训练的脸部集,这意味着开发人员可以用它对任何人做人脸识别。它可以通过比较脸部描述找出两个任意的相似面孔。


为从 face-api.js 开始着手,从 dist/face-api.js 或 dist/face-api.min.js下载最新的构建,并引入这个脚本:


<script src="face-api.js"></script>
复制代码


为加载一个模型,必须提供模型文件作为资产,然后,假设模型驻留在/models 下:


await faceapi.loadSsdMobilenetv1Model('/models'// accordingly for the other models:// await faceapi.loadTinyFaceDetectorModel('/models'// await faceapi.loadMtcnnModel('/models'// await faceapi.loadFaceLandmarkModel('/models'// await faceapi.loadFaceLandmarkTinyModel('/models'// await faceapi.loadFaceRecognitionModel('/models'
复制代码


对于想在本地运行示例的开发人员来说,执行下面的步骤并浏览 http://localhost:3000/


git clone [](https://github.com/justadudewhohacks/face-api.js.git) cd face-api.js/examplesnpm inpm start
复制代码


关于 face-api.js 的更多信息可以在GitHub库中找到,里面还有人脸识别教程人脸跟踪教程


查看英文原文:Face-api.js: JS Face Recognition Leveraging TensorFlow.js


2018 年 11 月 18 日 08:002417

评论

发布
暂无评论
发现更多内容

Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

YourBatman

spring springboot

将设计模式应用到日常的curd中—分离关联查询

LSJ

Java 设计

ServerlessDays China:无服务器的未来

Michael Yuan

云计算 Serverless 容器 虚拟机 webassembly

话题讨论|在编程中,有哪些好习惯是应该一直坚持下去的?

InfoQ写作平台

写作平台 话题讨论 话题

火焰图:全局视野的Linux性能剖析

Marionxue

企业的数字化转型探索

松子(李博源)

企业架构 数字化 企业数字化转型

你有认真了解过自己的“Java对象”吗

海星

Java JVM

我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。

why技术

Java 源码 jdk 并发 bug

2020,是中国SaaS行业的机遇之年?

ToB行业头条

Worktile完成新一轮融资,将发力研发管理赛道

Worktile

融资

Redis基础:redis特点

奈学教育

redis

架构师是怎样炼成的 6-1

闷骚程序员

解读:新基建为区块链带来的新机遇

CECBC区块链专委会

微信小程序使用GoEasy实现websocket实时通讯

GoEasy消息推送

小程序 websocket 即时通讯

MySql的Dockerfile编写

玏佾

快来!我从源码中学习到了一招Dubbo的骚操作!

why技术

源码 面试 dubbo 动态代理

统一物品编码 破解追溯“断链”困局

CECBC区块链专委会

java 后端博客系统文章系统——No4

猿灯塔

《中国区块链产业园15强名录》

CECBC区块链专委会

数据库周刊32丨Oracle自治数据库大动作;腾讯云MySQL 8.0上线;华为数据库工程师认证发布;update引起业务卡顿;PostgreSQL安全加固;openGauss单机安装;中国DBA联盟"ACDU"邀您加入……

墨天轮

MySQL 数据库 oracle postgresql

​中国SaaS处在什么阶段?

ToB行业头条

猿灯塔:spring Boot Starter开发及源码刨析(四)

猿灯塔

Java 猿灯塔 spring Boot Starter

Markdown工具Typora结合gitee码云图床自动上传云端图片

Flychen

Typora markdown gitee

练习 6-1

闷骚程序员

支付公司如何赚钱?支付网关如何设计?

诸葛小猿

微信 支付宝 聚合支付 第三方支付 支付网关

为什么单元测试不是持续交付的唯一答案

持续集成 单元测试

Redis基础:redis特点

古月木易

redis

一口气讲透一致性哈希(Hash),助力「码农变身」

码农神说

一致性算法 一致性哈希 一致性hash 一致性Hash算法

第六周作业

赵龙

啃碎并发(10):内存模型之内部原理

猿灯塔

【融云分析】融云实时音视频 SDK 对智能硬件的视频适配

Geek_116789

Face-api.js:利用TensorFlow.js的JavaScript人脸识别-InfoQ