Skip to content

Releases: vladmandic/human

Human Release v3.2

15 Feb 17:57
Compare
Choose a tag to compare

Refresh release:

  • Toolkit upgrade: TypeScript 5.3.3, TSLib 2.6.2, TFJS 4.17.0, ESLint 8.55.0, ESBuild 0.19.22
  • Custom CI platform major refresh to make it compatible with new toolkits
  • Add new public config variables, face.detector.scale and face.iris.scale

Human Release v3.1

18 Sep 16:58
Compare
Choose a tag to compare

Refresh Release

  • major toolkit upgrade:
    node v20, npm v10, typescript v5.1, tfjs: 4.11
  • add electron environment detection
  • fix gender-ssrnet-imdb
  • fix movenet-multipose
  • add optional crop values for emotion, description, ssrnet and gear models

Human Release v3.0

22 Nov 15:58
Compare
Choose a tag to compare

Optimizations:

  • Enabled high-resolution optimizations
    Internal limits are increased from 2k to 4k
  • Enhanced device capabilities detection
    See human.env.[agent, wasm, webgl, webgpu] for details
  • If config.backend is not set, Human will auto-select best backend
    based on device capabilities
  • Enhanced support for webgpu
  • Reduce build dependencies
    Human is now 30% smaller :)
    As usual, Human has zero runtime dependencies,
    all devDependencies are only to rebuild Human itself
  • Default hand skeleton model changed from handlandmark-full to handlandmark-lite
    Both models are still supported, this reduces default size and increases performance

Features:

  • Add draw label templates
    Allows easy customization of results labels drawn on canvas
  • Add config.filter.autoBrightness (enabled by default)
    Per-frame video on-the-fly brightness adjustments
    Which significantly increases performance and precision in poorly lit scenes
  • Add new demo face detect
  • Improved config.filter.equalization (disabled by default)
    Image and video on-demand histogram equalization
  • Support selecting specific video source when multiple cameras are present
    See human.webcam.enumerate()
  • Updated algorithm to determine distance from camera based on iris size
    See human.result.face[n].distance

Architecture:

  • Upgrade to TFJS 4.1 with strong typing
    see notes on how to use
  • TypeDef refactoring
  • Re-architect human.models namespace for better dynamic model handling
    Added additional methods load, list, loaded, reset
  • Repack external typedefs
    Removes all external typedef dependencies
  • Refactor namespace exports
    Better TypeDoc specs
  • Add named export for improved bundler support when using non-default imports
  • Cleanup Git history for dist/typedef/types
  • Cleanup @vladmandic/human-models
  • Support for NodeJS v19
  • Upgrade to TypeScript 4.9
  • Support for dynamic module load in NodeJS
    See https://vladmandic.github.io/human/demo/nodejs/node-bench

Breaking changes:

  • Replaced result.face[n].iris with result.face[n].distance
  • Replaced human.getModelStats() with human.models.stats()
  • Moved human.similarity, human.distance and human.match to namespace human.match.*
  • Obsolete human.enhance()
  • Obsolete human.gl
  • Renamed model mb3-centernet to centernet

Human Release v2.11

13 Oct 13:13
Compare
Choose a tag to compare

TL;DR: Several new methods and models, but only breaking change is how human.segmentation is handled

  • New methods human.webcam.*
    Enables built-in configuration and control of WebCam streams
  • New method human.video()
    Runs continous detection of an input video
    instead of processing each frame manually using human.detect()
  • New demo for webcam and video methods Live | Code
    Full HTML and JavaScript code in less than a screen
  • Redesigned human.segmentation
    Breaking changes
  • New model rvm for high-quality body segmentation in real-time
    Not part of default deployment, download from human-models
  • New demo for segmentation methods Live | Code
    Full HTML and JavaScript code in less than a screen
  • New advanced demo using BabylonJS and VRM Live | Code
  • Update TypeDoc generation Link
  • Update TypeDefs bundle generation Link
    No external dependencies
  • Fix model caching when using web workers
  • Fix face.rotation when using interpolation
  • Improve NodeJS resolver when using ESM
  • Update demo demo/typescript
  • Update demo demo/faceid
  • Update demo demo/nodejs/process-folder.js
    and re-process /samples Link

Human Release v2.10

07 Sep 16:45
Compare
Choose a tag to compare

