![Git Version](https://img.shields.io/github/package-json/v/vladmandic/human?style=flat-square&svg=true&label=git) ![NPM Version](https://img.shields.io/npm/v/@vladmandic/human.png?style=flat-square) ![Last Commit](https://img.shields.io/github/last-commit/vladmandic/human?style=flat-square&svg=true) ![License](https://img.shields.io/github/license/vladmandic/human?style=flat-square&svg=true) ![GitHub Status Checks](https://img.shields.io/github/checks-status/vladmandic/human/main?style=flat-square&svg=true) ![Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/vladmandic/human?style=flat-square&svg=true) # Human Library **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, Body Segmentation**
JavaScript module using TensorFlow/JS Machine Learning library - **Browser**: Compatible with both desktop and mobile platforms Compatible with *CPU*, *WebGL*, *WASM* backends Compatible with *WebWorker* execution - **NodeJS**: Compatible with both software *tfjs-node* and GPU accelerated backends *tfjs-node-gpu* using CUDA libraries
Check out [**Live Demo**](https://vladmandic.github.io/human/demo/index.html) app for processing of live WebCam video or static images - To start video detection, simply press *Play* - To process images, simply drag & drop in your Browser window - Note: For optimal performance, select only models you'd like to use - Note: If you have modern GPU, WebGL (default) backend is preferred, otherwise select WASM backend
## Demos - [**List of all Demo applications**](https://github.com/vladmandic/human/wiki/Demos) - [*Live:* **Main Application**](https://vladmandic.github.io/human/demo/index.html) - [*Live:* **Face Extraction, Description, Identification and Matching**](https://vladmandic.github.io/human/demo/facematch/index.html) - [*Live:* **Face Extraction and 3D Rendering**](https://vladmandic.github.io/human/demo/face3d/index.html) - [*Live:* **Multithreaded Detection Showcasing Maximum Performance**](https://vladmandic.github.io/human/demo/multithread/index.html) - [*Live:* **VR Model with Head, Face, Eye, Body and Hand tracking**](https://vladmandic.github.io/human-vrm/src/human-vrm.html) - [Examples galery](https://vladmandic.github.io/human/samples/samples.html) ## Project pages - [**Code Repository**](https://github.com/vladmandic/human) - [**NPM Package**](https://www.npmjs.com/package/@vladmandic/human) - [**Issues Tracker**](https://github.com/vladmandic/human/issues) - [**TypeDoc API Specification**](https://vladmandic.github.io/human/typedoc/classes/Human.html) - [**Change Log**](https://github.com/vladmandic/human/blob/main/CHANGELOG.md) - [**Current To-do List**](https://github.com/vladmandic/human/blob/main/TODO.md) ## Wiki pages - [**Home**](https://github.com/vladmandic/human/wiki) - [**Installation**](https://github.com/vladmandic/human/wiki/Install) - [**Usage & Functions**](https://github.com/vladmandic/human/wiki/Usage) - [**Configuration Details**](https://github.com/vladmandic/human/wiki/Configuration) - [**Output Details**](https://github.com/vladmandic/human/wiki/Outputs) - [**Face Recognition & Face Description**](https://github.com/vladmandic/human/wiki/Embedding) - [**Gesture Recognition**](https://github.com/vladmandic/human/wiki/Gesture) - [**Common Issues**](https://github.com/vladmandic/human/wiki/Issues) - [**Background and Benchmarks**](https://github.com/vladmandic/human/wiki/Background) ## Additional notes - [**Comparing Backends**](https://github.com/vladmandic/human/wiki/Backends) - [**Development Server**](https://github.com/vladmandic/human/wiki/Development-Server) - [**Build Process**](https://github.com/vladmandic/human/wiki/Build-Process) - [**Adding Custom Modules**](https://github.com/vladmandic/human/wiki/Module) - [**Performance Notes**](https://github.com/vladmandic/human/wiki/Performance) - [**Performance Profiling**](https://github.com/vladmandic/human/wiki/Profiling) - [**Platform Support**](https://github.com/vladmandic/human/wiki/Platforms) - [**Diagnostic and Performance trace information**](https://github.com/vladmandic/human/wiki/Diag) - [**Dockerize Human applications**](https://github.com/vladmandic/human/wiki/Docker) - [**List of Models & Credits**](https://github.com/vladmandic/human/wiki/Models) - [**Models Download Repository**](https://github.com/vladmandic/human-models) - [**Security & Privacy Policy**](https://github.com/vladmandic/human/blob/main/SECURITY.md) - [**License & Usage Restrictions**](https://github.com/vladmandic/human/blob/main/LICENSE)
*See [**issues**](https://github.com/vladmandic/human/issues?q=) and [**discussions**](https://github.com/vladmandic/human/discussions) for list of known limitations and planned enhancements* *Suggestions are welcome!*

## Examples Visit [Examples galery](https://vladmandic.github.io/human/samples/samples.html) for more examples ![samples](assets/samples.jpg)
## Options All options as presented in the demo application... > [demo/index.html](demo/index.html) ![Options visible in demo](assets/screenshot-menu.png)
**Results Browser:** [ *Demo -> Display -> Show Results* ]
![Results](assets/screenshot-results.png)
## Advanced Examples 1. **Face Similarity Matching:** Extracts all faces from provided input images, sorts them by similarity to selected face and optionally matches detected face with database of known people to guess their names > [demo/facematch](demo/facematch/index.html) ![Face Matching](assets/screenshot-facematch.jpg)
2. **Face3D OpenGL Rendering:** > [demo/face3d](demo/face3d/index.html) ![Face Matching](assets/screenshot-face3d.jpg)
3. **VR Model Tracking:** ![vrmodel](assets/screenshot-vrm.jpg)
**468-Point Face Mesh Defails:** (view in full resolution to see keypoints) ![FaceMesh](assets/facemesh.png)


## Quick Start Simply load `Human` (*IIFE version*) directly from a cloud CDN in your HTML file: (pick one: `jsdelirv`, `unpkg` or `cdnjs`) ```html ``` For details, including how to use `Browser ESM` version or `NodeJS` version of `Human`, see [**Installation**](https://github.com/vladmandic/human/wiki/Install)
## Inputs `Human` library can process all known input types: - `Image`, `ImageData`, `ImageBitmap`, `Canvas`, `OffscreenCanvas`, `Tensor`, - `HTMLImageElement`, `HTMLCanvasElement`, `HTMLVideoElement`, `HTMLMediaElement` Additionally, `HTMLVideoElement`, `HTMLMediaElement` can be a standard `