
隨着愈來愈多的複雜工具日漸成熟,圖像識別的受歡迎程度繼續增加。隨着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