Human v2.10 is flagged as major release purely due to number of changes and fixes, but there are no breaking changes

  • Update TFJS to 3.20.0
  • Update TypeScript to 4.8
  • Switch default backend from custom humangl to webgl
    Stability and availability of features in standard TFJS allows to switch back
  • Add InsightFace model as alternative for face embedding/descriptor detection
    Compatible with multiple variations of InsightFace models
    Configurable using config.face.insightface config section
    See demo/faceid/index.ts for usage
    Models can be downloaded from https://github.com/vladmandic/insightface
  • Add human.check() which validates all kernel ops for currently loaded models with currently selected backend
    Example: console.error(human.check());
  • Add config.softwareKernels config option which uses CPU implementation for missing ops
    Disabled by default
    If enabled, it is used by face and hand rotation correction (config.face.rotation and config.hand.rotation)
  • Add underlying tensorflow library version detection when running in NodeJS to
    human.env and check if GPU is used for acceleration
    Example: console.log(human.env.tensorflow)
  • Treat models that cannot be found & loaded as non-critical error
    Instead of creating runtime exception, human will now report that model could not be loaded
  • Improve human.reset() method to reset all config values to defaults
  • Host models in https://github.com/vladmandic/human-models
    Models can be directly used without downloading to local storage
    Example: modelBasePath: 'https://vladmandic.github.io/human-models/models/'
  • Allow hosting models in Google Cloud Bucket
    Hosted models can be directly used without downloading to local storage
    Example: modelBasePath: 'https://storage.googleapis.com/human-models/'
  • Stricter linting rules for both TypeScript and JavaScript
    See ./eslintrc.json for details
  • Enhanced type safety across entire library
  • Fix MobileFaceNet model as alternative for face embedding/descriptor detection
    Configurable using config.face.mobilefacenet config section
  • Fix EfficientPose module as alternative body detection
  • Fix NanoDet module as alternative object detection
  • Fix demo/multithread/node-multiprocess.js demo
  • Fix human.match when using mixed descriptor lengths
  • Fix WASM feature detection issue in TFJS with Edge/Chromium
    Example: console.log(human.env.wasm)
  • Reorganized init & load order for faster library startup
  • Increased NodeJS test coverage
    Run using: npm run test
    Runs tests for tfjs-node, tfjs-node-gpu and wasm
  • Increased Browser test coverage
    Run using: demo/browser.html
    Runs tests for webgl, humangl, webgpu and wasm
    Runs tests for ESM and IIFE versions of library
  • Add config.flags settings to allow setting of custom TFJS flags during backend configuration
  • Increase availability of alternative models
    See models/model.json for full list
  • Update profiling methods in human.profile()
  • Update project dependencies to latest versions

Human Release v2.9

25 Jul 12:35
Compare
Choose a tag to compare
  • Install production-only dependencies by default
    Results in a must faster and smaller human installation
    To install all dependencies use npm install @vladmandic/human --production=false
  • Switch to production @tensorflow/tfjs for browsers
    tfjs has stabilized in recent versions so its not necessary to run a custom bundle anymore
  • Add webview support
  • Add getModelStats method
  • Extract model stats in build process
  • TypeDoc fixes
  • Add face contours to results
  • Improve face compare in demo app
  • Update dependencies and tfjs
  • gear model fixes

Human Release v2.8

08 Jun 12:56
Compare
Choose a tag to compare
  • Updated FaceMesh-Landmarks models
  • Added FaceMesh-with-Attention model is disabled by defaults, enable using
    config.face.mesh.attention = true
  • If FaceMesh-with-Attention model is enabled, Iris model gets disabled
    as its functionality is superseded by attention model
  • Results include more detailed face mesh annotations
    result.face[].annotations
  • Update benchmarks: demo/benchmark
  • Slight performance improvement with canvas reads using WASM backend
  • Default to RTM version of WASM binaries
  • Enhanced WebGPU compatibility
  • Support for NodeJS v18
  • Updated Known Issues
    See https://github.com/vladmandic/human/blob/main/TODO.md

Human Release v2.7

09 May 12:18
Compare
Choose a tag to compare
  • Add MediaPipe FaceMesh-with-Attention model
    model is available in @vladmandic/human-models repository
    to enable, set config.face.attention = true
    model replaces iris, eyes and lips keypoints with high-detailed ones
  • Add model pre-compile phase to warmup method
    result is speed-up to first inference by around ~30% for browser environments
  • Changed default face crop from 120% to 140%
    to better utilize caching between frames and face mesh mapping
  • Refactor draw methods into separate modules and fix coloring function
  • Add highlights to attention keypoints
    enabled when both points and attention draw are enabled:
    human.draw.options.drawAttention = true and human.draw.options.drawPoints = true
  • Add ElectronJS demo:
    see https://github.com/vladmandic/human-electron
  • Enhanced 3D demos:
    see https://github.com/vladmandic/human-motion
  • Support for 4K input
  • Update TFJS to 3.16.0
  • Update build platform and dependencies

Human Release v2.6

20 Jan 13:19
Compare
Choose a tag to compare
  • Add model cache hander using IndexDB in browser environments
    see config.cacheModels setting for details
  • Add additional demos
    human-motion and human-avatar
  • Updated samples image gallery
  • Allow monkey-patching fetch in NodeJS
    If fetch function is defined, it can be used to load models
    from HTTP/HTTPS URLs regardless of tfjs platform support
  • Fix BlazeFace detections when face is partially occluded
  • Fix BlazeFace box scaling
  • Fix HandTrack tracking when hand is in front of face
  • Fix ElectronJS compatibility issues
  • Fix body keypoints interpolation algorithm
  • Updated BlazePose calculations
  • Changes to BlazePose and HandLandmark annotations
  • Strong typing for string enums
  • Updated TFJS

Human Release v2.5.6

15 Dec 14:33
Compare
Choose a tag to compare

New:

  • Demo demos/faceid that utilizes multiple algorithms to validate input before triggering face recognition
  • Type definitions rollup for Human and TFJS
  • Optional module liveness
    checks if input appears to be a real-world live image or a recording
    best used together with module antispoofing that checks if input appears to have a realistic face
  • Face masking option in face.config.detector.mask
    result is shading of face image outside of face area which is useful for increased sensitivity of other modules that rely on detected face as input
  • Face crop option in face.config.detector.cropFactor
    result is user-definable fine-tuning for other modules that rely on detected face as input

Other:

  • Update TFJS to 3.12.0
  • Documentation overhaul
  • Improved Safari compatibility
  • Improved similarity and match score range normalization
  • Improved error handling
  • Improved VSCode out-of-the-box experience
  • Fix for optional gear, ssrnet, mobilefacenet modules
  • Fix for Firefox WebGPU compatibility issue
  • Fix face detect box scale and rotation
  • Fix body interpolation
  • Updated blazepose implementation
  • Strong typing for all string enums in config and results