
随着愈来愈多的复杂工具日渐成熟,图像识别的受欢迎程度继续增加。随着AI和计算机视觉技术的发展(事实上,因为互联网,咱们如今能够得到大量数据),如今也能够在浏览器中进行人脸表情识别。javascript
今天,我想向你介绍face-api.js,这是在TensorFlow.js(为JavaScript建立的流行的机器学习库)之上实现的JavaScript人脸识别库。html
Face-api很是容易使用。它具备强大的API,该API仅公开必要的配置,隐藏了全部底层,例如实际编写神经网络。除了不一样的识别模型外,它还带有预建的绘图功能,所以咱们没必要弄乱画布。前端
在本教程中,我将介绍如何使用它来检测图像上的情绪。实际上,只是为了向你展现使用face-api.js来实现它很容易,整个脚本文件大约有20行。所以,让咱们开始吧。java
设置Face-API
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Emotion Decetion With face-api.js</title> <style> body { margin: 0; } canvas { position: absolute; top: 0; left: 0; }</style> </head> <body> <img src="emotions.jpg" alt="" /> <script src="face-api.min.js"></script> <script src="app.js"></script> </body></html>
加载模型
(async () => { await faceapi.nets.ssdMobilenetv1.loadFromUri('/models');})();
侦测人脸
(async () => { await faceapi.nets.ssdMobilenetv1.loadFromUri('/models');
const image = document.querySelector('img'); const canvas = faceapi.createCanvasFromMedia(image); const detection = await faceapi.detectAllFaces(image);})();
const detection = await faceapi.detectAllFaces(image, new faceapi.TinyFaceDetectorOptions());
绘制检测
(async () => { ... const detection = await faceapi.detectAllFaces(image);
const dimensions = { width: image.width, height: image.height };
const resizedDimensions = faceapi.resizeResults(detection, dimensions);
document.body.append(canvas);
faceapi.draw.drawDetections(canvas, resizedDimensions);})();
添加表情和地标检测
(async () => { await faceapi.nets.ssdMobilenetv1.loadFromUri('/models'); await faceapi.nets.faceLandmark68Net.loadFromUri('/models'); await faceapi.nets.faceExpressionNet.loadFromUri('/models');
...})();
(async () => { ... const detection = await faceapi.detectAllFaces(image) .withFaceLandmarks() .withFaceExpressions();
...})();
(async () => { await faceapi.nets.ssdMobilenetv1.loadFromUri('/models'); await faceapi.nets.faceLandmark68Net.loadFromUri('/models'); await faceapi.nets.faceExpressionNet.loadFromUri('/models');
const image = document.querySelector('img'); const canvas = faceapi.createCanvasFromMedia(image); const detection = await faceapi.detectAllFaces(image) .withFaceLandmarks() .withFaceExpressions();
const dimensions = { width: image.width, height: image.height };
const resizedDimensions = faceapi.resizeResults(detection, dimensions);
document.body.append(canvas);
faceapi.draw.drawDetections(canvas, resizedDimensions); faceapi.draw.drawFaceLandmarks(canvas, resizedDimensions); faceapi.draw.drawFaceExpressions(canvas, resizedDimensions);})();
本文分享自微信公众号 - web前端开发(web_qdkf)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。web