update todo and changelog

pull/356/head
Vladimir Mandic 2022-11-22 11:00:04 -05:00
parent 69e9720799
commit 5156b18f4f
3 changed files with 54 additions and 108 deletions

View File

@ -9,11 +9,12 @@
## Changelog
### **HEAD -> main** 2022/11/22 mandic00@live.com
### **3.0.1** 2022/11/22 mandic00@live.com
### **origin/main** 2022/11/22 mandic00@live.com
- support dynamic loads
- polish demos
- add facedetect demo and fix model async load
- enforce markdown linting

55
TODO.md
View File

@ -50,58 +50,3 @@ No support for running in **web workers** as Safari still does not support `Offs
<hr><br>
## Pending Release Changes
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`

View File

@ -1,50 +1,50 @@
2022-11-22 10:34:25 DATA:  Build {"name":"@vladmandic/human","version":"3.0.1"}
2022-11-22 10:34:25 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.1"}
2022-11-22 10:34:25 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
2022-11-22 10:34:25 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.15","typescript":"4.9.3","typedoc":"0.23.21","eslint":"8.28.0"}
2022-11-22 10:34:25 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
2022-11-22 10:34:25 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]}
2022-11-22 10:34:25 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":361}
2022-11-22 10:34:25 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":569,"outputBytes":924}
2022-11-22 10:34:25 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":80,"inputBytes":670542,"outputBytes":317619}
2022-11-22 10:34:25 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":577,"outputBytes":928}
2022-11-22 10:34:25 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":80,"inputBytes":670546,"outputBytes":317623}
2022-11-22 10:34:25 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":665,"outputBytes":1876}
2022-11-22 10:34:25 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":80,"inputBytes":671494,"outputBytes":317734}
2022-11-22 10:34:25 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1375,"outputBytes":670}
2022-11-22 10:34:25 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":80,"inputBytes":670288,"outputBytes":316195}
2022-11-22 10:34:26 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1375,"outputBytes":1138192}
2022-11-22 10:34:26 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":80,"inputBytes":1807810,"outputBytes":1450757}
2022-11-22 10:34:26 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":80,"inputBytes":1807810,"outputBytes":1894174}
2022-11-22 10:34:30 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15}
2022-11-22 10:34:31 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true}
2022-11-22 10:34:31 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6082,"outputBytes":2872}
2022-11-22 10:34:31 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17572,"outputBytes":9456}
2022-11-22 10:34:40 STATE: Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":169,"errors":0,"warnings":0}
2022-11-22 10:34:40 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
2022-11-22 10:34:40 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
2022-11-22 10:34:40 INFO:  Done...
2022-11-22 10:34:40 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
2022-11-22 10:34:40 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
2022-11-22 10:34:40 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
2022-11-22 10:34:40 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
2022-11-22 10:34:40 STATE: Filter: {"input":"types/tfjs-core.d.ts"}
2022-11-22 10:34:41 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":204}
2022-11-22 10:34:41 STATE: Filter: {"input":"types/human.d.ts"}
2022-11-22 10:34:41 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"}
2022-11-22 10:34:41 STATE: Write: {"output":"dist/human.esm.d.ts"}
2022-11-22 10:34:41 STATE: Write: {"output":"dist/human.d.ts"}
2022-11-22 10:34:41 STATE: Write: {"output":"dist/human.node-gpu.d.ts"}
2022-11-22 10:34:41 STATE: Write: {"output":"dist/human.node.d.ts"}
2022-11-22 10:34:41 STATE: Write: {"output":"dist/human.node-wasm.d.ts"}
2022-11-22 10:34:41 INFO:  Analyze models: {"folders":8,"result":"models/models.json"}
2022-11-22 10:34:41 STATE: Models {"folder":"./models","models":12}
2022-11-22 10:34:41 STATE: Models {"folder":"../human-models/models","models":41}
2022-11-22 10:34:41 STATE: Models {"folder":"../blazepose/model/","models":4}
2022-11-22 10:34:41 STATE: Models {"folder":"../anti-spoofing/model","models":1}
2022-11-22 10:34:41 STATE: Models {"folder":"../efficientpose/models","models":3}
2022-11-22 10:34:41 STATE: Models {"folder":"../insightface/models","models":5}
2022-11-22 10:34:41 STATE: Models {"folder":"../movenet/models","models":3}
2022-11-22 10:34:41 STATE: Models {"folder":"../nanodet/models","models":4}
2022-11-22 10:34:42 STATE: Models: {"count":55,"totalSize":372917743}
2022-11-22 10:34:42 INFO:  Human Build complete... {"logFile":"test/build.log"}
2022-11-22 10:59:38 DATA:  Build {"name":"@vladmandic/human","version":"3.0.1"}
2022-11-22 10:59:38 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.1"}
2022-11-22 10:59:38 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
2022-11-22 10:59:38 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.15","typescript":"4.9.3","typedoc":"0.23.21","eslint":"8.28.0"}
2022-11-22 10:59:38 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
2022-11-22 10:59:38 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]}
2022-11-22 10:59:38 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":361}
2022-11-22 10:59:38 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":569,"outputBytes":924}
2022-11-22 10:59:38 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":80,"inputBytes":670542,"outputBytes":317619}
2022-11-22 10:59:38 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":577,"outputBytes":928}
2022-11-22 10:59:38 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":80,"inputBytes":670546,"outputBytes":317623}
2022-11-22 10:59:38 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":665,"outputBytes":1876}
2022-11-22 10:59:38 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":80,"inputBytes":671494,"outputBytes":317734}
2022-11-22 10:59:38 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1375,"outputBytes":670}
2022-11-22 10:59:38 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":80,"inputBytes":670288,"outputBytes":316195}
2022-11-22 10:59:39 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1375,"outputBytes":1138192}
2022-11-22 10:59:39 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":80,"inputBytes":1807810,"outputBytes":1450757}
2022-11-22 10:59:39 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":80,"inputBytes":1807810,"outputBytes":1894174}
2022-11-22 10:59:43 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15}
2022-11-22 10:59:45 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true}
2022-11-22 10:59:45 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6082,"outputBytes":2872}
2022-11-22 10:59:45 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17572,"outputBytes":9456}
2022-11-22 10:59:54 STATE: Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":169,"errors":0,"warnings":0}
2022-11-22 10:59:54 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
2022-11-22 10:59:54 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
2022-11-22 10:59:54 INFO:  Done...
2022-11-22 10:59:54 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
2022-11-22 10:59:54 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
2022-11-22 10:59:54 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
2022-11-22 10:59:54 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
2022-11-22 10:59:54 STATE: Filter: {"input":"types/tfjs-core.d.ts"}
2022-11-22 10:59:54 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":204}
2022-11-22 10:59:54 STATE: Filter: {"input":"types/human.d.ts"}
2022-11-22 10:59:54 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"}
2022-11-22 10:59:54 STATE: Write: {"output":"dist/human.esm.d.ts"}
2022-11-22 10:59:54 STATE: Write: {"output":"dist/human.d.ts"}
2022-11-22 10:59:54 STATE: Write: {"output":"dist/human.node-gpu.d.ts"}
2022-11-22 10:59:54 STATE: Write: {"output":"dist/human.node.d.ts"}
2022-11-22 10:59:54 STATE: Write: {"output":"dist/human.node-wasm.d.ts"}
2022-11-22 10:59:54 INFO:  Analyze models: {"folders":8,"result":"models/models.json"}
2022-11-22 10:59:54 STATE: Models {"folder":"./models","models":12}
2022-11-22 10:59:54 STATE: Models {"folder":"../human-models/models","models":41}
2022-11-22 10:59:54 STATE: Models {"folder":"../blazepose/model/","models":4}
2022-11-22 10:59:54 STATE: Models {"folder":"../anti-spoofing/model","models":1}
2022-11-22 10:59:54 STATE: Models {"folder":"../efficientpose/models","models":3}
2022-11-22 10:59:54 STATE: Models {"folder":"../insightface/models","models":5}
2022-11-22 10:59:54 STATE: Models {"folder":"../movenet/models","models":3}
2022-11-22 10:59:54 STATE: Models {"folder":"../nanodet/models","models":4}
2022-11-22 10:59:55 STATE: Models: {"count":55,"totalSize":372917743}
2022-11-22 10:59:55 INFO:  Human Build complete... {"logFile":"test/build.log"}