Releases: vladmandic/human
Releases · vladmandic/human
Human Release v3.2
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.scaleandface.iris.scale
Human Release v3.1
Refresh Release
- major toolkit upgrade:
nodev20,npmv10,typescriptv5.1,tfjs: 4.11 - add
electronenvironment detection - fix
gender-ssrnet-imdb - fix
movenet-multipose - add optional
cropvalues for emotion, description, ssrnet and gear models
Human Release v3.0
Optimizations:
- Enabled high-resolution optimizations
Internal limits are increased from 2k to 4k - Enhanced device capabilities detection
Seehuman.env.[agent, wasm, webgl, webgpu]for details - If
config.backendis not set, Human will auto-select best backend
based on device capabilities - Enhanced support for
webgpu - Reduce build dependencies
Humanis now 30% smaller :)
As usual,Humanhas zero runtime dependencies,
all devDependencies are only to rebuildHumanitself - Default hand skeleton model changed from
handlandmark-fulltohandlandmark-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
Seehuman.webcam.enumerate() - Updated algorithm to determine distance from camera based on iris size
Seehuman.result.face[n].distance
Architecture:
- Upgrade to TFJS 4.1 with strong typing
see notes on how to use TypeDefrefactoring- Re-architect
human.modelsnamespace for better dynamic model handling
Added additional methodsload,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].iriswithresult.face[n].distance - Replaced
human.getModelStats()withhuman.models.stats() - Moved
human.similarity,human.distanceandhuman.matchto namespacehuman.match.* - Obsolete
human.enhance() - Obsolete
human.gl - Renamed model
mb3-centernettocenternet
Human Release v2.11
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 usinghuman.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
rvmfor 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.rotationwhen 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/samplesLink
Human Release v2.10
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
humangltowebgl
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 usingconfig.face.insightfaceconfig section
Seedemo/faceid/index.tsfor 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.softwareKernelsconfig option which uses CPU implementation for missing ops
Disabled by default
If enabled, it is used by face and hand rotation correction (config.face.rotationandconfig.hand.rotation) - Add underlying tensorflow library version detection when running in NodeJS to
human.envand 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,humanwill 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.jsonfor details - Enhanced type safety across entire library
- Fix MobileFaceNet model as alternative for face embedding/descriptor detection
Configurable usingconfig.face.mobilefacenetconfig section - Fix EfficientPose module as alternative body detection
- Fix NanoDet module as alternative object detection
- Fix
demo/multithread/node-multiprocess.jsdemo - Fix
human.matchwhen 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 fortfjs-node,tfjs-node-gpuandwasm - Increased Browser test coverage
Run using:demo/browser.html
Runs tests forwebgl,humangl,webgpuandwasm
Runs tests for ESM and IIFE versions of library - Add
config.flagssettings to allow setting of custom TFJS flags during backend configuration - Increase availability of alternative models
Seemodels/model.jsonfor full list - Update profiling methods in
human.profile() - Update project dependencies to latest versions
Human Release v2.9
- Install production-only dependencies by default
Results in a must faster and smallerhumaninstallation
To install all dependencies usenpm install @vladmandic/human --production=false - Switch to production
@tensorflow/tfjsfor browsers
tfjshas stabilized in recent versions so its not necessary to run a custom bundle anymore - Add webview support
- Add
getModelStatsmethod - Extract model stats in build process
- TypeDoc fixes
- Add face contours to results
- Improve face compare in demo app
- Update dependencies and
tfjs gearmodel fixes
Human Release v2.8
- 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
WASMbackend - Default to RTM version of
WASMbinaries - Enhanced
WebGPUcompatibility - Support for NodeJS v18
- Updated Known Issues
See https://github.com/vladmandic/human/blob/main/TODO.md
Human Release v2.7
- Add MediaPipe FaceMesh-with-Attention model
model is available in@vladmandic/human-modelsrepository
to enable, setconfig.face.attention = true
model replaces iris, eyes and lips keypoints with high-detailed ones - Add model pre-compile phase to
warmupmethod
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 = trueandhuman.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
- Add model cache hander using IndexDB in browser environments
seeconfig.cacheModelssetting for details - Add additional demos
human-motionandhuman-avatar - Updated samples image gallery
- Allow monkey-patching
fetchin NodeJS
Iffetchfunction is defined, it can be used to load models
from HTTP/HTTPS URLs regardless oftfjsplatform support - Fix
BlazeFacedetections when face is partially occluded - Fix
BlazeFacebox scaling - Fix
HandTracktracking when hand is in front of face - Fix
ElectronJScompatibility issues - Fix body keypoints interpolation algorithm
- Updated
BlazePosecalculations - Changes to
BlazePoseandHandLandmarkannotations - Strong typing for string enums
- Updated
TFJS
Human Release v2.5.6
New:
- Demo
demos/faceidthat utilizes multiple algorithms to validate input before triggering face recognition - Type definitions rollup for
HumanandTFJS - Optional module
liveness
checks if input appears to be a real-world live image or a recording
best used together with moduleantispoofingthat 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
similarityandmatchscore range normalization - Improved error handling
- Improved VSCode out-of-the-box experience
- Fix for optional
gear,ssrnet,mobilefacenetmodules - Fix for Firefox WebGPU compatibility issue
- Fix face detect box scale and rotation
- Fix body interpolation
- Updated
blazeposeimplementation - Strong typing for all string enums in
configandresults