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.scale
andface.iris.scale
Human Release v3.1
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
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.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 rebuildHuman
itself - Default hand skeleton model changed from
handlandmark-full
tohandlandmark-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 TypeDef
refactoring- Re-architect
human.models
namespace 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].iris
withresult.face[n].distance
- Replaced
human.getModelStats()
withhuman.models.stats()
- Moved
human.similarity
,human.distance
andhuman.match
to namespacehuman.match.*
- Obsolete
human.enhance()
- Obsolete
human.gl
- Renamed model
mb3-centernet
tocenternet
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
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
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
towebgl
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.insightface
config section
Seedemo/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
andconfig.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 usingconfig.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 fortfjs-node
,tfjs-node-gpu
andwasm
- Increased Browser test coverage
Run using:demo/browser.html
Runs tests forwebgl
,humangl
,webgpu
andwasm
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
Seemodels/model.json
for 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 smallerhuman
installation
To install all dependencies usenpm 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
- 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
- Add MediaPipe FaceMesh-with-Attention model
model is available in@vladmandic/human-models
repository
to enable, setconfig.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
andhuman.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.cacheModels
setting for details - Add additional demos
human-motion
andhuman-avatar
- Updated samples image gallery
- Allow monkey-patching
fetch
in NodeJS
Iffetch
function is defined, it can be used to load models
from HTTP/HTTPS URLs regardless oftfjs
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
andHandLandmark
annotations - Strong typing for string enums
- Updated
TFJS
Human Release v2.5.6
New:
- Demo
demos/faceid
that utilizes multiple algorithms to validate input before triggering face recognition - Type definitions rollup for
Human
andTFJS
- Optional module
liveness
checks if input appears to be a real-world live image or a recording
best used together with moduleantispoofing
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
andmatch
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
andresults