Face-api 是一个基于浏览器的 JavaScript 人脸识别框架,能够识别人脸的姿态、表情、面部特征等等。随着人工智能技术的不断发展,越来越多的网站和 APP 开始使用人脸识别技术来提高用户体验和安全性。
一、face-api能做登录?
随着人脸识别技术的不断发展,越来越多的站页面的登录方式也开始使用人脸识别技术。face-api 提供了相应的识别方法来完成登录功能,下面是一个简单的示例代码:
const image = await faceapi.bufferToImage(buffer);
const detection = await faceapi.detectSingleFace(image).withFaceLandmarks().withFaceDescriptor();
if (detection.descriptor){
const result = await fetch('http://your-api.com/login',
{ method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ faceDescriptor: detection.descriptor }) });
const json = await result.json();
console.log(json);
// 登录成功
}
else {
console.log('没有识别到人脸');
// 登录失败
}
以上代码中,我们以 faceapi 识别到的人脸特征值作为登录凭证,向后端发送请求,实现了人脸识别登录功能。
二、face-api人脸追踪的模块积木
Face-api 提供了多个功能模块,通过这些模块,我们可以挑选相应的模块来完成自己的项目功能。
1.人脸检测
Face-api 提供了一个 detectAllFaces 方法,用于检测图片中的所有人脸,返回一个数组,包含每张脸的坐标信息、置信度等等。
const detections = await faceapi.detectAllFaces(imgEl).withFaceLandmarks().withFaceDescriptors(); console.log(detections)
2.人脸特征提取
Face-api提供了FaceLandmark68Net模型,可将人脸分为68个部分,并且可以通过这些部分来获取面部特征值。
const landmarks68 = await faceapi.detectFaceLandmarks(imgEl); console.log(landmarks68)
3.人脸匹配
通过FaceMatcher类,可以将一组面部特征值加载并保存在内存中,然后可以通过.compareWithLabeledDescriptors方法来比较两个人脸间的相似度。
const labeledDescriptors = [ new faceapi.LabeledFaceDescriptors('alice', [new Float32Array(/*..特征值*/)], null), new faceapi.LabeledFaceDescriptors('bob', [new Float32Array(/*..特征值*/)], null) ] const faceMatcher = new faceapi.FaceMatcher(labeledDescriptors) const bestMatch = faceMatcher.findBestMatch(queryDescriptor) console.log(bestMatch)
三、face-api tracking js 比较
与face-api类似的人脸识别框架还包括tracking.js,这两个框架各有优劣:
1.Face-api 优势:
1) face-api 使用 TensorFlow.js 的模型,具有更强的识别能力;
2) face-api 提供了更强大的 API,可以检测出更多的面部特征值;
3) face-api 支持在浏览器和服务器端同时使用。
2.tracking.js 优势:
1) tracking.js 速度更快,支持硬件加速;
2) tracking.js 具有更小的文件大小;
3) tracking.js 具有更广泛的应用场景,支持人脸、眼睛、嘴巴等的跟踪。
结论:
Face-api 是一个功能强大的人脸识别框架,可以实现人脸检测、特征提取、人脸匹配等功能。与 tracking.js 相比,face-api 具有更强的识别能力和更广的应用场景,但也更加庞大。选择框架需要根据项目需求来判断。