From 6fc26e793c680786c9adb76b6493f67623aa7be6 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 15 Aug 2022 11:29:56 -0400 Subject: [PATCH] fix wasm detection --- CHANGELOG.md | 5 +- TODO.md | 11 +- package.json | 6 +- src/body/blazeposedetector.ts | 2 +- src/face/blazeface.ts | 2 +- src/hand/handposedetector.ts | 2 +- src/hand/handtrack.ts | 2 +- src/object/centernet.ts | 2 +- src/object/nanodet.ts | 2 +- src/tfjs/backend.ts | 14 +- src/util/env.ts | 6 + test/browser.html | 69 +- test/build.log | 78 +- test/node.js | 2 +- test/test-main.js | 24 +- test/test-node-gpu.js | 8 +- test/test-node-wasm.js | 15 +- test/test-node.js | 9 +- test/test.log | 1752 ++++++++++++++++++--------------- 19 files changed, 1131 insertions(+), 880 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f053628f..ff1f86c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,9 +11,8 @@ ### **HEAD -> main** 2022/08/12 mandic00@live.com - -### **origin/main** 2022/08/10 mandic00@live.com - +- enumerate additional models +- release refresh ### **2.9.3** 2022/08/10 mandic00@live.com diff --git a/TODO.md b/TODO.md index 7df2a177..31546e06 100644 --- a/TODO.md +++ b/TODO.md @@ -57,6 +57,8 @@ Model is supported using `WebGL` backend in browser Models can be downloaded from - Add `human.check()` which validates all kernel ops for currently loaded models with currently selected backend Example: `console.error(human.check());` +- Add underlying tensorflow library version detection to `human.env` + Example: `console.log(human.env.tensorflow)` - Host models in Models can be directly used without downloading to local storage Example: `modelPath: 'https://vladmandic.github.io/human-models/models/facemesh.json'` @@ -69,10 +71,11 @@ Model is supported using `WebGL` backend in browser - Fix **NanoDet** module as alternative object detection - Fix `demo/multithread/node-multiprocess.js` demo - Fix `human.match` when using mixed descriptor lengths -- Increased test coverage - Run using `npm run test` +- Fix WASM feature detection issue in TFJS with Edge/Chromium +- Increased test coverage + **NodeJS**: Run using `npm run test` + **Browser**: Run using `demo/browser.html` - Increase availability of alternative models - See `models/model.json` for full list -- Update **NMS** methods resulting in some performance improvements + See `models/model.json` for full list - Update profiling methods in `human.profile()` - Update project dependencies diff --git a/package.json b/package.json index b19907d6..e8cedc14 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "@tensorflow/tfjs-node": "^3.19.0", "@tensorflow/tfjs-node-gpu": "^3.19.0", "@tensorflow/tfjs-tflite": "0.0.1-alpha.8", - "@types/node": "^18.7.2", + "@types/node": "^18.7.4", "@types/offscreencanvas": "^2019.7.0", "@typescript-eslint/eslint-plugin": "^5.33.0", "@typescript-eslint/parser": "^5.33.0", @@ -87,8 +87,8 @@ "@vladmandic/pilogger": "^0.4.6", "@vladmandic/tfjs": "github:vladmandic/tfjs", "@webgpu/types": "^0.1.21", - "esbuild": "^0.15.1", - "eslint": "8.21.0", + "esbuild": "^0.15.3", + "eslint": "8.22.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-html": "^7.1.0", "eslint-plugin-import": "^2.26.0", diff --git a/src/body/blazeposedetector.ts b/src/body/blazeposedetector.ts index 70967536..50fac822 100644 --- a/src/body/blazeposedetector.ts +++ b/src/body/blazeposedetector.ts @@ -71,7 +71,7 @@ export async function decode(boxesTensor: Tensor, logitsTensor: Tensor, config: detected.push({ box, boxRaw, score: scores[i] }); } /* - t.nms = tf.image.nonMaxSuppression(t.boxes, t.scores, 1, config.body.detector?.minConfidence || 0.1, config.body.detector?.iouThreshold || 0.1); + t.nms = await tf.image.nonMaxSuppressionAsync(t.boxes, t.scores, 1, config.body.detector?.minConfidence || 0.1, config.body.detector?.iouThreshold || 0.1); const boxes = t.boxes.arraySync(); const scores = t.scores.dataSync(); const nms = t.nms.dataSync(); diff --git a/src/face/blazeface.ts b/src/face/blazeface.ts index 222d409a..00f97d76 100644 --- a/src/face/blazeface.ts +++ b/src/face/blazeface.ts @@ -75,7 +75,7 @@ export async function getBoxes(inputImage: Tensor, config: Config) { t.logits = tf.slice(t.batch, [0, 0], [-1, 1]); t.sigmoid = tf.sigmoid(t.logits); t.scores = tf.squeeze(t.sigmoid); - t.nms = tf.image.nonMaxSuppression(t.boxes, t.scores, (config.face.detector?.maxDetected || 0), (config.face.detector?.iouThreshold || 0), (config.face.detector?.minConfidence || 0)); + t.nms = await tf.image.nonMaxSuppressionAsync(t.boxes, t.scores, (config.face.detector?.maxDetected || 0), (config.face.detector?.iouThreshold || 0), (config.face.detector?.minConfidence || 0)); const nms = await t.nms.array() as number[]; const boxes: Array = []; const scores = await t.scores.data(); diff --git a/src/hand/handposedetector.ts b/src/hand/handposedetector.ts index bcf762a6..81a11597 100644 --- a/src/hand/handposedetector.ts +++ b/src/hand/handposedetector.ts @@ -67,7 +67,7 @@ export class HandDetector { t.boxes = tf.slice(t.predictions, [0, 1], [-1, 4]); t.norm = this.normalizeBoxes(t.boxes); // box detection is flaky so we look for 3x boxes than we need results - t.nms = tf.image.nonMaxSuppression(t.norm, t.scores, 3 * config.hand.maxDetected, config.hand.iouThreshold, config.hand.minConfidence); + t.nms = await tf.image.nonMaxSuppressionAsync(t.norm, t.scores, 3 * config.hand.maxDetected, config.hand.iouThreshold, config.hand.minConfidence); const nms = await t.nms.array() as Array; const hands: Array<{ startPoint: Point; endPoint: Point; palmLandmarks: Point[]; confidence: number }> = []; for (const index of nms) { diff --git a/src/hand/handtrack.ts b/src/hand/handtrack.ts index f32c9e4a..71f83755 100644 --- a/src/hand/handtrack.ts +++ b/src/hand/handtrack.ts @@ -121,7 +121,7 @@ async function detectHands(input: Tensor, config: Config): Promise a.score); let nmsIdx: Array = []; if (nmsBoxes && nmsBoxes.length > 0) { - const nms = tf.image.nonMaxSuppression(nmsBoxes, nmsScores, config.object.maxDetected, config.object.iouThreshold, config.object.minConfidence); + const nms = await tf.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config.object.maxDetected, config.object.iouThreshold, config.object.minConfidence); nmsIdx = await nms.data(); tf.dispose(nms); } diff --git a/src/tfjs/backend.ts b/src/tfjs/backend.ts index ae1c5ee0..179427cf 100644 --- a/src/tfjs/backend.ts +++ b/src/tfjs/backend.ts @@ -90,10 +90,16 @@ export async function check(instance: Human, force = false) { if (instance.config.debug) log('wasm path:', instance.config.wasmPath); if (typeof tf?.setWasmPaths !== 'undefined') await tf.setWasmPaths(instance.config.wasmPath, instance.config.wasmPlatformFetch); else throw new Error('backend error: attempting to use wasm backend but wasm path is not set'); - const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT'); - const mt = await tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT'); - if (instance.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`); - if (instance.config.debug && !simd) log('warning: wasm simd support is not enabled'); + let mt = false; + let simd = false; + try { + mt = await tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT'); + simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT'); + if (instance.config.debug) log(`wasm execution: ${simd ? 'simd' : 'no simd'} ${mt ? 'multithreaded' : 'singlethreaded'}`); + if (instance.config.debug && !simd) log('warning: wasm simd support is not enabled'); + } catch { + log('wasm detection failed'); + } } try { diff --git a/src/util/env.ts b/src/util/env.ts index 0005e0bf..d4711230 100644 --- a/src/util/env.ts +++ b/src/util/env.ts @@ -27,6 +27,10 @@ export class Env { offscreen: undefined | boolean; /** Are performance counter instant values or additive */ perfadd: boolean = false; + /** If using tfjs-node get version of underlying tensorflow shared library */ + tensorflow: { + version: undefined | string, + } = { version: undefined }; /** WASM detected capabilities */ wasm: { supported: undefined | boolean, @@ -84,6 +88,7 @@ export class Env { this.tfjs = { version: tf.version['tfjs-core'] }; this.offscreen = typeof OffscreenCanvas !== 'undefined'; this.initial = true; + // @ts-ignore WorkerGlobalScope evaluated in browser only this.worker = this.browser && this.offscreen ? (typeof WorkerGlobalScope !== 'undefined') : undefined; if (typeof navigator !== 'undefined') { @@ -114,6 +119,7 @@ export class Env { async updateBackend() { // analyze backends this.backends = Object.keys(tf.engine().registryFactory); + this.tensorflow = { version: (tf.backend()['binding'] ? tf.backend()['binding']['TF_Version'] : undefined) }; this.wasm.supported = typeof WebAssembly !== 'undefined'; this.wasm.backend = this.backends.includes('wasm'); if (this.wasm.supported && this.wasm.backend && tf.getBackend() === 'wasm') { diff --git a/test/browser.html b/test/browser.html index c1bc541b..29a44068 100644 --- a/test/browser.html +++ b/test/browser.html @@ -13,9 +13,9 @@ @@ -36,16 +36,16 @@ object: { enabled: true }, }; - const backends = ['wasm', 'webgl', 'humangl', 'webgpu']; + const backends = ['wasm', 'humangl', 'webgl', 'webgpu']; const start = performance.now(); - function str(...msg) { + function str(long, ...msg) { if (!Array.isArray(msg)) return msg; let line = ''; for (const entry of msg) { - if (typeof entry === 'object') line += JSON.stringify(entry).replace(/"/g, '').replace(/,/g, ', ').replace(/:/g, ': '); - else line += entry; + if (typeof entry === 'object') line += ' ' + JSON.stringify(entry, null, long ? 2 : 0).replace(/"/g, '').replace(/,/g, ', ').replace(/:/g, ': '); + else line += ' ' + entry; } return line + '\n'; } @@ -55,9 +55,19 @@ 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')}`; const elap = (dt - last).toString().padStart(5, '0'); - document.getElementById('log').innerHTML += ts + ' +' + elap + 'ms  ' + str(...msgs); - // eslint-disable-next-line no-console - console.log(ts, elap, ...msgs); + document.getElementById('log').innerHTML += ts + ' +' + elap + 'ms  ' + str(false, ...msgs); + document.documentElement.scrollTop = document.documentElement.scrollHeight + console.log(ts, elap, ...msgs); // eslint-disable-line no-console + last = dt; + } + + async function detailed(...msgs) { + 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')}`; + const elap = (dt - last).toString().padStart(5, '0'); + document.getElementById('log').innerHTML += ts + ' +' + elap + 'ms  ' + str(true, ...msgs); + document.documentElement.scrollTop = document.documentElement.scrollHeight + console.log(ts, elap, ...msgs); // eslint-disable-line no-console last = dt; } @@ -95,37 +105,44 @@ human.events.addEventListener('image', () => events('image')); human.events.addEventListener('detect', () => events('detect')); const timer = setInterval(() => { document.getElementById('state').innerText = `State: ${human.state}`; }, 10); - log({ version: human.version }); - log({ tfjs: human.tf.version.tfjs }); - log({ environment: human.env }); - log({ config: human.config }); + log('version', human.version); + log('tfjs', human.tf.version.tfjs); + + const env = JSON.parse(JSON.stringify(human.env)); + env.kernels = human.env.kernels.length; + detailed('environment', env); + + detailed('config', human.config); await human.load(); const models = Object.keys(human.models).map((model) => ({ name: model, loaded: (human.models[model] !== null) })); - log({ models }); + log('models', models); for (const backend of backends) { log(); log('test start:', backend); human.config.backend = backend; await human.init(); - log({ initialized: human.tf.getBackend() }); - log({ memory: human.tf.memory() }); + log('desired', backend, 'detected', human.tf.getBackend()); + if (human.tf.getBackend() !== backend) { + continue; + } + log('memory', human.tf.memory()); res = await human.validate(); - log({ validate: res }); + log('validate', res); res = await human.warmup({ warmup: 'face' }); draw(res.canvas); - log({ warmup: 'face' }); + log('warmup', 'face'); let img = await image('../../samples/in/ai-body.jpg'); const input = await human.image(img); - log({ input: input.tensor.shape }); + log('input', input.tensor.shape); draw(res.canvas); res = await human.detect(input.tensor); - log({ detect: true }); + log('detect'); human.next(); - log({ interpolated: true }); + log('interpolate'); const persons = res.persons; - log({ persons: true }); - log({ summary: { persons: persons.length, face: res.face.length, body: res.body.length, hand: res.hand.length, object: res.object.length, gesture: res.gesture.length } }); - log({ performance: human.performance }); + log('persons'); + log('summary', { persons: persons.length, face: res.face.length, body: res.body.length, hand: res.hand.length, object: res.object.length, gesture: res.gesture.length }); + log('performance', human.performance); human.tf.dispose(input.tensor); draw(); @@ -138,12 +155,12 @@ draw(res.canvas); } const t1 = performance.now(); - log({ benchmark: { time: Math.round((t1 - t0) / 10), cacheSensitivity: val }, performance: human.performance }); + log('benchmark', { time: Math.round((t1 - t0) / 10), cacheSensitivity: val, performance: human.performance }); await wait(10); } draw(); - log({ memory: human.tf.memory() }); + log('memory', human.tf.memory()); } clearInterval(timer); log(); diff --git a/test/build.log b/test/build.log index 46c49449..1f7737b6 100644 --- a/test/build.log +++ b/test/build.log @@ -1,39 +1,39 @@ -2022-08-12 09:50:24 DATA:  Build {"name":"@vladmandic/human","version":"2.9.3"} -2022-08-12 09:50:24 INFO:  Application: {"name":"@vladmandic/human","version":"2.9.3"} -2022-08-12 09:50:24 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} -2022-08-12 09:50:24 INFO:  Toolchain: {"build":"0.7.9","esbuild":"0.15.1","typescript":"4.7.4","typedoc":"0.23.10","eslint":"8.21.0"} -2022-08-12 09:50:24 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} -2022-08-12 09:50:24 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} -2022-08-12 09:50:24 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":608} -2022-08-12 09:50:24 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":75,"inputBytes":654779,"outputBytes":307161} -2022-08-12 09:50:24 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":612} -2022-08-12 09:50:24 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":75,"inputBytes":654783,"outputBytes":307165} -2022-08-12 09:50:24 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":664} -2022-08-12 09:50:24 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":75,"inputBytes":654835,"outputBytes":307215} -2022-08-12 09:50:24 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1069,"outputBytes":358} -2022-08-12 09:50:24 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1032,"outputBytes":583} -2022-08-12 09:50:24 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":75,"inputBytes":654754,"outputBytes":306014} -2022-08-12 09:50:24 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":11,"inputBytes":1271,"outputBytes":2787569} -2022-08-12 09:50:24 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":75,"inputBytes":3441740,"outputBytes":1668900} -2022-08-12 09:50:24 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":75,"inputBytes":3441740,"outputBytes":3072630} -2022-08-12 09:50:31 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":30} -2022-08-12 09:50:33 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true} -2022-08-12 09:50:33 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6716,"outputBytes":3141} -2022-08-12 09:50:33 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15629,"outputBytes":7798} -2022-08-12 09:50:42 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":109,"errors":0,"warnings":0} -2022-08-12 09:50:42 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} -2022-08-12 09:50:42 STATE: Copy: {"input":"tfjs/tfjs.esm.d.ts"} -2022-08-12 09:50:42 INFO:  Done... -2022-08-12 09:50:42 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":198} -2022-08-12 09:50:42 STATE: Copy: {"input":"types/human.d.ts"} -2022-08-12 09:50:42 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} -2022-08-12 09:50:42 STATE: Models {"folder":"./models","models":13} -2022-08-12 09:50:42 STATE: Models {"folder":"../human-models/models","models":42} -2022-08-12 09:50:42 STATE: Models {"folder":"../blazepose/model/","models":4} -2022-08-12 09:50:42 STATE: Models {"folder":"../anti-spoofing/model","models":1} -2022-08-12 09:50:42 STATE: Models {"folder":"../efficientpose/models","models":3} -2022-08-12 09:50:42 STATE: Models {"folder":"../insightface/models","models":5} -2022-08-12 09:50:42 STATE: Models {"folder":"../movenet/models","models":3} -2022-08-12 09:50:42 STATE: Models {"folder":"../nanodet/models","models":4} -2022-08-12 09:50:43 STATE: Models: {"count":57,"totalSize":383017442} -2022-08-12 09:50:43 INFO:  Human Build complete... {"logFile":"test/build.log"} +2022-08-15 11:28:08 DATA:  Build {"name":"@vladmandic/human","version":"2.9.3"} +2022-08-15 11:28:08 INFO:  Application: {"name":"@vladmandic/human","version":"2.9.3"} +2022-08-15 11:28:08 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} +2022-08-15 11:28:08 INFO:  Toolchain: {"build":"0.7.9","esbuild":"0.15.3","typescript":"4.7.4","typedoc":"0.23.10","eslint":"8.22.0"} +2022-08-15 11:28:08 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} +2022-08-15 11:28:08 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} +2022-08-15 11:28:08 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":608} +2022-08-15 11:28:08 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":75,"inputBytes":655247,"outputBytes":307391} +2022-08-15 11:28:08 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":612} +2022-08-15 11:28:08 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":75,"inputBytes":655251,"outputBytes":307395} +2022-08-15 11:28:08 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":664} +2022-08-15 11:28:08 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":75,"inputBytes":655303,"outputBytes":307445} +2022-08-15 11:28:08 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1069,"outputBytes":358} +2022-08-15 11:28:08 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1032,"outputBytes":583} +2022-08-15 11:28:08 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":75,"inputBytes":655222,"outputBytes":306242} +2022-08-15 11:28:09 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":11,"inputBytes":1271,"outputBytes":2787569} +2022-08-15 11:28:09 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":75,"inputBytes":3442208,"outputBytes":1669116} +2022-08-15 11:28:09 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":75,"inputBytes":3442208,"outputBytes":3072985} +2022-08-15 11:28:14 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":30} +2022-08-15 11:28:15 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true} +2022-08-15 11:28:15 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6716,"outputBytes":3141} +2022-08-15 11:28:15 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15629,"outputBytes":7798} +2022-08-15 11:28:24 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":109,"errors":0,"warnings":0} +2022-08-15 11:28:24 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} +2022-08-15 11:28:24 STATE: Copy: {"input":"tfjs/tfjs.esm.d.ts"} +2022-08-15 11:28:24 INFO:  Done... +2022-08-15 11:28:24 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":198} +2022-08-15 11:28:24 STATE: Copy: {"input":"types/human.d.ts"} +2022-08-15 11:28:24 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} +2022-08-15 11:28:24 STATE: Models {"folder":"./models","models":13} +2022-08-15 11:28:24 STATE: Models {"folder":"../human-models/models","models":42} +2022-08-15 11:28:24 STATE: Models {"folder":"../blazepose/model/","models":4} +2022-08-15 11:28:24 STATE: Models {"folder":"../anti-spoofing/model","models":1} +2022-08-15 11:28:24 STATE: Models {"folder":"../efficientpose/models","models":3} +2022-08-15 11:28:24 STATE: Models {"folder":"../insightface/models","models":5} +2022-08-15 11:28:24 STATE: Models {"folder":"../movenet/models","models":3} +2022-08-15 11:28:24 STATE: Models {"folder":"../nanodet/models","models":4} +2022-08-15 11:28:25 STATE: Models: {"count":57,"totalSize":383017442} +2022-08-15 11:28:25 INFO:  Human Build complete... {"logFile":"test/build.log"} diff --git a/test/node.js b/test/node.js index 3e1f9dc9..afe1f11e 100644 --- a/test/node.js +++ b/test/node.js @@ -5,7 +5,7 @@ const { fork } = require('child_process'); const log = require('@vladmandic/pilogger'); let logFile = 'test.log'; -log.configure({ inspect: { breakLength: 500 } }); +log.configure({ inspect: { breakLength: 350 } }); const tests = [ 'test-node.js', diff --git a/test/test-main.js b/test/test-main.js index 99a59f20..3de97404 100644 --- a/test/test-main.js +++ b/test/test-main.js @@ -12,7 +12,8 @@ const log = (status, ...data) => { }; process.on('uncaughtException', (err) => { - log('error', 'uncaughtException', lastOp, err); + log('error', 'uncaughtException', lastOp, err); // abort immediately + process.exit(1); }); async function testHTTP() { @@ -74,12 +75,17 @@ async function testInstance(human) { log('info', 'human version:', human.version); log('info', 'platform:', human.env.platform, 'agent:', human.env.agent); log('info', 'tfjs version:', human.tf.version.tfjs); - const bindingVer = human.tf.backend()['binding'] ? human.tf.backend()['binding']['TF_Version'] : null; - if (bindingVer) log('info', 'tensorflow binding version:', bindingVer); + const env = JSON.parse(JSON.stringify(human.env)); + env.kernels = human.env.kernels.length; + log('info', 'env:', env); await human.load(); - if (config.backend === human.tf.getBackend()) log('state', 'passed: set backend:', config.backend); - else log('error', 'failed: set backend:', config.backend); + if (config.backend === human.tf.getBackend()) { + log('state', 'passed: set backend:', config.backend); + } else { + log('error', 'failed: set backend:', config.backend); // abort immediately + return false; + } log('state', 'tensors', human.tf.memory().numTensors); if (human.models) { @@ -296,7 +302,11 @@ async function test(Human, inputConfig) { // test warmup sequences log('info', 'test: warmup'); - await testInstance(human); + res = await testInstance(human); + if (!res) { + log('error', 'failed: instance backend:', human.tf.getBackend()); + return; + } config.cacheSensitivity = 0; config.warmup = 'none'; res = await testWarmup(human, 'default'); @@ -475,7 +485,7 @@ async function test(Human, inputConfig) { // test face attention log('info', 'test face attention'); human.models.facemesh = null; - config.face.attention = { enabled: true }; + config.face.attention = { enabled: true, modelPath: 'https://vladmandic.github.io/human-models/models/facemesh-attention.json' }; res = await testDetect(human, 'samples/in/ai-face.jpg', 'face attention'); if (!res || !res.face[0] || res.face[0].mesh.length !== 478 || Object.keys(res.face[0].annotations).length !== 36) log('error', 'failed: face attention', { mesh: res.face?.[0]?.mesh?.length, annotations: Object.keys(res.face?.[0]?.annotations | {}).length }); else log('state', 'passed: face attention'); diff --git a/test/test-node-gpu.js b/test/test-node-gpu.js index 8ebd1ee9..8d327306 100644 --- a/test/test-node-gpu.js +++ b/test/test-node-gpu.js @@ -1,5 +1,5 @@ process.env.TF_CPP_MIN_LOG_LEVEL = '2'; -const Human = require('../dist/human.node-gpu.js').default; +const H = require('../dist/human.node-gpu.js'); const test = require('./test-main.js').test; const config = { @@ -25,4 +25,8 @@ const config = { filter: { enabled: false }, }; -test(Human, config); +async function main() { + test(H.Human, config); +} + +main(); diff --git a/test/test-node-wasm.js b/test/test-node-wasm.js index 9d787436..ed491d9d 100644 --- a/test/test-node-wasm.js +++ b/test/test-node-wasm.js @@ -1,20 +1,21 @@ +const log = require('@vladmandic/pilogger'); const tf = require('@tensorflow/tfjs'); // wasm backend requires tfjs to be loaded first const wasm = require('@tensorflow/tfjs-backend-wasm'); // wasm backend does not get auto-loaded in nodejs const { Canvas, Image } = require('canvas'); -const Human = require('../dist/human.node-wasm.js'); +const H = require('../dist/human.node-wasm.js'); const test = require('./test-main.js').test; // @ts-ignore -Human.env.Canvas = Canvas; // requires monkey-patch as wasm does not have tf.browser namespace +H.env.Canvas = Canvas; // requires monkey-patch as wasm does not have tf.browser namespace // @ts-ignore -Human.env.Image = Image; // requires monkey-patch as wasm does not have tf.browser namespace +H.env.Image = Image; // requires monkey-patch as wasm does not have tf.browser namespace const config = { cacheSensitivity: 0, modelBasePath: 'https://vladmandic.github.io/human/models/', backend: 'wasm', - wasmPath: 'node_modules/@tensorflow/tfjs-backend-wasm/dist/', - // wasmPath: `cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf.version_core}/dist/`, + // wasmPath: 'node_modules/@tensorflow/tfjs-backend-wasm/dist/', + wasmPath: `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf.version_core}/dist/`, debug: false, async: false, face: { @@ -38,7 +39,9 @@ async function main() { wasm.setWasmPaths(config.wasmPath); await tf.setBackend('wasm'); await tf.ready(); - test(Human.Human, config); + H.env.updateBackend(); + log.info(H.env.wasm); + test(H.Human, config); } main(); diff --git a/test/test-node.js b/test/test-node.js index 138bc571..355c88c2 100644 --- a/test/test-node.js +++ b/test/test-node.js @@ -1,5 +1,6 @@ process.env.TF_CPP_MIN_LOG_LEVEL = '2'; -const Human = require('../dist/human.node.js').default; + +const H = require('../dist/human.node.js'); const test = require('./test-main.js').test; const config = { @@ -25,4 +26,8 @@ const config = { filter: { enabled: false }, }; -test(Human, config); +async function main() { + test(H.Human, config); +} + +main(); diff --git a/test/test.log b/test/test.log index 1950e610..a29d2273 100644 --- a/test/test.log +++ b/test/test.log @@ -1,777 +1,975 @@ -2022-08-12 09:28:54 INFO:  @vladmandic/human version 2.9.3 -2022-08-12 09:28:54 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.15.0 -2022-08-12 09:28:54 INFO:  demos: [{"cmd":"../demo/nodejs/node.js","args":[]},{"cmd":"../demo/nodejs/node-simple.js","args":[]},{"cmd":"../demo/nodejs/node-fetch.js","args":[]},{"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]},{"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]},{"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]},{"cmd":"../demo/multithread/node-multiprocess.js","args":[]}] -2022-08-12 09:28:54 INFO:  -2022-08-12 09:28:54 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start -2022-08-12 09:28:55 INFO:  -2022-08-12 09:28:55 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start -2022-08-12 09:28:55 INFO:  -2022-08-12 09:28:55 INFO:  {"cmd":"../demo/nodejs/node-fetch.js","args":[]} start -2022-08-12 09:28:58 INFO:  -2022-08-12 09:28:58 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start -2022-08-12 09:28:59 INFO:  -2022-08-12 09:28:59 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start -2022-08-12 09:28:59 INFO:  -2022-08-12 09:28:59 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start -2022-08-12 09:29:00 INFO:  -2022-08-12 09:29:00 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start -2022-08-12 09:29:01 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"] -2022-08-12 09:29:01 INFO:  -2022-08-12 09:29:01 INFO:  test-node.js start -2022-08-12 09:29:01 INFO:  test-node.js test: configuration validation -2022-08-12 09:29:01 STATE: test-node.js passed: configuration default validation [] -2022-08-12 09:29:01 STATE: test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-08-12 09:29:01 INFO:  test-node.js test: model load -2022-08-12 09:29:01 STATE: test-node.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-08-12 09:29:01 INFO:  test-node.js test: warmup -2022-08-12 09:29:01 STATE: test-node.js passed: create human -2022-08-12 09:29:01 INFO:  test-node.js human version: 2.9.3 -2022-08-12 09:29:01 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.15.0 -2022-08-12 09:29:01 INFO:  test-node.js tfjs version: 3.19.0 -2022-08-12 09:29:01 INFO:  test-node.js tensorflow binding version: 2.7.3-dev20220521 -2022-08-12 09:29:01 STATE: test-node.js passed: set backend: tensorflow -2022-08-12 09:29:01 STATE: test-node.js tensors 1921 -2022-08-12 09:29:01 STATE: test-node.js passed: load models -2022-08-12 09:29:01 STATE: test-node.js result: defined models: 23 loaded models: 12 -2022-08-12 09:29:01 STATE: test-node.js passed: warmup: none default -2022-08-12 09:29:01 DATA:  test-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-08-12 09:29:01 DATA:  test-node.js result: performance: load: null total: null -2022-08-12 09:29:01 STATE: test-node.js passed: warmup none result match -2022-08-12 09:29:01 STATE: test-node.js event: image -2022-08-12 09:29:02 STATE: test-node.js event: detect -2022-08-12 09:29:02 STATE: test-node.js event: warmup -2022-08-12 09:29:02 STATE: test-node.js passed: warmup: face default -2022-08-12 09:29:02 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} -2022-08-12 09:29:02 DATA:  test-node.js result: performance: load: null total: 415 -2022-08-12 09:29:02 STATE: test-node.js passed: warmup face result match -2022-08-12 09:29:02 STATE: test-node.js event: image -2022-08-12 09:29:02 STATE: test-node.js event: detect -2022-08-12 09:29:02 STATE: test-node.js event: warmup -2022-08-12 09:29:02 STATE: test-node.js passed: warmup: body default -2022-08-12 09:29:02 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:02 DATA:  test-node.js result: performance: load: null total: 321 -2022-08-12 09:29:02 STATE: test-node.js passed: warmup body result match -2022-08-12 09:29:02 STATE: test-node.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.63,"emotion":"angry"},{"score":0.22,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"face":0,"gesture":"mouth 10% open"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking left"},{"iris":0,"gesture":"looking up"}]} -2022-08-12 09:29:02 INFO:  test-node.js test: details verification -2022-08-12 09:29:02 STATE: test-node.js start default -2022-08-12 09:29:02 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:02 STATE: test-node.js event: image -2022-08-12 09:29:03 STATE: test-node.js event: detect -2022-08-12 09:29:03 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-08-12 09:29:03 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:03 DATA:  test-node.js result: performance: load: null total: 245 -2022-08-12 09:29:03 STATE: test-node.js passed: details face length 1 -2022-08-12 09:29:03 STATE: test-node.js passed: details face score 1 0.93 1 -2022-08-12 09:29:03 STATE: test-node.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-08-12 09:29:03 STATE: test-node.js passed: details face arrays 4 478 1024 -2022-08-12 09:29:03 STATE: test-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-08-12 09:29:03 STATE: test-node.js passed: details face anti-spoofing 0.79 -2022-08-12 09:29:03 STATE: test-node.js passed: details face liveness 0.83 -2022-08-12 09:29:03 STATE: test-node.js passed: details body length 1 -2022-08-12 09:29:03 STATE: test-node.js passed: details body 0.92 17 6 -2022-08-12 09:29:03 STATE: test-node.js passed: details hand length 1 -2022-08-12 09:29:03 STATE: test-node.js passed: details hand 0.51 0.73 point -2022-08-12 09:29:03 STATE: test-node.js passed: details hand arrays 21 5 7 -2022-08-12 09:29:03 STATE: test-node.js passed: details gesture length 7 -2022-08-12 09:29:03 STATE: test-node.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-08-12 09:29:03 STATE: test-node.js passed: details object length 1 -2022-08-12 09:29:03 STATE: test-node.js passed: details object 0.72 person -2022-08-12 09:29:03 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-08-12 09:29:03 STATE: test-node.js event: image -2022-08-12 09:29:03 STATE: test-node.js event: detect -2022-08-12 09:29:03 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-08-12 09:29:03 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-08-12 09:29:03 STATE: test-node.js event: image -2022-08-12 09:29:03 STATE: test-node.js event: detect -2022-08-12 09:29:03 STATE: test-node.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-08-12 09:29:04 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:04 STATE: test-node.js event: image -2022-08-12 09:29:04 STATE: test-node.js event: detect -2022-08-12 09:29:04 STATE: test-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-08-12 09:29:04 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:04 STATE: test-node.js event: image -2022-08-12 09:29:04 STATE: test-node.js event: detect -2022-08-12 09:29:04 STATE: test-node.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-08-12 09:29:05 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-08-12 09:29:05 STATE: test-node.js event: image -2022-08-12 09:29:05 STATE: test-node.js event: detect -2022-08-12 09:29:05 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-08-12 09:29:05 INFO:  test-node.js test default -2022-08-12 09:29:05 STATE: test-node.js start async -2022-08-12 09:29:05 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:05 STATE: test-node.js event: image -2022-08-12 09:29:05 STATE: test-node.js event: detect -2022-08-12 09:29:05 STATE: test-node.js passed: detect: samples/in/ai-body.jpg async -2022-08-12 09:29:05 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:05 DATA:  test-node.js result: performance: load: null total: 225 -2022-08-12 09:29:05 STATE: test-node.js passed: default result face match 1 female 0.97 -2022-08-12 09:29:05 INFO:  test-node.js test sync -2022-08-12 09:29:05 STATE: test-node.js start sync -2022-08-12 09:29:05 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:05 STATE: test-node.js event: image -2022-08-12 09:29:06 STATE: test-node.js event: detect -2022-08-12 09:29:06 STATE: test-node.js passed: detect: samples/in/ai-body.jpg sync -2022-08-12 09:29:06 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:06 DATA:  test-node.js result: performance: load: null total: 219 -2022-08-12 09:29:06 STATE: test-node.js passed: default sync 1 female 0.97 -2022-08-12 09:29:06 INFO:  test-node.js test: image process -2022-08-12 09:29:06 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:06 STATE: test-node.js passed: image input null [1,256,256,3] -2022-08-12 09:29:06 INFO:  test-node.js test: image null -2022-08-12 09:29:06 STATE: test-node.js passed: invalid input could not convert input to tensor -2022-08-12 09:29:06 INFO:  test-node.js test face similarity -2022-08-12 09:29:06 STATE: test-node.js start face similarity -2022-08-12 09:29:06 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:06 STATE: test-node.js event: image -2022-08-12 09:29:06 STATE: test-node.js event: detect -2022-08-12 09:29:06 STATE: test-node.js passed: detect: samples/in/ai-face.jpg face similarity -2022-08-12 09:29:06 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-08-12 09:29:06 DATA:  test-node.js result: performance: load: null total: 212 -2022-08-12 09:29:06 STATE: test-node.js start face similarity -2022-08-12 09:29:06 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:06 STATE: test-node.js event: image -2022-08-12 09:29:06 STATE: test-node.js event: detect -2022-08-12 09:29:06 STATE: test-node.js passed: detect: samples/in/ai-body.jpg face similarity -2022-08-12 09:29:06 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:06 DATA:  test-node.js result: performance: load: null total: 219 -2022-08-12 09:29:06 STATE: test-node.js start face similarity -2022-08-12 09:29:06 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-08-12 09:29:06 STATE: test-node.js event: image -2022-08-12 09:29:06 STATE: test-node.js event: detect -2022-08-12 09:29:06 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-08-12 09:29:06 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2022-08-12 09:29:06 DATA:  test-node.js result: performance: load: null total: 194 -2022-08-12 09:29:06 STATE: test-node.js passed: face descriptor -2022-08-12 09:29:06 STATE: test-node.js passed: face similarity {"similarity":[1,0.44727452329649126,0.5567935850640406],"descriptors":[1024,1024,1024]} -2022-08-12 09:29:06 INFO:  test-node.js test object -2022-08-12 09:29:06 STATE: test-node.js start object -2022-08-12 09:29:07 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:07 STATE: test-node.js event: image -2022-08-12 09:29:07 STATE: test-node.js event: detect -2022-08-12 09:29:07 STATE: test-node.js passed: detect: samples/in/ai-body.jpg object -2022-08-12 09:29:07 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:07 DATA:  test-node.js result: performance: load: null total: 211 -2022-08-12 09:29:07 STATE: test-node.js passed: centernet -2022-08-12 09:29:07 STATE: test-node.js start object -2022-08-12 09:29:08 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:08 STATE: test-node.js event: image -2022-08-12 09:29:08 STATE: test-node.js event: detect -2022-08-12 09:29:08 STATE: test-node.js passed: detect: samples/in/ai-body.jpg object -2022-08-12 09:29:08 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 2 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:08 DATA:  test-node.js result: performance: load: null total: 222 -2022-08-12 09:29:08 STATE: test-node.js passed: nanodet -2022-08-12 09:29:08 INFO:  test-node.js test sensitive -2022-08-12 09:29:08 STATE: test-node.js start sensitive -2022-08-12 09:29:08 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:08 STATE: test-node.js event: image -2022-08-12 09:29:08 STATE: test-node.js event: detect -2022-08-12 09:29:08 STATE: test-node.js passed: detect: samples/in/ai-body.jpg sensitive -2022-08-12 09:29:08 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:08 DATA:  test-node.js result: performance: load: null total: 186 -2022-08-12 09:29:08 STATE: test-node.js passed: sensitive result match -2022-08-12 09:29:08 STATE: test-node.js passed: sensitive face result match -2022-08-12 09:29:08 STATE: test-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-08-12 09:29:08 STATE: test-node.js passed: sensitive body result match -2022-08-12 09:29:08 STATE: test-node.js passed: sensitive hand result match -2022-08-12 09:29:08 INFO:  test-node.js test body -2022-08-12 09:29:08 STATE: test-node.js start blazepose -2022-08-12 09:29:10 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:10 STATE: test-node.js event: image -2022-08-12 09:29:10 STATE: test-node.js event: detect -2022-08-12 09:29:10 STATE: test-node.js passed: detect: samples/in/ai-body.jpg blazepose -2022-08-12 09:29:10 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.99,"keypoints":39} -2022-08-12 09:29:10 DATA:  test-node.js result: performance: load: null total: 232 -2022-08-12 09:29:10 STATE: test-node.js passed: blazepose -2022-08-12 09:29:10 STATE: test-node.js start efficientpose -2022-08-12 09:29:11 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:11 STATE: test-node.js event: image -2022-08-12 09:29:11 STATE: test-node.js event: detect -2022-08-12 09:29:11 STATE: test-node.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-08-12 09:29:11 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.75,"keypoints":13} -2022-08-12 09:29:11 DATA:  test-node.js result: performance: load: null total: 248 -2022-08-12 09:29:11 STATE: test-node.js passed: efficientpose -2022-08-12 09:29:11 STATE: test-node.js start posenet -2022-08-12 09:29:12 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:12 STATE: test-node.js event: image -2022-08-12 09:29:12 STATE: test-node.js event: detect -2022-08-12 09:29:12 STATE: test-node.js passed: detect: samples/in/ai-body.jpg posenet -2022-08-12 09:29:12 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.96,"keypoints":16} -2022-08-12 09:29:12 DATA:  test-node.js result: performance: load: null total: 177 -2022-08-12 09:29:12 STATE: test-node.js passed: posenet -2022-08-12 09:29:12 STATE: test-node.js start movenet -2022-08-12 09:29:12 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-08-12 09:29:12 STATE: test-node.js event: image -2022-08-12 09:29:13 STATE: test-node.js event: detect -2022-08-12 09:29:13 STATE: test-node.js passed: detect: samples/in/ai-body.jpg movenet -2022-08-12 09:29:13 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:13 DATA:  test-node.js result: performance: load: null total: 185 -2022-08-12 09:29:13 STATE: test-node.js passed: movenet -2022-08-12 09:29:13 INFO:  test-node.js test face matching -2022-08-12 09:29:13 STATE: test-node.js passed: face database 40 -2022-08-12 09:29:13 STATE: test-node.js passed: face match {"first":{"index":4,"similarity":0.7827852615252829}} {"second":{"index":4,"similarity":0.5002052633015844}} {"third":{"index":4,"similarity":0.5401587887998899}} -2022-08-12 09:29:13 INFO:  test-node.js test face similarity alternative -2022-08-12 09:29:13 STATE: test-node.js start face embeddings -2022-08-12 09:29:13 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:13 STATE: test-node.js event: image -2022-08-12 09:29:13 STATE: test-node.js event: detect -2022-08-12 09:29:13 STATE: test-node.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-08-12 09:29:13 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:13 DATA:  test-node.js result: performance: load: null total: 189 -2022-08-12 09:29:13 STATE: test-node.js passed: mobilefacenet {"embedding":192} -2022-08-12 09:29:13 STATE: test-node.js start face embeddings -2022-08-12 09:29:14 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:14 STATE: test-node.js event: image -2022-08-12 09:29:15 STATE: test-node.js event: detect -2022-08-12 09:29:15 STATE: test-node.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-08-12 09:29:15 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:15 DATA:  test-node.js result: performance: load: null total: 205 -2022-08-12 09:29:15 STATE: test-node.js passed: insightface {"embedding":512} -2022-08-12 09:29:15 INFO:  test-node.js test face attention -2022-08-12 09:29:15 STATE: test-node.js start face attention -2022-08-12 09:29:15 DATA:  test-node.js stdout: 09:29:15.192 Human: error loading model: file://models/facemesh-attention.json Error: Path /home/vlado/dev/human/models/facemesh-attention.json does not exist: loading failed -2022-08-12 09:29:15 DATA:  test-node.js stdout: at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-node@3.19.0_seedrandom@3.0.5/node_modules/@tensorflow/tfjs-node/dist/io/file_system.js:67:23 -2022-08-12 09:29:15 ERROR: test-node.js uncaughtException testDetect face attention {} -2022-08-12 09:29:15 INFO:  -2022-08-12 09:29:15 INFO:  test-node-gpu.js start -2022-08-12 09:29:16 INFO:  test-node-gpu.js test: configuration validation -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: configuration default validation [] -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-08-12 09:29:16 INFO:  test-node-gpu.js test: model load -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-08-12 09:29:16 INFO:  test-node-gpu.js test: warmup -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: create human -2022-08-12 09:29:16 INFO:  test-node-gpu.js human version: 2.9.3 -2022-08-12 09:29:16 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.15.0 -2022-08-12 09:29:16 INFO:  test-node-gpu.js tfjs version: 3.19.0 -2022-08-12 09:29:16 INFO:  test-node-gpu.js tensorflow binding version: 2.7.3-dev20220521 -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: set backend: tensorflow -2022-08-12 09:29:16 STATE: test-node-gpu.js tensors 1921 -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: load models -2022-08-12 09:29:16 STATE: test-node-gpu.js result: defined models: 23 loaded models: 12 -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: warmup: none default -2022-08-12 09:29:16 DATA:  test-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-08-12 09:29:16 DATA:  test-node-gpu.js result: performance: load: null total: null -2022-08-12 09:29:16 STATE: test-node-gpu.js passed: warmup none result match -2022-08-12 09:29:16 STATE: test-node-gpu.js event: image -2022-08-12 09:29:21 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:21 STATE: test-node-gpu.js event: warmup -2022-08-12 09:29:21 STATE: test-node-gpu.js passed: warmup: face default -2022-08-12 09:29:21 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} -2022-08-12 09:29:21 DATA:  test-node-gpu.js result: performance: load: null total: 4473 -2022-08-12 09:29:21 STATE: test-node-gpu.js passed: warmup face result match -2022-08-12 09:29:21 STATE: test-node-gpu.js event: image -2022-08-12 09:29:21 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:21 STATE: test-node-gpu.js event: warmup -2022-08-12 09:29:21 STATE: test-node-gpu.js passed: warmup: body default -2022-08-12 09:29:21 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:21 DATA:  test-node-gpu.js result: performance: load: null total: 214 -2022-08-12 09:29:21 STATE: test-node-gpu.js passed: warmup body result match -2022-08-12 09:29:21 STATE: test-node-gpu.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.63,"emotion":"angry"},{"score":0.22,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"face":0,"gesture":"mouth 10% open"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking left"},{"iris":0,"gesture":"looking up"}]} -2022-08-12 09:29:21 INFO:  test-node-gpu.js test: details verification -2022-08-12 09:29:21 STATE: test-node-gpu.js start default -2022-08-12 09:29:21 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:21 STATE: test-node-gpu.js event: image -2022-08-12 09:29:22 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-08-12 09:29:22 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:22 DATA:  test-node-gpu.js result: performance: load: null total: 205 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details face length 1 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details face score 1 0.93 1 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details face arrays 4 478 1024 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details face anti-spoofing 0.79 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details face liveness 0.83 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details body length 1 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details body 0.92 17 6 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details hand length 1 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details hand 0.51 0.73 point -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details hand arrays 21 5 7 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details gesture length 7 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details object length 1 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: details object 0.72 person -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-08-12 09:29:22 STATE: test-node-gpu.js event: image -2022-08-12 09:29:22 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-08-12 09:29:22 STATE: test-node-gpu.js event: image -2022-08-12 09:29:22 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:22 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-08-12 09:29:23 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:23 STATE: test-node-gpu.js event: image -2022-08-12 09:29:23 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:23 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-08-12 09:29:23 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:23 STATE: test-node-gpu.js event: image -2022-08-12 09:29:23 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:23 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-08-12 09:29:24 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-08-12 09:29:24 STATE: test-node-gpu.js event: image -2022-08-12 09:29:24 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:24 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-08-12 09:29:24 INFO:  test-node-gpu.js test default -2022-08-12 09:29:24 STATE: test-node-gpu.js start async -2022-08-12 09:29:24 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:24 STATE: test-node-gpu.js event: image -2022-08-12 09:29:24 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:24 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg async -2022-08-12 09:29:24 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:24 DATA:  test-node-gpu.js result: performance: load: null total: 237 -2022-08-12 09:29:24 STATE: test-node-gpu.js passed: default result face match 1 female 0.97 -2022-08-12 09:29:24 INFO:  test-node-gpu.js test sync -2022-08-12 09:29:24 STATE: test-node-gpu.js start sync -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:25 STATE: test-node-gpu.js event: image -2022-08-12 09:29:25 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg sync -2022-08-12 09:29:25 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:25 DATA:  test-node-gpu.js result: performance: load: null total: 210 -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: default sync 1 female 0.97 -2022-08-12 09:29:25 INFO:  test-node-gpu.js test: image process -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: image input null [1,256,256,3] -2022-08-12 09:29:25 INFO:  test-node-gpu.js test: image null -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: invalid input could not convert input to tensor -2022-08-12 09:29:25 INFO:  test-node-gpu.js test face similarity -2022-08-12 09:29:25 STATE: test-node-gpu.js start face similarity -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:25 STATE: test-node-gpu.js event: image -2022-08-12 09:29:25 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity -2022-08-12 09:29:25 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-08-12 09:29:25 DATA:  test-node-gpu.js result: performance: load: null total: 257 -2022-08-12 09:29:25 STATE: test-node-gpu.js start face similarity -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:25 STATE: test-node-gpu.js event: image -2022-08-12 09:29:25 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:25 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity -2022-08-12 09:29:25 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:25 DATA:  test-node-gpu.js result: performance: load: null total: 190 -2022-08-12 09:29:25 STATE: test-node-gpu.js start face similarity -2022-08-12 09:29:26 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-08-12 09:29:26 STATE: test-node-gpu.js event: image -2022-08-12 09:29:26 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:26 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-08-12 09:29:26 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2022-08-12 09:29:26 DATA:  test-node-gpu.js result: performance: load: null total: 169 -2022-08-12 09:29:26 STATE: test-node-gpu.js passed: face descriptor -2022-08-12 09:29:26 STATE: test-node-gpu.js passed: face similarity {"similarity":[1,0.447238756461232,0.556914029877052],"descriptors":[1024,1024,1024]} -2022-08-12 09:29:26 INFO:  test-node-gpu.js test object -2022-08-12 09:29:26 STATE: test-node-gpu.js start object -2022-08-12 09:29:26 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:26 STATE: test-node-gpu.js event: image -2022-08-12 09:29:26 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:26 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-08-12 09:29:26 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:26 DATA:  test-node-gpu.js result: performance: load: null total: 174 -2022-08-12 09:29:26 STATE: test-node-gpu.js passed: centernet -2022-08-12 09:29:26 STATE: test-node-gpu.js start object -2022-08-12 09:29:28 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:28 STATE: test-node-gpu.js event: image -2022-08-12 09:29:28 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:28 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-08-12 09:29:28 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 2 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:28 DATA:  test-node-gpu.js result: performance: load: null total: 535 -2022-08-12 09:29:28 STATE: test-node-gpu.js passed: nanodet -2022-08-12 09:29:28 INFO:  test-node-gpu.js test sensitive -2022-08-12 09:29:28 STATE: test-node-gpu.js start sensitive -2022-08-12 09:29:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:29 STATE: test-node-gpu.js event: image -2022-08-12 09:29:29 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:29 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive -2022-08-12 09:29:29 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:29 DATA:  test-node-gpu.js result: performance: load: null total: 121 -2022-08-12 09:29:29 STATE: test-node-gpu.js passed: sensitive result match -2022-08-12 09:29:29 STATE: test-node-gpu.js passed: sensitive face result match -2022-08-12 09:29:29 STATE: test-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-08-12 09:29:29 STATE: test-node-gpu.js passed: sensitive body result match -2022-08-12 09:29:29 STATE: test-node-gpu.js passed: sensitive hand result match -2022-08-12 09:29:29 INFO:  test-node-gpu.js test body -2022-08-12 09:29:29 STATE: test-node-gpu.js start blazepose -2022-08-12 09:29:30 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:30 STATE: test-node-gpu.js event: image -2022-08-12 09:29:30 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose -2022-08-12 09:29:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.99,"keypoints":39} -2022-08-12 09:29:30 DATA:  test-node-gpu.js result: performance: load: null total: 255 -2022-08-12 09:29:30 STATE: test-node-gpu.js passed: blazepose -2022-08-12 09:29:30 STATE: test-node-gpu.js start efficientpose -2022-08-12 09:29:31 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:31 STATE: test-node-gpu.js event: image -2022-08-12 09:29:32 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:32 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-08-12 09:29:32 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.75,"keypoints":13} -2022-08-12 09:29:32 DATA:  test-node-gpu.js result: performance: load: null total: 729 -2022-08-12 09:29:32 STATE: test-node-gpu.js passed: efficientpose -2022-08-12 09:29:32 STATE: test-node-gpu.js start posenet -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:33 STATE: test-node-gpu.js event: image -2022-08-12 09:29:33 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet -2022-08-12 09:29:33 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.96,"keypoints":16} -2022-08-12 09:29:33 DATA:  test-node-gpu.js result: performance: load: null total: 153 -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: posenet -2022-08-12 09:29:33 STATE: test-node-gpu.js start movenet -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-08-12 09:29:33 STATE: test-node-gpu.js event: image -2022-08-12 09:29:33 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet -2022-08-12 09:29:33 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:33 DATA:  test-node-gpu.js result: performance: load: null total: 116 -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: movenet -2022-08-12 09:29:33 INFO:  test-node-gpu.js test face matching -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: face database 40 -2022-08-12 09:29:33 STATE: test-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7828184453007331}} {"second":{"index":4,"similarity":0.5001334216773398}} {"third":{"index":4,"similarity":0.5403054967489764}} -2022-08-12 09:29:33 INFO:  test-node-gpu.js test face similarity alternative -2022-08-12 09:29:33 STATE: test-node-gpu.js start face embeddings -2022-08-12 09:29:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:35 STATE: test-node-gpu.js event: image -2022-08-12 09:29:35 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:35 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-08-12 09:29:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:35 DATA:  test-node-gpu.js result: performance: load: null total: 201 -2022-08-12 09:29:35 STATE: test-node-gpu.js passed: mobilefacenet {"embedding":192} -2022-08-12 09:29:35 STATE: test-node-gpu.js start face embeddings -2022-08-12 09:29:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-08-12 09:29:35 STATE: test-node-gpu.js event: image -2022-08-12 09:29:36 STATE: test-node-gpu.js event: detect -2022-08-12 09:29:36 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-08-12 09:29:36 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:36 DATA:  test-node-gpu.js result: performance: load: null total: 175 -2022-08-12 09:29:36 STATE: test-node-gpu.js passed: insightface {"embedding":512} -2022-08-12 09:29:36 INFO:  test-node-gpu.js test face attention -2022-08-12 09:29:36 STATE: test-node-gpu.js start face attention -2022-08-12 09:29:36 DATA:  test-node-gpu.js stdout: 09:29:36.156 Human: error loading model: file://models/facemesh-attention.json Error: Path /home/vlado/dev/human/models/facemesh-attention.json does not exist: loading failed -2022-08-12 09:29:36 DATA:  test-node-gpu.js stdout: at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-node-gpu@3.19.0_seedrandom@3.0.5/node_modules/@tensorflow/tfjs-node-gpu/dist/io/file_system.js:67:23 -2022-08-12 09:29:36 ERROR: test-node-gpu.js uncaughtException testDetect face attention {} -2022-08-12 09:29:36 INFO:  -2022-08-12 09:29:36 INFO:  test-node-wasm.js start -2022-08-12 09:29:37 STATE: test-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ -2022-08-12 09:29:37 INFO:  test-node-wasm.js test: configuration validation -2022-08-12 09:29:37 STATE: test-node-wasm.js passed: configuration default validation [] -2022-08-12 09:29:37 STATE: test-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-08-12 09:29:37 INFO:  test-node-wasm.js test: model load -2022-08-12 09:29:39 STATE: test-node-wasm.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"https://vladmandic.github.io/human/models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"https://vladmandic.github.io/human/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human/models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"https://vladmandic.github.io/human/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human/models/liveness.json"},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"https://vladmandic.github.io/human/models/selfie.json"},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human/models/antispoof.json"}] -2022-08-12 09:29:39 INFO:  test-node-wasm.js test: warmup -2022-08-12 09:29:39 STATE: test-node-wasm.js passed: create human -2022-08-12 09:29:39 INFO:  test-node-wasm.js human version: 2.9.3 -2022-08-12 09:29:39 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v16.15.0 -2022-08-12 09:29:39 INFO:  test-node-wasm.js tfjs version: 3.19.0 -2022-08-12 09:29:39 STATE: test-node-wasm.js passed: set backend: wasm -2022-08-12 09:29:39 STATE: test-node-wasm.js tensors 1921 -2022-08-12 09:29:39 STATE: test-node-wasm.js passed: load models -2022-08-12 09:29:39 STATE: test-node-wasm.js result: defined models: 23 loaded models: 12 -2022-08-12 09:29:39 STATE: test-node-wasm.js passed: warmup: none default -2022-08-12 09:29:39 DATA:  test-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-08-12 09:29:39 DATA:  test-node-wasm.js result: performance: load: null total: null -2022-08-12 09:29:39 STATE: test-node-wasm.js passed: warmup none result match -2022-08-12 09:29:39 STATE: test-node-wasm.js event: image -2022-08-12 09:29:40 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:40 STATE: test-node-wasm.js event: warmup -2022-08-12 09:29:40 STATE: test-node-wasm.js passed: warmup: face default -2022-08-12 09:29:40 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-08-12 09:29:40 DATA:  test-node-wasm.js result: performance: load: null total: 533 -2022-08-12 09:29:40 STATE: test-node-wasm.js passed: warmup face result match -2022-08-12 09:29:40 STATE: test-node-wasm.js event: image -2022-08-12 09:29:40 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:40 STATE: test-node-wasm.js event: warmup -2022-08-12 09:29:40 STATE: test-node-wasm.js passed: warmup: body default -2022-08-12 09:29:40 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:40 DATA:  test-node-wasm.js result: performance: load: null total: 381 -2022-08-12 09:29:40 STATE: test-node-wasm.js passed: warmup body result match -2022-08-12 09:29:40 STATE: test-node-wasm.js details: {"face":{"boxScore":0.93,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.51,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"face":0,"gesture":"mouth 21% open"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking left"},{"iris":0,"gesture":"looking up"}]} -2022-08-12 09:29:40 INFO:  test-node-wasm.js test: details verification -2022-08-12 09:29:40 STATE: test-node-wasm.js start default -2022-08-12 09:29:40 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:40 STATE: test-node-wasm.js event: image -2022-08-12 09:29:41 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-08-12 09:29:41 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:41 DATA:  test-node-wasm.js result: performance: load: null total: 348 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details face length 1 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details face score 1 0.93 1 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details face arrays 4 478 1024 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details face anti-spoofing 0.79 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details face liveness 0.83 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details body length 1 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details body 0.92 17 6 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details hand length 1 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details hand 0.51 0.73 point -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details hand arrays 21 5 7 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details gesture length 7 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details object length 1 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: details object 0.72 person -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} -2022-08-12 09:29:41 STATE: test-node-wasm.js event: image -2022-08-12 09:29:41 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-08-12 09:29:41 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} -2022-08-12 09:29:41 STATE: test-node-wasm.js event: image -2022-08-12 09:29:42 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:42 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-08-12 09:29:42 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:42 STATE: test-node-wasm.js event: image -2022-08-12 09:29:42 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:42 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-08-12 09:29:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:43 STATE: test-node-wasm.js event: image -2022-08-12 09:29:43 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:43 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-08-12 09:29:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-08-12 09:29:43 STATE: test-node-wasm.js event: image -2022-08-12 09:29:44 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:44 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-08-12 09:29:44 INFO:  test-node-wasm.js test default -2022-08-12 09:29:44 STATE: test-node-wasm.js start async -2022-08-12 09:29:44 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:44 STATE: test-node-wasm.js event: image -2022-08-12 09:29:44 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:44 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg async -2022-08-12 09:29:44 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:44 DATA:  test-node-wasm.js result: performance: load: null total: 310 -2022-08-12 09:29:44 STATE: test-node-wasm.js passed: default result face match 1 female 0.97 -2022-08-12 09:29:44 INFO:  test-node-wasm.js test sync -2022-08-12 09:29:44 STATE: test-node-wasm.js start sync -2022-08-12 09:29:44 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:44 STATE: test-node-wasm.js event: image -2022-08-12 09:29:45 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg sync -2022-08-12 09:29:45 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:45 DATA:  test-node-wasm.js result: performance: load: null total: 353 -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: default sync 1 female 0.97 -2022-08-12 09:29:45 INFO:  test-node-wasm.js test: image process -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: image input null [1,256,256,3] -2022-08-12 09:29:45 INFO:  test-node-wasm.js test: image null -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: invalid input could not convert input to tensor -2022-08-12 09:29:45 INFO:  test-node-wasm.js test face similarity -2022-08-12 09:29:45 STATE: test-node-wasm.js start face similarity -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:45 STATE: test-node-wasm.js event: image -2022-08-12 09:29:45 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity -2022-08-12 09:29:45 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-08-12 09:29:45 DATA:  test-node-wasm.js result: performance: load: null total: 342 -2022-08-12 09:29:45 STATE: test-node-wasm.js start face similarity -2022-08-12 09:29:45 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:45 STATE: test-node-wasm.js event: image -2022-08-12 09:29:46 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity -2022-08-12 09:29:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:46 DATA:  test-node-wasm.js result: performance: load: null total: 359 -2022-08-12 09:29:46 STATE: test-node-wasm.js start face similarity -2022-08-12 09:29:46 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-08-12 09:29:46 STATE: test-node-wasm.js event: image -2022-08-12 09:29:46 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-08-12 09:29:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2022-08-12 09:29:46 DATA:  test-node-wasm.js result: performance: load: null total: 322 -2022-08-12 09:29:46 STATE: test-node-wasm.js passed: face descriptor -2022-08-12 09:29:46 STATE: test-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} -2022-08-12 09:29:46 INFO:  test-node-wasm.js test object -2022-08-12 09:29:46 STATE: test-node-wasm.js start object -2022-08-12 09:29:46 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:46 STATE: test-node-wasm.js event: image -2022-08-12 09:29:47 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:47 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-08-12 09:29:47 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-08-12 09:29:47 DATA:  test-node-wasm.js result: performance: load: null total: 337 -2022-08-12 09:29:47 STATE: test-node-wasm.js passed: centernet -2022-08-12 09:29:47 STATE: test-node-wasm.js start object -2022-08-12 09:29:47 WARN:  test-node-wasm.js missing kernel ops {"title":"object","model":"nanodet","url":"https://vladmandic.github.io/human-models/models/nanodet.json","missing":["sparsetodense"],"backkend":"wasm"} -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:48 STATE: test-node-wasm.js event: image -2022-08-12 09:29:48 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-08-12 09:29:48 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:48 DATA:  test-node-wasm.js result: performance: load: null total: 213 -2022-08-12 09:29:48 ERROR: test-node-wasm.js failed: nanodet [] -2022-08-12 09:29:48 INFO:  test-node-wasm.js test sensitive -2022-08-12 09:29:48 STATE: test-node-wasm.js start sensitive -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:48 STATE: test-node-wasm.js event: image -2022-08-12 09:29:48 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive -2022-08-12 09:29:48 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:48 DATA:  test-node-wasm.js result: performance: load: null total: 232 -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: sensitive result match -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: sensitive face result match -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: sensitive face emotion result [{"score":0.46,"emotion":"neutral"},{"score":0.24,"emotion":"fear"},{"score":0.17,"emotion":"sad"}] -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: sensitive body result match -2022-08-12 09:29:48 STATE: test-node-wasm.js passed: sensitive hand result match -2022-08-12 09:29:48 INFO:  test-node-wasm.js test body -2022-08-12 09:29:48 STATE: test-node-wasm.js start blazepose -2022-08-12 09:29:50 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:50 STATE: test-node-wasm.js event: image -2022-08-12 09:29:50 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:50 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose -2022-08-12 09:29:50 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.99,"keypoints":39} -2022-08-12 09:29:50 DATA:  test-node-wasm.js result: performance: load: null total: 441 -2022-08-12 09:29:50 STATE: test-node-wasm.js passed: blazepose -2022-08-12 09:29:50 STATE: test-node-wasm.js start efficientpose -2022-08-12 09:29:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:51 STATE: test-node-wasm.js event: image -2022-08-12 09:29:52 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:52 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-08-12 09:29:52 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.75,"keypoints":13} -2022-08-12 09:29:52 DATA:  test-node-wasm.js result: performance: load: null total: 705 -2022-08-12 09:29:52 STATE: test-node-wasm.js passed: efficientpose -2022-08-12 09:29:52 STATE: test-node-wasm.js start posenet -2022-08-12 09:29:53 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:53 STATE: test-node-wasm.js event: image -2022-08-12 09:29:53 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:53 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet -2022-08-12 09:29:53 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.96,"keypoints":16} -2022-08-12 09:29:53 DATA:  test-node-wasm.js result: performance: load: null total: 310 -2022-08-12 09:29:53 STATE: test-node-wasm.js passed: posenet -2022-08-12 09:29:53 STATE: test-node-wasm.js start movenet -2022-08-12 09:29:54 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:54 STATE: test-node-wasm.js event: image -2022-08-12 09:29:54 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet -2022-08-12 09:29:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:54 DATA:  test-node-wasm.js result: performance: load: null total: 260 -2022-08-12 09:29:54 STATE: test-node-wasm.js passed: movenet -2022-08-12 09:29:54 INFO:  test-node-wasm.js test face matching -2022-08-12 09:29:54 STATE: test-node-wasm.js passed: face database 40 -2022-08-12 09:29:54 STATE: test-node-wasm.js passed: face match {"first":{"index":4,"similarity":0.7827852754786533}} {"second":{"index":4,"similarity":0.5660821189104794}} {"third":{"index":4,"similarity":0.45074189882665594}} -2022-08-12 09:29:54 INFO:  test-node-wasm.js test face similarity alternative -2022-08-12 09:29:54 STATE: test-node-wasm.js start face embeddings -2022-08-12 09:29:54 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:54 STATE: test-node-wasm.js event: image -2022-08-12 09:29:55 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:55 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-08-12 09:29:55 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:55 DATA:  test-node-wasm.js result: performance: load: null total: 267 -2022-08-12 09:29:55 STATE: test-node-wasm.js passed: mobilefacenet {"embedding":192} -2022-08-12 09:29:55 STATE: test-node-wasm.js start face embeddings -2022-08-12 09:29:55 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:55 STATE: test-node-wasm.js event: image -2022-08-12 09:29:56 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:56 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-08-12 09:29:56 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:56 DATA:  test-node-wasm.js result: performance: load: null total: 273 -2022-08-12 09:29:56 STATE: test-node-wasm.js passed: insightface {"embedding":512} -2022-08-12 09:29:56 INFO:  test-node-wasm.js test face attention -2022-08-12 09:29:56 STATE: test-node-wasm.js start face attention -2022-08-12 09:29:56 WARN:  test-node-wasm.js missing kernel ops {"title":"face attention","model":"facemesh","url":"https://vladmandic.github.io/human/models/facemesh-attention.json","missing":["atan2"],"backkend":"wasm"} -2022-08-12 09:29:56 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:56 STATE: test-node-wasm.js event: image -2022-08-12 09:29:56 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:56 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face attention -2022-08-12 09:29:56 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 1 gesture: 2 object: 0 person: 0 {} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:56 DATA:  test-node-wasm.js result: performance: load: null total: 122 -2022-08-12 09:29:56 ERROR: test-node-wasm.js failed: face attention {"annotations":0} -2022-08-12 09:29:56 INFO:  test-node-wasm.js test detectors -2022-08-12 09:29:56 STATE: test-node-wasm.js start detectors -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:57 STATE: test-node-wasm.js event: image -2022-08-12 09:29:57 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg detectors -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: performance: load: null total: 124 -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: detector result face match -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: detector result hand match -2022-08-12 09:29:57 INFO:  test-node-wasm.js test: multi-instance -2022-08-12 09:29:57 STATE: test-node-wasm.js start multi instance -2022-08-12 09:29:57 STATE: test-node-wasm.js event: image -2022-08-12 09:29:57 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: detect: random multi instance -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: performance: load: null total: 98 -2022-08-12 09:29:57 INFO:  test-node-wasm.js test: first instance -2022-08-12 09:29:57 STATE: test-node-wasm.js start multi instance -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: performance: load: null total: 117 -2022-08-12 09:29:57 INFO:  test-node-wasm.js test: second instance -2022-08-12 09:29:57 STATE: test-node-wasm.js start multi instance -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-08-12 09:29:57 DATA:  test-node-wasm.js result: performance: load: null total: 115 -2022-08-12 09:29:57 INFO:  test-node-wasm.js test: concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js start concurrent -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:57 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:58 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:58 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:58 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-08-12 09:29:58 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-08-12 09:29:58 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:29:58 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:29:58 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-08-12 09:29:59 STATE: test-node-wasm.js event: image -2022-08-12 09:29:59 STATE: test-node-wasm.js event: image -2022-08-12 09:29:59 STATE: test-node-wasm.js event: image -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1307 -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1307 -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1308 -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1308 -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1308 -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1308 -2022-08-12 09:29:59 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1022 -2022-08-12 09:29:59 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:59 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1022 -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-08-12 09:29:59 DATA:  test-node-wasm.js result: performance: load: null total: 1022 -2022-08-12 09:29:59 INFO:  test-node-wasm.js test: monkey-patch -2022-08-12 09:29:59 STATE: test-node-wasm.js event: image -2022-08-12 09:29:59 STATE: test-node-wasm.js event: detect -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: monkey patch -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: segmentation [65536] -2022-08-12 09:29:59 STATE: test-node-wasm.js passeed: equal usage -2022-08-12 09:29:59 INFO:  test-node-wasm.js test: input compare -2022-08-12 09:29:59 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-08-12 09:30:00 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-08-12 09:30:00 STATE: test-node-wasm.js passed: image compare 0 23.280073018790848 -2022-08-12 09:30:00 INFO:  test-node-wasm.js events: {"image":29,"detect":29,"warmup":2} -2022-08-12 09:30:00 INFO:  test-node-wasm.js tensors 4107 -2022-08-12 09:30:00 INFO:  test-node-wasm.js test complete: 23077 ms -2022-08-12 09:30:00 STATE: all tests complete -2022-08-12 09:30:00 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"../demo/nodejs/node-fetch.js","passed":1,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"test-node.js","passed":90,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"test-node-gpu.js","passed":90,"failed":0} -2022-08-12 09:30:00 INFO:  status {"test":"test-node-wasm.js","passed":124,"failed":2} -2022-08-12 09:30:00 INFO:  failures {"count":2} -2022-08-12 09:30:00 WARN:  failed {"test":"test-node-wasm.js","message":["error",["failed: nanodet",[]]]} -2022-08-12 09:30:00 WARN:  failed {"test":"test-node-wasm.js","message":["error",["failed: face attention",{"annotations":0}]]} +2022-08-15 11:28:28 INFO:  @vladmandic/human version 2.9.3 +2022-08-15 11:28:28 INFO:  User: vlado Platform: linux Arch: x64 Node: v18.1.0 +2022-08-15 11:28:28 INFO:  demos: [{"cmd":"../demo/nodejs/node.js","args":[]},{"cmd":"../demo/nodejs/node-simple.js","args":[]},{"cmd":"../demo/nodejs/node-fetch.js","args":[]},{"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]},{"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]},{"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]},{"cmd":"../demo/multithread/node-multiprocess.js","args":[]}] +2022-08-15 11:28:28 INFO:  +2022-08-15 11:28:28 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start +2022-08-15 11:28:29 INFO:  +2022-08-15 11:28:29 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start +2022-08-15 11:28:30 INFO:  +2022-08-15 11:28:30 INFO:  {"cmd":"../demo/nodejs/node-fetch.js","args":[]} start +2022-08-15 11:28:32 INFO:  +2022-08-15 11:28:32 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start +2022-08-15 11:28:32 INFO:  +2022-08-15 11:28:32 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start +2022-08-15 11:28:33 INFO:  +2022-08-15 11:28:33 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start +2022-08-15 11:28:34 INFO:  +2022-08-15 11:28:34 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start +2022-08-15 11:28:35 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"] +2022-08-15 11:28:35 INFO:  +2022-08-15 11:28:35 INFO:  test-node.js start +2022-08-15 11:28:35 INFO:  test-node.js test: configuration validation +2022-08-15 11:28:35 STATE: test-node.js passed: configuration default validation [] +2022-08-15 11:28:35 STATE: test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-08-15 11:28:35 INFO:  test-node.js test: model load +2022-08-15 11:28:35 STATE: test-node.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-08-15 11:28:35 INFO:  test-node.js test: warmup +2022-08-15 11:28:35 STATE: test-node.js passed: create human +2022-08-15 11:28:35 INFO:  test-node.js human version: 2.9.3 +2022-08-15 11:28:35 INFO:  test-node.js platform: linux x64 agent: NodeJS v18.1.0 +2022-08-15 11:28:35 INFO:  test-node.js tfjs version: 3.19.0 +2022-08-15 11:28:35 INFO:  test-node.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.1.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"3.19.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.7.3-dev20220521"},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-08-15 11:28:35 STATE: test-node.js passed: set backend: tensorflow +2022-08-15 11:28:35 STATE: test-node.js tensors 1921 +2022-08-15 11:28:35 STATE: test-node.js passed: load models +2022-08-15 11:28:35 STATE: test-node.js result: defined models: 23 loaded models: 12 +2022-08-15 11:28:35 STATE: test-node.js passed: warmup: none default +2022-08-15 11:28:35 DATA:  test-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-08-15 11:28:35 DATA:  test-node.js result: performance: load: null total: null +2022-08-15 11:28:35 STATE: test-node.js passed: warmup none result match +2022-08-15 11:28:35 STATE: test-node.js event: image +2022-08-15 11:28:36 STATE: test-node.js event: detect +2022-08-15 11:28:36 STATE: test-node.js event: warmup +2022-08-15 11:28:36 STATE: test-node.js passed: warmup: face default +2022-08-15 11:28:36 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} +2022-08-15 11:28:36 DATA:  test-node.js result: performance: load: null total: 379 +2022-08-15 11:28:36 STATE: test-node.js passed: warmup face result match +2022-08-15 11:28:36 STATE: test-node.js event: image +2022-08-15 11:28:36 STATE: test-node.js event: detect +2022-08-15 11:28:36 STATE: test-node.js event: warmup +2022-08-15 11:28:36 STATE: test-node.js passed: warmup: body default +2022-08-15 11:28:36 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:36 DATA:  test-node.js result: performance: load: null total: 253 +2022-08-15 11:28:36 STATE: test-node.js passed: warmup body result match +2022-08-15 11:28:36 STATE: test-node.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.63,"emotion":"angry"},{"score":0.22,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"face":0,"gesture":"mouth 10% open"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking left"},{"iris":0,"gesture":"looking up"}]} +2022-08-15 11:28:36 INFO:  test-node.js test: details verification +2022-08-15 11:28:36 STATE: test-node.js start default +2022-08-15 11:28:36 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:36 STATE: test-node.js event: image +2022-08-15 11:28:36 STATE: test-node.js event: detect +2022-08-15 11:28:36 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-08-15 11:28:36 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:36 DATA:  test-node.js result: performance: load: null total: 233 +2022-08-15 11:28:36 STATE: test-node.js passed: details face length 1 +2022-08-15 11:28:36 STATE: test-node.js passed: details face score 1 0.93 1 +2022-08-15 11:28:36 STATE: test-node.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-08-15 11:28:36 STATE: test-node.js passed: details face arrays 4 478 1024 +2022-08-15 11:28:36 STATE: test-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-08-15 11:28:36 STATE: test-node.js passed: details face anti-spoofing 0.79 +2022-08-15 11:28:36 STATE: test-node.js passed: details face liveness 0.83 +2022-08-15 11:28:36 STATE: test-node.js passed: details body length 1 +2022-08-15 11:28:36 STATE: test-node.js passed: details body 0.92 17 6 +2022-08-15 11:28:36 STATE: test-node.js passed: details hand length 1 +2022-08-15 11:28:36 STATE: test-node.js passed: details hand 0.51 0.73 point +2022-08-15 11:28:36 STATE: test-node.js passed: details hand arrays 21 5 7 +2022-08-15 11:28:36 STATE: test-node.js passed: details gesture length 7 +2022-08-15 11:28:36 STATE: test-node.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-08-15 11:28:36 STATE: test-node.js passed: details object length 1 +2022-08-15 11:28:36 STATE: test-node.js passed: details object 0.72 person +2022-08-15 11:28:36 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-08-15 11:28:36 STATE: test-node.js event: image +2022-08-15 11:28:37 STATE: test-node.js event: detect +2022-08-15 11:28:37 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-08-15 11:28:37 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-08-15 11:28:37 STATE: test-node.js event: image +2022-08-15 11:28:37 STATE: test-node.js event: detect +2022-08-15 11:28:37 STATE: test-node.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-08-15 11:28:37 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:37 STATE: test-node.js event: image +2022-08-15 11:28:37 STATE: test-node.js event: detect +2022-08-15 11:28:37 STATE: test-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-08-15 11:28:38 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:38 STATE: test-node.js event: image +2022-08-15 11:28:38 STATE: test-node.js event: detect +2022-08-15 11:28:38 STATE: test-node.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-08-15 11:28:38 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-08-15 11:28:38 STATE: test-node.js event: image +2022-08-15 11:28:38 STATE: test-node.js event: detect +2022-08-15 11:28:38 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-08-15 11:28:38 INFO:  test-node.js test default +2022-08-15 11:28:38 STATE: test-node.js start async +2022-08-15 11:28:38 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:38 STATE: test-node.js event: image +2022-08-15 11:28:39 STATE: test-node.js event: detect +2022-08-15 11:28:39 STATE: test-node.js passed: detect: samples/in/ai-body.jpg async +2022-08-15 11:28:39 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:39 DATA:  test-node.js result: performance: load: null total: 222 +2022-08-15 11:28:39 STATE: test-node.js passed: default result face match 1 female 0.97 +2022-08-15 11:28:39 INFO:  test-node.js test sync +2022-08-15 11:28:39 STATE: test-node.js start sync +2022-08-15 11:28:39 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:39 STATE: test-node.js event: image +2022-08-15 11:28:39 STATE: test-node.js event: detect +2022-08-15 11:28:39 STATE: test-node.js passed: detect: samples/in/ai-body.jpg sync +2022-08-15 11:28:39 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:39 DATA:  test-node.js result: performance: load: null total: 213 +2022-08-15 11:28:39 STATE: test-node.js passed: default sync 1 female 0.97 +2022-08-15 11:28:39 INFO:  test-node.js test: image process +2022-08-15 11:28:39 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:39 STATE: test-node.js passed: image input null [1,256,256,3] +2022-08-15 11:28:39 INFO:  test-node.js test: image null +2022-08-15 11:28:39 STATE: test-node.js passed: invalid input could not convert input to tensor +2022-08-15 11:28:39 INFO:  test-node.js test face similarity +2022-08-15 11:28:39 STATE: test-node.js start face similarity +2022-08-15 11:28:39 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:39 STATE: test-node.js event: image +2022-08-15 11:28:39 STATE: test-node.js event: detect +2022-08-15 11:28:39 STATE: test-node.js passed: detect: samples/in/ai-face.jpg face similarity +2022-08-15 11:28:39 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-08-15 11:28:39 DATA:  test-node.js result: performance: load: null total: 205 +2022-08-15 11:28:39 STATE: test-node.js start face similarity +2022-08-15 11:28:39 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:39 STATE: test-node.js event: image +2022-08-15 11:28:40 STATE: test-node.js event: detect +2022-08-15 11:28:40 STATE: test-node.js passed: detect: samples/in/ai-body.jpg face similarity +2022-08-15 11:28:40 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:40 DATA:  test-node.js result: performance: load: null total: 215 +2022-08-15 11:28:40 STATE: test-node.js start face similarity +2022-08-15 11:28:40 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-08-15 11:28:40 STATE: test-node.js event: image +2022-08-15 11:28:40 STATE: test-node.js event: detect +2022-08-15 11:28:40 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-08-15 11:28:40 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-08-15 11:28:40 DATA:  test-node.js result: performance: load: null total: 194 +2022-08-15 11:28:40 STATE: test-node.js passed: face descriptor +2022-08-15 11:28:40 STATE: test-node.js passed: face similarity {"similarity":[1,0.44727452329649126,0.5567935850640406],"descriptors":[1024,1024,1024]} +2022-08-15 11:28:40 INFO:  test-node.js test object +2022-08-15 11:28:40 STATE: test-node.js start object +2022-08-15 11:28:40 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:40 STATE: test-node.js event: image +2022-08-15 11:28:40 STATE: test-node.js event: detect +2022-08-15 11:28:40 STATE: test-node.js passed: detect: samples/in/ai-body.jpg object +2022-08-15 11:28:40 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:40 DATA:  test-node.js result: performance: load: null total: 211 +2022-08-15 11:28:40 STATE: test-node.js passed: centernet +2022-08-15 11:28:40 STATE: test-node.js start object +2022-08-15 11:28:41 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:41 STATE: test-node.js event: image +2022-08-15 11:28:41 STATE: test-node.js event: detect +2022-08-15 11:28:41 STATE: test-node.js passed: detect: samples/in/ai-body.jpg object +2022-08-15 11:28:41 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 3 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:41 DATA:  test-node.js result: performance: load: null total: 217 +2022-08-15 11:28:41 STATE: test-node.js passed: nanodet +2022-08-15 11:28:41 INFO:  test-node.js test sensitive +2022-08-15 11:28:41 STATE: test-node.js start sensitive +2022-08-15 11:28:42 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:42 STATE: test-node.js event: image +2022-08-15 11:28:42 STATE: test-node.js event: detect +2022-08-15 11:28:42 STATE: test-node.js passed: detect: samples/in/ai-body.jpg sensitive +2022-08-15 11:28:42 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:28:42 DATA:  test-node.js result: performance: load: null total: 173 +2022-08-15 11:28:42 STATE: test-node.js passed: sensitive result match +2022-08-15 11:28:42 STATE: test-node.js passed: sensitive face result match +2022-08-15 11:28:42 STATE: test-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-08-15 11:28:42 STATE: test-node.js passed: sensitive body result match +2022-08-15 11:28:42 STATE: test-node.js passed: sensitive hand result match +2022-08-15 11:28:42 INFO:  test-node.js test body +2022-08-15 11:28:42 STATE: test-node.js start blazepose +2022-08-15 11:28:43 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:43 STATE: test-node.js event: image +2022-08-15 11:28:44 STATE: test-node.js event: detect +2022-08-15 11:28:44 STATE: test-node.js passed: detect: samples/in/ai-body.jpg blazepose +2022-08-15 11:28:44 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.99,"keypoints":39} +2022-08-15 11:28:44 DATA:  test-node.js result: performance: load: null total: 237 +2022-08-15 11:28:44 STATE: test-node.js passed: blazepose +2022-08-15 11:28:44 STATE: test-node.js start efficientpose +2022-08-15 11:28:44 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:44 STATE: test-node.js event: image +2022-08-15 11:28:45 STATE: test-node.js event: detect +2022-08-15 11:28:45 STATE: test-node.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-08-15 11:28:45 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.75,"keypoints":13} +2022-08-15 11:28:45 DATA:  test-node.js result: performance: load: null total: 251 +2022-08-15 11:28:45 STATE: test-node.js passed: efficientpose +2022-08-15 11:28:45 STATE: test-node.js start posenet +2022-08-15 11:28:45 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:45 STATE: test-node.js event: image +2022-08-15 11:28:45 STATE: test-node.js event: detect +2022-08-15 11:28:45 STATE: test-node.js passed: detect: samples/in/ai-body.jpg posenet +2022-08-15 11:28:45 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.96,"keypoints":16} +2022-08-15 11:28:45 DATA:  test-node.js result: performance: load: null total: 176 +2022-08-15 11:28:45 STATE: test-node.js passed: posenet +2022-08-15 11:28:45 STATE: test-node.js start movenet +2022-08-15 11:28:46 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:46 STATE: test-node.js event: image +2022-08-15 11:28:46 STATE: test-node.js event: detect +2022-08-15 11:28:46 STATE: test-node.js passed: detect: samples/in/ai-body.jpg movenet +2022-08-15 11:28:46 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:28:46 DATA:  test-node.js result: performance: load: null total: 179 +2022-08-15 11:28:46 STATE: test-node.js passed: movenet +2022-08-15 11:28:46 INFO:  test-node.js test face matching +2022-08-15 11:28:46 STATE: test-node.js passed: face database 40 +2022-08-15 11:28:46 STATE: test-node.js passed: face match {"first":{"index":4,"similarity":0.7827852615252829}} {"second":{"index":4,"similarity":0.5002052633015844}} {"third":{"index":4,"similarity":0.5401587887998899}} +2022-08-15 11:28:46 INFO:  test-node.js test face similarity alternative +2022-08-15 11:28:46 STATE: test-node.js start face embeddings +2022-08-15 11:28:46 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:46 STATE: test-node.js event: image +2022-08-15 11:28:46 STATE: test-node.js event: detect +2022-08-15 11:28:46 STATE: test-node.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-08-15 11:28:46 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:28:46 DATA:  test-node.js result: performance: load: null total: 211 +2022-08-15 11:28:46 STATE: test-node.js passed: mobilefacenet {"embedding":192} +2022-08-15 11:28:46 STATE: test-node.js start face embeddings +2022-08-15 11:28:47 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:47 STATE: test-node.js event: image +2022-08-15 11:28:47 STATE: test-node.js event: detect +2022-08-15 11:28:47 STATE: test-node.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-08-15 11:28:47 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:28:47 DATA:  test-node.js result: performance: load: null total: 201 +2022-08-15 11:28:47 STATE: test-node.js passed: insightface {"embedding":512} +2022-08-15 11:28:47 INFO:  test-node.js test face attention +2022-08-15 11:28:47 STATE: test-node.js start face attention +2022-08-15 11:28:47 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:47 STATE: test-node.js event: image +2022-08-15 11:28:48 STATE: test-node.js event: detect +2022-08-15 11:28:48 STATE: test-node.js passed: detect: samples/in/ai-face.jpg face attention +2022-08-15 11:28:48 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:28:48 DATA:  test-node.js result: performance: load: null total: 183 +2022-08-15 11:28:48 STATE: test-node.js passed: face attention +2022-08-15 11:28:48 INFO:  test-node.js test detectors +2022-08-15 11:28:48 STATE: test-node.js start detectors +2022-08-15 11:28:48 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:48 STATE: test-node.js event: image +2022-08-15 11:28:48 STATE: test-node.js event: detect +2022-08-15 11:28:48 STATE: test-node.js passed: detect: samples/in/ai-body.jpg detectors +2022-08-15 11:28:48 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:28:48 DATA:  test-node.js result: performance: load: null total: 88 +2022-08-15 11:28:48 STATE: test-node.js passed: detector result face match +2022-08-15 11:28:48 STATE: test-node.js passed: detector result hand match +2022-08-15 11:28:48 INFO:  test-node.js test: multi-instance +2022-08-15 11:28:48 STATE: test-node.js start multi instance +2022-08-15 11:28:48 STATE: test-node.js event: image +2022-08-15 11:28:48 STATE: test-node.js event: detect +2022-08-15 11:28:48 STATE: test-node.js passed: detect: random multi instance +2022-08-15 11:28:48 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} +2022-08-15 11:28:48 DATA:  test-node.js result: performance: load: null total: 85 +2022-08-15 11:28:48 INFO:  test-node.js test: first instance +2022-08-15 11:28:48 STATE: test-node.js start multi instance +2022-08-15 11:28:48 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-08-15 11:28:48 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-08-15 11:28:48 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:28:48 DATA:  test-node.js result: performance: load: null total: 85 +2022-08-15 11:28:48 INFO:  test-node.js test: second instance +2022-08-15 11:28:48 STATE: test-node.js start multi instance +2022-08-15 11:28:48 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-08-15 11:28:48 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-08-15 11:28:48 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:28:48 DATA:  test-node.js result: performance: load: null total: 84 +2022-08-15 11:28:48 INFO:  test-node.js test: concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js start concurrent +2022-08-15 11:28:48 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:48 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:49 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:49 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:49 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-08-15 11:28:49 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-08-15 11:28:49 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:49 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:49 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-08-15 11:28:49 STATE: test-node.js event: image +2022-08-15 11:28:49 STATE: test-node.js event: image +2022-08-15 11:28:49 STATE: test-node.js event: image +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 1001 +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 1001 +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 1002 +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 1002 +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 1002 +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 1002 +2022-08-15 11:28:50 STATE: test-node.js event: detect +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 735 +2022-08-15 11:28:50 STATE: test-node.js event: detect +2022-08-15 11:28:50 STATE: test-node.js event: detect +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 735 +2022-08-15 11:28:50 STATE: test-node.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:28:50 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:28:50 DATA:  test-node.js result: performance: load: null total: 735 +2022-08-15 11:28:50 INFO:  test-node.js test: monkey-patch +2022-08-15 11:28:50 STATE: test-node.js event: image +2022-08-15 11:28:50 STATE: test-node.js event: detect +2022-08-15 11:28:50 STATE: test-node.js passed: monkey patch +2022-08-15 11:28:50 STATE: test-node.js passed: segmentation [65536] +2022-08-15 11:28:50 STATE: test-node.js passeed: equal usage +2022-08-15 11:28:50 INFO:  test-node.js test: input compare +2022-08-15 11:28:50 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:50 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-08-15 11:28:50 STATE: test-node.js passed: image compare 0 23.275441687091504 +2022-08-15 11:28:50 INFO:  test-node.js events: {"image":29,"detect":29,"warmup":2} +2022-08-15 11:28:50 INFO:  test-node.js tensors 4105 +2022-08-15 11:28:50 INFO:  test-node.js test complete: 15220 ms +2022-08-15 11:28:50 INFO:  +2022-08-15 11:28:50 INFO:  test-node-gpu.js start +2022-08-15 11:28:51 INFO:  test-node-gpu.js test: configuration validation +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: configuration default validation [] +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-08-15 11:28:51 INFO:  test-node-gpu.js test: model load +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-08-15 11:28:51 INFO:  test-node-gpu.js test: warmup +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: create human +2022-08-15 11:28:51 INFO:  test-node-gpu.js human version: 2.9.3 +2022-08-15 11:28:51 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v18.1.0 +2022-08-15 11:28:51 INFO:  test-node-gpu.js tfjs version: 3.19.0 +2022-08-15 11:28:51 INFO:  test-node-gpu.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.1.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"3.19.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.7.3-dev20220521"},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: set backend: tensorflow +2022-08-15 11:28:51 STATE: test-node-gpu.js tensors 1921 +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: load models +2022-08-15 11:28:51 STATE: test-node-gpu.js result: defined models: 23 loaded models: 12 +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: warmup: none default +2022-08-15 11:28:51 DATA:  test-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-08-15 11:28:51 DATA:  test-node-gpu.js result: performance: load: null total: null +2022-08-15 11:28:51 STATE: test-node-gpu.js passed: warmup none result match +2022-08-15 11:28:52 STATE: test-node-gpu.js event: image +2022-08-15 11:28:54 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:54 STATE: test-node-gpu.js event: warmup +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: warmup: face default +2022-08-15 11:28:54 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} +2022-08-15 11:28:54 DATA:  test-node-gpu.js result: performance: load: null total: 2015 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: warmup face result match +2022-08-15 11:28:54 STATE: test-node-gpu.js event: image +2022-08-15 11:28:54 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:54 STATE: test-node-gpu.js event: warmup +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: warmup: body default +2022-08-15 11:28:54 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:54 DATA:  test-node-gpu.js result: performance: load: null total: 272 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: warmup body result match +2022-08-15 11:28:54 STATE: test-node-gpu.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.63,"emotion":"angry"},{"score":0.22,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"face":0,"gesture":"mouth 10% open"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking left"},{"iris":0,"gesture":"looking up"}]} +2022-08-15 11:28:54 INFO:  test-node-gpu.js test: details verification +2022-08-15 11:28:54 STATE: test-node-gpu.js start default +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:28:54 STATE: test-node-gpu.js event: image +2022-08-15 11:28:54 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-08-15 11:28:54 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:54 DATA:  test-node-gpu.js result: performance: load: null total: 245 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details face length 1 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details face score 1 0.93 1 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details face arrays 4 478 1024 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details face anti-spoofing 0.79 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details face liveness 0.83 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details body length 1 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details body 0.92 17 6 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details hand length 1 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details hand 0.51 0.73 point +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details hand arrays 21 5 7 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details gesture length 7 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details object length 1 +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: details object 0.72 person +2022-08-15 11:28:54 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-08-15 11:28:54 STATE: test-node-gpu.js event: image +2022-08-15 11:28:55 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:55 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-08-15 11:28:55 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-08-15 11:28:55 STATE: test-node-gpu.js event: image +2022-08-15 11:28:55 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:55 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-08-15 11:28:55 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:28:55 STATE: test-node-gpu.js event: image +2022-08-15 11:28:56 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:56 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-08-15 11:28:56 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} +2022-08-15 11:28:56 STATE: test-node-gpu.js event: image +2022-08-15 11:28:56 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:56 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-08-15 11:28:56 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-08-15 11:28:56 STATE: test-node-gpu.js event: image +2022-08-15 11:28:56 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:56 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-08-15 11:28:56 INFO:  test-node-gpu.js test default +2022-08-15 11:28:56 STATE: test-node-gpu.js start async +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:28:57 STATE: test-node-gpu.js event: image +2022-08-15 11:28:57 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg async +2022-08-15 11:28:57 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:57 DATA:  test-node-gpu.js result: performance: load: null total: 176 +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: default result face match 1 female 0.97 +2022-08-15 11:28:57 INFO:  test-node-gpu.js test sync +2022-08-15 11:28:57 STATE: test-node-gpu.js start sync +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:28:57 STATE: test-node-gpu.js event: image +2022-08-15 11:28:57 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg sync +2022-08-15 11:28:57 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:57 DATA:  test-node-gpu.js result: performance: load: null total: 199 +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: default sync 1 female 0.97 +2022-08-15 11:28:57 INFO:  test-node-gpu.js test: image process +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: image input null [1,256,256,3] +2022-08-15 11:28:57 INFO:  test-node-gpu.js test: image null +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: invalid input could not convert input to tensor +2022-08-15 11:28:57 INFO:  test-node-gpu.js test face similarity +2022-08-15 11:28:57 STATE: test-node-gpu.js start face similarity +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:28:57 STATE: test-node-gpu.js event: image +2022-08-15 11:28:57 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:57 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity +2022-08-15 11:28:57 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-08-15 11:28:57 DATA:  test-node-gpu.js result: performance: load: null total: 183 +2022-08-15 11:28:57 STATE: test-node-gpu.js start face similarity +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:28:58 STATE: test-node-gpu.js event: image +2022-08-15 11:28:58 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity +2022-08-15 11:28:58 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:58 DATA:  test-node-gpu.js result: performance: load: null total: 199 +2022-08-15 11:28:58 STATE: test-node-gpu.js start face similarity +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-08-15 11:28:58 STATE: test-node-gpu.js event: image +2022-08-15 11:28:58 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-08-15 11:28:58 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-08-15 11:28:58 DATA:  test-node-gpu.js result: performance: load: null total: 179 +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: face descriptor +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: face similarity {"similarity":[1,0.447238756461232,0.556914029877052],"descriptors":[1024,1024,1024]} +2022-08-15 11:28:58 INFO:  test-node-gpu.js test object +2022-08-15 11:28:58 STATE: test-node-gpu.js start object +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:28:58 STATE: test-node-gpu.js event: image +2022-08-15 11:28:58 STATE: test-node-gpu.js event: detect +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-08-15 11:28:58 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:28:58 DATA:  test-node-gpu.js result: performance: load: null total: 193 +2022-08-15 11:28:58 STATE: test-node-gpu.js passed: centernet +2022-08-15 11:28:58 STATE: test-node-gpu.js start object +2022-08-15 11:29:00 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:00 STATE: test-node-gpu.js event: image +2022-08-15 11:29:01 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-08-15 11:29:01 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 3 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:29:01 DATA:  test-node-gpu.js result: performance: load: null total: 631 +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: nanodet +2022-08-15 11:29:01 INFO:  test-node-gpu.js test sensitive +2022-08-15 11:29:01 STATE: test-node-gpu.js start sensitive +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:01 STATE: test-node-gpu.js event: image +2022-08-15 11:29:01 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive +2022-08-15 11:29:01 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:01 DATA:  test-node-gpu.js result: performance: load: null total: 147 +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: sensitive result match +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: sensitive face result match +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: sensitive body result match +2022-08-15 11:29:01 STATE: test-node-gpu.js passed: sensitive hand result match +2022-08-15 11:29:01 INFO:  test-node-gpu.js test body +2022-08-15 11:29:01 STATE: test-node-gpu.js start blazepose +2022-08-15 11:29:03 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:03 STATE: test-node-gpu.js event: image +2022-08-15 11:29:03 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:03 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose +2022-08-15 11:29:03 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.99,"keypoints":39} +2022-08-15 11:29:03 DATA:  test-node-gpu.js result: performance: load: null total: 553 +2022-08-15 11:29:03 STATE: test-node-gpu.js passed: blazepose +2022-08-15 11:29:03 STATE: test-node-gpu.js start efficientpose +2022-08-15 11:29:04 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:04 STATE: test-node-gpu.js event: image +2022-08-15 11:29:05 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:05 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-08-15 11:29:05 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.75,"keypoints":13} +2022-08-15 11:29:05 DATA:  test-node-gpu.js result: performance: load: null total: 420 +2022-08-15 11:29:05 STATE: test-node-gpu.js passed: efficientpose +2022-08-15 11:29:05 STATE: test-node-gpu.js start posenet +2022-08-15 11:29:05 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:05 STATE: test-node-gpu.js event: image +2022-08-15 11:29:05 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:05 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet +2022-08-15 11:29:05 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.96,"keypoints":16} +2022-08-15 11:29:05 DATA:  test-node-gpu.js result: performance: load: null total: 194 +2022-08-15 11:29:05 STATE: test-node-gpu.js passed: posenet +2022-08-15 11:29:05 STATE: test-node-gpu.js start movenet +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:06 STATE: test-node-gpu.js event: image +2022-08-15 11:29:06 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet +2022-08-15 11:29:06 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:06 DATA:  test-node-gpu.js result: performance: load: null total: 159 +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: movenet +2022-08-15 11:29:06 INFO:  test-node-gpu.js test face matching +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: face database 40 +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7828184453007331}} {"second":{"index":4,"similarity":0.5001334216773398}} {"third":{"index":4,"similarity":0.5403054967489764}} +2022-08-15 11:29:06 INFO:  test-node-gpu.js test face similarity alternative +2022-08-15 11:29:06 STATE: test-node-gpu.js start face embeddings +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:29:06 STATE: test-node-gpu.js event: image +2022-08-15 11:29:06 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-08-15 11:29:06 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:06 DATA:  test-node-gpu.js result: performance: load: null total: 196 +2022-08-15 11:29:06 STATE: test-node-gpu.js passed: mobilefacenet {"embedding":192} +2022-08-15 11:29:06 STATE: test-node-gpu.js start face embeddings +2022-08-15 11:29:07 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:29:07 STATE: test-node-gpu.js event: image +2022-08-15 11:29:07 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:07 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-08-15 11:29:07 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:07 DATA:  test-node-gpu.js result: performance: load: null total: 195 +2022-08-15 11:29:07 STATE: test-node-gpu.js passed: insightface {"embedding":512} +2022-08-15 11:29:07 INFO:  test-node-gpu.js test face attention +2022-08-15 11:29:07 STATE: test-node-gpu.js start face attention +2022-08-15 11:29:07 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:29:07 STATE: test-node-gpu.js event: image +2022-08-15 11:29:08 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg face attention +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: performance: load: null total: 296 +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: face attention +2022-08-15 11:29:08 INFO:  test-node-gpu.js test detectors +2022-08-15 11:29:08 STATE: test-node-gpu.js start detectors +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:08 STATE: test-node-gpu.js event: image +2022-08-15 11:29:08 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg detectors +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: performance: load: null total: 63 +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: detector result face match +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: detector result hand match +2022-08-15 11:29:08 INFO:  test-node-gpu.js test: multi-instance +2022-08-15 11:29:08 STATE: test-node-gpu.js start multi instance +2022-08-15 11:29:08 STATE: test-node-gpu.js event: image +2022-08-15 11:29:08 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: detect: random multi instance +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: performance: load: null total: 62 +2022-08-15 11:29:08 INFO:  test-node-gpu.js test: first instance +2022-08-15 11:29:08 STATE: test-node-gpu.js start multi instance +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: performance: load: null total: 70 +2022-08-15 11:29:08 INFO:  test-node-gpu.js test: second instance +2022-08-15 11:29:08 STATE: test-node-gpu.js start multi instance +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:08 DATA:  test-node-gpu.js result: performance: load: null total: 81 +2022-08-15 11:29:08 INFO:  test-node-gpu.js test: concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js start concurrent +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:29:08 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:29:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-08-15 11:29:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-08-15 11:29:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:29:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-08-15 11:29:09 STATE: test-node-gpu.js event: image +2022-08-15 11:29:09 STATE: test-node-gpu.js event: image +2022-08-15 11:29:09 STATE: test-node-gpu.js event: image +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 850 +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 850 +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 851 +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 851 +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 851 +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 851 +2022-08-15 11:29:10 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 571 +2022-08-15 11:29:10 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:10 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 572 +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:10 DATA:  test-node-gpu.js result: performance: load: null total: 572 +2022-08-15 11:29:10 INFO:  test-node-gpu.js test: monkey-patch +2022-08-15 11:29:10 STATE: test-node-gpu.js event: image +2022-08-15 11:29:10 STATE: test-node-gpu.js event: detect +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: monkey patch +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: segmentation [65536] +2022-08-15 11:29:10 STATE: test-node-gpu.js passeed: equal usage +2022-08-15 11:29:10 INFO:  test-node-gpu.js test: input compare +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-08-15 11:29:10 STATE: test-node-gpu.js passed: image compare 0 23.275441687091504 +2022-08-15 11:29:10 INFO:  test-node-gpu.js events: {"image":29,"detect":29,"warmup":2} +2022-08-15 11:29:10 INFO:  test-node-gpu.js tensors 4105 +2022-08-15 11:29:10 INFO:  test-node-gpu.js test complete: 19054 ms +2022-08-15 11:29:11 INFO:  +2022-08-15 11:29:11 INFO:  test-node-wasm.js start +2022-08-15 11:29:11 DATA:  test-node-wasm.js stdout: 2022-08-15 11:29:11 INFO:  { supported: true, backend: true, simd: true, multithread: false } +2022-08-15 11:29:11 STATE: test-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ +2022-08-15 11:29:11 INFO:  test-node-wasm.js test: configuration validation +2022-08-15 11:29:11 STATE: test-node-wasm.js passed: configuration default validation [] +2022-08-15 11:29:11 STATE: test-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-08-15 11:29:11 INFO:  test-node-wasm.js test: model load +2022-08-15 11:29:12 STATE: test-node-wasm.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"https://vladmandic.github.io/human/models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"https://vladmandic.github.io/human/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human/models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"https://vladmandic.github.io/human/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human/models/liveness.json"},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"https://vladmandic.github.io/human/models/selfie.json"},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human/models/antispoof.json"}] +2022-08-15 11:29:12 INFO:  test-node-wasm.js test: warmup +2022-08-15 11:29:12 STATE: test-node-wasm.js passed: create human +2022-08-15 11:29:12 INFO:  test-node-wasm.js human version: 2.9.3 +2022-08-15 11:29:12 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v18.1.0 +2022-08-15 11:29:12 INFO:  test-node-wasm.js tfjs version: 3.19.0 +2022-08-15 11:29:12 INFO:  test-node-wasm.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.1.0","backends":["cpu","wasm"],"initial":false,"tfjs":{"version":"3.19.0"},"offscreen":false,"perfadd":false,"tensorflow":{},"wasm":{"supported":true,"backend":true,"simd":true,"multithread":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":126} +2022-08-15 11:29:12 STATE: test-node-wasm.js passed: set backend: wasm +2022-08-15 11:29:12 STATE: test-node-wasm.js tensors 1921 +2022-08-15 11:29:12 STATE: test-node-wasm.js passed: load models +2022-08-15 11:29:12 STATE: test-node-wasm.js result: defined models: 23 loaded models: 12 +2022-08-15 11:29:12 STATE: test-node-wasm.js passed: warmup: none default +2022-08-15 11:29:12 DATA:  test-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-08-15 11:29:12 DATA:  test-node-wasm.js result: performance: load: null total: null +2022-08-15 11:29:12 STATE: test-node-wasm.js passed: warmup none result match +2022-08-15 11:29:12 STATE: test-node-wasm.js event: image +2022-08-15 11:29:13 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:13 STATE: test-node-wasm.js event: warmup +2022-08-15 11:29:13 STATE: test-node-wasm.js passed: warmup: face default +2022-08-15 11:29:13 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-08-15 11:29:13 DATA:  test-node-wasm.js result: performance: load: null total: 602 +2022-08-15 11:29:13 STATE: test-node-wasm.js passed: warmup face result match +2022-08-15 11:29:13 STATE: test-node-wasm.js event: image +2022-08-15 11:29:13 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:13 STATE: test-node-wasm.js event: warmup +2022-08-15 11:29:13 STATE: test-node-wasm.js passed: warmup: body default +2022-08-15 11:29:13 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:29:13 DATA:  test-node-wasm.js result: performance: load: null total: 385 +2022-08-15 11:29:13 STATE: test-node-wasm.js passed: warmup body result match +2022-08-15 11:29:13 STATE: test-node-wasm.js details: {"face":{"boxScore":0.93,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.51,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"face":0,"gesture":"mouth 21% open"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking left"},{"iris":0,"gesture":"looking up"}]} +2022-08-15 11:29:13 INFO:  test-node-wasm.js test: details verification +2022-08-15 11:29:13 STATE: test-node-wasm.js start default +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:14 STATE: test-node-wasm.js event: image +2022-08-15 11:29:14 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-08-15 11:29:14 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:29:14 DATA:  test-node-wasm.js result: performance: load: null total: 458 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details face length 1 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details face score 1 0.93 1 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details face arrays 4 478 1024 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details face anti-spoofing 0.79 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details face liveness 0.83 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details body length 1 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details body 0.92 17 6 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details hand length 1 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details hand 0.51 0.73 point +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details hand arrays 21 5 7 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details gesture length 7 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details object length 1 +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: details object 0.72 person +2022-08-15 11:29:14 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} +2022-08-15 11:29:14 STATE: test-node-wasm.js event: image +2022-08-15 11:29:15 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:15 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-08-15 11:29:15 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} +2022-08-15 11:29:15 STATE: test-node-wasm.js event: image +2022-08-15 11:29:15 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:15 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-08-15 11:29:16 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:16 STATE: test-node-wasm.js event: image +2022-08-15 11:29:16 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:16 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-08-15 11:29:16 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:16 STATE: test-node-wasm.js event: image +2022-08-15 11:29:17 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:17 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-08-15 11:29:17 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-08-15 11:29:17 STATE: test-node-wasm.js event: image +2022-08-15 11:29:17 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:17 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-08-15 11:29:17 INFO:  test-node-wasm.js test default +2022-08-15 11:29:17 STATE: test-node-wasm.js start async +2022-08-15 11:29:17 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:17 STATE: test-node-wasm.js event: image +2022-08-15 11:29:18 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg async +2022-08-15 11:29:18 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:29:18 DATA:  test-node-wasm.js result: performance: load: null total: 400 +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: default result face match 1 female 0.97 +2022-08-15 11:29:18 INFO:  test-node-wasm.js test sync +2022-08-15 11:29:18 STATE: test-node-wasm.js start sync +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:18 STATE: test-node-wasm.js event: image +2022-08-15 11:29:18 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg sync +2022-08-15 11:29:18 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:29:18 DATA:  test-node-wasm.js result: performance: load: null total: 363 +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: default sync 1 female 0.97 +2022-08-15 11:29:18 INFO:  test-node-wasm.js test: image process +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: image input null [1,256,256,3] +2022-08-15 11:29:18 INFO:  test-node-wasm.js test: image null +2022-08-15 11:29:18 STATE: test-node-wasm.js passed: invalid input could not convert input to tensor +2022-08-15 11:29:18 INFO:  test-node-wasm.js test face similarity +2022-08-15 11:29:18 STATE: test-node-wasm.js start face similarity +2022-08-15 11:29:19 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:19 STATE: test-node-wasm.js event: image +2022-08-15 11:29:19 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:19 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity +2022-08-15 11:29:19 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-08-15 11:29:19 DATA:  test-node-wasm.js result: performance: load: null total: 337 +2022-08-15 11:29:19 STATE: test-node-wasm.js start face similarity +2022-08-15 11:29:19 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:19 STATE: test-node-wasm.js event: image +2022-08-15 11:29:19 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:19 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity +2022-08-15 11:29:19 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:29:19 DATA:  test-node-wasm.js result: performance: load: null total: 362 +2022-08-15 11:29:19 STATE: test-node-wasm.js start face similarity +2022-08-15 11:29:20 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-08-15 11:29:20 STATE: test-node-wasm.js event: image +2022-08-15 11:29:20 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:20 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-08-15 11:29:20 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-08-15 11:29:20 DATA:  test-node-wasm.js result: performance: load: null total: 312 +2022-08-15 11:29:20 STATE: test-node-wasm.js passed: face descriptor +2022-08-15 11:29:20 STATE: test-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} +2022-08-15 11:29:20 INFO:  test-node-wasm.js test object +2022-08-15 11:29:20 STATE: test-node-wasm.js start object +2022-08-15 11:29:20 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:20 STATE: test-node-wasm.js event: image +2022-08-15 11:29:20 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:20 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-08-15 11:29:20 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-08-15 11:29:20 DATA:  test-node-wasm.js result: performance: load: null total: 347 +2022-08-15 11:29:20 STATE: test-node-wasm.js passed: centernet +2022-08-15 11:29:20 STATE: test-node-wasm.js start object +2022-08-15 11:29:21 WARN:  test-node-wasm.js missing kernel ops {"title":"object","model":"nanodet","url":"https://vladmandic.github.io/human-models/models/nanodet.json","missing":["sparsetodense"],"backkend":"wasm"} +2022-08-15 11:29:21 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:21 STATE: test-node-wasm.js event: image +2022-08-15 11:29:22 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-08-15 11:29:22 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:22 DATA:  test-node-wasm.js result: performance: load: null total: 241 +2022-08-15 11:29:22 ERROR: test-node-wasm.js failed: nanodet [] +2022-08-15 11:29:22 INFO:  test-node-wasm.js test sensitive +2022-08-15 11:29:22 STATE: test-node-wasm.js start sensitive +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:22 STATE: test-node-wasm.js event: image +2022-08-15 11:29:22 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive +2022-08-15 11:29:22 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:22 DATA:  test-node-wasm.js result: performance: load: null total: 260 +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: sensitive result match +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: sensitive face result match +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: sensitive face emotion result [{"score":0.46,"emotion":"neutral"},{"score":0.24,"emotion":"fear"},{"score":0.17,"emotion":"sad"}] +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: sensitive body result match +2022-08-15 11:29:22 STATE: test-node-wasm.js passed: sensitive hand result match +2022-08-15 11:29:22 INFO:  test-node-wasm.js test body +2022-08-15 11:29:22 STATE: test-node-wasm.js start blazepose +2022-08-15 11:29:24 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:24 STATE: test-node-wasm.js event: image +2022-08-15 11:29:24 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:24 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose +2022-08-15 11:29:24 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.99,"keypoints":39} +2022-08-15 11:29:24 DATA:  test-node-wasm.js result: performance: load: null total: 435 +2022-08-15 11:29:24 STATE: test-node-wasm.js passed: blazepose +2022-08-15 11:29:24 STATE: test-node-wasm.js start efficientpose +2022-08-15 11:29:25 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:25 STATE: test-node-wasm.js event: image +2022-08-15 11:29:26 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:26 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-08-15 11:29:26 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.75,"keypoints":13} +2022-08-15 11:29:26 DATA:  test-node-wasm.js result: performance: load: null total: 720 +2022-08-15 11:29:26 STATE: test-node-wasm.js passed: efficientpose +2022-08-15 11:29:26 STATE: test-node-wasm.js start posenet +2022-08-15 11:29:26 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:26 STATE: test-node-wasm.js event: image +2022-08-15 11:29:27 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet +2022-08-15 11:29:27 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.96,"keypoints":16} +2022-08-15 11:29:27 DATA:  test-node-wasm.js result: performance: load: null total: 319 +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: posenet +2022-08-15 11:29:27 STATE: test-node-wasm.js start movenet +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:27 STATE: test-node-wasm.js event: image +2022-08-15 11:29:27 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet +2022-08-15 11:29:27 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:27 DATA:  test-node-wasm.js result: performance: load: null total: 265 +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: movenet +2022-08-15 11:29:27 INFO:  test-node-wasm.js test face matching +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: face database 40 +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: face match {"first":{"index":4,"similarity":0.7827852754786533}} {"second":{"index":4,"similarity":0.5660821189104794}} {"third":{"index":4,"similarity":0.45074189882665594}} +2022-08-15 11:29:27 INFO:  test-node-wasm.js test face similarity alternative +2022-08-15 11:29:27 STATE: test-node-wasm.js start face embeddings +2022-08-15 11:29:27 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:27 STATE: test-node-wasm.js event: image +2022-08-15 11:29:28 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:28 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-08-15 11:29:28 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:28 DATA:  test-node-wasm.js result: performance: load: null total: 276 +2022-08-15 11:29:28 STATE: test-node-wasm.js passed: mobilefacenet {"embedding":192} +2022-08-15 11:29:28 STATE: test-node-wasm.js start face embeddings +2022-08-15 11:29:28 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:28 STATE: test-node-wasm.js event: image +2022-08-15 11:29:29 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-08-15 11:29:29 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:29 DATA:  test-node-wasm.js result: performance: load: null total: 314 +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: insightface {"embedding":512} +2022-08-15 11:29:29 INFO:  test-node-wasm.js test face attention +2022-08-15 11:29:29 STATE: test-node-wasm.js start face attention +2022-08-15 11:29:29 WARN:  test-node-wasm.js missing kernel ops {"title":"face attention","model":"facemesh","url":"https://vladmandic.github.io/human-models/models/facemesh-attention.json","missing":["atan2"],"backkend":"wasm"} +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:29 STATE: test-node-wasm.js event: image +2022-08-15 11:29:29 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg face attention +2022-08-15 11:29:29 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 1 gesture: 2 object: 0 person: 0 {} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:29 DATA:  test-node-wasm.js result: performance: load: null total: 145 +2022-08-15 11:29:29 ERROR: test-node-wasm.js failed: face attention {"annotations":0} +2022-08-15 11:29:29 INFO:  test-node-wasm.js test detectors +2022-08-15 11:29:29 STATE: test-node-wasm.js start detectors +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:29 STATE: test-node-wasm.js event: image +2022-08-15 11:29:29 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg detectors +2022-08-15 11:29:29 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:29 DATA:  test-node-wasm.js result: performance: load: null total: 147 +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: detector result face match +2022-08-15 11:29:29 STATE: test-node-wasm.js passed: detector result hand match +2022-08-15 11:29:29 INFO:  test-node-wasm.js test: multi-instance +2022-08-15 11:29:29 STATE: test-node-wasm.js start multi instance +2022-08-15 11:29:29 STATE: test-node-wasm.js event: image +2022-08-15 11:29:30 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: detect: random multi instance +2022-08-15 11:29:30 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} +2022-08-15 11:29:30 DATA:  test-node-wasm.js result: performance: load: null total: 106 +2022-08-15 11:29:30 INFO:  test-node-wasm.js test: first instance +2022-08-15 11:29:30 STATE: test-node-wasm.js start multi instance +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-08-15 11:29:30 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:30 DATA:  test-node-wasm.js result: performance: load: null total: 119 +2022-08-15 11:29:30 INFO:  test-node-wasm.js test: second instance +2022-08-15 11:29:30 STATE: test-node-wasm.js start multi instance +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-08-15 11:29:30 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:30 DATA:  test-node-wasm.js result: performance: load: null total: 121 +2022-08-15 11:29:30 INFO:  test-node-wasm.js test: concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js start concurrent +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:30 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-08-15 11:29:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-08-15 11:29:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-08-15 11:29:31 STATE: test-node-wasm.js event: image +2022-08-15 11:29:31 STATE: test-node-wasm.js event: image +2022-08-15 11:29:31 STATE: test-node-wasm.js event: image +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1416 +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1416 +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1417 +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1417 +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1417 +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1417 +2022-08-15 11:29:32 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1076 +2022-08-15 11:29:32 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:32 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1077 +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-08-15 11:29:32 DATA:  test-node-wasm.js result: performance: load: null total: 1077 +2022-08-15 11:29:32 INFO:  test-node-wasm.js test: monkey-patch +2022-08-15 11:29:32 STATE: test-node-wasm.js event: image +2022-08-15 11:29:32 STATE: test-node-wasm.js event: detect +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: monkey patch +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: segmentation [65536] +2022-08-15 11:29:32 STATE: test-node-wasm.js passeed: equal usage +2022-08-15 11:29:32 INFO:  test-node-wasm.js test: input compare +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-08-15 11:29:32 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-08-15 11:29:33 STATE: test-node-wasm.js passed: image compare 0 23.280073018790848 +2022-08-15 11:29:33 INFO:  test-node-wasm.js events: {"image":29,"detect":29,"warmup":2} +2022-08-15 11:29:33 INFO:  test-node-wasm.js tensors 4107 +2022-08-15 11:29:33 INFO:  test-node-wasm.js test complete: 21365 ms +2022-08-15 11:29:33 STATE: all tests complete +2022-08-15 11:29:33 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"../demo/nodejs/node-fetch.js","passed":1,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"test-node.js","passed":125,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"test-node-gpu.js","passed":125,"failed":0} +2022-08-15 11:29:33 INFO:  status {"test":"test-node-wasm.js","passed":124,"failed":2} +2022-08-15 11:29:33 INFO:  failures {"count":2} +2022-08-15 11:29:33 WARN:  failed {"test":"test-node-wasm.js","message":["error",["failed: nanodet",[]]]} +2022-08-15 11:29:33 WARN:  failed {"test":"test-node-wasm.js","message":["error",["failed: face attention",{"annotations":0}]]}