2.10.1

nari-labs/dia2.10.1Sep 7, 2022by vladmandic

AI Summary

Human v2.10.1 updates TFJS and TypeScript, switches default backend to WebGL, adds InsightFace and MobileFaceNet models, and enhances type safety and error handling.

Key Highlights

  • Update TFJS to 3.20.0 and switch default backend from custom `humangl` to `webgl`
  • Add InsightFace model as alternative for face embedding detection
  • Add `human.check()` to validate kernel ops for loaded models
  • Add `config.softwareKernels` for CPU implementation of missing ops
  • Treat missing models as non-critical errors instead of runtime exceptions

New Features

  • InsightFace and MobileFaceNet models
  • Model hosting on GitHub and Google Cloud Bucket
  • Enhanced type safety across the library
  • Fixes for MobileFaceNet, EfficientPose, and NanoDet modules
  • Improved `human.reset()` method

Full Release Notes

**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