node-simple.js 1.4 KB

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * FaceAPI Demo for NodeJS
  3. * - Loads image
  4. * - Outputs results to console
  5. */
  6. const fs = require('fs');
  7. const faceapi = require('../dist/face-api.node.js'); // use this when using face-api in dev mode
  8. // const faceapi = require('@vladmandic/face-api'); // use this when face-api is installed as module (majority of use cases)
  9. async function main() {
  10. await faceapi.nets.ssdMobilenetv1.loadFromDisk('model'); // load models from a specific patch
  11. await faceapi.nets.faceLandmark68Net.loadFromDisk('model');
  12. await faceapi.nets.ageGenderNet.loadFromDisk('model');
  13. await faceapi.nets.faceRecognitionNet.loadFromDisk('model');
  14. await faceapi.nets.faceExpressionNet.loadFromDisk('model');
  15. const options = new faceapi.SsdMobilenetv1Options({ minConfidence: 0.1, maxResults: 10 }); // set model options
  16. const buffer = fs.readFileSync('demo/sample1.jpg'); // load jpg image as binary
  17. const decodeT = faceapi.tf.node.decodeImage(buffer, 3); // decode binary buffer to rgb tensor
  18. const expandT = faceapi.tf.expandDims(decodeT, 0); // add batch dimension to tensor
  19. const result = await faceapi.detectAllFaces(expandT, options) // run detection
  20. .withFaceLandmarks()
  21. .withFaceExpressions()
  22. .withFaceDescriptors()
  23. .withAgeAndGender();
  24. faceapi.tf.dispose([decodeT, expandT]); // dispose tensors to avoid memory leaks
  25. console.log({ result }); // eslint-disable-line no-console
  26. }
  27. main();