本文例子主要写的是如何获取两张脸的相似度, 其余例子参考官网. 博主才疏学浅, 如果有错误, 麻烦大佬们多多指点.
face-api.js 传送门: https://github.com/justadudewhohacks/face-api.js
代码传送门, 安装即用, 顺手点star, 一天好心情, 例子基于face-api.js
https://github.com/TheKiteRunners/face-recognition-browser
文章目录
1. 效果图
可以clone下我的例子代码, 比对参考图片是images文件夹下的reference.jpg
2. 开发流程
2.1. 安装face-api.js
获取face-api.js: npm i face-api.js
如果想要在node端运行, 我作为一个windows用户遇到了n多坑, 下面贴上一些解决链接:
- node-gyp: windows用户安装办法 https://github.com/nodejs/node-gyp#on-windows
- TensorFlow.js Node.js windows故障排查 https://github.com/tensorflow/tfjs-node/blob/master/WINDOWS_TROUBLESHOOTING.md
- 如果遇到
Downloading libtensorflow
events.js:173
throw er; // Unhandled ‘error’ event
^
Error: connect ETIMEDOUT 172.217.160.80:443
网络问题, 需要合理的工具来解决这个问题, 代码里的libtensorflow地址:
const BASE_URI =
‘https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-’;
const CPU_DARWIN = ‘cpu-darwin-x86_64-1.12.0.tar.gz’;
const CPU_LINUX = ‘cpu-linux-x86_64-1.12.0.tar.gz’;
const GPU_LINUX = ‘gpu-linux-x86_64-1.12.0.tar.gz’;
const CPU_WINDOWS = ‘cpu-windows-x86_64-1.12.0.zip’;
const GPU_WINDOWS = ‘gpu-windows-x86_64-1.12.0.zip’;- 安装过程如果遇到"node-pre-gyp install --fallback-to-build", 那是canvas包执行的, 会下载一个文件: https://github.com/node-gfx/node-canvas-prebuilt/releases/download/v2.0.1/canvas-prebuilt-v2.0.1-node-v64-win32-unknown-x64.tar.gz 长时间没反应的话估计是这个包卡主了, 需要合理上网
2.2. 加载model
安装完包之后, 需要根据你所需要的功能加载适当的model, 人脸检测一个model, 表情识别一个model, 人脸识别一个model, 如果你没有提前加载model直接使用api的话会有下面示例代码类似提示
Uncaught (in promise) Error: FaceLandmark68Net - load model before inference
// 这就意味着没有加载FaceLandmark model
那么如何加载model呢, 如下代码
await faceap