H5、Web、NodeJS 人脸检测识别 基于TensorFlowJS

年龄性别脸部轮廓.jpg

使用 Vue 框架搭建演示,H5WebNodeJS 实现人脸检测识别,基于 TensorFlowJS 实现的 face-api.js 人脸识别库。

起初在 2018 年时,有个项目用人脸检测,当时我在百度寻找了一下关于在浏览器网页 JavaScript 实现人脸识别的方法很少,好多都是用 百度AI 人脸识别接口来实现的。当时 Python 人工智能方面最为热门,很多是做人脸识别和数据分析处理,在 GitHub 上找到人脸识别、机器视觉都是基于 OpenCV 来处理图片,当时发现有个 NodeJS 图像识别处理叫做 opencv4nodejs 的识别库,在作者的仓库内还发现 face-api.js 这个人脸识别库。采用 TensorFlowJS 机器学习库进行模型训练,提升识别功能精确度,感觉不错而且功能也强。

安装依赖库,模型文件放在 public\models 目录下,npm 主要安装以下:

npm i --save face-api.js
npm i --save webrtc-adapter

项目说明

示例参考 face-api.js 作者提供示例源码 examples-browser

内含功能:

  1. 脸标志检测
  2. 人脸表情识别
  3. 年龄和性别识别
  4. 人脸提取
  5. 人脸识别
  6. 人脸识别多图处理
  7. BBT 图片相似度
  8. BBT 图片相似度多查找
  9. BBT 人脸识别
  10. Video 人脸跟踪
  11. Video 人脸识别
  12. WebRTC 人脸跟踪
  13. WebRTC 人脸识别
  14. WebRTC 媒体流基础
人脸检测.jpg
人脸表情识别.jpg
年龄和性别识别.jpg
人脸提取.jpg
BBT人脸库识别.jpg
Video人脸识别.jpg

编译执行环境:

  • NodeJS:v12.13.0
  • Vue 脚手架:@vue/cli@4.3.1
  • Vue:^2.6.11
  • face-api.js:^0.22.2
  • webrtc-adapter:^7.5.1

项目结构

face-api-demo-vue
┌─public                  应用引用静态资源的目录
├─src
│ ├─components            复用组件目录
│ ├─router                页面路由配置文件目录
│ ├─utils                 常用函数工具文件目录
│ ├─views                 页面视图文件目录
│ ├─App.vue               配置App全局应用页面
│ └─main.js               Vue初始化入口文件
├─babel.config.js         Babel格式规范化配置
├─package-lock.json       依赖版本校验信息
├─package.json            项目依赖包、编译配置
└─README.md               项目说明

其他

使用前引入模型

console.log(faceapi.nets);
// ageGenderNet
// faceExpressionNet
// faceLandmark68Net
// faceLandmark68TinyNet
// faceRecognitionNet
// ssdMobilenetv1
// tinyFaceDetector
// tinyYolov2
// 放在public/models内
// 通过url地址访问
// await faceapi.nets.ssdMobilenetv1.loadFromUri("/models");
// 本地路径
// await faceapi.nets.ssdMobilenetv1.loadFromDisk("../../public/models");

侦测人脸

  • detectAllFaces :检测图像中的所有脸部
  • detectSingleFace :检测图像中具有最高置信度得分的脸部

默认情况下,detectAllFacesdetectSingleFace 使用 SSD Mobilenet V1 人脸检测器。

您可以通过传递相应的 options 对象来指定面部检测器:

const detections1 = await faceapi.detectAllFaces(输入, 使用的模型参数)
const detections2 = await faceapi.detectSingleFace(输入, 使用的模型参数)

输入 :使用 HTMLImageElement | HTMLVideoElement | HTMLCanvasElement 类型

使用的模型参数 :配置识别度和修改人脸框,请看 识别库说明 或者 查阅文档

识别库工具

// 请求json格式文件数据
const json = await faceapi.fetchJson("http://www.example.com/file/example.json");

// 从Blob/File对象创建HTMLImageElement
const imgEl = await faceapi.bufferToImage(imgFile);

// 从图像或视频元素创建画布元素
const canvas = faceapi.createCanvasFromMedia(HTMLImageElement | HTMLVideoElement)

OpenCVJS的人脸框跟踪

OpenCV.js机器视觉,只有人脸框检测绘制,模型识别精度不高。

代码提供

face-api-demo Browser搭建

0.13.8版 含 dist/文档/模型/示例,express服务启动。

代码提供

face-api-demo VUE搭建

基于 TensorFlowJS 实现,功能含检测、识别、绘制、对比。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容