3.0.1

juliangarnier/anime3.0.1Nov 22, 2022by vladmandic

AI Summary

A major architectural refresh focusing on performance optimizations, expanded WebGPU support, and improved device detection. It introduces new features like brightness adjustment and label templates, but includes significant breaking changes to the API and model names.

Key Highlights

  • Enabled high-resolution optimizations (up to 4k).
  • Enhanced device capabilities detection and auto-selection of backends.
  • Refactored architecture with strong typing and TFJS 4.1.
  • Added `config.filter.autoBrightness` and label templates.

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()` and `human.gl`
  • Renamed model `mb3-centernet` to `centernet`

New Features

  • Draw label templates
  • AutoBrightness filter
  • WebGPU support
  • Device capability detection
  • 4k resolution support

Full Release Notes

## 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](https://github.com/vladmandic/human/wiki/Draw)  
  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]((https://vladmandic.github.io/human/demo/facedetect/index.html))
- 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](https://github.com/vladmandic/human#typedefs) 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](https://vladmandic.github.io/human/typedoc/index.html)  
- 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`