add debug logging flag

pull/91/head
Vladimir Mandic 2021-03-02 11:27:42 -05:00
parent 8c60a04bda
commit f70f36f06f
30 changed files with 416 additions and 355 deletions

View File

@ -3,8 +3,12 @@
export default { export default {
backend: 'webgl', // select tfjs backend to use backend: 'webgl', // select tfjs backend to use
// can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl
// leave as empty string to continue using default backend
// when backend is set outside of Human library
wasmPath: '../assets/', // path for wasm binaries wasmPath: '../assets/', // path for wasm binaries
// only used for backend: wasm // only used for backend: wasm
debug: true, // print additional status messages to console
async: true, // execute enabled models in parallel async: true, // execute enabled models in parallel
// this disables per-model performance data but // this disables per-model performance data but
// slightly increases performance // slightly increases performance

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{ {
"inputs": { "inputs": {
"dist/human.esm.js": { "dist/human.esm.js": {
"bytes": 1339128, "bytes": 1339457,
"imports": [] "imports": []
}, },
"demo/draw.js": { "demo/draw.js": {
@ -43,7 +43,7 @@
"imports": [], "imports": [],
"exports": [], "exports": [],
"inputs": {}, "inputs": {},
"bytes": 2038382 "bytes": 2039549
}, },
"dist/demo-browser-index.js": { "dist/demo-browser-index.js": {
"imports": [], "imports": [],
@ -51,7 +51,7 @@
"entryPoint": "demo/browser.js", "entryPoint": "demo/browser.js",
"inputs": { "inputs": {
"dist/human.esm.js": { "dist/human.esm.js": {
"bytesInOutput": 1331652 "bytesInOutput": 1331979
}, },
"demo/draw.js": { "demo/draw.js": {
"bytesInOutput": 6241 "bytesInOutput": 6241
@ -66,7 +66,7 @@
"bytesInOutput": 17423 "bytesInOutput": 17423
} }
}, },
"bytes": 1380156 "bytes": 1380483
} }
} }
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
dist/human.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

48
dist/human.esm.json vendored
View File

@ -22,7 +22,7 @@
] ]
}, },
"src/blazeface/blazeface.ts": { "src/blazeface/blazeface.ts": {
"bytes": 5688, "bytes": 5706,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -73,7 +73,7 @@
] ]
}, },
"src/blazeface/facemesh.ts": { "src/blazeface/facemesh.ts": {
"bytes": 2890, "bytes": 2922,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -107,7 +107,7 @@
] ]
}, },
"src/faceboxes/faceboxes.ts": { "src/faceboxes/faceboxes.ts": {
"bytes": 2840, "bytes": 2890,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -124,7 +124,7 @@
] ]
}, },
"src/age/age.ts": { "src/age/age.ts": {
"bytes": 1946, "bytes": 1964,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -141,7 +141,7 @@
] ]
}, },
"src/gender/gender.ts": { "src/gender/gender.ts": {
"bytes": 2808, "bytes": 2826,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -158,7 +158,7 @@
] ]
}, },
"src/emotion/emotion.ts": { "src/emotion/emotion.ts": {
"bytes": 3039, "bytes": 3057,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -175,7 +175,7 @@
] ]
}, },
"src/embedding/embedding.ts": { "src/embedding/embedding.ts": {
"bytes": 2023, "bytes": 2041,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -283,7 +283,7 @@
] ]
}, },
"src/posenet/posenet.ts": { "src/posenet/posenet.ts": {
"bytes": 2376, "bytes": 2394,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -359,7 +359,7 @@
"imports": [] "imports": []
}, },
"src/handpose/handpose.ts": { "src/handpose/handpose.ts": {
"bytes": 2565, "bytes": 2597,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -409,7 +409,7 @@
] ]
}, },
"config.js": { "config.js": {
"bytes": 10086, "bytes": 10438,
"imports": [] "imports": []
}, },
"src/sample.ts": { "src/sample.ts": {
@ -421,7 +421,7 @@
"imports": [] "imports": []
}, },
"src/human.ts": { "src/human.ts": {
"bytes": 19684, "bytes": 19965,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -499,7 +499,7 @@
"imports": [], "imports": [],
"exports": [], "exports": [],
"inputs": {}, "inputs": {},
"bytes": 1940277 "bytes": 1941474
}, },
"dist/human.esm.js": { "dist/human.esm.js": {
"imports": [], "imports": [],
@ -509,7 +509,7 @@
"entryPoint": "src/human.ts", "entryPoint": "src/human.ts",
"inputs": { "inputs": {
"src/blazeface/facemesh.ts": { "src/blazeface/facemesh.ts": {
"bytesInOutput": 1445 "bytesInOutput": 1463
}, },
"src/posenet/keypoints.ts": { "src/posenet/keypoints.ts": {
"bytesInOutput": 1690 "bytesInOutput": 1690
@ -524,7 +524,7 @@
"bytesInOutput": 1053 "bytesInOutput": 1053
}, },
"src/blazeface/blazeface.ts": { "src/blazeface/blazeface.ts": {
"bytesInOutput": 2185 "bytesInOutput": 2194
}, },
"src/blazeface/box.ts": { "src/blazeface/box.ts": {
"bytesInOutput": 834 "bytesInOutput": 834
@ -539,28 +539,28 @@
"bytesInOutput": 5051 "bytesInOutput": 5051
}, },
"src/human.ts": { "src/human.ts": {
"bytesInOutput": 10347 "bytesInOutput": 10550
}, },
"src/faceboxes/faceboxes.ts": { "src/faceboxes/faceboxes.ts": {
"bytesInOutput": 1549 "bytesInOutput": 1576
}, },
"src/profile.ts": { "src/profile.ts": {
"bytesInOutput": 606 "bytesInOutput": 606
}, },
"src/age/age.ts": { "src/age/age.ts": {
"bytesInOutput": 775 "bytesInOutput": 784
}, },
"src/gender/gender.ts": { "src/gender/gender.ts": {
"bytesInOutput": 1237 "bytesInOutput": 1246
}, },
"src/emotion/emotion.ts": { "src/emotion/emotion.ts": {
"bytesInOutput": 1180 "bytesInOutput": 1189
}, },
"src/embedding/embedding.ts": { "src/embedding/embedding.ts": {
"bytesInOutput": 795 "bytesInOutput": 804
}, },
"src/posenet/posenet.ts": { "src/posenet/posenet.ts": {
"bytesInOutput": 1007 "bytesInOutput": 1016
}, },
"src/posenet/modelBase.ts": { "src/posenet/modelBase.ts": {
"bytesInOutput": 646 "bytesInOutput": 646
@ -587,7 +587,7 @@
"bytesInOutput": 354 "bytesInOutput": 354
}, },
"src/handpose/handpose.ts": { "src/handpose/handpose.ts": {
"bytesInOutput": 1263 "bytesInOutput": 1281
}, },
"src/handpose/box.ts": { "src/handpose/box.ts": {
"bytesInOutput": 938 "bytesInOutput": 938
@ -614,7 +614,7 @@
"bytesInOutput": 2355 "bytesInOutput": 2355
}, },
"config.js": { "config.js": {
"bytesInOutput": 1444 "bytesInOutput": 1453
}, },
"src/sample.ts": { "src/sample.ts": {
"bytesInOutput": 55295 "bytesInOutput": 55295
@ -623,7 +623,7 @@
"bytesInOutput": 2572 "bytesInOutput": 2572
} }
}, },
"bytes": 1339128 "bytes": 1339457
} }
} }
} }

