您的位置:

Face-api:人脸识别框架详解

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 具有更强的识别能力和更广的应用场景,但也更加庞大。选择框架需要根据项目需求来判断。