mirror of https://github.com/vladmandic/human
update todo and changelog
parent
69e9720799
commit
5156b18f4f
|
@ -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
55
TODO.md
|
@ -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`
|
||||
|
|
100
test/build.log
100
test/build.log
|
@ -1,50 +1,50 @@
|
|||
2022-11-22 10:34:25 [32mDATA: [39m Build {"name":"@vladmandic/human","version":"3.0.1"}
|
||||
2022-11-22 10:34:25 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"3.0.1"}
|
||||
2022-11-22 10:34:25 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
||||
2022-11-22 10:34:25 [36mINFO: [39m 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 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
||||
2022-11-22 10:34:25 [35mSTATE:[39m Clean: {"locations":["dist/*","types/*","typedoc/*"]}
|
||||
2022-11-22 10:34:25 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types/lib","files":15}
|
||||
2022-11-22 10:34:31 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true}
|
||||
2022-11-22 10:34:31 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":169,"errors":0,"warnings":0}
|
||||
2022-11-22 10:34:40 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
||||
2022-11-22 10:34:40 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
|
||||
2022-11-22 10:34:40 [36mINFO: [39m Done...
|
||||
2022-11-22 10:34:40 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
|
||||
2022-11-22 10:34:40 [35mSTATE:[39m Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
|
||||
2022-11-22 10:34:40 [35mSTATE:[39m Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
|
||||
2022-11-22 10:34:40 [35mSTATE:[39m Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
|
||||
2022-11-22 10:34:40 [35mSTATE:[39m Filter: {"input":"types/tfjs-core.d.ts"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m API-Extractor: {"succeeeded":true,"errors":0,"warnings":204}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Filter: {"input":"types/human.d.ts"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Write: {"output":"dist/human.esm-nobundle.d.ts"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Write: {"output":"dist/human.esm.d.ts"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Write: {"output":"dist/human.d.ts"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Write: {"output":"dist/human.node-gpu.d.ts"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Write: {"output":"dist/human.node.d.ts"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Write: {"output":"dist/human.node-wasm.d.ts"}
|
||||
2022-11-22 10:34:41 [36mINFO: [39m Analyze models: {"folders":8,"result":"models/models.json"}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"./models","models":12}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"../human-models/models","models":41}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"../blazepose/model/","models":4}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"../anti-spoofing/model","models":1}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"../efficientpose/models","models":3}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"../insightface/models","models":5}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"../movenet/models","models":3}
|
||||
2022-11-22 10:34:41 [35mSTATE:[39m Models {"folder":"../nanodet/models","models":4}
|
||||
2022-11-22 10:34:42 [35mSTATE:[39m Models: {"count":55,"totalSize":372917743}
|
||||
2022-11-22 10:34:42 [36mINFO: [39m Human Build complete... {"logFile":"test/build.log"}
|
||||
2022-11-22 10:59:38 [32mDATA: [39m Build {"name":"@vladmandic/human","version":"3.0.1"}
|
||||
2022-11-22 10:59:38 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"3.0.1"}
|
||||
2022-11-22 10:59:38 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
||||
2022-11-22 10:59:38 [36mINFO: [39m 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 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
||||
2022-11-22 10:59:38 [35mSTATE:[39m Clean: {"locations":["dist/*","types/*","typedoc/*"]}
|
||||
2022-11-22 10:59:38 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types/lib","files":15}
|
||||
2022-11-22 10:59:45 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true}
|
||||
2022-11-22 10:59:45 [35mSTATE:[39m 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 [35mSTATE:[39m 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 [35mSTATE:[39m Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":169,"errors":0,"warnings":0}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
|
||||
2022-11-22 10:59:54 [36mINFO: [39m Done...
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Filter: {"input":"types/tfjs-core.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m API-Extractor: {"succeeeded":true,"errors":0,"warnings":204}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Filter: {"input":"types/human.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Write: {"output":"dist/human.esm-nobundle.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Write: {"output":"dist/human.esm.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Write: {"output":"dist/human.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Write: {"output":"dist/human.node-gpu.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Write: {"output":"dist/human.node.d.ts"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Write: {"output":"dist/human.node-wasm.d.ts"}
|
||||
2022-11-22 10:59:54 [36mINFO: [39m Analyze models: {"folders":8,"result":"models/models.json"}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"./models","models":12}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"../human-models/models","models":41}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"../blazepose/model/","models":4}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"../anti-spoofing/model","models":1}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"../efficientpose/models","models":3}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"../insightface/models","models":5}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"../movenet/models","models":3}
|
||||
2022-11-22 10:59:54 [35mSTATE:[39m Models {"folder":"../nanodet/models","models":4}
|
||||
2022-11-22 10:59:55 [35mSTATE:[39m Models: {"count":55,"totalSize":372917743}
|
||||
2022-11-22 10:59:55 [36mINFO: [39m Human Build complete... {"logFile":"test/build.log"}
|
||||
|
|
Loading…
Reference in New Issue