mirror of https://github.com/vladmandic/human
switch to central logger
parent
7a1e6f491f
commit
7c0fe6dbf3
|
@ -5,7 +5,6 @@ export default {
|
||||||
backend: 'webgl', // select tfjs backend to use
|
backend: 'webgl', // select tfjs backend to use
|
||||||
wasmPath: '../assets/', // path for wasm binaries
|
wasmPath: '../assets/', // path for wasm binaries
|
||||||
// only used for backend: wasm
|
// only used for backend: wasm
|
||||||
console: true, // enable debugging output 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
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import Human from '../dist/human.esm.js';
|
import Human from '../dist/human.esm.js';
|
||||||
|
|
||||||
let config;
|
|
||||||
let busy = false;
|
let busy = false;
|
||||||
const human = new Human();
|
const human = new Human();
|
||||||
|
|
||||||
const log = (...msg) => {
|
function log(...msg) {
|
||||||
|
const dt = new Date();
|
||||||
|
const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
if (config.console) console.log(...msg);
|
if (msg) console.log(ts, 'Human:', ...msg);
|
||||||
};
|
}
|
||||||
|
|
||||||
onmessage = async (msg) => {
|
onmessage = async (msg) => {
|
||||||
if (busy) return;
|
if (busy) return;
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,21 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"dist/human.esm.js": {
|
||||||
|
"bytes": 1774883,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"demo/draw.js": {
|
||||||
|
"bytes": 10630,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"demo/menu.js": {
|
||||||
|
"bytes": 13858,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"demo/gl-bench.js": {
|
||||||
|
"bytes": 10782,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"demo/browser.js": {
|
"demo/browser.js": {
|
||||||
"bytes": 25194,
|
"bytes": 25194,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -16,36 +32,20 @@
|
||||||
"path": "demo/gl-bench.js"
|
"path": "demo/gl-bench.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"demo/draw.js": {
|
|
||||||
"bytes": 10630,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"demo/gl-bench.js": {
|
|
||||||
"bytes": 10782,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"demo/menu.js": {
|
|
||||||
"bytes": 13858,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"dist/human.esm.js": {
|
|
||||||
"bytes": 1774844,
|
|
||||||
"imports": []
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": {
|
"outputs": {
|
||||||
"dist/demo-browser-index.js.map": {
|
"dist/demo-browser-index.js.map": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"bytes": 2679258
|
"bytes": 2678694
|
||||||
},
|
},
|
||||||
"dist/demo-browser-index.js": {
|
"dist/demo-browser-index.js": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"exports": [],
|
"exports": [],
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"dist/human.esm.js": {
|
"dist/human.esm.js": {
|
||||||
"bytesInOutput": 1767603
|
"bytesInOutput": 1767642
|
||||||
},
|
},
|
||||||
"demo/draw.js": {
|
"demo/draw.js": {
|
||||||
"bytesInOutput": 7776
|
"bytesInOutput": 7776
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
"bytesInOutput": 19361
|
"bytesInOutput": 19361
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bytes": 1821311
|
"bytes": 1821350
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,20 +1,91 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"config.js": {
|
"src/log.js": {
|
||||||
"bytes": 8721,
|
"bytes": 401,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"dist/tfjs.esm.js": {
|
"dist/tfjs.esm.js": {
|
||||||
"bytes": 1522251,
|
"bytes": 1522244,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"package.json": {
|
"src/face/blazeface.js": {
|
||||||
"bytes": 2323,
|
"bytes": 6993,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/face/box.js": {
|
||||||
|
"bytes": 1935,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/face/util.js": {
|
||||||
|
"bytes": 3078,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
|
"src/face/coords.js": {
|
||||||
|
"bytes": 37909,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/face/facepipeline.js": {
|
||||||
|
"bytes": 13876,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/box.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/util.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/coords.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/face/facemesh.js": {
|
||||||
|
"bytes": 2675,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/blazeface.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/facepipeline.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/coords.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/profile.js": {
|
||||||
|
"bytes": 1045,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"src/age/age.js": {
|
"src/age/age.js": {
|
||||||
"bytes": 1968,
|
"bytes": 1993,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -23,47 +94,48 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/buildParts.js": {
|
"src/gender/gender.js": {
|
||||||
"bytes": 2035,
|
"bytes": 3391,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/body/heapSort.js"
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/profile.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/decodeMultiple.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytes": 5605,
|
"bytes": 2988,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/body/buildParts.js"
|
"path": "src/log.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/body/decodePose.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/body/vectors.js"
|
"path": "src/profile.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/decodePose.js": {
|
"src/embedding/embedding.js": {
|
||||||
"bytes": 4540,
|
"bytes": 2048,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/body/keypoints.js"
|
"path": "src/log.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/body/vectors.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/profile.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/heapSort.js": {
|
|
||||||
"bytes": 1590,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/body/keypoints.js": {
|
|
||||||
"bytes": 2291,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/body/modelBase.js": {
|
"src/body/modelBase.js": {
|
||||||
"bytes": 889,
|
"bytes": 889,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -83,9 +155,69 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/modelPoseNet.js": {
|
"src/body/heapSort.js": {
|
||||||
"bytes": 1928,
|
"bytes": 1590,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/body/buildParts.js": {
|
||||||
|
"bytes": 2035,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/heapSort.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/keypoints.js": {
|
||||||
|
"bytes": 2291,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/body/vectors.js": {
|
||||||
|
"bytes": 1273,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/keypoints.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/decodePose.js": {
|
||||||
|
"bytes": 4540,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/keypoints.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/body/vectors.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/decodeMultiple.js": {
|
||||||
|
"bytes": 5605,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/buildParts.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/body/decodePose.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/body/vectors.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/util.js": {
|
||||||
|
"bytes": 2262,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/keypoints.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/modelPoseNet.js": {
|
||||||
|
"bytes": 1912,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -120,121 +252,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/util.js": {
|
|
||||||
"bytes": 2262,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "src/body/keypoints.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/body/vectors.js": {
|
|
||||||
"bytes": 1273,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "src/body/keypoints.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/embedding/embedding.js": {
|
|
||||||
"bytes": 2066,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/profile.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/emotion/emotion.js": {
|
|
||||||
"bytes": 3006,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/profile.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/blazeface.js": {
|
|
||||||
"bytes": 7009,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/box.js": {
|
|
||||||
"bytes": 1935,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/coords.js": {
|
|
||||||
"bytes": 37909,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/face/facemesh.js": {
|
|
||||||
"bytes": 2740,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/blazeface.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/facepipeline.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/coords.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/facepipeline.js": {
|
|
||||||
"bytes": 13884,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/box.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/util.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/coords.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/util.js": {
|
|
||||||
"bytes": 3078,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/gender/gender.js": {
|
|
||||||
"bytes": 3409,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/profile.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/gesture/gesture.js": {
|
|
||||||
"bytes": 3308,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/hand/anchors.js": {
|
|
||||||
"bytes": 224151,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/hand/box.js": {
|
"src/hand/box.js": {
|
||||||
"bytes": 3226,
|
"bytes": 3226,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -254,8 +271,12 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"src/hand/util.js": {
|
||||||
|
"bytes": 3030,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/hand/handpipeline.js": {
|
"src/hand/handpipeline.js": {
|
||||||
"bytes": 7615,
|
"bytes": 7607,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
|
@ -268,9 +289,16 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"src/hand/anchors.js": {
|
||||||
|
"bytes": 224151,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/hand/handpose.js": {
|
"src/hand/handpose.js": {
|
||||||
"bytes": 3187,
|
"bytes": 3122,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -285,13 +313,42 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/hand/util.js": {
|
"src/gesture/gesture.js": {
|
||||||
"bytes": 3030,
|
"bytes": 3308,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/imagefx.js": {
|
||||||
|
"bytes": 19352,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/image.js": {
|
||||||
|
"bytes": 5841,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/imagefx.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"config.js": {
|
||||||
|
"bytes": 8654,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"package.json": {
|
||||||
|
"bytes": 2323,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytes": 16046,
|
"bytes": 15825,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -332,32 +389,13 @@
|
||||||
"path": "package.json"
|
"path": "package.json"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"src/image.js": {
|
|
||||||
"bytes": 5862,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/imagefx.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/imagefx.js": {
|
|
||||||
"bytes": 19352,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/profile.js": {
|
|
||||||
"bytes": 1061,
|
|
||||||
"imports": []
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": {
|
"outputs": {
|
||||||
"dist/human.esm.js.map": {
|
"dist/human.esm.js.map": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"bytes": 2583490
|
"bytes": 2582934
|
||||||
},
|
},
|
||||||
"dist/human.esm.js": {
|
"dist/human.esm.js": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
|
@ -366,7 +404,7 @@
|
||||||
],
|
],
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"src/face/blazeface.js": {
|
"src/face/blazeface.js": {
|
||||||
"bytesInOutput": 5121
|
"bytesInOutput": 5113
|
||||||
},
|
},
|
||||||
"src/face/box.js": {
|
"src/face/box.js": {
|
||||||
"bytesInOutput": 1578
|
"bytesInOutput": 1578
|
||||||
|
@ -381,22 +419,22 @@
|
||||||
"bytesInOutput": 9403
|
"bytesInOutput": 9403
|
||||||
},
|
},
|
||||||
"src/face/facemesh.js": {
|
"src/face/facemesh.js": {
|
||||||
"bytesInOutput": 2124
|
"bytesInOutput": 2108
|
||||||
},
|
},
|
||||||
"src/profile.js": {
|
"src/profile.js": {
|
||||||
"bytesInOutput": 854
|
"bytesInOutput": 846
|
||||||
},
|
},
|
||||||
"src/age/age.js": {
|
"src/age/age.js": {
|
||||||
"bytesInOutput": 1138
|
"bytesInOutput": 1130
|
||||||
},
|
},
|
||||||
"src/gender/gender.js": {
|
"src/gender/gender.js": {
|
||||||
"bytesInOutput": 1886
|
"bytesInOutput": 1878
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytesInOutput": 1764
|
"bytesInOutput": 1756
|
||||||
},
|
},
|
||||||
"src/embedding/embedding.js": {
|
"src/embedding/embedding.js": {
|
||||||
"bytesInOutput": 1333
|
"bytesInOutput": 1325
|
||||||
},
|
},
|
||||||
"src/body/modelBase.js": {
|
"src/body/modelBase.js": {
|
||||||
"bytesInOutput": 615
|
"bytesInOutput": 615
|
||||||
|
@ -426,7 +464,7 @@
|
||||||
"bytesInOutput": 1913
|
"bytesInOutput": 1913
|
||||||
},
|
},
|
||||||
"src/body/modelPoseNet.js": {
|
"src/body/modelPoseNet.js": {
|
||||||
"bytesInOutput": 1584
|
"bytesInOutput": 1576
|
||||||
},
|
},
|
||||||
"src/body/posenet.js": {
|
"src/body/posenet.js": {
|
||||||
"bytesInOutput": 832
|
"bytesInOutput": 832
|
||||||
|
@ -441,7 +479,7 @@
|
||||||
"bytesInOutput": 127032
|
"bytesInOutput": 127032
|
||||||
},
|
},
|
||||||
"src/hand/handpose.js": {
|
"src/hand/handpose.js": {
|
||||||
"bytesInOutput": 1914
|
"bytesInOutput": 1898
|
||||||
},
|
},
|
||||||
"src/gesture/gesture.js": {
|
"src/gesture/gesture.js": {
|
||||||
"bytesInOutput": 2463
|
"bytesInOutput": 2463
|
||||||
|
@ -450,13 +488,16 @@
|
||||||
"bytesInOutput": 13576
|
"bytesInOutput": 13576
|
||||||
},
|
},
|
||||||
"src/image.js": {
|
"src/image.js": {
|
||||||
"bytesInOutput": 4048
|
"bytesInOutput": 4041
|
||||||
|
},
|
||||||
|
"src/log.js": {
|
||||||
|
"bytesInOutput": 266
|
||||||
},
|
},
|
||||||
"dist/tfjs.esm.js": {
|
"dist/tfjs.esm.js": {
|
||||||
"bytesInOutput": 1520547
|
"bytesInOutput": 1520559
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 10548
|
"bytesInOutput": 10416
|
||||||
},
|
},
|
||||||
"src/hand/box.js": {
|
"src/hand/box.js": {
|
||||||
"bytesInOutput": 1868
|
"bytesInOutput": 1868
|
||||||
|
@ -465,13 +506,13 @@
|
||||||
"bytesInOutput": 1796
|
"bytesInOutput": 1796
|
||||||
},
|
},
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytesInOutput": 1364
|
"bytesInOutput": 1353
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytesInOutput": 21
|
"bytesInOutput": 21
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bytes": 1774844
|
"bytes": 1774883
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,20 +1,91 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"config.js": {
|
"src/log.js": {
|
||||||
"bytes": 8721,
|
"bytes": 401,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"dist/tfjs.esm.js": {
|
"dist/tfjs.esm.js": {
|
||||||
"bytes": 1522251,
|
"bytes": 1522244,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"package.json": {
|
"src/face/blazeface.js": {
|
||||||
"bytes": 2323,
|
"bytes": 6993,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/face/box.js": {
|
||||||
|
"bytes": 1935,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/face/util.js": {
|
||||||
|
"bytes": 3078,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
|
"src/face/coords.js": {
|
||||||
|
"bytes": 37909,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/face/facepipeline.js": {
|
||||||
|
"bytes": 13876,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/box.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/util.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/coords.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/face/facemesh.js": {
|
||||||
|
"bytes": 2675,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/blazeface.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/facepipeline.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/face/coords.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/profile.js": {
|
||||||
|
"bytes": 1045,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"src/age/age.js": {
|
"src/age/age.js": {
|
||||||
"bytes": 1968,
|
"bytes": 1993,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -23,47 +94,48 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/buildParts.js": {
|
"src/gender/gender.js": {
|
||||||
"bytes": 2035,
|
"bytes": 3391,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/body/heapSort.js"
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/profile.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/decodeMultiple.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytes": 5605,
|
"bytes": 2988,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/body/buildParts.js"
|
"path": "src/log.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/body/decodePose.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/body/vectors.js"
|
"path": "src/profile.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/decodePose.js": {
|
"src/embedding/embedding.js": {
|
||||||
"bytes": 4540,
|
"bytes": 2048,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/body/keypoints.js"
|
"path": "src/log.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/body/vectors.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/profile.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/heapSort.js": {
|
|
||||||
"bytes": 1590,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/body/keypoints.js": {
|
|
||||||
"bytes": 2291,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/body/modelBase.js": {
|
"src/body/modelBase.js": {
|
||||||
"bytes": 889,
|
"bytes": 889,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -83,9 +155,69 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/modelPoseNet.js": {
|
"src/body/heapSort.js": {
|
||||||
"bytes": 1928,
|
"bytes": 1590,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/body/buildParts.js": {
|
||||||
|
"bytes": 2035,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/heapSort.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/keypoints.js": {
|
||||||
|
"bytes": 2291,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/body/vectors.js": {
|
||||||
|
"bytes": 1273,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/keypoints.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/decodePose.js": {
|
||||||
|
"bytes": 4540,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/keypoints.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/body/vectors.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/decodeMultiple.js": {
|
||||||
|
"bytes": 5605,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/buildParts.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/body/decodePose.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/body/vectors.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/util.js": {
|
||||||
|
"bytes": 2262,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/body/keypoints.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src/body/modelPoseNet.js": {
|
||||||
|
"bytes": 1912,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -120,121 +252,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/body/util.js": {
|
|
||||||
"bytes": 2262,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "src/body/keypoints.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/body/vectors.js": {
|
|
||||||
"bytes": 1273,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "src/body/keypoints.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/embedding/embedding.js": {
|
|
||||||
"bytes": 2066,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/profile.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/emotion/emotion.js": {
|
|
||||||
"bytes": 3006,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/profile.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/blazeface.js": {
|
|
||||||
"bytes": 7009,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/box.js": {
|
|
||||||
"bytes": 1935,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/coords.js": {
|
|
||||||
"bytes": 37909,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/face/facemesh.js": {
|
|
||||||
"bytes": 2740,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/blazeface.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/facepipeline.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/coords.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/facepipeline.js": {
|
|
||||||
"bytes": 13884,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/box.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/util.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/face/coords.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/face/util.js": {
|
|
||||||
"bytes": 3078,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/gender/gender.js": {
|
|
||||||
"bytes": 3409,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/profile.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/gesture/gesture.js": {
|
|
||||||
"bytes": 3308,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/hand/anchors.js": {
|
|
||||||
"bytes": 224151,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/hand/box.js": {
|
"src/hand/box.js": {
|
||||||
"bytes": 3226,
|
"bytes": 3226,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -254,8 +271,12 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"src/hand/util.js": {
|
||||||
|
"bytes": 3030,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/hand/handpipeline.js": {
|
"src/hand/handpipeline.js": {
|
||||||
"bytes": 7615,
|
"bytes": 7607,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
|
@ -268,9 +289,16 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"src/hand/anchors.js": {
|
||||||
|
"bytes": 224151,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/hand/handpose.js": {
|
"src/hand/handpose.js": {
|
||||||
"bytes": 3187,
|
"bytes": 3122,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -285,13 +313,42 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/hand/util.js": {
|
"src/gesture/gesture.js": {
|
||||||
"bytes": 3030,
|
"bytes": 3308,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/imagefx.js": {
|
||||||
|
"bytes": 19352,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"src/image.js": {
|
||||||
|
"bytes": 5841,
|
||||||
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "dist/tfjs.esm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/imagefx.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"config.js": {
|
||||||
|
"bytes": 8654,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
|
"package.json": {
|
||||||
|
"bytes": 2323,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytes": 16046,
|
"bytes": 15825,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
{
|
||||||
|
"path": "src/log.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "dist/tfjs.esm.js"
|
"path": "dist/tfjs.esm.js"
|
||||||
},
|
},
|
||||||
|
@ -332,39 +389,20 @@
|
||||||
"path": "package.json"
|
"path": "package.json"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"src/image.js": {
|
|
||||||
"bytes": 5862,
|
|
||||||
"imports": [
|
|
||||||
{
|
|
||||||
"path": "dist/tfjs.esm.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "src/imagefx.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"src/imagefx.js": {
|
|
||||||
"bytes": 19352,
|
|
||||||
"imports": []
|
|
||||||
},
|
|
||||||
"src/profile.js": {
|
|
||||||
"bytes": 1061,
|
|
||||||
"imports": []
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": {
|
"outputs": {
|
||||||
"dist/human.js.map": {
|
"dist/human.js.map": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"bytes": 2599995
|
"bytes": 2599215
|
||||||
},
|
},
|
||||||
"dist/human.js": {
|
"dist/human.js": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"exports": [],
|
"exports": [],
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"src/face/blazeface.js": {
|
"src/face/blazeface.js": {
|
||||||
"bytesInOutput": 5121
|
"bytesInOutput": 5113
|
||||||
},
|
},
|
||||||
"src/face/box.js": {
|
"src/face/box.js": {
|
||||||
"bytesInOutput": 1578
|
"bytesInOutput": 1578
|
||||||
|
@ -379,22 +417,22 @@
|
||||||
"bytesInOutput": 9403
|
"bytesInOutput": 9403
|
||||||
},
|
},
|
||||||
"src/face/facemesh.js": {
|
"src/face/facemesh.js": {
|
||||||
"bytesInOutput": 2124
|
"bytesInOutput": 2108
|
||||||
},
|
},
|
||||||
"src/profile.js": {
|
"src/profile.js": {
|
||||||
"bytesInOutput": 854
|
"bytesInOutput": 846
|
||||||
},
|
},
|
||||||
"src/age/age.js": {
|
"src/age/age.js": {
|
||||||
"bytesInOutput": 1138
|
"bytesInOutput": 1130
|
||||||
},
|
},
|
||||||
"src/gender/gender.js": {
|
"src/gender/gender.js": {
|
||||||
"bytesInOutput": 1886
|
"bytesInOutput": 1878
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytesInOutput": 1764
|
"bytesInOutput": 1756
|
||||||
},
|
},
|
||||||
"src/embedding/embedding.js": {
|
"src/embedding/embedding.js": {
|
||||||
"bytesInOutput": 1333
|
"bytesInOutput": 1325
|
||||||
},
|
},
|
||||||
"src/body/modelBase.js": {
|
"src/body/modelBase.js": {
|
||||||
"bytesInOutput": 615
|
"bytesInOutput": 615
|
||||||
|
@ -424,7 +462,7 @@
|
||||||
"bytesInOutput": 1913
|
"bytesInOutput": 1913
|
||||||
},
|
},
|
||||||
"src/body/modelPoseNet.js": {
|
"src/body/modelPoseNet.js": {
|
||||||
"bytesInOutput": 1584
|
"bytesInOutput": 1576
|
||||||
},
|
},
|
||||||
"src/body/posenet.js": {
|
"src/body/posenet.js": {
|
||||||
"bytesInOutput": 832
|
"bytesInOutput": 832
|
||||||
|
@ -439,7 +477,7 @@
|
||||||
"bytesInOutput": 127032
|
"bytesInOutput": 127032
|
||||||
},
|
},
|
||||||
"src/hand/handpose.js": {
|
"src/hand/handpose.js": {
|
||||||
"bytesInOutput": 1914
|
"bytesInOutput": 1898
|
||||||
},
|
},
|
||||||
"src/gesture/gesture.js": {
|
"src/gesture/gesture.js": {
|
||||||
"bytesInOutput": 2463
|
"bytesInOutput": 2463
|
||||||
|
@ -448,13 +486,16 @@
|
||||||
"bytesInOutput": 13576
|
"bytesInOutput": 13576
|
||||||
},
|
},
|
||||||
"src/image.js": {
|
"src/image.js": {
|
||||||
"bytesInOutput": 4048
|
"bytesInOutput": 4040
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 10609
|
"bytesInOutput": 10477
|
||||||
|
},
|
||||||
|
"src/log.js": {
|
||||||
|
"bytesInOutput": 266
|
||||||
},
|
},
|
||||||
"dist/tfjs.esm.js": {
|
"dist/tfjs.esm.js": {
|
||||||
"bytesInOutput": 1520551
|
"bytesInOutput": 1520559
|
||||||
},
|
},
|
||||||
"src/hand/box.js": {
|
"src/hand/box.js": {
|
||||||
"bytesInOutput": 1868
|
"bytesInOutput": 1868
|
||||||
|
@ -463,13 +504,13 @@
|
||||||
"bytesInOutput": 1796
|
"bytesInOutput": 1796
|
||||||
},
|
},
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytesInOutput": 1364
|
"bytesInOutput": 1353
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytesInOutput": 21
|
"bytesInOutput": 21
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bytes": 1774922
|
"bytes": 1774957
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
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 it is too large
Load Diff
|
@ -83,9 +83,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@eslint/eslintrc": {
|
"@eslint/eslintrc": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz",
|
||||||
"integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==",
|
"integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ajv": "^6.12.4",
|
"ajv": "^6.12.4",
|
||||||
|
@ -650,9 +650,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"core-js": {
|
"core-js": {
|
||||||
"version": "3.7.0",
|
"version": "3.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz",
|
||||||
"integrity": "sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==",
|
"integrity": "sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
|
@ -673,9 +673,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dayjs": {
|
"dayjs": {
|
||||||
"version": "1.9.6",
|
"version": "1.9.7",
|
||||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.9.6.tgz",
|
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.9.7.tgz",
|
||||||
"integrity": "sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw==",
|
"integrity": "sha512-IC877KBdMhBrCfBfJXHQlo0G8keZ0Opy7YIIq5QKtUbCuHMzim8S4PyiVK4YmihI3iOF9lhfUBW4AQWHTR5WHA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
|
@ -806,9 +806,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"esbuild": {
|
"esbuild": {
|
||||||
"version": "0.8.15",
|
"version": "0.8.21",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.15.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.21.tgz",
|
||||||
"integrity": "sha512-mSaLo9t/oYtQE6FRUEdO47Pr8PisSPzHtgr+LcihIcjBEhbYwjT6WLCQ7noDoTBfIatBCw229rtmIwl9u9UQwg==",
|
"integrity": "sha512-vRRx5MZmiekw2R7jK5BppvBUFCJA0Zkl0wYxrDmyUvMPBcQC/xJvxJUM4R+Hgjgb3gp5P1W655AsuoqDeQQDVw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"escalade": {
|
"escalade": {
|
||||||
|
@ -824,13 +824,13 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"eslint": {
|
"eslint": {
|
||||||
"version": "7.14.0",
|
"version": "7.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz",
|
||||||
"integrity": "sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==",
|
"integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/code-frame": "^7.0.0",
|
"@babel/code-frame": "^7.0.0",
|
||||||
"@eslint/eslintrc": "^0.2.1",
|
"@eslint/eslintrc": "^0.2.2",
|
||||||
"ajv": "^6.10.0",
|
"ajv": "^6.10.0",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
"cross-spawn": "^7.0.2",
|
"cross-spawn": "^7.0.2",
|
||||||
|
@ -840,10 +840,10 @@
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^2.1.0",
|
"eslint-utils": "^2.1.0",
|
||||||
"eslint-visitor-keys": "^2.0.0",
|
"eslint-visitor-keys": "^2.0.0",
|
||||||
"espree": "^7.3.0",
|
"espree": "^7.3.1",
|
||||||
"esquery": "^1.2.0",
|
"esquery": "^1.2.0",
|
||||||
"esutils": "^2.0.2",
|
"esutils": "^2.0.2",
|
||||||
"file-entry-cache": "^5.0.1",
|
"file-entry-cache": "^6.0.0",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
"glob-parent": "^5.0.0",
|
"glob-parent": "^5.0.0",
|
||||||
"globals": "^12.1.0",
|
"globals": "^12.1.0",
|
||||||
|
@ -878,10 +878,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "7.3.2",
|
"version": "7.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||||
"integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
|
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"lru-cache": "^6.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"strip-json-comments": {
|
"strip-json-comments": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
|
@ -1092,13 +1095,13 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"espree": {
|
"espree": {
|
||||||
"version": "7.3.0",
|
"version": "7.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
|
||||||
"integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
|
"integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"acorn": "^7.4.0",
|
"acorn": "^7.4.0",
|
||||||
"acorn-jsx": "^5.2.0",
|
"acorn-jsx": "^5.3.1",
|
||||||
"eslint-visitor-keys": "^1.3.0"
|
"eslint-visitor-keys": "^1.3.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1181,12 +1184,12 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"file-entry-cache": {
|
"file-entry-cache": {
|
||||||
"version": "5.0.1",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz",
|
||||||
"integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
|
"integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"flat-cache": "^2.0.1"
|
"flat-cache": "^3.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fill-range": {
|
"fill-range": {
|
||||||
|
@ -1208,31 +1211,19 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flat-cache": {
|
"flat-cache": {
|
||||||
"version": "2.0.1",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
||||||
"integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
|
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"flatted": "^2.0.0",
|
"flatted": "^3.1.0",
|
||||||
"rimraf": "2.6.3",
|
"rimraf": "^3.0.2"
|
||||||
"write": "1.0.3"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"rimraf": {
|
|
||||||
"version": "2.6.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
|
|
||||||
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"glob": "^7.1.3"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flatted": {
|
"flatted": {
|
||||||
"version": "2.0.2",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz",
|
||||||
"integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
|
"integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"form-data": {
|
"form-data": {
|
||||||
|
@ -1521,9 +1512,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"is-core-module": {
|
"is-core-module": {
|
||||||
"version": "2.1.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
|
||||||
"integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==",
|
"integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"has": "^1.0.3"
|
"has": "^1.0.3"
|
||||||
|
@ -1611,9 +1602,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.14.0",
|
"version": "3.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||||
"integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
|
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"argparse": "^1.0.7",
|
"argparse": "^1.0.7",
|
||||||
|
@ -1642,9 +1633,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jsonc-parser": {
|
"jsonc-parser": {
|
||||||
"version": "2.3.1",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
|
||||||
"integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==",
|
"integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"levn": {
|
"levn": {
|
||||||
|
@ -1685,6 +1676,23 @@
|
||||||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
|
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lru-cache": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"yallist": "^4.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"yallist": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"mime-db": {
|
"mime-db": {
|
||||||
"version": "1.44.0",
|
"version": "1.44.0",
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
|
||||||
|
@ -1904,68 +1912,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"object.entries": {
|
"object.entries": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz",
|
||||||
"integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
|
"integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"call-bind": "^1.0.0",
|
||||||
"define-properties": "^1.1.3",
|
"define-properties": "^1.1.3",
|
||||||
"es-abstract": "^1.17.5",
|
"es-abstract": "^1.18.0-next.1",
|
||||||
"has": "^1.0.3"
|
"has": "^1.0.3"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"es-abstract": {
|
|
||||||
"version": "1.17.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
|
|
||||||
"integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"es-to-primitive": "^1.2.1",
|
|
||||||
"function-bind": "^1.1.1",
|
|
||||||
"has": "^1.0.3",
|
|
||||||
"has-symbols": "^1.0.1",
|
|
||||||
"is-callable": "^1.2.2",
|
|
||||||
"is-regex": "^1.1.1",
|
|
||||||
"object-inspect": "^1.8.0",
|
|
||||||
"object-keys": "^1.1.1",
|
|
||||||
"object.assign": "^4.1.1",
|
|
||||||
"string.prototype.trimend": "^1.0.1",
|
|
||||||
"string.prototype.trimstart": "^1.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"object.values": {
|
"object.values": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz",
|
||||||
"integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
|
"integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"call-bind": "^1.0.0",
|
||||||
"define-properties": "^1.1.3",
|
"define-properties": "^1.1.3",
|
||||||
"es-abstract": "^1.17.0-next.1",
|
"es-abstract": "^1.18.0-next.1",
|
||||||
"function-bind": "^1.1.1",
|
|
||||||
"has": "^1.0.3"
|
"has": "^1.0.3"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"es-abstract": {
|
|
||||||
"version": "1.17.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
|
|
||||||
"integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"es-to-primitive": "^1.2.1",
|
|
||||||
"function-bind": "^1.1.1",
|
|
||||||
"has": "^1.0.3",
|
|
||||||
"has-symbols": "^1.0.1",
|
|
||||||
"is-callable": "^1.2.2",
|
|
||||||
"is-regex": "^1.1.1",
|
|
||||||
"object-inspect": "^1.8.0",
|
|
||||||
"object-keys": "^1.1.1",
|
|
||||||
"object.assign": "^4.1.1",
|
|
||||||
"string.prototype.trimend": "^1.0.1",
|
|
||||||
"string.prototype.trimstart": "^1.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"once": {
|
"once": {
|
||||||
|
@ -2291,9 +2258,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"simple-git": {
|
"simple-git": {
|
||||||
"version": "2.23.0",
|
"version": "2.25.0",
|
||||||
"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.25.0.tgz",
|
||||||
"integrity": "sha512-s/gEkxFV2WGTN4kO1uQoA4cE4rq0FRzQPR5Yhgg8JUuA4IhOeccjlKSFhwF3rrpo7797ZvQc7L6hJJNA4szHCw==",
|
"integrity": "sha512-RMBFWKiPDl3rAoFbEaCVsjQ0v6sgR0q7cyUF9e/4lR81Mf2/5xwop0aCQatUDXKMIXnkuOG6aTEadQmGtOw4mg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@kwsites/file-exists": "^1.1.1",
|
"@kwsites/file-exists": "^1.1.1",
|
||||||
|
@ -2604,12 +2571,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vscode-json-languageservice": {
|
"vscode-json-languageservice": {
|
||||||
"version": "3.10.0",
|
"version": "3.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.11.0.tgz",
|
||||||
"integrity": "sha512-8IvuRSQnjznu+obqy6Dy4S4H68Ke7a3Kb+A0FcdctyAMAWEnrORpCpMOMqEYiPLm/OTYLVWJ7ql3qToDTozu4w==",
|
"integrity": "sha512-QxI+qV97uD7HHOCjh3MrM1TfbdwmTXrMckri5Tus1/FQiG3baDZb2C9Y0y8QThs7PwHYBIQXcAc59ZveCRZKPA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"jsonc-parser": "^2.3.1",
|
"jsonc-parser": "^3.0.0",
|
||||||
"vscode-languageserver-textdocument": "^1.0.1",
|
"vscode-languageserver-textdocument": "^1.0.1",
|
||||||
"vscode-languageserver-types": "3.16.0-next.2",
|
"vscode-languageserver-types": "3.16.0-next.2",
|
||||||
"vscode-nls": "^5.0.0",
|
"vscode-nls": "^5.0.0",
|
||||||
|
@ -2714,15 +2681,6 @@
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"write": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"mkdirp": "^0.5.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"y18n": {
|
"y18n": {
|
||||||
"version": "5.0.5",
|
"version": "5.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
|
||||||
|
@ -2736,9 +2694,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yargs": {
|
"yargs": {
|
||||||
"version": "16.1.1",
|
"version": "16.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
||||||
"integrity": "sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w==",
|
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"cliui": "^7.0.2",
|
"cliui": "^7.0.2",
|
||||||
|
|
|
@ -34,9 +34,9 @@
|
||||||
"@tensorflow/tfjs-node-gpu": "^2.7.0",
|
"@tensorflow/tfjs-node-gpu": "^2.7.0",
|
||||||
"@vladmandic/pilogger": "^0.2.9",
|
"@vladmandic/pilogger": "^0.2.9",
|
||||||
"chokidar": "^3.4.3",
|
"chokidar": "^3.4.3",
|
||||||
"dayjs": "^1.9.6",
|
"dayjs": "^1.9.7",
|
||||||
"esbuild": "^0.8.15",
|
"esbuild": "^0.8.21",
|
||||||
"eslint": "^7.14.0",
|
"eslint": "^7.15.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",
|
||||||
"eslint-plugin-json": "^2.1.2",
|
"eslint-plugin-json": "^2.1.2",
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
"eslint-plugin-promise": "^4.2.1",
|
"eslint-plugin-promise": "^4.2.1",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"seedrandom": "^3.0.5",
|
"seedrandom": "^3.0.5",
|
||||||
"simple-git": "^2.23.0"
|
"simple-git": "^2.25.0"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
|
|
|
@ -12,8 +12,8 @@ async function analyzeGraph(modelPath) {
|
||||||
if (stat.isFile()) model = await tf.loadGraphModel(`file://${modelPath}`);
|
if (stat.isFile()) model = await tf.loadGraphModel(`file://${modelPath}`);
|
||||||
else model = await tf.loadGraphModel(`file://${path.join(modelPath, 'model.json')}`);
|
else model = await tf.loadGraphModel(`file://${path.join(modelPath, 'model.json')}`);
|
||||||
log.info('graph model:', modelPath, tf.memory());
|
log.info('graph model:', modelPath, tf.memory());
|
||||||
// console.log(model.executor.graph.signature.inputs);
|
// log(model.executor.graph.signature.inputs);
|
||||||
// console.log(model.executor.graph.inputs);
|
// log(model.executor.graph.inputs);
|
||||||
if (model.executor.graph.signature.inputs) {
|
if (model.executor.graph.signature.inputs) {
|
||||||
const inputs = Object.values(model.executor.graph.signature.inputs)[0];
|
const inputs = Object.values(model.executor.graph.signature.inputs)[0];
|
||||||
log.data('inputs:', { name: inputs.name, dtype: inputs.dtype, shape: inputs.tensorShape.dim });
|
log.data('inputs:', { name: inputs.name, dtype: inputs.dtype, shape: inputs.tensorShape.dim });
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as profile from '../profile.js';
|
import * as profile from '../profile.js';
|
||||||
|
|
||||||
|
@ -9,7 +10,7 @@ async function load(config) {
|
||||||
if (!models.age) {
|
if (!models.age) {
|
||||||
models.age = await tf.loadGraphModel(config.face.age.modelPath);
|
models.age = await tf.loadGraphModel(config.face.age.modelPath);
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log(`Human: load model: ${config.face.age.modelPath.match(/\/(.*)\./)[1]}`);
|
log(`Human: load model: ${config.face.age.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
}
|
}
|
||||||
return models.age;
|
return models.age;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as modelMobileNet from './modelMobileNet';
|
import * as modelMobileNet from './modelMobileNet';
|
||||||
import * as decodeMultiple from './decodeMultiple';
|
import * as decodeMultiple from './decodeMultiple';
|
||||||
|
@ -40,8 +41,7 @@ exports.PoseNet = PoseNet;
|
||||||
async function load(config) {
|
async function load(config) {
|
||||||
const graphModel = await tf.loadGraphModel(config.body.modelPath);
|
const graphModel = await tf.loadGraphModel(config.body.modelPath);
|
||||||
const mobilenet = new modelMobileNet.MobileNet(graphModel, this.outputStride);
|
const mobilenet = new modelMobileNet.MobileNet(graphModel, this.outputStride);
|
||||||
// eslint-disable-next-line no-console
|
log(`Human: load model: ${config.body.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
console.log(`Human: load model: ${config.body.modelPath.match(/\/(.*)\./)[1]}`);
|
|
||||||
return new PoseNet(mobilenet);
|
return new PoseNet(mobilenet);
|
||||||
}
|
}
|
||||||
exports.load = load;
|
exports.load = load;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as profile from '../profile.js';
|
import * as profile from '../profile.js';
|
||||||
|
|
||||||
|
@ -9,8 +10,7 @@ const models = {};
|
||||||
async function load(config) {
|
async function load(config) {
|
||||||
if (!models.embedding) {
|
if (!models.embedding) {
|
||||||
models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);
|
models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);
|
||||||
// eslint-disable-next-line no-console
|
log(`Human: load model: ${config.face.embedding.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
console.log(`Human: load model: ${config.face.embedding.modelPath.match(/\/(.*)\./)[1]}`);
|
|
||||||
}
|
}
|
||||||
return models.embedding;
|
return models.embedding;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as profile from '../profile.js';
|
import * as profile from '../profile.js';
|
||||||
|
|
||||||
|
@ -13,8 +14,7 @@ const scale = 1; // score multiplication factor
|
||||||
async function load(config) {
|
async function load(config) {
|
||||||
if (!models.emotion) {
|
if (!models.emotion) {
|
||||||
models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);
|
models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);
|
||||||
// eslint-disable-next-line no-console
|
log(`Human: load model: ${config.face.emotion.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
console.log(`Human: load model: ${config.face.emotion.modelPath.match(/\/(.*)\./)[1]}`);
|
|
||||||
}
|
}
|
||||||
return models.emotion;
|
return models.emotion;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
|
|
||||||
const NUM_LANDMARKS = 6;
|
const NUM_LANDMARKS = 6;
|
||||||
|
@ -166,8 +167,7 @@ class BlazeFaceModel {
|
||||||
async function load(config) {
|
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);
|
||||||
// eslint-disable-next-line no-console
|
log(`Human: load model: ${config.face.detector.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
console.log(`Human: load model: ${config.face.detector.modelPath.match(/\/(.*)\./)[1]}`);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as blazeface from './blazeface.js';
|
import * as blazeface from './blazeface.js';
|
||||||
import * as pipe from './facepipeline.js';
|
import * as pipe from './facepipeline.js';
|
||||||
|
@ -46,10 +47,8 @@ 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);
|
||||||
// eslint-disable-next-line no-console
|
if (config.face.mesh.enabled) log(`Human: load model: ${config.face.mesh.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
if (config.face.mesh.enabled) console.log(`Human: load model: ${config.face.mesh.modelPath.match(/\/(.*)\./)[1]}`);
|
if (config.face.iris.enabled) log(`Human: load model: ${config.face.iris.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
if (config.face.iris.enabled) console.log(`Human: load model: ${config.face.iris.modelPath.match(/\/(.*)\./)[1]}`);
|
|
||||||
return faceMesh;
|
return faceMesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,7 +173,7 @@ class Pipeline {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log(this.skipped, config.face.detector.skipFrames, this.detectedFaces, config.face.detector.maxFaces, detector?.boxes.length, this.storedBoxes.length);
|
// log(this.skipped, config.face.detector.skipFrames, this.detectedFaces, config.face.detector.maxFaces, detector?.boxes.length, this.storedBoxes.length);
|
||||||
|
|
||||||
let results = tf.tidy(() => this.storedBoxes.map((box, i) => {
|
let results = tf.tidy(() => this.storedBoxes.map((box, i) => {
|
||||||
let angle = 0;
|
let angle = 0;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as profile from '../profile.js';
|
import * as profile from '../profile.js';
|
||||||
|
|
||||||
|
@ -13,8 +14,7 @@ async function load(config) {
|
||||||
if (!models.gender) {
|
if (!models.gender) {
|
||||||
models.gender = await tf.loadGraphModel(config.face.gender.modelPath);
|
models.gender = await tf.loadGraphModel(config.face.gender.modelPath);
|
||||||
alternative = models.gender.inputs[0].shape[3] === 1;
|
alternative = models.gender.inputs[0].shape[3] === 1;
|
||||||
// eslint-disable-next-line no-console
|
log(`Human: load model: ${config.face.gender.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
console.log(`Human: load model: ${config.face.gender.modelPath.match(/\/(.*)\./)[1]}`);
|
|
||||||
}
|
}
|
||||||
return models.gender;
|
return models.gender;
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ class HandPipeline {
|
||||||
if (this.storedBoxes.length > 0) useFreshBox = true;
|
if (this.storedBoxes.length > 0) useFreshBox = true;
|
||||||
}
|
}
|
||||||
const hands = [];
|
const hands = [];
|
||||||
// console.log(`skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);
|
// log(`skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);
|
||||||
|
|
||||||
// go through working set of boxes
|
// go through working set of boxes
|
||||||
for (let i = 0; i < this.storedBoxes.length; i++) {
|
for (let i = 0; i < this.storedBoxes.length; i++) {
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html
|
// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html
|
||||||
|
|
||||||
|
import { log } from '../log.js';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as handdetector from './handdetector';
|
import * as handdetector from './handdetector';
|
||||||
import * as pipeline from './handpipeline';
|
import * as pipeline from './handpipeline';
|
||||||
|
@ -75,10 +76,8 @@ async function load(config) {
|
||||||
const detector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);
|
const detector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);
|
||||||
const pipe = new pipeline.HandPipeline(detector, handPoseModel, config.hand.inputSize);
|
const pipe = new pipeline.HandPipeline(detector, handPoseModel, config.hand.inputSize);
|
||||||
const handpose = new HandPose(pipe);
|
const handpose = new HandPose(pipe);
|
||||||
// eslint-disable-next-line no-console
|
if (config.hand.enabled) log(`Human: load model: ${config.hand.detector.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
if (config.hand.enabled) console.log(`Human: load model: ${config.hand.detector.modelPath.match(/\/(.*)\./)[1]}`);
|
if (config.hand.landmarks) log(`Human: load model: ${config.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`);
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
if (config.hand.landmarks) console.log(`Human: load model: ${config.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`);
|
|
||||||
return handpose;
|
return handpose;
|
||||||
}
|
}
|
||||||
exports.load = load;
|
exports.load = load;
|
||||||
|
|
35
src/human.js
35
src/human.js
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from './log.js';
|
||||||
import * as tf from '../dist/tfjs.esm.js';
|
import * as tf from '../dist/tfjs.esm.js';
|
||||||
import * as facemesh from './face/facemesh.js';
|
import * as facemesh from './face/facemesh.js';
|
||||||
import * as age from './age/age.js';
|
import * as age from './age/age.js';
|
||||||
|
@ -68,12 +69,6 @@ class Human {
|
||||||
this.hand = handpose;
|
this.hand = handpose;
|
||||||
}
|
}
|
||||||
|
|
||||||
// helper function: wrapper around console output
|
|
||||||
log(...msg) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
if (msg && this.config.console) console.log('Human:', ...msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
profile() {
|
profile() {
|
||||||
if (this.config.profile) return profile.data;
|
if (this.config.profile) return profile.data;
|
||||||
return {};
|
return {};
|
||||||
|
@ -86,7 +81,7 @@ class Human {
|
||||||
const previous = this.numTensors;
|
const previous = this.numTensors;
|
||||||
this.numTensors = current;
|
this.numTensors = current;
|
||||||
const leaked = current - previous;
|
const leaked = current - previous;
|
||||||
if (leaked !== 0) this.log(...msg, leaked);
|
if (leaked !== 0) log(...msg, leaked);
|
||||||
}
|
}
|
||||||
|
|
||||||
// quick sanity check on inputs
|
// quick sanity check on inputs
|
||||||
|
@ -116,11 +111,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) {
|
||||||
this.log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);
|
log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);
|
||||||
await this.checkBackend(true);
|
await this.checkBackend(true);
|
||||||
if (tf.ENV.flags.IS_BROWSER) {
|
if (tf.ENV.flags.IS_BROWSER) {
|
||||||
this.log('configuration:', this.config);
|
log('configuration:', this.config);
|
||||||
this.log('tf flags:', tf.ENV.flags);
|
log('tf flags:', tf.ENV.flags);
|
||||||
}
|
}
|
||||||
this.firstRun = false;
|
this.firstRun = false;
|
||||||
}
|
}
|
||||||
|
@ -166,17 +161,17 @@ class Human {
|
||||||
tf.removeBackend(this.config.backend);
|
tf.removeBackend(this.config.backend);
|
||||||
tf.registerBackend(this.config.backend, backendFactory);
|
tf.registerBackend(this.config.backend, backendFactory);
|
||||||
} else {
|
} else {
|
||||||
this.log('Backend not registred:', this.config.backend);
|
log('Backend not registred:', this.config.backend);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
this.log('setting backend:', this.config.backend);
|
log('setting backend:', this.config.backend);
|
||||||
|
|
||||||
if (this.config.backend === 'wasm') {
|
if (this.config.backend === 'wasm') {
|
||||||
this.log('settings wasm path:', this.config.wasmPath);
|
log('settings wasm path:', this.config.wasmPath);
|
||||||
tf.setWasmPaths(this.config.wasmPath);
|
tf.setWasmPaths(this.config.wasmPath);
|
||||||
const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');
|
const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');
|
||||||
if (!simd) this.log('warning: wasm simd support is not enabled');
|
if (!simd) log('warning: wasm simd support is not enabled');
|
||||||
}
|
}
|
||||||
|
|
||||||
await tf.setBackend(this.config.backend);
|
await tf.setBackend(this.config.backend);
|
||||||
|
@ -186,13 +181,13 @@ class Human {
|
||||||
*/
|
*/
|
||||||
if (tf.getBackend() === 'webgl') {
|
if (tf.getBackend() === 'webgl') {
|
||||||
if (this.config.deallocate) {
|
if (this.config.deallocate) {
|
||||||
this.log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);
|
log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);
|
||||||
tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);
|
tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);
|
||||||
}
|
}
|
||||||
tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);
|
tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);
|
||||||
tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);
|
tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);
|
||||||
const gl = await tf.backend().getGPGPUContext().gl;
|
const gl = await tf.backend().getGPGPUContext().gl;
|
||||||
this.log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
||||||
}
|
}
|
||||||
await tf.ready();
|
await tf.ready();
|
||||||
this.perf.backend = Math.trunc(now() - timeStamp);
|
this.perf.backend = Math.trunc(now() - timeStamp);
|
||||||
|
@ -217,7 +212,7 @@ class Human {
|
||||||
|
|
||||||
// is something went wrong, skip the face
|
// is something went wrong, skip the face
|
||||||
if (!face.image || face.image.isDisposedInternal) {
|
if (!face.image || face.image.isDisposedInternal) {
|
||||||
this.log('Face object is disposed:', face.image);
|
log('Face object is disposed:', face.image);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,7 +325,7 @@ class Human {
|
||||||
this.state = 'check';
|
this.state = 'check';
|
||||||
const error = this.sanity(input);
|
const error = this.sanity(input);
|
||||||
if (error) {
|
if (error) {
|
||||||
this.log(error, input);
|
log(error, input);
|
||||||
resolve({ error });
|
resolve({ error });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -352,7 +347,7 @@ class Human {
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
const process = image.process(input, this.config);
|
const process = image.process(input, this.config);
|
||||||
if (!process || !process.tensor) {
|
if (!process || !process.tensor) {
|
||||||
this.log('could not convert input to tensor');
|
log('could not convert input to tensor');
|
||||||
resolve({ error: 'could not convert input to tensor' });
|
resolve({ error: 'could not convert input to tensor' });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -423,7 +418,7 @@ class Human {
|
||||||
if (!sample) sample = new ImageData(255, 255);
|
if (!sample) sample = new ImageData(255, 255);
|
||||||
// const sample = tf.zeros([1, 255, 255, 3]);
|
// const sample = tf.zeros([1, 255, 255, 3]);
|
||||||
const warmup = await this.detect(sample, userConfig);
|
const warmup = await this.detect(sample, userConfig);
|
||||||
this.log('warmed up');
|
log('warmed up');
|
||||||
return warmup;
|
return warmup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from './log.js';
|
||||||
import * as tf from '../dist/tfjs.esm.js';
|
import * as tf from '../dist/tfjs.esm.js';
|
||||||
import * as fxImage from './imagefx.js';
|
import * as fxImage from './imagefx.js';
|
||||||
|
|
||||||
|
@ -22,8 +23,7 @@ function process(input, config) {
|
||||||
if (config.filter.height > 0) targetHeight = config.filter.height;
|
if (config.filter.height > 0) targetHeight = config.filter.height;
|
||||||
else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);
|
else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);
|
||||||
if (!targetWidth || !targetHeight) {
|
if (!targetWidth || !targetHeight) {
|
||||||
// eslint-disable-next-line no-console
|
log('Human: invalid input', input);
|
||||||
console.log('Human: invalid input', input);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {
|
if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
// helper function: wrapper around console output
|
||||||
|
export function log(...msg) {
|
||||||
|
const dt = new Date();
|
||||||
|
const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
if (msg) console.log(ts, 'Human:', ...msg);
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { log } from './log.js';
|
||||||
|
|
||||||
const profileData = {};
|
const profileData = {};
|
||||||
|
|
||||||
function profile(name, data) {
|
function profile(name, data) {
|
||||||
|
@ -18,8 +20,7 @@ function profile(name, data) {
|
||||||
if (largest.length > maxResults) largest.length = maxResults;
|
if (largest.length > maxResults) largest.length = maxResults;
|
||||||
const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };
|
const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };
|
||||||
profileData[name] = res;
|
profileData[name] = res;
|
||||||
// eslint-disable-next-line no-console
|
log('Human profiler', name, res);
|
||||||
console.log('Human profiler', name, res);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.run = profile;
|
exports.run = profile;
|
||||||
|
|
Loading…
Reference in New Issue