Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gaze Tracking, Gesture Recognition
 
 
 
 
Go to file
Vladimir Mandic 672e2c03f9 update 2021-03-09 13:18:08 -05:00
.github Create codeql-analysis.yml 2021-02-08 13:29:58 -05:00
assets added blazepose-upper 2021-03-05 07:39:37 -05:00
demo fix for face detector when mesh is disabled 2021-03-09 13:15:40 -05:00
dist fix for face detector when mesh is disabled 2021-03-09 13:15:40 -05:00
models added blazepose-upper 2021-03-05 07:39:37 -05:00
server optimize for npm 2021-03-08 14:12:12 -05:00
src fix for face detector when mesh is disabled 2021-03-09 13:15:40 -05:00
types update docs and demo 2021-03-08 07:32:24 -05:00
wiki@2111052766 optimize for npm 2021-03-08 14:12:12 -05:00
.eslintrc.json update lint rules 2021-02-13 09:21:48 -05:00
.gitignore major work on body module 2020-12-16 18:36:24 -05:00
.gitmodules updated wiki 2020-11-07 09:42:54 -05:00
.markdownlint.json update badges 2021-03-08 15:06:56 -05:00
CHANGELOG.md fix for face detector when mesh is disabled 2021-03-09 13:15:40 -05:00
CODE_OF_CONDUCT update default github docs 2021-02-08 13:20:37 -05:00
CONTRIBUTING update default github docs 2021-02-08 13:20:37 -05:00
LICENSE Initial commit 2020-10-11 19:14:20 -04:00
README.md update badges 2021-03-08 15:06:56 -05:00
SECURITY.md Create SECURITY.md 2021-02-08 13:28:32 -05:00
TODO.md update 2021-03-09 13:18:08 -05:00
config.js fix performance issue when running with low confidence 2021-03-08 10:06:34 -05:00
favicon.ico refactored package file layout 2020-10-17 06:30:00 -04:00
human.service update tfjs to 3.1.0 2021-02-17 10:22:38 -05:00
manifest.webmanifest menu fixes 2021-02-08 13:07:49 -05:00
package-lock.json 1.0.1 2021-03-09 13:15:59 -05:00
package.json 1.0.1 2021-03-09 13:15:59 -05:00
tsconfig.json updated typings 2021-02-08 12:47:38 -05:00

README.md

Version Last Commit License GitHub Status Checks Vulnerabilities

Human Library

3D Face Detection & Rotation Tracking, Face Embedding & Recognition,
Body Pose Tracking, Hand & Finger Tracking,
Iris Analysis, Age & Gender & Emotion Prediction
& Gesture Recognition


Native JavaScript module using TensorFlow/JS Machine Learning library
Compatible with Browser, WebWorker and NodeJS execution on both Windows and Linux

  • Browser/WebWorker: Compatible with CPU, WebGL, WASM and WebGPU backends
  • NodeJS: Compatible with software tfjs-node and CUDA accelerated backends tfjs-node-gpu

Check out Live Demo for processing of live WebCam video or static images


Project pages


Wiki pages


Additional notes


Default models

Default models in Human library are:

  • Face Detection: MediaPipe BlazeFace-Back
  • Face Mesh: MediaPipe FaceMesh
  • Face Iris Analysis: MediaPipe Iris
  • Emotion Detection: Oarriaga Emotion
  • Gender Detection: Oarriaga Gender
  • Age Detection: SSR-Net Age IMDB
  • Body Analysis: PoseNet
  • Face Embedding: Sirius-AI MobileFaceNet Embedding

Note that alternative models are provided and can be enabled via configuration
For example, PoseNet model can be switched for BlazePose model depending on the use case

For more info, see Configuration Details and List of Models


See issues and discussions for list of known limitations and planned enhancements

Suggestions are welcome!




Options

As presented in the demo application...

Options visible in demo




Examples


Training image:

Example Training Image

Using static images:

Example Using Image

Live WebCam view:

Example Using WebCam




Example simple app that uses Human to process video input and
draw output on screen using internal draw helper functions

import Human from '@vladmandic/human';

// create instance of human with simple configuration using default values
const config = { backend: 'webgl' };
const human = new Human(config);

function detectVideo() {
  // select input HTMLVideoElement and output HTMLCanvasElement from page
  const inputVideo = document.getElementById('video-id');
  const outputCanvas = document.getElementById('canvas-id');
  // perform processing using default configuration
  human.detect(inputVideo).then((result) => {
    // result object will contain detected details
    // as well as the processed canvas itself
    // so lets first draw processed frame on canvas
    human.draw.canvas(result.canvas, outputCanvas);
    // then draw results on the same canvas
    human.draw.face(outputCanvas, result.face);
    human.draw.body(outputCanvas, result.body);
    human.draw.hand(outputCanvas, result.hand);
    human.draw.gesture(outputCanvas, result.gesture);
    // loop immediate to next frame
    requestAnimationFrame(detectVideo);
  });
}

detectVideo();

Downloads Stars Code Size Commit Activity