48
dist/human.iife.json vendored
View File

@ -22,7 +22,7 @@
] ]
}, },
"src/blazeface/blazeface.ts": { "src/blazeface/blazeface.ts": {
"bytes": 5688, "bytes": 5706,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -73,7 +73,7 @@
] ]
}, },
"src/blazeface/facemesh.ts": { "src/blazeface/facemesh.ts": {
"bytes": 2890, "bytes": 2922,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -107,7 +107,7 @@
] ]
}, },
"src/faceboxes/faceboxes.ts": { "src/faceboxes/faceboxes.ts": {
"bytes": 2840, "bytes": 2890,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -124,7 +124,7 @@
] ]
}, },
"src/age/age.ts": { "src/age/age.ts": {
"bytes": 1946, "bytes": 1964,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -141,7 +141,7 @@
] ]
}, },
"src/gender/gender.ts": { "src/gender/gender.ts": {
"bytes": 2808, "bytes": 2826,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -158,7 +158,7 @@
] ]
}, },
"src/emotion/emotion.ts": { "src/emotion/emotion.ts": {
"bytes": 3039, "bytes": 3057,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -175,7 +175,7 @@
] ]
}, },
"src/embedding/embedding.ts": { "src/embedding/embedding.ts": {
"bytes": 2023, "bytes": 2041,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -283,7 +283,7 @@
] ]
}, },
"src/posenet/posenet.ts": { "src/posenet/posenet.ts": {
"bytes": 2376, "bytes": 2394,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -359,7 +359,7 @@
"imports": [] "imports": []
}, },
"src/handpose/handpose.ts": { "src/handpose/handpose.ts": {
"bytes": 2565, "bytes": 2597,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -409,7 +409,7 @@
] ]
}, },
"config.js": { "config.js": {
"bytes": 10086, "bytes": 10438,
"imports": [] "imports": []
}, },
"src/sample.ts": { "src/sample.ts": {
@ -421,7 +421,7 @@
"imports": [] "imports": []
}, },
"src/human.ts": { "src/human.ts": {
"bytes": 19684, "bytes": 19965,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -499,7 +499,7 @@
"imports": [], "imports": [],
"exports": [], "exports": [],
"inputs": {}, "inputs": {},
"bytes": 1940288 "bytes": 1941485
}, },
"dist/human.ts": { "dist/human.ts": {
"imports": [], "imports": [],
@ -507,13 +507,13 @@
"entryPoint": "src/human.ts", "entryPoint": "src/human.ts",
"inputs": { "inputs": {
"src/blazeface/facemesh.ts": { "src/blazeface/facemesh.ts": {
"bytesInOutput": 1445 "bytesInOutput": 1463
}, },
"src/posenet/keypoints.ts": { "src/posenet/keypoints.ts": {
"bytesInOutput": 1690 "bytesInOutput": 1690
}, },
"src/human.ts": { "src/human.ts": {
"bytesInOutput": 10383 "bytesInOutput": 10586
}, },
"src/log.ts": { "src/log.ts": {
"bytesInOutput": 252 "bytesInOutput": 252
@ -525,7 +525,7 @@
"bytesInOutput": 1053 "bytesInOutput": 1053
}, },
"src/blazeface/blazeface.ts": { "src/blazeface/blazeface.ts": {
"bytesInOutput": 2185 "bytesInOutput": 2194
}, },
"src/blazeface/box.ts": { "src/blazeface/box.ts": {
"bytesInOutput": 834 "bytesInOutput": 834
@ -540,25 +540,25 @@
"bytesInOutput": 5051 "bytesInOutput": 5051
}, },
"src/faceboxes/faceboxes.ts": { "src/faceboxes/faceboxes.ts": {
"bytesInOutput": 1549 "bytesInOutput": 1576
}, },
"src/profile.ts": { "src/profile.ts": {
"bytesInOutput": 606 "bytesInOutput": 606
}, },
"src/age/age.ts": { "src/age/age.ts": {
"bytesInOutput": 775 "bytesInOutput": 784
}, },
"src/gender/gender.ts": { "src/gender/gender.ts": {
"bytesInOutput": 1237 "bytesInOutput": 1246
}, },
"src/emotion/emotion.ts": { "src/emotion/emotion.ts": {
"bytesInOutput": 1180 "bytesInOutput": 1189
}, },
"src/embedding/embedding.ts": { "src/embedding/embedding.ts": {
"bytesInOutput": 795 "bytesInOutput": 804
}, },
"src/posenet/posenet.ts": { "src/posenet/posenet.ts": {
"bytesInOutput": 1007 "bytesInOutput": 1016
}, },
"src/posenet/modelBase.ts": { "src/posenet/modelBase.ts": {
"bytesInOutput": 646 "bytesInOutput": 646
@ -585,7 +585,7 @@
"bytesInOutput": 354 "bytesInOutput": 354
}, },
"src/handpose/handpose.ts": { "src/handpose/handpose.ts": {
"bytesInOutput": 1263 "bytesInOutput": 1281
}, },
"src/handpose/box.ts": { "src/handpose/box.ts": {
"bytesInOutput": 938 "bytesInOutput": 938
@ -612,7 +612,7 @@
"bytesInOutput": 2355 "bytesInOutput": 2355
}, },
"config.js": { "config.js": {
"bytesInOutput": 1444 "bytesInOutput": 1453
}, },
"src/sample.ts": { "src/sample.ts": {
"bytesInOutput": 55295 "bytesInOutput": 55295
@ -621,7 +621,7 @@
"bytesInOutput": 2572 "bytesInOutput": 2572
} }
}, },
"bytes": 1339170 "bytes": 1339499
} }
} }
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6
dist/human.node.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

48
dist/human.node.json vendored
View File

@ -22,7 +22,7 @@
] ]
}, },
"src/blazeface/blazeface.ts": { "src/blazeface/blazeface.ts": {
"bytes": 5688, "bytes": 5706,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -73,7 +73,7 @@
] ]
}, },
"src/blazeface/facemesh.ts": { "src/blazeface/facemesh.ts": {
"bytes": 2890, "bytes": 2922,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -107,7 +107,7 @@
] ]
}, },
"src/faceboxes/faceboxes.ts": { "src/faceboxes/faceboxes.ts": {
"bytes": 2840, "bytes": 2890,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -124,7 +124,7 @@
] ]
}, },
"src/age/age.ts": { "src/age/age.ts": {
"bytes": 1946, "bytes": 1964,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -141,7 +141,7 @@
] ]
}, },
"src/gender/gender.ts": { "src/gender/gender.ts": {
"bytes": 2808, "bytes": 2826,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -158,7 +158,7 @@
] ]
}, },
"src/emotion/emotion.ts": { "src/emotion/emotion.ts": {
"bytes": 3039, "bytes": 3057,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -175,7 +175,7 @@
] ]
}, },
"src/embedding/embedding.ts": { "src/embedding/embedding.ts": {
"bytes": 2023, "bytes": 2041,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -283,7 +283,7 @@
] ]
}, },
"src/posenet/posenet.ts": { "src/posenet/posenet.ts": {
"bytes": 2376, "bytes": 2394,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -359,7 +359,7 @@
"imports": [] "imports": []
}, },
"src/handpose/handpose.ts": { "src/handpose/handpose.ts": {
"bytes": 2565, "bytes": 2597,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -409,7 +409,7 @@
] ]
}, },
"config.js": { "config.js": {
"bytes": 10086, "bytes": 10438,
"imports": [] "imports": []
}, },
"src/sample.ts": { "src/sample.ts": {
@ -421,7 +421,7 @@
"imports": [] "imports": []
}, },
"src/human.ts": { "src/human.ts": {
"bytes": 19684, "bytes": 19965,
"imports": [ "imports": [
{ {
"path": "src/log.ts", "path": "src/log.ts",
@ -499,7 +499,7 @@
"imports": [], "imports": [],
"exports": [], "exports": [],
"inputs": {}, "inputs": {},
"bytes": 707032 "bytes": 708229
}, },
"dist/human.node-gpu.js": { "dist/human.node-gpu.js": {
"imports": [], "imports": [],
@ -510,13 +510,13 @@
"bytesInOutput": 551 "bytesInOutput": 551
}, },
"src/blazeface/facemesh.ts": { "src/blazeface/facemesh.ts": {
"bytesInOutput": 1476 "bytesInOutput": 1494
}, },
"src/posenet/keypoints.ts": { "src/posenet/keypoints.ts": {
"bytesInOutput": 1677 "bytesInOutput": 1677
}, },
"src/human.ts": { "src/human.ts": {
"bytesInOutput": 10355 "bytesInOutput": 10558
}, },
"src/log.ts": { "src/log.ts": {
"bytesInOutput": 251 "bytesInOutput": 251
@ -525,7 +525,7 @@
"bytesInOutput": 1145 "bytesInOutput": 1145
}, },
"src/blazeface/blazeface.ts": { "src/blazeface/blazeface.ts": {
"bytesInOutput": 2329 "bytesInOutput": 2338
}, },
"src/blazeface/facepipeline.ts": { "src/blazeface/facepipeline.ts": {
"bytesInOutput": 5098 "bytesInOutput": 5098
@ -540,25 +540,25 @@
"bytesInOutput": 28973 "bytesInOutput": 28973
}, },
"src/faceboxes/faceboxes.ts": { "src/faceboxes/faceboxes.ts": {
"bytesInOutput": 1586 "bytesInOutput": 1613
}, },
"src/profile.ts": { "src/profile.ts": {
"bytesInOutput": 604 "bytesInOutput": 604
}, },
"src/age/age.ts": { "src/age/age.ts": {
"bytesInOutput": 822 "bytesInOutput": 831
}, },
"src/gender/gender.ts": { "src/gender/gender.ts": {
"bytesInOutput": 1310 "bytesInOutput": 1319
}, },
"src/emotion/emotion.ts": { "src/emotion/emotion.ts": {
"bytesInOutput": 1247 "bytesInOutput": 1256
}, },
"src/embedding/embedding.ts": { "src/embedding/embedding.ts": {
"bytesInOutput": 839 "bytesInOutput": 848
}, },
"src/posenet/posenet.ts": { "src/posenet/posenet.ts": {
"bytesInOutput": 1030 "bytesInOutput": 1039
}, },
"src/posenet/modelBase.ts": { "src/posenet/modelBase.ts": {
"bytesInOutput": 656 "bytesInOutput": 656
@ -585,7 +585,7 @@
"bytesInOutput": 352 "bytesInOutput": 352
}, },
"src/handpose/handpose.ts": { "src/handpose/handpose.ts": {
"bytesInOutput": 1304 "bytesInOutput": 1322
}, },
"src/handpose/handdetector.ts": { "src/handpose/handdetector.ts": {
"bytesInOutput": 1813 "bytesInOutput": 1813
@ -612,7 +612,7 @@
"bytesInOutput": 10973 "bytesInOutput": 10973
}, },
"config.js": { "config.js": {
"bytesInOutput": 1444 "bytesInOutput": 1453
}, },
"src/sample.ts": { "src/sample.ts": {
"bytesInOutput": 55295 "bytesInOutput": 55295
@ -621,7 +621,7 @@
"bytesInOutput": 2569 "bytesInOutput": 2569
} }
}, },
"bytes": 276657 "bytes": 276986
} }
} }
} }

8
dist/human.ts vendored

File diff suppressed because one or more lines are too long

4
dist/human.ts.map vendored

File diff suppressed because one or more lines are too long

193
package-lock.json generated
View File

@ -405,13 +405,13 @@
"dev": true "dev": true
}, },
"@typescript-eslint/eslint-plugin": { "@typescript-eslint/eslint-plugin": {
"version": "4.15.2", "version": "4.16.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.16.1.tgz",
"integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", "integrity": "sha512-SK777klBdlkUZpZLC1mPvyOWk9yAFCWmug13eAjVQ4/Q1LATE/NbcQL1xDHkptQkZOLnPmLUA1Y54m8dqYwnoQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/experimental-utils": "4.15.2", "@typescript-eslint/experimental-utils": "4.16.1",
"@typescript-eslint/scope-manager": "4.15.2", "@typescript-eslint/scope-manager": "4.16.1",
"debug": "^4.1.1", "debug": "^4.1.1",
"functional-red-black-tree": "^1.0.1", "functional-red-black-tree": "^1.0.1",
"lodash": "^4.17.15", "lodash": "^4.17.15",
@ -447,28 +447,28 @@
} }
}, },
"@typescript-eslint/experimental-utils": { "@typescript-eslint/experimental-utils": {
"version": "4.15.2", "version": "4.16.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz",
"integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/json-schema": "^7.0.3", "@types/json-schema": "^7.0.3",
"@typescript-eslint/scope-manager": "4.15.2", "@typescript-eslint/scope-manager": "4.16.1",
"@typescript-eslint/types": "4.15.2", "@typescript-eslint/types": "4.16.1",
"@typescript-eslint/typescript-estree": "4.15.2", "@typescript-eslint/typescript-estree": "4.16.1",
"eslint-scope": "^5.0.0", "eslint-scope": "^5.0.0",
"eslint-utils": "^2.0.0" "eslint-utils": "^2.0.0"
} }
}, },
"@typescript-eslint/parser": { "@typescript-eslint/parser": {
"version": "4.15.2", "version": "4.16.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.16.1.tgz",
"integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", "integrity": "sha512-/c0LEZcDL5y8RyI1zLcmZMvJrsR6SM1uetskFkoh3dvqDKVXPsXI+wFB/CbVw7WkEyyTKobC1mUNp/5y6gRvXg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/scope-manager": "4.15.2", "@typescript-eslint/scope-manager": "4.16.1",
"@typescript-eslint/types": "4.15.2", "@typescript-eslint/types": "4.16.1",
"@typescript-eslint/typescript-estree": "4.15.2", "@typescript-eslint/typescript-estree": "4.16.1",
"debug": "^4.1.1" "debug": "^4.1.1"
}, },
"dependencies": { "dependencies": {
@ -490,29 +490,29 @@
} }
}, },
"@typescript-eslint/scope-manager": { "@typescript-eslint/scope-manager": {
"version": "4.15.2", "version": "4.16.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz",
"integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "4.15.2", "@typescript-eslint/types": "4.16.1",
"@typescript-eslint/visitor-keys": "4.15.2" "@typescript-eslint/visitor-keys": "4.16.1"
} }
}, },
"@typescript-eslint/types": { "@typescript-eslint/types": {
"version": "4.15.2", "version": "4.16.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz",
"integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==",
"dev": true "dev": true
}, },
"@typescript-eslint/typescript-estree": { "@typescript-eslint/typescript-estree": {
"version": "4.15.2", "version": "4.16.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz",
"integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "4.15.2", "@typescript-eslint/types": "4.16.1",
"@typescript-eslint/visitor-keys": "4.15.2", "@typescript-eslint/visitor-keys": "4.16.1",
"debug": "^4.1.1", "debug": "^4.1.1",
"globby": "^11.0.1", "globby": "^11.0.1",
"is-glob": "^4.0.1", "is-glob": "^4.0.1",
@ -547,12 +547,12 @@
} }
}, },
"@typescript-eslint/visitor-keys": { "@typescript-eslint/visitor-keys": {
"version": "4.15.2", "version": "4.16.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz",
"integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "4.15.2", "@typescript-eslint/types": "4.16.1",
"eslint-visitor-keys": "^2.0.0" "eslint-visitor-keys": "^2.0.0"
} }
}, },
@ -850,9 +850,9 @@
"dev": true "dev": true
}, },
"core-js": { "core-js": {
"version": "3.9.0", "version": "3.9.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.0.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz",
"integrity": "sha512-PyFBJaLq93FlyYdsndE5VaueA9K5cNB7CGzeCj191YYLhkQM0gdZR2SKihM70oF0wdqKSKClv/tEBOpoRmdOVQ==", "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==",
"dev": true "dev": true
}, },
"core-util-is": { "core-util-is": {
@ -977,25 +977,27 @@
} }
}, },
"es-abstract": { "es-abstract": {
"version": "1.18.0-next.2", "version": "1.18.0-next.3",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.3.tgz",
"integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", "integrity": "sha512-VMzHx/Bczjg59E6jZOQjHeN3DEoptdhejpARgflAViidlqSpjdq9zA6lKwlhRRs/lOw1gHJv2xkkSFRgvEwbQg==",
"dev": true, "dev": true,
"requires": { "requires": {
"call-bind": "^1.0.2", "call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1", "es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2", "get-intrinsic": "^1.1.1",
"has": "^1.0.3", "has": "^1.0.3",
"has-symbols": "^1.0.1", "has-symbols": "^1.0.2",
"is-callable": "^1.2.2", "is-callable": "^1.2.3",
"is-negative-zero": "^2.0.1", "is-negative-zero": "^2.0.1",
"is-regex": "^1.1.1", "is-regex": "^1.1.2",
"is-string": "^1.0.5",
"object-inspect": "^1.9.0", "object-inspect": "^1.9.0",
"object-keys": "^1.1.1", "object-keys": "^1.1.1",
"object.assign": "^4.1.2", "object.assign": "^4.1.2",
"string.prototype.trimend": "^1.0.3", "string.prototype.trimend": "^1.0.4",
"string.prototype.trimstart": "^1.0.3" "string.prototype.trimstart": "^1.0.4",
"unbox-primitive": "^1.0.0"
} }
}, },
"es-to-primitive": { "es-to-primitive": {
@ -1025,9 +1027,9 @@
} }
}, },
"esbuild": { "esbuild": {
"version": "0.8.53", "version": "0.8.54",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.53.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.54.tgz",
"integrity": "sha512-GIaYGdMukH58hu+lf07XWAeESBYFAsz8fXnrylHDCbBXKOSNtFmoYA8PhSeSF+3/qzeJ0VjzV9AkLURo5yfu3g==", "integrity": "sha512-DJH38OiTgXJxFb/EhHrCrY8eGmtdkTtWymHpN9IYN9AF+4jykT0dQArr7wzFejpVbaB0TMIq2+vfNRWr3LXpvw==",
"dev": true "dev": true
}, },
"escalade": { "escalade": {
@ -1664,6 +1666,12 @@
"function-bind": "^1.1.1" "function-bind": "^1.1.1"
} }
}, },
"has-bigints": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
"integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
"dev": true
},
"has-flag": { "has-flag": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@ -1766,6 +1774,12 @@
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true "dev": true
}, },
"is-bigint": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz",
"integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==",
"dev": true
},
"is-binary-path": { "is-binary-path": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@ -1775,10 +1789,19 @@
"binary-extensions": "^2.0.0" "binary-extensions": "^2.0.0"
} }
}, },
"is-boolean-object": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz",
"integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==",
"dev": true,
"requires": {
"call-bind": "^1.0.0"
}
},
"is-callable": { "is-callable": {
"version": "1.2.2", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
"integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==",
"dev": true "dev": true
}, },
"is-core-module": { "is-core-module": {
@ -1829,12 +1852,19 @@
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true "dev": true
}, },
"is-number-object": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz",
"integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==",
"dev": true
},
"is-regex": { "is-regex": {
"version": "1.1.1", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz",
"integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==",
"dev": true, "dev": true,
"requires": { "requires": {
"call-bind": "^1.0.2",
"has-symbols": "^1.0.1" "has-symbols": "^1.0.1"
} }
}, },
@ -2654,9 +2684,9 @@
"dev": true "dev": true
}, },
"string-width": { "string-width": {
"version": "4.2.1", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
"integrity": "sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q==", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"dev": true, "dev": true,
"requires": { "requires": {
"emoji-regex": "^8.0.0", "emoji-regex": "^8.0.0",
@ -2665,22 +2695,22 @@
} }
}, },
"string.prototype.trimend": { "string.prototype.trimend": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
"integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
"dev": true, "dev": true,
"requires": { "requires": {
"call-bind": "^1.0.0", "call-bind": "^1.0.2",
"define-properties": "^1.1.3" "define-properties": "^1.1.3"
} }
}, },
"string.prototype.trimstart": { "string.prototype.trimstart": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
"integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
"dev": true, "dev": true,
"requires": { "requires": {
"call-bind": "^1.0.0", "call-bind": "^1.0.2",
"define-properties": "^1.1.3" "define-properties": "^1.1.3"
} }
}, },
@ -2836,11 +2866,23 @@
"dev": true "dev": true
}, },
"typescript": { "typescript": {
"version": "4.3.0-dev.20210228", "version": "4.3.0-dev.20210302",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.0-dev.20210228.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.0-dev.20210302.tgz",
"integrity": "sha512-Iadgi+PbwFmz3rogXB3Ju6afQIE96MonoXhxrGigy1c98/2h6/zFNmn1QoCcheAOTH593IXVJxGU8ctvNMjRuQ==", "integrity": "sha512-j8UsZLmGC3z0dzJ+Ybf3Q0txXvnGLkoIORUYApUfuJLoJlkFI7po/drYmhgh4BFjR3JnBQmniRHipEgcfQOANA==",
"dev": true "dev": true
}, },
"unbox-primitive": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz",
"integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
"has-bigints": "^1.0.0",
"has-symbols": "^1.0.0",
"which-boxed-primitive": "^1.0.1"
}
},
"uri-js": { "uri-js": {
"version": "4.4.1", "version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@ -2918,6 +2960,19 @@
"isexe": "^2.0.0" "isexe": "^2.0.0"
} }
}, },
"which-boxed-primitive": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
"requires": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
"is-number-object": "^1.0.4",
"is-string": "^1.0.5",
"is-symbol": "^1.0.3"
}
},
"wide-align": { "wide-align": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",

View File

@ -34,12 +34,12 @@
"@tensorflow/tfjs-node": "^3.2.0", "@tensorflow/tfjs-node": "^3.2.0",
"@tensorflow/tfjs-node-gpu": "^3.2.0", "@tensorflow/tfjs-node-gpu": "^3.2.0",
"@types/node": "^14.14.31", "@types/node": "^14.14.31",
"@typescript-eslint/eslint-plugin": "^4.15.2", "@typescript-eslint/eslint-plugin": "^4.16.1",
"@typescript-eslint/parser": "^4.15.2", "@typescript-eslint/parser": "^4.16.1",
"@vladmandic/pilogger": "^0.2.14", "@vladmandic/pilogger": "^0.2.14",
"chokidar": "^3.5.1", "chokidar": "^3.5.1",
"dayjs": "^1.10.4", "dayjs": "^1.10.4",
"esbuild": "^0.8.53", "esbuild": "^0.8.54",
"eslint": "^7.21.0", "eslint": "^7.21.0",
"eslint-config-airbnb-base": "^14.2.1", "eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.22.1", "eslint-plugin-import": "^2.22.1",
@ -50,7 +50,7 @@
"seedrandom": "^3.0.5", "seedrandom": "^3.0.5",
"simple-git": "^2.35.2", "simple-git": "^2.35.2",
"tslib": "^2.1.0", "tslib": "^2.1.0",
"typescript": "^4.3.0-dev.20210228" "typescript": "^4.3.0-dev.20210302"
}, },
"scripts": { "scripts": {
"start": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation src/node.js", "start": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation src/node.js",

View File

@ -9,7 +9,7 @@ let skipped = Number.MAX_SAFE_INTEGER;
export async function load(config) { export async function load(config) {
if (!model) { if (!model) {
model = await tf.loadGraphModel(config.face.age.modelPath); model = await tf.loadGraphModel(config.face.age.modelPath);
log(`load model: ${config.face.age.modelPath.match(/\/(.*)\./)[1]}`); if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\/(.*)\./)[1]}`);
} }
return model; return model;
} }

View File

@ -132,6 +132,6 @@ export class BlazeFaceModel {
export async function load(config) { export async function load(config) {
const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') }); const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });
const model = new BlazeFaceModel(blazeface, config); const model = new BlazeFaceModel(blazeface, config);
log(`load model: ${config.face.detector.modelPath.match(/\/(.*)\./)[1]}`); if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\/(.*)\./)[1]}`);
return model; return model;
} }

View File

@ -50,8 +50,8 @@ export async function load(config) {
(!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null, (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,
]); ]);
const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config); const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);
if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\/(.*)\./)[1]}`); if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\/(.*)\./)[1]}`);
if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\/(.*)\./)[1]}`); if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\/(.*)\./)[1]}`);
return faceMesh; return faceMesh;
} }

View File

@ -10,7 +10,7 @@ let model;
export async function load(config) { export async function load(config) {
if (!model) { if (!model) {
model = await tf.loadGraphModel(config.face.embedding.modelPath); model = await tf.loadGraphModel(config.face.embedding.modelPath);
log(`load model: ${config.face.embedding.modelPath.match(/\/(.*)\./)[1]}`); if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\/(.*)\./)[1]}`);
} }
return model; return model;
} }

View File

@ -14,7 +14,7 @@ const scale = 1; // score multiplication factor
export async function load(config) { export async function load(config) {
if (!model) { if (!model) {
model = await tf.loadGraphModel(config.face.emotion.modelPath); model = await tf.loadGraphModel(config.face.emotion.modelPath);
log(`load model: ${config.face.emotion.modelPath.match(/\/(.*)\./)[1]}`); if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\/(.*)\./)[1]}`);
} }
return model; return model;
} }

View File

@ -61,9 +61,9 @@ export class FaceBoxes {
export async function load(config) { export async function load(config) {
const model = await tf.loadGraphModel(config.face.detector.modelPath); const model = await tf.loadGraphModel(config.face.detector.modelPath);
log(`load model: ${config.face.detector.modelPath.match(/\/(.*)\./)[1]}`); if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\/(.*)\./)[1]}`);
const faceboxes = new FaceBoxes(model, config); const faceboxes = new FaceBoxes(model, config);
if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\/(.*)\./)[1]}`); if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\/(.*)\./)[1]}`);
if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\/(.*)\./)[1]}`); if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\/(.*)\./)[1]}`);
return faceboxes; return faceboxes;
} }

View File

@ -14,7 +14,7 @@ export async function load(config) {
if (!model) { if (!model) {
model = await tf.loadGraphModel(config.face.gender.modelPath); model = await tf.loadGraphModel(config.face.gender.modelPath);
alternative = model.inputs[0].shape[3] === 1; alternative = model.inputs[0].shape[3] === 1;
log(`load model: ${config.face.gender.modelPath.match(/\/(.*)\./)[1]}`); if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\/(.*)\./)[1]}`);
} }
return model; return model;
} }

View File

@ -57,7 +57,7 @@ export async function load(config) {
const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors); const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);
const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize); const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);
const handPose = new HandPose(handPipeline); const handPose = new HandPose(handPipeline);
if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\/(.*)\./)[1]}`); if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\/(.*)\./)[1]}`);
if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`); if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`);
return handPose; return handPose;
} }

View File

@ -131,11 +131,11 @@ class Human {
if (userConfig) this.config = mergeDeep(this.config, userConfig); if (userConfig) this.config = mergeDeep(this.config, userConfig);
if (this.firstRun) { if (this.firstRun) {
log(`version: ${this.version} TensorFlow/JS version: ${this.tf.version_core}`); if (this.config.debug) log(`version: ${this.version} TensorFlow/JS version: ${this.tf.version_core}`);
await this.checkBackend(true); await this.checkBackend(true);
if (this.tf.ENV.flags.IS_BROWSER) { if (this.tf.ENV.flags.IS_BROWSER) {
log('configuration:', this.config); if (this.config.debug) log('configuration:', this.config);
log('tf flags:', this.tf.ENV.flags); if (this.config.debug) log('tf flags:', this.tf.ENV.flags);
} }
} }
const face = this.config.face.detector.modelPath.includes('faceboxes') ? faceboxes : facemesh; const face = this.config.face.detector.modelPath.includes('faceboxes') ? faceboxes : facemesh;
@ -168,7 +168,7 @@ class Human {
} }
if (this.firstRun) { if (this.firstRun) {
log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors'); if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');
this.firstRun = false; this.firstRun = false;
} }
@ -191,10 +191,11 @@ class Human {
} }
*/ */
log('setting backend:', this.config.backend); if (this.config.backend && this.config.backend !== '') {
if (this.config.debug) log('setting backend:', this.config.backend);
if (this.config.backend === 'wasm') { if (this.config.backend === 'wasm') {
log('settings wasm path:', this.config.wasmPath); if (this.config.debug) log('settings wasm path:', this.config.wasmPath);
this.tf.setWasmPaths(this.config.wasmPath); this.tf.setWasmPaths(this.config.wasmPath);
const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT'); const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');
if (!simd) log('warning: wasm simd support is not enabled'); if (!simd) log('warning: wasm simd support is not enabled');
@ -206,6 +207,7 @@ class Human {
} catch (err) { } catch (err) {
log('error: cannot set backend:', this.config.backend, err); log('error: cannot set backend:', this.config.backend, err);
} }
}
this.tf.enableProdMode(); this.tf.enableProdMode();
/* debug mode is really too mcuh /* debug mode is really too mcuh
tf.enableDebugMode(); tf.enableDebugMode();
@ -218,7 +220,7 @@ class Human {
// this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true); // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);
// this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true); // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);
const gl = await this.tf.backend().getGPGPUContext().gl; const gl = await this.tf.backend().getGPGPUContext().gl;
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`); if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
} }
await this.tf.ready(); await this.tf.ready();
this.perf.backend = Math.trunc(now() - timeStamp); this.perf.backend = Math.trunc(now() - timeStamp);
@ -528,7 +530,7 @@ class Human {
else res = await this.warmupNode(); else res = await this.warmupNode();
this.config.videoOptimized = video; this.config.videoOptimized = video;
const t1 = now(); const t1 = now();
log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res); if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);
return res; return res;
} }
} }

View File

@ -60,6 +60,6 @@ export class PoseNet {
export async function load(config) { export async function load(config) {
const model = await tf.loadGraphModel(config.body.modelPath); const model = await tf.loadGraphModel(config.body.modelPath);
const mobilenet = new modelBase.BaseModel(model); const mobilenet = new modelBase.BaseModel(model);
log(`load model: ${config.body.modelPath.match(/\/(.*)\./)[1]}`); if (config.debug) log(`load model: ${config.body.modelPath.match(/\/(.*)\./)[1]}`);
return new PoseNet(mobilenet); return new PoseNet(mobilenet);
} }

2
wiki

@ -1 +1 @@
Subproject commit c283c4a21d26dc0ba03e576dae8e6fbd3af12ac8 Subproject commit 4091054e6d325ad8e9787c4b3d93b0e4ebb9016c