mirror of https://github.com/vladmandic/human
npm default install should be prod only
parent
1837f5bd6c
commit
4f69e85e1f
41
CHANGELOG.md
41
CHANGELOG.md
|
@ -9,8 +9,9 @@
|
|||
|
||||
## Changelog
|
||||
|
||||
### **HEAD -> main** 2022/07/02 mandic00@live.com
|
||||
### **HEAD -> main** 2022/07/05 mandic00@live.com
|
||||
|
||||
- add getmodelstats method
|
||||
- rebuild
|
||||
|
||||
### **release: 2.8.1** 2022/06/08 mandic00@live.com
|
||||
|
@ -437,7 +438,7 @@
|
|||
- remove efficientpose
|
||||
- major version rebuild
|
||||
|
||||
### **1.6.1** 2021/04/22 mandic00@live.com
|
||||
### **1.6.1** 2021/04/23 mandic00@live.com
|
||||
|
||||
- add npmrc
|
||||
- added filter.flip feature
|
||||
|
@ -576,7 +577,7 @@
|
|||
- add typedocs and types
|
||||
- strong typings
|
||||
|
||||
### **1.1.2** 2021/03/12 mandic00@live.com
|
||||
### **1.1.2** 2021/03/13 mandic00@live.com
|
||||
|
||||
- distance based on minkowski space and limited euclidean space
|
||||
- guard against invalid input images
|
||||
|
@ -585,7 +586,7 @@
|
|||
|
||||
- switched face embedding to mobileface
|
||||
|
||||
### **1.0.4** 2021/03/11 mandic00@live.com
|
||||
### **1.0.4** 2021/03/12 mandic00@live.com
|
||||
|
||||
- add face return tensor
|
||||
- add test for face descriptors
|
||||
|
@ -600,7 +601,7 @@
|
|||
- enhanced age, gender, emotion detection
|
||||
- full rebuild
|
||||
|
||||
### **1.0.2** 2021/03/09 mandic00@live.com
|
||||
### **1.0.2** 2021/03/10 mandic00@live.com
|
||||
|
||||
- remove blazeface-front, blazepose-upper, faceboxes
|
||||
- remove blazeface-front and faceboxes
|
||||
|
@ -710,7 +711,7 @@
|
|||
- variable name changes, setting .rawcoords only if necessary
|
||||
- option to return raw data (mesh, box) for facemesh / "preserve aspect ratio" fix from facemesh upstream
|
||||
|
||||
### **0.9.18** 2020/12/16 mandic00@live.com
|
||||
### **0.9.18** 2020/12/17 mandic00@live.com
|
||||
|
||||
- add z axis scaling
|
||||
- major work on body module
|
||||
|
@ -744,7 +745,7 @@
|
|||
|
||||
- minor compatibility fixes
|
||||
|
||||
### **0.9.11** 2020/11/23 mandic00@live.com
|
||||
### **0.9.11** 2020/11/24 mandic00@live.com
|
||||
|
||||
- implement multi-person gestures
|
||||
- modularize pipeline models
|
||||
|
@ -781,7 +782,7 @@
|
|||
|
||||
- swtich to tfjs source import
|
||||
|
||||
### **0.9.3** 2020/11/16 mandic00@live.com
|
||||
### **0.9.3** 2020/11/17 mandic00@live.com
|
||||
|
||||
- switched to minified build
|
||||
- web worker fixes
|
||||
|
@ -811,7 +812,7 @@
|
|||
- fix bug in async ops and change imports
|
||||
- fix wiki links
|
||||
|
||||
### **0.8.6** 2020/11/09 mandic00@live.com
|
||||
### **0.8.6** 2020/11/10 mandic00@live.com
|
||||
|
||||
- add wasm bundle
|
||||
|
||||
|
@ -851,7 +852,7 @@
|
|||
- cache invalidation improvements
|
||||
- full async operations
|
||||
|
||||
### **0.7.5** 2020/11/05 mandic00@live.com
|
||||
### **0.7.5** 2020/11/06 mandic00@live.com
|
||||
|
||||
- implemented dev-server
|
||||
|
||||
|
@ -896,12 +897,12 @@
|
|||
- complete model refactoring
|
||||
- fixed typo
|
||||
|
||||
### **0.6.2** 2020/11/02 mandic00@live.com
|
||||
### **0.6.2** 2020/11/03 mandic00@live.com
|
||||
|
||||
- optimized demo
|
||||
- package update
|
||||
|
||||
### **0.6.1** 2020/11/02 mandic00@live.com
|
||||
### **0.6.1** 2020/11/03 mandic00@live.com
|
||||
|
||||
- major performance improvements for all models
|
||||
- revert "optimized canvas handling"
|
||||
|
@ -955,7 +956,7 @@
|
|||
|
||||
- implelented input resizing
|
||||
|
||||
### **0.4.3** 2020/10/22 mandic00@live.com
|
||||
### **0.4.3** 2020/10/23 mandic00@live.com
|
||||
|
||||
|
||||
### **0.4.2** 2020/10/20 mandic00@live.com
|
||||
|
@ -973,7 +974,7 @@
|
|||
- pure tensor pipeline without image converts
|
||||
- autodetect skipframes
|
||||
|
||||
### **0.3.8** 2020/10/17 mandic00@live.com
|
||||
### **0.3.8** 2020/10/18 mandic00@live.com
|
||||
|
||||
- new menu layout
|
||||
|
||||
|
@ -1000,28 +1001,28 @@
|
|||
- optimized blazeface anchors
|
||||
- added error handling
|
||||
|
||||
### **0.3.3** 2020/10/15 mandic00@live.com
|
||||
### **0.3.3** 2020/10/16 mandic00@live.com
|
||||
|
||||
- added blazeface back and front models
|
||||
|
||||
### **0.3.2** 2020/10/15 mandic00@live.com
|
||||
### **0.3.2** 2020/10/16 mandic00@live.com
|
||||
|
||||
- reduced web worker latency
|
||||
- added debugging and versioning
|
||||
- optimized demos and added scoped runs
|
||||
- added multi backend support
|
||||
|
||||
### **0.3.1** 2020/10/14 mandic00@live.com
|
||||
### **0.3.1** 2020/10/15 mandic00@live.com
|
||||
|
||||
|
||||
### **0.2.10** 2020/10/14 mandic00@live.com
|
||||
### **0.2.10** 2020/10/15 mandic00@live.com
|
||||
|
||||
- added emotion backend
|
||||
- module parametrization and performance monitoring
|
||||
- implemented multi-hand support
|
||||
- fixed documentation typos
|
||||
|
||||
### **0.2.9** 2020/10/13 mandic00@live.com
|
||||
### **0.2.9** 2020/10/14 mandic00@live.com
|
||||
|
||||
- added node build and demo
|
||||
|
||||
|
@ -1036,7 +1037,7 @@
|
|||
|
||||
- enable all models by default
|
||||
|
||||
### **0.2.5** 2020/10/12 mandic00@live.com
|
||||
### **0.2.5** 2020/10/13 mandic00@live.com
|
||||
|
||||
- fixed memory leak
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -44347,11 +44347,8 @@ async function predict10(input, config3) {
|
|||
} else {
|
||||
const results = model11.execute(face4.tensor);
|
||||
const confidenceT = results.find((t) => t.shape[t.shape.length - 1] === 1);
|
||||
const meshT = results.find((t) => t.shape[t.shape.length - 1] === 1404);
|
||||
const faceConfidence = await confidenceT.data();
|
||||
face4.faceScore = Math.round(100 * faceConfidence[0]) / 100;
|
||||
const coordsReshaped = U(meshT, [-1, 3]);
|
||||
let rawCoords = await coordsReshaped.array();
|
||||
if (face4.faceScore < (((_g2 = config3.face.detector) == null ? void 0 : _g2.minConfidence) || 1)) {
|
||||
box.confidence = face4.faceScore;
|
||||
if ((_h = config3.face.mesh) == null ? void 0 : _h.keepInvalid) {
|
||||
|
@ -44368,6 +44365,10 @@ async function predict10(input, config3) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
const meshT = results.find((t) => t.shape[t.shape.length - 1] === 1404);
|
||||
const coordsReshaped = U(meshT, [-1, 3]);
|
||||
let rawCoords = await coordsReshaped.array();
|
||||
De(coordsReshaped);
|
||||
if ((_i2 = config3.face.attention) == null ? void 0 : _i2.enabled) {
|
||||
rawCoords = await augment(rawCoords, results);
|
||||
} else if ((_j2 = config3.face.iris) == null ? void 0 : _j2.enabled) {
|
||||
|
@ -44383,7 +44384,7 @@ async function predict10(input, config3) {
|
|||
face4.boxRaw = getRawBox(calculatedBox, input);
|
||||
newCache.push(calculatedBox);
|
||||
}
|
||||
De([...results, coordsReshaped]);
|
||||
De(results);
|
||||
}
|
||||
if (face4.score > (((_k2 = config3.face.detector) == null ? void 0 : _k2.minConfidence) || 1))
|
||||
faces.push(face4);
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -65,7 +65,7 @@
|
|||
"@tensorflow/tfjs-layers": "^3.18.0",
|
||||
"@tensorflow/tfjs-node": "^3.18.0",
|
||||
"@tensorflow/tfjs-node-gpu": "^3.18.0",
|
||||
"@types/node": "^18.0.1",
|
||||
"@types/node": "^18.0.3",
|
||||
"@types/offscreencanvas": "^2019.7.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
||||
"@typescript-eslint/parser": "^5.30.5",
|
||||
|
|
|
@ -87,11 +87,8 @@ export async function predict(input: Tensor, config: Config): Promise<FaceResult
|
|||
} else { // mesh enabled
|
||||
const results = model.execute(face.tensor as Tensor) as Array<Tensor>;
|
||||
const confidenceT = results.find((t) => t.shape[t.shape.length - 1] === 1) as Tensor;
|
||||
const meshT = results.find((t) => t.shape[t.shape.length - 1] === 1404) as Tensor;
|
||||
const faceConfidence = await confidenceT.data();
|
||||
face.faceScore = Math.round(100 * faceConfidence[0]) / 100;
|
||||
const coordsReshaped = tf.reshape(meshT, [-1, 3]);
|
||||
let rawCoords = await coordsReshaped.array();
|
||||
if (face.faceScore < (config.face.detector?.minConfidence || 1)) { // low confidence in detected mesh
|
||||
box.confidence = face.faceScore; // reset confidence of cached box
|
||||
if (config.face.mesh?.keepInvalid) {
|
||||
|
@ -108,6 +105,10 @@ export async function predict(input: Tensor, config: Config): Promise<FaceResult
|
|||
}
|
||||
}
|
||||
} else {
|
||||
const meshT = results.find((t) => t.shape[t.shape.length - 1] === 1404) as Tensor;
|
||||
const coordsReshaped = tf.reshape(meshT, [-1, 3]);
|
||||
let rawCoords = await coordsReshaped.array();
|
||||
tf.dispose(coordsReshaped);
|
||||
if (config.face.attention?.enabled) {
|
||||
rawCoords = await attention.augment(rawCoords, results); // augment iris results using attention model results
|
||||
} else if (config.face.iris?.enabled) {
|
||||
|
@ -122,7 +123,7 @@ export async function predict(input: Tensor, config: Config): Promise<FaceResult
|
|||
face.boxRaw = util.getRawBox(calculatedBox, input);
|
||||
newCache.push(calculatedBox);
|
||||
}
|
||||
tf.dispose([...results, coordsReshaped]);
|
||||
tf.dispose(results);
|
||||
}
|
||||
if (face.score > (config.face.detector?.minConfidence || 1)) faces.push(face);
|
||||
else tf.dispose(face.tensor);
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
2022-07-05 05:01:38 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"2.8.1"}
|
||||
2022-07-05 05:01:38 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
||||
2022-07-05 05:01:38 [36mINFO: [39m Toolchain: {"build":"0.7.3","esbuild":"0.14.48","typescript":"4.7.4","typedoc":"0.22.17","eslint":"8.19.0"}
|
||||
2022-07-05 05:01:38 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
||||
2022-07-05 05:01:38 [35mSTATE:[39m Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]}
|
||||
2022-07-05 05:01:38 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":608}
|
||||
2022-07-05 05:01:38 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":73,"inputBytes":643890,"outputBytes":301229}
|
||||
2022-07-05 05:01:38 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":612}
|
||||
2022-07-05 05:01:38 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":73,"inputBytes":643894,"outputBytes":301233}
|
||||
2022-07-05 05:01:38 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":664}
|
||||
2022-07-05 05:01:38 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":73,"inputBytes":643946,"outputBytes":301283}
|
||||
2022-07-05 05:01:39 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1069,"outputBytes":358}
|
||||
2022-07-05 05:01:39 [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":1032,"outputBytes":583}
|
||||
2022-07-05 05:01:39 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":73,"inputBytes":643865,"outputBytes":300113}
|
||||
2022-07-05 05:01:39 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1353528}
|
||||
2022-07-05 05:01:39 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":73,"inputBytes":1996810,"outputBytes":1652733}
|
||||
2022-07-05 05:01:39 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":73,"inputBytes":1996810,"outputBytes":2140087}
|
||||
2022-07-05 05:01:53 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types/lib","files":116}
|
||||
2022-07-05 05:01:57 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":73,"generated":true}
|
||||
2022-07-05 05:01:57 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6324,"outputBytes":3057}
|
||||
2022-07-05 05:01:57 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15174,"outputBytes":7820}
|
||||
2022-07-05 05:02:16 [35mSTATE:[39m Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":106,"errors":0,"warnings":0}
|
||||
2022-07-05 05:02:16 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
||||
2022-07-05 05:02:16 [36mINFO: [39m Done...
|
||||
2022-07-07 12:07:40 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"2.8.1"}
|
||||
2022-07-07 12:07:40 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
||||
2022-07-07 12:07:40 [36mINFO: [39m Toolchain: {"build":"0.7.3","esbuild":"0.14.48","typescript":"4.7.4","typedoc":"0.22.18","eslint":"8.19.0"}
|
||||
2022-07-07 12:07:40 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":608}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":73,"inputBytes":643911,"outputBytes":301226}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":612}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":73,"inputBytes":643915,"outputBytes":301230}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":664}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":73,"inputBytes":643967,"outputBytes":301280}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1069,"outputBytes":358}
|
||||
2022-07-07 12:07:40 [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":1032,"outputBytes":583}
|
||||
2022-07-07 12:07:40 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":73,"inputBytes":643886,"outputBytes":300114}
|
||||
2022-07-07 12:07:41 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1353528}
|
||||
2022-07-07 12:07:41 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":73,"inputBytes":1996831,"outputBytes":1652728}
|
||||
2022-07-07 12:07:42 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":73,"inputBytes":1996831,"outputBytes":2140100}
|
||||
2022-07-07 12:07:57 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types/lib","files":116}
|
||||
2022-07-07 12:08:04 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":73,"generated":true}
|
||||
2022-07-07 12:08:04 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6324,"outputBytes":3057}
|
||||
2022-07-07 12:08:04 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15174,"outputBytes":7820}
|
||||
2022-07-07 12:08:29 [35mSTATE:[39m Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":106,"errors":0,"warnings":0}
|
||||
2022-07-07 12:08:30 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
||||
2022-07-07 12:08:30 [36mINFO: [39m Done...
|
||||
|
|
1368
test/test.log
1368
test/test.log
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue