From 510e89d9f2a54efcb6845430749c5651dababe8a Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 17 Oct 2022 10:47:20 -0400 Subject: [PATCH] reduce dev dependencies --- .build.json | 21 +- CHANGELOG.md | 5 +- build.js | 6 +- demo/nodejs/node-event.js | 6 +- demo/nodejs/node-fetch.js | 3 +- demo/nodejs/node.js | 8 +- package.json | 9 - src/tfjs/humangl.ts | 6 +- src/tfjs/tfjs.esm.d.ts | 5 + src/tfjs/types.ts | 12 + src/util/env.ts | 5 +- src/warmup.ts | 8 +- test/build.log | 80 +- test/node.js | 1 - test/test-backend-node-wasm.js | 3 +- test/test-node-main.js | 9 +- test/test.log | 1362 +++++++++++++++----------------- tfjs/tf-browser.ts | 30 +- tfjs/tf-node-gpu.ts | 2 + tfjs/tf-node-wasm.ts | 5 +- tfjs/tf-node.ts | 2 + tfjs/tf-version.ts | 18 +- 22 files changed, 792 insertions(+), 814 deletions(-) diff --git a/.build.json b/.build.json index cab0f010..e5c6ef23 100644 --- a/.build.json +++ b/.build.json @@ -39,6 +39,13 @@ "banner": { "js": "/*\n Human\n homepage: \n author: '\n*/\n" } }, "targets": [ + { + "name": "tfjs/browser/version", + "platform": "browser", + "format": "esm", + "input": "tfjs/tf-version.ts", + "output": "dist/tfjs.version.js" + }, { "name": "tfjs/nodejs/cpu", "platform": "node", @@ -77,6 +84,7 @@ "format": "cjs", "input": "tfjs/tf-node-wasm.ts", "output": "dist/tfjs.esm.js", + "minify": false, "external": ["@tensorflow"] }, { @@ -87,13 +95,6 @@ "output": "dist/human.node-wasm.js", "external": ["@tensorflow"] }, - { - "name": "tfjs/browser/version", - "platform": "browser", - "format": "esm", - "input": "tfjs/tf-version.ts", - "output": "dist/tfjs.version.js" - }, { "name": "tfjs/browser/esm/nobundle", "platform": "browser", @@ -112,13 +113,13 @@ "external": ["@tensorflow"] }, { - "name": "tfjs/browser/esm/custom", + "name": "tfjs/browser/esm/bundle", "platform": "browser", "format": "esm", - "input": "tfjs/tf-custom.ts", + "input": "tfjs/tf-browser.ts", "output": "dist/tfjs.esm.js", "sourcemap": false, - "minify": false + "minify": true }, { "name": "human/browser/iife/bundle", diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c4074fe..0b0400e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,10 @@ ## Changelog -### **HEAD -> main** 2022/10/13 mandic00@live.com +### **HEAD -> main** 2022/10/16 mandic00@live.com + + +### **origin/main** 2022/10/13 mandic00@live.com ### **release: 2.11.1** 2022/10/09 mandic00@live.com diff --git a/build.js b/build.js index e735e21d..b812966a 100644 --- a/build.js +++ b/build.js @@ -93,8 +93,12 @@ async function main() { const build = new Build(); await build.run('production'); // patch tfjs typedefs - log.state('Copy:', { input: 'src/tfjs/tfjs.esm.d.ts', output: 'dist/tfjs.esm.d.ts' }); + log.state('Copy:', { input: 'src/tfjs', output: 'dist/tfjs.esm.d.ts' }); copy('src/tfjs/tfjs.esm.d.ts', 'dist/tfjs.esm.d.ts'); + // log.state('Copy:', { input: '@vladmandic/tfjs/types', output: 'types/tfjs-core.esm.d.ts' }); + // copy('node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts', 'types/tfjs-core.esm.d.ts'); + // log.state('Copy:', { input: '@vladmandic/tfjs/types', output: 'types/tfjs.esm.d.ts' }); + // copy('node_modules/@vladmandic/tfjs/types/tfjs.d.ts', 'types/tfjs.esm.d.ts'); // run api-extractor to create typedef rollup const extractorConfig = APIExtractor.ExtractorConfig.loadFileAndPrepare('.api-extractor.json'); const extractorResult = APIExtractor.Extractor.invoke(extractorConfig, { diff --git a/demo/nodejs/node-event.js b/demo/nodejs/node-event.js index 14ca72d2..3695c100 100644 --- a/demo/nodejs/node-event.js +++ b/demo/nodejs/node-event.js @@ -5,8 +5,6 @@ const fs = require('fs'); const process = require('process'); -let fetch; // fetch is dynamically imported later - const log = require('@vladmandic/pilogger'); // eslint-disable-line node/no-unpublished-require // in nodejs environments tfjs-node is required to be loaded before human const tf = require('@tensorflow/tfjs-node'); // eslint-disable-line node/no-unpublished-require @@ -38,13 +36,13 @@ async function detect(input) { let buffer; log.info('Loading image:', input); if (input.startsWith('http:') || input.startsWith('https:')) { - fetch = (await import('node-fetch')).default; // eslint-disable-line node/no-unpublished-import const res = await fetch(input); - if (res && res.ok) buffer = await res.buffer(); + if (res && res.ok) buffer = Buffer.from(await res.arrayBuffer()); else log.error('Invalid image URL:', input, res.status, res.statusText, res.headers.get('content-type')); } else { buffer = fs.readFileSync(input); } + log.data('Image bytes:', buffer?.length, 'buffer:', buffer?.slice(0, 32)); // decode image using tfjs-node so we don't need external depenencies if (!buffer) return; diff --git a/demo/nodejs/node-fetch.js b/demo/nodejs/node-fetch.js index af3906ee..54a15b7f 100644 --- a/demo/nodejs/node-fetch.js +++ b/demo/nodejs/node-fetch.js @@ -16,8 +16,7 @@ const humanConfig = { }; async function main(inputFile) { - // @ts-ignore - global.fetch = (await import('node-fetch')).default; // eslint-disable-line node/no-unpublished-import + global.fetch = (await import('node-fetch')).default; // eslint-disable-line node/no-unpublished-import, import/no-unresolved, node/no-missing-import const human = new Human.Human(humanConfig); // create instance of human using default configuration log.info('Human:', human.version, 'TF:', tf.version_core); await human.load(); // optional as models would be loaded on-demand first time they are required diff --git a/demo/nodejs/node.js b/demo/nodejs/node.js index 31d31dcd..1a6dfbf6 100644 --- a/demo/nodejs/node.js +++ b/demo/nodejs/node.js @@ -1,7 +1,5 @@ /** * Human demo for NodeJS - * - * Requires [node-fetch](https://www.npmjs.com/package/node-fetch) to provide `fetch` functionality in NodeJS environment */ const log = require('@vladmandic/pilogger'); // eslint-disable-line node/no-unpublished-require @@ -9,8 +7,6 @@ const fs = require('fs'); const path = require('path'); const process = require('process'); -let fetch; // fetch is dynamically imported later - // in nodejs environments tfjs-node is required to be loaded before human const tf = require('@tensorflow/tfjs-node'); // eslint-disable-line node/no-unpublished-require // const human = require('@vladmandic/human'); // use this when human is installed as module (majority of use cases) @@ -65,11 +61,12 @@ async function detect(input) { log.info('Loading image:', input); if (input.startsWith('http:') || input.startsWith('https:')) { const res = await fetch(input); - if (res && res.ok) buffer = await res.buffer(); + if (res && res.ok) buffer = Buffer.from(await res.arrayBuffer()); else log.error('Invalid image URL:', input, res.status, res.statusText, res.headers.get('content-type')); } else { buffer = fs.readFileSync(input); } + log.data('Image bytes:', buffer?.length, 'buffer:', buffer?.slice(0, 32)); // decode image using tfjs-node so we don't need external depenencies // can also be done using canvas.js or some other 3rd party image library @@ -192,7 +189,6 @@ async function main() { log.configure({ inspect: { breakLength: 265 } }); log.header(); log.info('Current folder:', process.env.PWD); - fetch = (await import('node-fetch')).default; // eslint-disable-line node/no-unpublished-import await init(); const f = process.argv[2]; if (process.argv.length !== 3) { diff --git a/package.json b/package.json index b65c4525..10608252 100644 --- a/package.json +++ b/package.json @@ -69,19 +69,14 @@ "@html-eslint/eslint-plugin": "^0.15.0", "@html-eslint/parser": "^0.15.0", "@microsoft/api-extractor": "^7.33.2", - "@tensorflow/tfjs": "^4.0.0", "@tensorflow/tfjs-backend-cpu": "^4.0.0", "@tensorflow/tfjs-backend-wasm": "^4.0.0", "@tensorflow/tfjs-backend-webgl": "^4.0.0", "@tensorflow/tfjs-backend-webgpu": "0.0.1-alpha.14", "@tensorflow/tfjs-converter": "^4.0.0", "@tensorflow/tfjs-core": "^4.0.0", - "@tensorflow/tfjs-data": "^4.0.0", - "@tensorflow/tfjs-layers": "^4.0.0", "@tensorflow/tfjs-node": "^4.0.0", "@tensorflow/tfjs-node-gpu": "^4.0.0", - "@tensorflow/tfjs-tflite": "0.0.1-alpha.9", - "@types/emscripten": "^1.39.6", "@types/node": "^18.11.0", "@types/offscreencanvas": "^2019.7.0", "@typescript-eslint/eslint-plugin": "^5.40.0", @@ -89,7 +84,6 @@ "@vladmandic/build": "^0.7.14", "@vladmandic/pilogger": "^0.4.6", "@vladmandic/tfjs": "github:vladmandic/tfjs", - "@webgpu/types": "^0.1.22", "canvas": "^2.10.1", "esbuild": "^0.15.11", "eslint": "8.25.0", @@ -99,10 +93,7 @@ "eslint-plugin-json": "^3.1.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.1.0", - "long": "^5.2.0", - "node-fetch": "^3.2.10", "rimraf": "^3.0.2", - "seedrandom": "^3.0.5", "tslib": "^2.4.0", "typedoc": "0.23.16", "typescript": "4.8.4" diff --git a/src/tfjs/humangl.ts b/src/tfjs/humangl.ts index 3a74d496..dfa86177 100644 --- a/src/tfjs/humangl.ts +++ b/src/tfjs/humangl.ts @@ -6,7 +6,6 @@ import { log } from '../util/util'; import * as image from '../image/image'; import * as models from '../models'; import type { AnyCanvas } from '../exports'; -import type { MathBackendWebGL } from './types'; // import { env } from '../env'; export const config = { @@ -105,6 +104,7 @@ export function register(instance: Human): void { } try { const ctx = new tf.GPGPUContext(config.gl); + // @ts-ignore uncompatible kernelMs timing info tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority); } catch (err) { log('humangl error: cannot register webgl backend:', err); @@ -128,8 +128,8 @@ export function register(instance: Human): void { return; } extensions(); - const backend = tf.backend() as MathBackendWebGL; - const current = typeof backend['gpgpu'] !== 'undefined' ? backend.getGPGPUContext().gl : null; + const backend = tf.backend(); + const current = typeof backend['gpgpu'] !== 'undefined' ? backend['getGPGPUContext']().gl : null; if (current) { if (instance.config.debug) log('humangl backend registered:', { webgl: current.getParameter(current.VERSION) as string, renderer: current.getParameter(current.RENDERER) as string }); } else { diff --git a/src/tfjs/tfjs.esm.d.ts b/src/tfjs/tfjs.esm.d.ts index 1bd2f216..a7ab4a9b 100644 --- a/src/tfjs/tfjs.esm.d.ts +++ b/src/tfjs/tfjs.esm.d.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/no-unresolved */ /* eslint-disable import/no-extraneous-dependencies */ export declare const version: { @@ -17,3 +18,7 @@ export * from '@tensorflow/tfjs-converter'; // export * from '@tensorflow/tfjs-backend-cpu'; export * from '@tensorflow/tfjs-backend-wasm'; export * from '@tensorflow/tfjs-backend-webgl'; +// export * from '@tensorflow/tfjs-backend-webgpu'; + +// export * from 'types/tfjs-core.esm'; +// export * from 'types/tfjs.esm'; diff --git a/src/tfjs/types.ts b/src/tfjs/types.ts index e96de15f..0abc38f4 100644 --- a/src/tfjs/types.ts +++ b/src/tfjs/types.ts @@ -14,6 +14,18 @@ export type { loadGraphModel, GraphModel } from '@tensorflow/tfjs-converter'; export type { setWasmPaths } from '@tensorflow/tfjs-backend-wasm'; export type { setWebGLContext, GPGPUContext, MathBackendWebGL } from '@tensorflow/tfjs-backend-webgl'; +/* +export type { version_core } from '@vladmandic/tfjs/dist/tfjs-core.esm'; // eslint-disable-line camelcase +export type { image, browser, io } from '@vladmandic/tfjs/dist/tfjs-core.esm'; +export type { clone, sum, transpose, addN, softmax, tile, cast, unstack, pad, div, split, squeeze, add, mul, sub, stack, sigmoid, argMax, reshape, max, mod, min, floorDiv } from '@vladmandic/tfjs/dist/tfjs-core.esm'; +export type { slice, slice3d, slice4d, concat, concat2d, expandDims } from '@tensorflow/tfjs-core'; +export type { fill, scalar, tensor2d, zeros, tensor, dispose, tensor1d, tidy, ready, getBackend, registerKernel, engine, env, setBackend, enableProdMode, getKernelsForBackend, findBackend, registerBackend, backend } from '@vladmandic/tfjs/dist/tfjs-core.esm'; +export type { Tensor, Tensor1D, Tensor2D, Tensor3D, Tensor4D, TensorLike, TensorInfo, DataType, Rank, TensorContainer, TensorContainerObject } from '@vladmandic/tfjs/dist/tfjs-core.esm'; +export type { loadGraphModel, GraphModel } from '@vladmandic/tfjs/dist/tfjs.esm'; +export type { setWasmPaths } from '@vladmandic/tfjs/dist/tfjs.esm'; +export type { setWebGLContext, GPGPUContext, MathBackendWebGL } from '@vladmandic/tfjs/dist/tfjs.esm'; +*/ + export declare const version: { 'tfjs-core': string; 'tfjs-backend-cpu': string; diff --git a/src/util/env.ts b/src/util/env.ts index 7cc0d402..e8ac6291 100644 --- a/src/util/env.ts +++ b/src/util/env.ts @@ -1,6 +1,5 @@ import * as tf from 'dist/tfjs.esm.js'; import * as image from '../image/image'; -import type { MathBackendWebGL } from '../tfjs/types'; /** Env class that holds detected capabilities */ export class Env { @@ -140,8 +139,8 @@ export class Env { this.webgl.supported = typeof ctx !== 'undefined'; this.webgl.backend = this.backends.includes('webgl'); if (this.webgl.supported && this.webgl.backend && (tf.getBackend() === 'webgl' || tf.getBackend() === 'humangl')) { - const backend = tf.backend() as MathBackendWebGL; - const gl = typeof backend['gpgpu'] !== 'undefined' ? backend.getGPGPUContext().gl : null; + const backend = tf.backend(); + const gl = typeof backend['gpgpu'] !== 'undefined' ? backend['getGPGPUContext']().gl : null; if (gl) { this.webgl.version = gl.getParameter(gl.VERSION); this.webgl.renderer = gl.getParameter(gl.RENDERER); diff --git a/src/warmup.ts b/src/warmup.ts index ccb9525d..d63dc556 100644 --- a/src/warmup.ts +++ b/src/warmup.ts @@ -11,7 +11,7 @@ import { env } from './util/env'; import type { Config } from './config'; import type { Result } from './result'; import { Human, models } from './human'; -import type { Tensor, DataType, MathBackendWebGL } from './tfjs/types'; +import type { Tensor, DataType } from './tfjs/types'; async function warmupBitmap(instance: Human): Promise { const b64toBlob = (base64: string, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob()); @@ -113,7 +113,7 @@ export async function runCompile(instance: Human) { // @ts-ignore private property if (!tf.env().flagRegistry.ENGINE_COMPILE_ONLY) return; // tfjs does not support compile-only inference const backendType = tf.getBackend(); - const webGLBackend = tf.backend() as MathBackendWebGL; + const webGLBackend = tf.backend(); if ((backendType !== 'webgl' && backendType !== 'humangl') || !webGLBackend?.['checkCompileCompletion']) { // log('compile pass: skip'); return; @@ -138,8 +138,8 @@ export async function runCompile(instance: Human) { } tf.dispose(tensor); } - const kernels = await webGLBackend.checkCompileCompletionAsync(); - webGLBackend.getUniformLocations(); + const kernels = await webGLBackend['checkCompileCompletionAsync'](); + webGLBackend['getUniformLocations'](); if (instance.config.debug) log('compile pass:', { models: compiledModels, kernels: kernels.length }); tf.env().set('ENGINE_COMPILE_ONLY', false); const numTensorsEnd = tf.engine().state.numTensors; diff --git a/test/build.log b/test/build.log index 99fcb380..0e9f6cae 100644 --- a/test/build.log +++ b/test/build.log @@ -1,40 +1,40 @@ -2022-10-16 20:28:16 DATA:  Build {"name":"@vladmandic/human","version":"3.0.0"} -2022-10-16 20:28:16 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.0"} -2022-10-16 20:28:16 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} -2022-10-16 20:28:16 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.11","typescript":"4.8.4","typedoc":"0.23.16","eslint":"8.25.0"} -2022-10-16 20:28:16 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} -2022-10-16 20:28:16 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]} -2022-10-16 20:28:16 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":159,"outputBytes":608} -2022-10-16 20:28:16 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":78,"inputBytes":671035,"outputBytes":315423} -2022-10-16 20:28:16 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":167,"outputBytes":612} -2022-10-16 20:28:16 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":78,"inputBytes":671039,"outputBytes":315427} -2022-10-16 20:28:16 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":206,"outputBytes":664} -2022-10-16 20:28:16 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":78,"inputBytes":671091,"outputBytes":315477} -2022-10-16 20:28:16 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1125,"outputBytes":351} -2022-10-16 20:28:16 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1081,"outputBytes":576} -2022-10-16 20:28:16 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":78,"inputBytes":671003,"outputBytes":314166} -2022-10-16 20:28:17 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":11,"inputBytes":1354,"outputBytes":2868616} -2022-10-16 20:28:17 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":78,"inputBytes":3539043,"outputBytes":1717157} -2022-10-16 20:28:17 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":78,"inputBytes":3539043,"outputBytes":3175031} -2022-10-16 20:28:27 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15} -2022-10-16 20:28:29 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":76,"generated":true} -2022-10-16 20:28:29 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5672,"outputBytes":2632} -2022-10-16 20:28:29 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17134,"outputBytes":9181} -2022-10-16 20:28:39 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":115,"errors":0,"warnings":0} -2022-10-16 20:28:39 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} -2022-10-16 20:28:39 STATE: Copy: {"input":"src/tfjs/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"} -2022-10-16 20:28:39 INFO:  Done... -2022-10-16 20:28:39 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":195} -2022-10-16 20:28:39 STATE: Filter: {"input":"types/human.d.ts"} -2022-10-16 20:28:39 STATE: Link: {"input":"types/human.d.ts"} -2022-10-16 20:28:39 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} -2022-10-16 20:28:39 STATE: Models {"folder":"./models","models":12} -2022-10-16 20:28:39 STATE: Models {"folder":"../human-models/models","models":43} -2022-10-16 20:28:39 STATE: Models {"folder":"../blazepose/model/","models":4} -2022-10-16 20:28:39 STATE: Models {"folder":"../anti-spoofing/model","models":1} -2022-10-16 20:28:39 STATE: Models {"folder":"../efficientpose/models","models":3} -2022-10-16 20:28:39 STATE: Models {"folder":"../insightface/models","models":5} -2022-10-16 20:28:39 STATE: Models {"folder":"../movenet/models","models":3} -2022-10-16 20:28:39 STATE: Models {"folder":"../nanodet/models","models":4} -2022-10-16 20:28:40 STATE: Models: {"count":58,"totalSize":386543911} -2022-10-16 20:28:40 INFO:  Human Build complete... {"logFile":"test/build.log"} +2022-10-17 10:45:30 DATA:  Build {"name":"@vladmandic/human","version":"3.0.0"} +2022-10-17 10:45:30 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.0"} +2022-10-17 10:45:30 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} +2022-10-17 10:45:30 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.11","typescript":"4.8.4","typedoc":"0.23.16","eslint":"8.25.0"} +2022-10-17 10:45:30 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} +2022-10-17 10:45:30 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]} +2022-10-17 10:45:30 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":361} +2022-10-17 10:45:30 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":569,"outputBytes":924} +2022-10-17 10:45:30 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":78,"inputBytes":670926,"outputBytes":315728} +2022-10-17 10:45:30 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":577,"outputBytes":928} +2022-10-17 10:45:30 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":78,"inputBytes":670930,"outputBytes":315732} +2022-10-17 10:45:30 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":665,"outputBytes":1876} +2022-10-17 10:45:30 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":78,"inputBytes":671878,"outputBytes":315843} +2022-10-17 10:45:30 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1375,"outputBytes":670} +2022-10-17 10:45:30 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":78,"inputBytes":670672,"outputBytes":314337} +2022-10-17 10:45:30 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1375,"outputBytes":1144854} +2022-10-17 10:45:30 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":78,"inputBytes":1814856,"outputBytes":1455805} +2022-10-17 10:45:30 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":78,"inputBytes":1814856,"outputBytes":1912566} +2022-10-17 10:45:34 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15} +2022-10-17 10:45:36 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":76,"generated":true} +2022-10-17 10:45:36 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5672,"outputBytes":2632} +2022-10-17 10:45:36 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17134,"outputBytes":9181} +2022-10-17 10:45:44 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":115,"errors":0,"warnings":0} +2022-10-17 10:45:44 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} +2022-10-17 10:45:44 STATE: Copy: {"input":"src/tfjs","output":"dist/tfjs.esm.d.ts"} +2022-10-17 10:45:44 INFO:  Done... +2022-10-17 10:45:45 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":195} +2022-10-17 10:45:45 STATE: Filter: {"input":"types/human.d.ts"} +2022-10-17 10:45:45 STATE: Link: {"input":"types/human.d.ts"} +2022-10-17 10:45:45 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} +2022-10-17 10:45:45 STATE: Models {"folder":"./models","models":12} +2022-10-17 10:45:45 STATE: Models {"folder":"../human-models/models","models":43} +2022-10-17 10:45:45 STATE: Models {"folder":"../blazepose/model/","models":4} +2022-10-17 10:45:45 STATE: Models {"folder":"../anti-spoofing/model","models":1} +2022-10-17 10:45:45 STATE: Models {"folder":"../efficientpose/models","models":3} +2022-10-17 10:45:45 STATE: Models {"folder":"../insightface/models","models":5} +2022-10-17 10:45:45 STATE: Models {"folder":"../movenet/models","models":3} +2022-10-17 10:45:45 STATE: Models {"folder":"../nanodet/models","models":4} +2022-10-17 10:45:45 STATE: Models: {"count":58,"totalSize":386543911} +2022-10-17 10:45:45 INFO:  Human Build complete... {"logFile":"test/build.log"} diff --git a/test/node.js b/test/node.js index f8676a7f..a26d8341 100644 --- a/test/node.js +++ b/test/node.js @@ -19,7 +19,6 @@ const tests = [ const 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'] }, diff --git a/test/test-backend-node-wasm.js b/test/test-backend-node-wasm.js index b93e93a9..e1cbd422 100644 --- a/test/test-backend-node-wasm.js +++ b/test/test-backend-node-wasm.js @@ -1,5 +1,6 @@ const log = require('@vladmandic/pilogger'); -const tf = require('@tensorflow/tfjs'); // wasm backend requires tfjs to be loaded first +const tf = require('@tensorflow/tfjs-core'); // wasm backend requires tfjs to be loaded first +require('@tensorflow/tfjs-converter'); const wasm = require('@tensorflow/tfjs-backend-wasm'); // wasm backend does not get auto-loaded in nodejs const { Canvas, Image } = require('canvas'); // eslint-disable-line node/no-extraneous-require, node/no-missing-require const H = require('../dist/human.node-wasm.js'); diff --git a/test/test-node-main.js b/test/test-node-main.js index 1612da7e..ceb2e422 100644 --- a/test/test-node-main.js +++ b/test/test-node-main.js @@ -2,7 +2,6 @@ const fs = require('fs'); const process = require('process'); const canvasJS = require('canvas'); // eslint-disable-line node/no-extraneous-require, node/no-missing-require -let fetch; // fetch is dynamically imported later let config; let lastOp = 'unknown'; @@ -12,8 +11,10 @@ const log = (status, ...data) => { }; process.on('uncaughtException', (err) => { - log('error', 'uncaughtException', lastOp, err); // abort immediately - throw new Error(err); + log('error', 'failed:', lastOp); + log('error', 'uncaughtException', { name: err.name, message: err.message, cause: err.cause, stack: err.stack?.split('\n') }); + process.exit(1); // eslint-disable-line no-process-exit + // throw new Error(err); }); async function testHTTP() { @@ -145,6 +146,7 @@ async function testDetect(human, input, title, checkLeak = true) { log('error', 'failed: detect: input is null', { input, title }); return false; } + lastOp = `testDetect ${title}`; let detect = {}; try { detect = await human.detect(image, config); @@ -262,7 +264,6 @@ async function verifyCompare(human) { async function test(Human, inputConfig) { lastOp = `test ${inputConfig}`; config = inputConfig; - fetch = (await import('node-fetch')).default; // eslint-disable-line node/no-unsupported-features/es-syntax const ok = await testHTTP(); if (!ok) { log('error', 'aborting test'); diff --git a/test/test.log b/test/test.log index 1ab4e80b..fd7b4e4d 100644 --- a/test/test.log +++ b/test/test.log @@ -1,703 +1,659 @@ -2022-10-14 10:55:26 INFO:  @vladmandic/human version 2.11.1 -2022-10-14 10:55:26 INFO:  User: vlado Platform: linux Arch: x64 Node: v18.10.0 -2022-10-14 10:55:26 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/nodejs/process-folder.js","args":["samples"]},{"cmd":"../demo/multithread/node-multiprocess.js","args":[]},{"cmd":"../demo/facematch/node-match.js","args":[]}] -2022-10-14 10:55:26 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start -2022-10-14 10:55:27 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start -2022-10-14 10:55:28 INFO:  {"cmd":"../demo/nodejs/node-fetch.js","args":[]} start -2022-10-14 10:55:31 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start -2022-10-14 10:55:32 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start -2022-10-14 10:55:32 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start -2022-10-14 10:55:33 INFO:  {"cmd":"../demo/nodejs/process-folder.js","args":["samples"]} start -2022-10-14 10:55:37 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start -2022-10-14 10:55:49 INFO:  {"cmd":"../demo/facematch/node-match.js","args":[]} start -2022-10-14 10:55:51 INFO:  tests: ["test-node-load.js","test-node-gear.js","test-backend-node.js","test-backend-node-gpu.js","test-backend-node-wasm.js"] -2022-10-14 10:55:51 INFO:  -2022-10-14 10:55:51 INFO:  test-node-load.js start -2022-10-14 10:55:51 INFO:  test-node-load.js load start {"human":"2.11.1","tf":"4.0.0","progress":0} -2022-10-14 10:55:51 DATA:  test-node-load.js load interval {"elapsed":0,"progress":0} -2022-10-14 10:55:51 DATA:  test-node-load.js load interval {"elapsed":10,"progress":0} -2022-10-14 10:55:51 DATA:  test-node-load.js load interval {"elapsed":23,"progress":0.02116619810068672} -2022-10-14 10:55:51 DATA:  test-node-load.js load interval {"elapsed":35,"progress":0.2135162934143239} -2022-10-14 10:55:51 DATA:  test-node-load.js load interval {"elapsed":46,"progress":0.3961518088579138} -2022-10-14 10:55:51 DATA:  test-node-load.js load interval {"elapsed":69,"progress":0.5125946867158943} -2022-10-14 10:55:51 DATA:  test-node-load.js load interval {"elapsed":88,"progress":0.7259096583739463} -2022-10-14 10:55:51 STATE: test-node-load.js passed {"progress":1} -2022-10-14 10:55:51 INFO:  test-node-load.js load final {"progress":1} -2022-10-14 10:55:52 DATA:  test-node-load.js load interval {"elapsed":474,"progress":1} -2022-10-14 10:55:52 INFO:  -2022-10-14 10:55:52 INFO:  test-node-gear.js start -2022-10-14 10:55:52 DATA:  test-node-gear.js input: ["samples/in/ai-face.jpg"] -2022-10-14 10:55:53 STATE: test-node-gear.js passed: gear faceres samples/in/ai-face.jpg -2022-10-14 10:55:53 DATA:  test-node-gear.js results {"face":0,"model":"faceres","image":"samples/in/ai-face.jpg","age":23.5,"gender":"female","genderScore":0.92} -2022-10-14 10:55:53 STATE: test-node-gear.js passed: gear gear samples/in/ai-face.jpg -2022-10-14 10:55:53 DATA:  test-node-gear.js results {"face":0,"model":"gear","image":"samples/in/ai-face.jpg","age":23.3,"gender":"female","genderScore":0.51,"race":[{"score":0.93,"race":"white"}]} -2022-10-14 10:55:53 STATE: test-node-gear.js passed: gear ssrnet samples/in/ai-face.jpg -2022-10-14 10:55:53 DATA:  test-node-gear.js results {"face":0,"model":"ssrnet","image":"samples/in/ai-face.jpg","age":23.4,"gender":"female","genderScore":0.99} -2022-10-14 10:55:53 INFO:  -2022-10-14 10:55:53 INFO:  test-backend-node.js start -2022-10-14 10:55:53 INFO:  test-backend-node.js test: configuration validation -2022-10-14 10:55:53 STATE: test-backend-node.js passed: configuration default validation [] -2022-10-14 10:55:53 STATE: test-backend-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-10-14 10:55:53 INFO:  test-backend-node.js test: model load -2022-10-14 10:55:54 STATE: test-backend-node.js passed: models loaded 25 11 [{"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":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-10-14 10:55:54 INFO:  test-backend-node.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} -2022-10-14 10:55:54 INFO:  test-backend-node.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-10-14 10:55:54 INFO:  test-backend-node.js test: warmup -2022-10-14 10:55:54 STATE: test-backend-node.js passed: create human -2022-10-14 10:55:54 INFO:  test-backend-node.js human version: 2.11.1 -2022-10-14 10:55:54 INFO:  test-backend-node.js platform: linux x64 agent: NodeJS v18.10.0 -2022-10-14 10:55:54 INFO:  test-backend-node.js tfjs version: 4.0.0 -2022-10-14 10:55:54 INFO:  test-backend-node.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.10.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":false},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} -2022-10-14 10:55:54 STATE: test-backend-node.js passed: set backend: tensorflow -2022-10-14 10:55:54 STATE: test-backend-node.js tensors 1785 -2022-10-14 10:55:54 STATE: test-backend-node.js passed: load models -2022-10-14 10:55:54 STATE: test-backend-node.js result: defined models: 25 loaded models: 11 -2022-10-14 10:55:54 STATE: test-backend-node.js passed: warmup: none default -2022-10-14 10:55:54 DATA:  test-backend-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-10-14 10:55:54 DATA:  test-backend-node.js result: performance: load: null total: null -2022-10-14 10:55:54 STATE: test-backend-node.js passed: warmup none result match -2022-10-14 10:55:54 STATE: test-backend-node.js event: image -2022-10-14 10:55:54 STATE: test-backend-node.js event: detect -2022-10-14 10:55:54 STATE: test-backend-node.js event: warmup -2022-10-14 10:55:54 STATE: test-backend-node.js passed: warmup: face default -2022-10-14 10:55:54 DATA:  test-backend-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-10-14 10:55:54 DATA:  test-backend-node.js result: performance: load: null total: 510 -2022-10-14 10:55:54 STATE: test-backend-node.js passed: warmup face result match -2022-10-14 10:55:54 STATE: test-backend-node.js event: image -2022-10-14 10:55:54 STATE: test-backend-node.js event: detect -2022-10-14 10:55:54 STATE: test-backend-node.js event: warmup -2022-10-14 10:55:54 STATE: test-backend-node.js passed: warmup: body default -2022-10-14 10:55:54 DATA:  test-backend-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-10-14 10:55:54 DATA:  test-backend-node.js result: performance: load: null total: 355 -2022-10-14 10:55:54 STATE: test-backend-node.js passed: warmup body result match -2022-10-14 10:55:54 STATE: test-backend-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-10-14 10:55:54 INFO:  test-backend-node.js test: details verification -2022-10-14 10:55:54 STATE: test-backend-node.js start default -2022-10-14 10:55:55 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:55:55 STATE: test-backend-node.js event: image -2022-10-14 10:55:55 STATE: test-backend-node.js event: detect -2022-10-14 10:55:55 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg default -2022-10-14 10:55:55 DATA:  test-backend-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-10-14 10:55:55 DATA:  test-backend-node.js result: performance: load: null total: 323 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details face length 1 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details face score 1 0.93 1 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details face arrays 4 478 1024 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details face anti-spoofing 0.79 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details face liveness 0.83 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details body length 1 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details body 0.92 17 6 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details hand length 1 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details hand 0.51 0.73 point -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details hand arrays 21 5 7 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details gesture length 7 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details object length 1 -2022-10-14 10:55:55 STATE: test-backend-node.js passed: details object 0.72 person -2022-10-14 10:55:55 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-10-14 10:55:55 STATE: test-backend-node.js event: image -2022-10-14 10:55:56 STATE: test-backend-node.js event: detect -2022-10-14 10:55:56 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-10-14 10:55:56 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-10-14 10:55:56 STATE: test-backend-node.js event: image -2022-10-14 10:55:56 STATE: test-backend-node.js event: detect -2022-10-14 10:55:56 STATE: test-backend-node.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-10-14 10:55:56 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:55:56 STATE: test-backend-node.js event: image -2022-10-14 10:55:57 STATE: test-backend-node.js event: detect -2022-10-14 10:55:57 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-10-14 10:55:57 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} -2022-10-14 10:55:57 STATE: test-backend-node.js event: image -2022-10-14 10:55:57 STATE: test-backend-node.js event: detect -2022-10-14 10:55:57 STATE: test-backend-node.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-10-14 10:55:57 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-10-14 10:55:57 STATE: test-backend-node.js event: image -2022-10-14 10:55:57 STATE: test-backend-node.js event: detect -2022-10-14 10:55:57 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-10-14 10:55:57 INFO:  test-backend-node.js test default -2022-10-14 10:55:57 STATE: test-backend-node.js start async -2022-10-14 10:55:58 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:55:58 STATE: test-backend-node.js event: image -2022-10-14 10:55:58 STATE: test-backend-node.js event: detect -2022-10-14 10:55:58 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg async -2022-10-14 10:55:58 DATA:  test-backend-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-10-14 10:55:58 DATA:  test-backend-node.js result: performance: load: null total: 312 -2022-10-14 10:55:58 STATE: test-backend-node.js passed: default result face match 1 female 0.97 -2022-10-14 10:55:58 INFO:  test-backend-node.js test sync -2022-10-14 10:55:58 STATE: test-backend-node.js start sync -2022-10-14 10:55:58 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:55:58 STATE: test-backend-node.js event: image -2022-10-14 10:55:58 STATE: test-backend-node.js event: detect -2022-10-14 10:55:58 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sync -2022-10-14 10:55:58 DATA:  test-backend-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-10-14 10:55:58 DATA:  test-backend-node.js result: performance: load: null total: 295 -2022-10-14 10:55:58 STATE: test-backend-node.js passed: default sync 1 female 0.97 -2022-10-14 10:55:58 INFO:  test-backend-node.js test: image process -2022-10-14 10:55:58 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-10-14 10:55:58 STATE: test-backend-node.js passed: image input null [1,256,256,3] -2022-10-14 10:55:58 INFO:  test-backend-node.js test: image null -2022-10-14 10:55:58 STATE: test-backend-node.js passed: invalid input could not convert input to tensor -2022-10-14 10:55:58 INFO:  test-backend-node.js test face similarity -2022-10-14 10:55:58 STATE: test-backend-node.js start face similarity -2022-10-14 10:55:58 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-10-14 10:55:58 STATE: test-backend-node.js event: image -2022-10-14 10:55:59 STATE: test-backend-node.js event: detect -2022-10-14 10:55:59 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face similarity -2022-10-14 10:55:59 DATA:  test-backend-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-10-14 10:55:59 DATA:  test-backend-node.js result: performance: load: null total: 294 -2022-10-14 10:55:59 STATE: test-backend-node.js start face similarity -2022-10-14 10:55:59 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:55:59 STATE: test-backend-node.js event: image -2022-10-14 10:55:59 STATE: test-backend-node.js event: detect -2022-10-14 10:55:59 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg face similarity -2022-10-14 10:55:59 DATA:  test-backend-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-10-14 10:55:59 DATA:  test-backend-node.js result: performance: load: null total: 310 -2022-10-14 10:55:59 STATE: test-backend-node.js start face similarity -2022-10-14 10:55:59 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-10-14 10:55:59 STATE: test-backend-node.js event: image -2022-10-14 10:56:00 STATE: test-backend-node.js event: detect -2022-10-14 10:56:00 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-10-14 10:56:00 DATA:  test-backend-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-10-14 10:56:00 DATA:  test-backend-node.js result: performance: load: null total: 293 -2022-10-14 10:56:00 STATE: test-backend-node.js passed: face descriptor -2022-10-14 10:56:00 STATE: test-backend-node.js passed: face similarity {"similarity":[1,0.44727441595492046,0.556793560189727],"descriptors":[1024,1024,1024]} -2022-10-14 10:56:00 INFO:  test-backend-node.js test object -2022-10-14 10:56:00 STATE: test-backend-node.js start object -2022-10-14 10:56:00 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:56:00 STATE: test-backend-node.js event: image -2022-10-14 10:56:00 STATE: test-backend-node.js event: detect -2022-10-14 10:56:00 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object -2022-10-14 10:56:00 DATA:  test-backend-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-10-14 10:56:00 DATA:  test-backend-node.js result: performance: load: null total: 316 -2022-10-14 10:56:00 STATE: test-backend-node.js passed: centernet -2022-10-14 10:56:00 STATE: test-backend-node.js start object -2022-10-14 10:56:01 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:56:01 STATE: test-backend-node.js event: image -2022-10-14 10:56:02 STATE: test-backend-node.js event: detect -2022-10-14 10:56:02 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object -2022-10-14 10:56:02 DATA:  test-backend-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-10-14 10:56:02 DATA:  test-backend-node.js result: performance: load: null total: 318 -2022-10-14 10:56:02 STATE: test-backend-node.js passed: nanodet -2022-10-14 10:56:02 INFO:  test-backend-node.js test sensitive -2022-10-14 10:56:02 STATE: test-backend-node.js start sensitive -2022-10-14 10:56:02 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:56:02 STATE: test-backend-node.js event: image -2022-10-14 10:56:02 STATE: test-backend-node.js event: detect -2022-10-14 10:56:02 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sensitive -2022-10-14 10:56:02 DATA:  test-backend-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-10-14 10:56:02 DATA:  test-backend-node.js result: performance: load: null total: 263 -2022-10-14 10:56:02 STATE: test-backend-node.js passed: sensitive result match -2022-10-14 10:56:02 STATE: test-backend-node.js passed: sensitive face result match -2022-10-14 10:56:02 STATE: test-backend-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-10-14 10:56:02 STATE: test-backend-node.js passed: sensitive body result match -2022-10-14 10:56:02 STATE: test-backend-node.js passed: sensitive hand result match -2022-10-14 10:56:02 INFO:  test-backend-node.js test body -2022-10-14 10:56:02 STATE: test-backend-node.js start blazepose -2022-10-14 10:56:04 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:56:04 STATE: test-backend-node.js event: image -2022-10-14 10:56:04 STATE: test-backend-node.js event: detect -2022-10-14 10:56:04 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg blazepose -2022-10-14 10:56:04 DATA:  test-backend-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-10-14 10:56:04 DATA:  test-backend-node.js result: performance: load: null total: 337 -2022-10-14 10:56:04 STATE: test-backend-node.js passed: blazepose -2022-10-14 10:56:04 STATE: test-backend-node.js start efficientpose -2022-10-14 10:56:05 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:56:05 STATE: test-backend-node.js event: image -2022-10-14 10:56:06 STATE: test-backend-node.js event: detect -2022-10-14 10:56:06 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-10-14 10:56:06 DATA:  test-backend-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-10-14 10:56:06 DATA:  test-backend-node.js result: performance: load: null total: 310 -2022-10-14 10:56:06 STATE: test-backend-node.js passed: efficientpose -2022-10-14 10:56:06 STATE: test-backend-node.js start posenet -2022-10-14 10:56:06 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:56:06 STATE: test-backend-node.js event: image -2022-10-14 10:56:06 STATE: test-backend-node.js event: detect -2022-10-14 10:56:06 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg posenet -2022-10-14 10:56:06 DATA:  test-backend-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-10-14 10:56:06 DATA:  test-backend-node.js result: performance: load: null total: 259 -2022-10-14 10:56:06 STATE: test-backend-node.js passed: posenet -2022-10-14 10:56:06 STATE: test-backend-node.js start movenet -2022-10-14 10:56:07 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-10-14 10:56:07 STATE: test-backend-node.js event: image -2022-10-14 10:56:07 STATE: test-backend-node.js event: detect -2022-10-14 10:56:07 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg movenet -2022-10-14 10:56:07 DATA:  test-backend-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-10-14 10:56:07 DATA:  test-backend-node.js result: performance: load: null total: 259 -2022-10-14 10:56:07 STATE: test-backend-node.js passed: movenet -2022-10-14 10:56:07 INFO:  test-backend-node.js test face matching -2022-10-14 10:56:07 STATE: test-backend-node.js passed: face database 40 -2022-10-14 10:56:07 STATE: test-backend-node.js passed: face match {"first":{"index":4,"similarity":0.7827852251220577}} {"second":{"index":4,"similarity":0.5002052057057577}} {"third":{"index":4,"similarity":0.5401588464054732}} -2022-10-14 10:56:07 INFO:  test-backend-node.js test face similarity alternative -2022-10-14 10:56:07 STATE: test-backend-node.js start face embeddings -2022-10-14 10:56:07 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-10-14 10:56:07 STATE: test-backend-node.js event: image -2022-10-14 10:56:07 ERROR: test-backend-node.js uncaughtException getImage samples/in/ai-face.jpg {} -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: /home/vlado/dev/human/test/test-node-main.js:16 -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: throw new Error(err); -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: ^ -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: Error: TypeError: Cannot read properties of undefined (reading 'img_inputs') -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at process. (/home/vlado/dev/human/test/test-node-main.js:16:9) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at process.emit (node:events:513:28) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at process._fatalException (node:internal/process/execution:149:25) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at processPromiseRejections (node:internal/process/promises:261:11) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at process.processTicksAndRejections (node:internal/process/task_queues:96:32) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: Thrown at: -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at /home/vlado/dev/human/test/test-node-main.js:16:9 -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at emit (node:events:513:28) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at node:internal/process/execution:149:25 -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at processPromiseRejections (node:internal/process/promises:261:11) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: at processTicksAndRejections (node:internal/process/task_queues:96:32) -2022-10-14 10:56:07 WARN:  test-backend-node.js stderr: Node.js v18.10.0 -2022-10-14 10:56:07 INFO:  -2022-10-14 10:56:07 INFO:  test-backend-node-gpu.js start -2022-10-14 10:56:08 INFO:  test-backend-node-gpu.js test: configuration validation -2022-10-14 10:56:08 STATE: test-backend-node-gpu.js passed: configuration default validation [] -2022-10-14 10:56:08 STATE: test-backend-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-10-14 10:56:08 INFO:  test-backend-node-gpu.js test: model load -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js passed: models loaded 25 11 [{"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":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-10-14 10:56:09 INFO:  test-backend-node-gpu.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} -2022-10-14 10:56:09 INFO:  test-backend-node-gpu.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-10-14 10:56:09 INFO:  test-backend-node-gpu.js test: warmup -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js passed: create human -2022-10-14 10:56:09 INFO:  test-backend-node-gpu.js human version: 2.11.1 -2022-10-14 10:56:09 INFO:  test-backend-node-gpu.js platform: linux x64 agent: NodeJS v18.10.0 -2022-10-14 10:56:09 INFO:  test-backend-node-gpu.js tfjs version: 4.0.0 -2022-10-14 10:56:09 INFO:  test-backend-node-gpu.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.10.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":true},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js passed: set backend: tensorflow -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js tensors 1785 -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js passed: load models -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js result: defined models: 25 loaded models: 11 -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js passed: warmup: none default -2022-10-14 10:56:09 DATA:  test-backend-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-10-14 10:56:09 DATA:  test-backend-node-gpu.js result: performance: load: null total: null -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js passed: warmup none result match -2022-10-14 10:56:09 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js event: warmup -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js passed: warmup: face default -2022-10-14 10:56:13 DATA:  test-backend-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-10-14 10:56:13 DATA:  test-backend-node-gpu.js result: performance: load: null total: 4116 -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js passed: warmup face result match -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js event: warmup -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js passed: warmup: body default -2022-10-14 10:56:13 DATA:  test-backend-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-10-14 10:56:13 DATA:  test-backend-node-gpu.js result: performance: load: null total: 173 -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js passed: warmup body result match -2022-10-14 10:56:13 STATE: test-backend-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-10-14 10:56:13 INFO:  test-backend-node-gpu.js test: details verification -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js start default -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:13 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-10-14 10:56:14 DATA:  test-backend-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-10-14 10:56:14 DATA:  test-backend-node-gpu.js result: performance: load: null total: 195 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details face length 1 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details face score 1 0.93 1 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details face arrays 4 478 1024 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details face anti-spoofing 0.79 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details face liveness 0.83 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details body length 1 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details body 0.92 17 6 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details hand length 1 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details hand 0.51 0.73 point -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details hand arrays 21 5 7 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details gesture length 7 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details object length 1 -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: details object 0.72 person -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:14 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-10-14 10:56:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-10-14 10:56:15 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:15 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:15 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-10-14 10:56:16 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-10-14 10:56:17 INFO:  test-backend-node-gpu.js test default -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js start async -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg async -2022-10-14 10:56:17 DATA:  test-backend-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-10-14 10:56:17 DATA:  test-backend-node-gpu.js result: performance: load: null total: 142 -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: default result face match 1 female 0.97 -2022-10-14 10:56:17 INFO:  test-backend-node-gpu.js test sync -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js start sync -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sync -2022-10-14 10:56:17 DATA:  test-backend-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-10-14 10:56:17 DATA:  test-backend-node-gpu.js result: performance: load: null total: 185 -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: default sync 1 female 0.97 -2022-10-14 10:56:17 INFO:  test-backend-node-gpu.js test: image process -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: image input null [1,256,256,3] -2022-10-14 10:56:17 INFO:  test-backend-node-gpu.js test: image null -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: invalid input could not convert input to tensor -2022-10-14 10:56:17 INFO:  test-backend-node-gpu.js test face similarity -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js start face similarity -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-10-14 10:56:17 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity -2022-10-14 10:56:18 DATA:  test-backend-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-10-14 10:56:18 DATA:  test-backend-node-gpu.js result: performance: load: null total: 166 -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js start face similarity -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity -2022-10-14 10:56:18 DATA:  test-backend-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-10-14 10:56:18 DATA:  test-backend-node-gpu.js result: performance: load: null total: 147 -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js start face similarity -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-10-14 10:56:18 DATA:  test-backend-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-10-14 10:56:18 DATA:  test-backend-node-gpu.js result: performance: load: null total: 189 -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: face descriptor -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: face similarity {"similarity":[1,0.4475002983522097,0.5570879556505012],"descriptors":[1024,1024,1024]} -2022-10-14 10:56:18 INFO:  test-backend-node-gpu.js test object -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js start object -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:18 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:19 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:19 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-10-14 10:56:19 DATA:  test-backend-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-10-14 10:56:19 DATA:  test-backend-node-gpu.js result: performance: load: null total: 151 -2022-10-14 10:56:19 STATE: test-backend-node-gpu.js passed: centernet -2022-10-14 10:56:19 STATE: test-backend-node-gpu.js start object -2022-10-14 10:56:19 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:19 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-10-14 10:56:20 DATA:  test-backend-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-10-14 10:56:20 DATA:  test-backend-node-gpu.js result: performance: load: null total: 497 -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: nanodet -2022-10-14 10:56:20 INFO:  test-backend-node-gpu.js test sensitive -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js start sensitive -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive -2022-10-14 10:56:20 DATA:  test-backend-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-10-14 10:56:20 DATA:  test-backend-node-gpu.js result: performance: load: null total: 120 -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: sensitive result match -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: sensitive face result match -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: sensitive body result match -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js passed: sensitive hand result match -2022-10-14 10:56:20 INFO:  test-backend-node-gpu.js test body -2022-10-14 10:56:20 STATE: test-backend-node-gpu.js start blazepose -2022-10-14 10:56:22 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:22 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:22 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:22 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose -2022-10-14 10:56:22 DATA:  test-backend-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-10-14 10:56:22 DATA:  test-backend-node-gpu.js result: performance: load: null total: 262 -2022-10-14 10:56:22 STATE: test-backend-node-gpu.js passed: blazepose -2022-10-14 10:56:22 STATE: test-backend-node-gpu.js start efficientpose -2022-10-14 10:56:23 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:23 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-10-14 10:56:24 DATA:  test-backend-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-10-14 10:56:24 DATA:  test-backend-node-gpu.js result: performance: load: null total: 1210 -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js passed: efficientpose -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js start posenet -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet -2022-10-14 10:56:24 DATA:  test-backend-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-10-14 10:56:24 DATA:  test-backend-node-gpu.js result: performance: load: null total: 128 -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js passed: posenet -2022-10-14 10:56:24 STATE: test-backend-node-gpu.js start movenet -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js event: detect -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet -2022-10-14 10:56:25 DATA:  test-backend-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-10-14 10:56:25 DATA:  test-backend-node-gpu.js result: performance: load: null total: 111 -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js passed: movenet -2022-10-14 10:56:25 INFO:  test-backend-node-gpu.js test face matching -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js passed: face database 40 -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7829338043932047}} {"second":{"index":4,"similarity":0.5002928781584631}} {"third":{"index":4,"similarity":0.5402934771672516}} -2022-10-14 10:56:25 INFO:  test-backend-node-gpu.js test face similarity alternative -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js start face embeddings -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-10-14 10:56:25 STATE: test-backend-node-gpu.js event: image -2022-10-14 10:56:25 ERROR: test-backend-node-gpu.js uncaughtException getImage samples/in/ai-face.jpg {} -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: /home/vlado/dev/human/test/test-node-main.js:16 -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: throw new Error(err); -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: ^ -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: Error: TypeError: Cannot read properties of undefined (reading 'img_inputs') -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at process. (/home/vlado/dev/human/test/test-node-main.js:16:9) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at process.emit (node:events:513:28) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at process._fatalException (node:internal/process/execution:149:25) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at processPromiseRejections (node:internal/process/promises:261:11) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at process.processTicksAndRejections (node:internal/process/task_queues:96:32) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: Thrown at: -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at /home/vlado/dev/human/test/test-node-main.js:16:9 -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at emit (node:events:513:28) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at node:internal/process/execution:149:25 -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at processPromiseRejections (node:internal/process/promises:261:11) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: at processTicksAndRejections (node:internal/process/task_queues:96:32) -2022-10-14 10:56:25 WARN:  test-backend-node-gpu.js stderr: Node.js v18.10.0 -2022-10-14 10:56:26 INFO:  -2022-10-14 10:56:26 INFO:  test-backend-node-wasm.js start -2022-10-14 10:56:27 DATA:  test-backend-node-wasm.js stdout: 2022-10-14 10:56:27 INFO:  { supported: true, backend: true, simd: true, multithread: false } https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.0.0/dist/ -2022-10-14 10:56:27 STATE: test-backend-node-wasm.js passed: model server: https://vladmandic.github.io/human-models/models/ -2022-10-14 10:56:27 INFO:  test-backend-node-wasm.js test: configuration validation -2022-10-14 10:56:27 STATE: test-backend-node-wasm.js passed: configuration default validation [] -2022-10-14 10:56:27 STATE: test-backend-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-10-14 10:56:27 INFO:  test-backend-node-wasm.js test: model load -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: models loaded 25 11 [{"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/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/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human-models/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human-models/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human-models/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human-models/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/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human-models/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human-models/models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human-models/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human-models/models/antispoof.json"}] -2022-10-14 10:56:31 INFO:  test-backend-node-wasm.js memory: {"memory":{"unreliable":false,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} -2022-10-14 10:56:31 INFO:  test-backend-node-wasm.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-10-14 10:56:31 INFO:  test-backend-node-wasm.js test: warmup -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: create human -2022-10-14 10:56:31 INFO:  test-backend-node-wasm.js human version: 2.11.1 -2022-10-14 10:56:31 INFO:  test-backend-node-wasm.js platform: linux x64 agent: NodeJS v18.10.0 -2022-10-14 10:56:31 INFO:  test-backend-node-wasm.js tfjs version: 4.0.0 -2022-10-14 10:56:31 INFO:  test-backend-node-wasm.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.10.0","backends":["cpu","wasm"],"initial":false,"tfjs":{"version":"4.0.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-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: set backend: wasm -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js tensors 1785 -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: load models -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js result: defined models: 25 loaded models: 11 -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: warmup: none default -2022-10-14 10:56:31 DATA:  test-backend-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-10-14 10:56:31 DATA:  test-backend-node-wasm.js result: performance: load: null total: null -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: warmup none result match -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js event: warmup -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: warmup: face default -2022-10-14 10:56:31 DATA:  test-backend-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-10-14 10:56:31 DATA:  test-backend-node-wasm.js result: performance: load: null total: 553 -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js passed: warmup face result match -2022-10-14 10:56:31 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js event: warmup -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: warmup: body default -2022-10-14 10:56:32 DATA:  test-backend-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-10-14 10:56:32 DATA:  test-backend-node-wasm.js result: performance: load: null total: 357 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: warmup body result match -2022-10-14 10:56:32 STATE: test-backend-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-10-14 10:56:32 INFO:  test-backend-node-wasm.js test: details verification -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js start default -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-10-14 10:56:32 DATA:  test-backend-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-10-14 10:56:32 DATA:  test-backend-node-wasm.js result: performance: load: null total: 313 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details face length 1 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details face score 1 0.93 1 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details face arrays 4 478 1024 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details face anti-spoofing 0.79 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details face liveness 0.83 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details body length 1 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details body 0.92 17 6 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details hand length 1 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details hand 0.51 0.73 point -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details hand arrays 21 5 7 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details gesture length 7 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details object length 1 -2022-10-14 10:56:32 STATE: test-backend-node-wasm.js passed: details object 0.72 person -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:33 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-10-14 10:56:34 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:34 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:34 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:34 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-10-14 10:56:34 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:34 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-10-14 10:56:35 INFO:  test-backend-node-wasm.js test default -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js start async -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:35 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg async -2022-10-14 10:56:36 DATA:  test-backend-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-10-14 10:56:36 DATA:  test-backend-node-wasm.js result: performance: load: null total: 328 -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: default result face match 1 female 0.97 -2022-10-14 10:56:36 INFO:  test-backend-node-wasm.js test sync -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js start sync -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sync -2022-10-14 10:56:36 DATA:  test-backend-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-10-14 10:56:36 DATA:  test-backend-node-wasm.js result: performance: load: null total: 378 -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: default sync 1 female 0.97 -2022-10-14 10:56:36 INFO:  test-backend-node-wasm.js test: image process -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: image input null [1,256,256,3] -2022-10-14 10:56:36 INFO:  test-backend-node-wasm.js test: image null -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: invalid input could not convert input to tensor -2022-10-14 10:56:36 INFO:  test-backend-node-wasm.js test face similarity -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js start face similarity -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-10-14 10:56:36 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity -2022-10-14 10:56:37 DATA:  test-backend-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-10-14 10:56:37 DATA:  test-backend-node-wasm.js result: performance: load: null total: 307 -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js start face similarity -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity -2022-10-14 10:56:37 DATA:  test-backend-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-10-14 10:56:37 DATA:  test-backend-node-wasm.js result: performance: load: null total: 335 -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js start face similarity -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-10-14 10:56:37 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-10-14 10:56:38 DATA:  test-backend-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-10-14 10:56:38 DATA:  test-backend-node-wasm.js result: performance: load: null total: 286 -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js passed: face descriptor -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} -2022-10-14 10:56:38 INFO:  test-backend-node-wasm.js test object -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js start object -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-10-14 10:56:38 DATA:  test-backend-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-10-14 10:56:38 DATA:  test-backend-node-wasm.js result: performance: load: null total: 309 -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js passed: centernet -2022-10-14 10:56:38 STATE: test-backend-node-wasm.js start object -2022-10-14 10:56:39 WARN:  test-backend-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-10-14 10:56:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:39 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:39 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:39 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-10-14 10:56:39 DATA:  test-backend-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-10-14 10:56:39 DATA:  test-backend-node-wasm.js result: performance: load: null total: 223 -2022-10-14 10:56:39 ERROR: test-backend-node-wasm.js failed: nanodet [] -2022-10-14 10:56:39 INFO:  test-backend-node-wasm.js test sensitive -2022-10-14 10:56:39 STATE: test-backend-node-wasm.js start sensitive -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive -2022-10-14 10:56:40 DATA:  test-backend-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-10-14 10:56:40 DATA:  test-backend-node-wasm.js result: performance: load: null total: 306 -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js passed: sensitive result match -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js passed: sensitive face result match -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js passed: sensitive face emotion result [{"score":0.46,"emotion":"neutral"},{"score":0.24,"emotion":"fear"},{"score":0.17,"emotion":"sad"}] -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js passed: sensitive body result match -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js passed: sensitive hand result match -2022-10-14 10:56:40 INFO:  test-backend-node-wasm.js test body -2022-10-14 10:56:40 STATE: test-backend-node-wasm.js start blazepose -2022-10-14 10:56:42 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:42 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:42 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:42 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose -2022-10-14 10:56:42 DATA:  test-backend-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-10-14 10:56:42 DATA:  test-backend-node-wasm.js result: performance: load: null total: 387 -2022-10-14 10:56:42 STATE: test-backend-node-wasm.js passed: blazepose -2022-10-14 10:56:42 STATE: test-backend-node-wasm.js start efficientpose -2022-10-14 10:56:43 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:43 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:44 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:44 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-10-14 10:56:44 DATA:  test-backend-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-10-14 10:56:44 DATA:  test-backend-node-wasm.js result: performance: load: null total: 683 -2022-10-14 10:56:44 STATE: test-backend-node-wasm.js passed: efficientpose -2022-10-14 10:56:44 STATE: test-backend-node-wasm.js start posenet -2022-10-14 10:56:44 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:44 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet -2022-10-14 10:56:45 DATA:  test-backend-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-10-14 10:56:45 DATA:  test-backend-node-wasm.js result: performance: load: null total: 310 -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js passed: posenet -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js start movenet -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js event: detect -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet -2022-10-14 10:56:45 DATA:  test-backend-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-10-14 10:56:45 DATA:  test-backend-node-wasm.js result: performance: load: null total: 261 -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js passed: movenet -2022-10-14 10:56:45 INFO:  test-backend-node-wasm.js test face matching -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js passed: face database 40 -2022-10-14 10:56:45 STATE: test-backend-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-10-14 10:56:45 INFO:  test-backend-node-wasm.js test face similarity alternative -2022-10-14 10:56:45 STATE: test-backend-node-wasm.js start face embeddings -2022-10-14 10:56:46 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-10-14 10:56:46 STATE: test-backend-node-wasm.js event: image -2022-10-14 10:56:46 ERROR: test-backend-node-wasm.js uncaughtException getImage samples/in/ai-face.jpg {} -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: /home/vlado/dev/human/test/test-node-main.js:16 -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: throw new Error(err); -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: ^ -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: Error: TypeError: Cannot read properties of undefined (reading 'img_inputs') -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at process. (/home/vlado/dev/human/test/test-node-main.js:16:9) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at process.emit (node:events:525:35) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at process._fatalException (node:internal/process/execution:149:25) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at processPromiseRejections (node:internal/process/promises:261:11) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at process.processTicksAndRejections (node:internal/process/task_queues:96:32) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: Thrown at: -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at /home/vlado/dev/human/test/test-node-main.js:16:9 -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at emit (node:events:525:35) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at node:internal/process/execution:149:25 -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at processPromiseRejections (node:internal/process/promises:261:11) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: at processTicksAndRejections (node:internal/process/task_queues:96:32) -2022-10-14 10:56:46 WARN:  test-backend-node-wasm.js stderr: Node.js v18.10.0 -2022-10-14 10:56:46 STATE: all tests complete -2022-10-14 10:56:46 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/nodejs/node-fetch.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/nodejs/process-folder.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"../demo/facematch/node-match.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"test-node-load.js","passed":1,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"test-node-gear.js","passed":3,"failed":0} -2022-10-14 10:56:46 INFO:  status {"test":"test-backend-node.js","passed":85,"failed":"critical"} -2022-10-14 10:56:46 INFO:  status {"test":"test-backend-node-gpu.js","passed":85,"failed":"critical"} -2022-10-14 10:56:46 INFO:  status {"test":"test-backend-node-wasm.js","passed":85,"failed":"critical"} -2022-10-14 10:56:46 INFO:  failures {"count":1} -2022-10-14 10:56:46 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: nanodet",[]]]} +2022-10-17 10:35:06 INFO:  @vladmandic/human version 3.0.0 +2022-10-17 10:35:06 INFO:  User: vlado Platform: linux Arch: x64 Node: v18.10.0 +2022-10-17 10:35:06 INFO:  demos: [{"cmd":"../demo/nodejs/node.js","args":[]},{"cmd":"../demo/nodejs/node-simple.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/nodejs/process-folder.js","args":["samples"]},{"cmd":"../demo/multithread/node-multiprocess.js","args":[]},{"cmd":"../demo/facematch/node-match.js","args":[]}] +2022-10-17 10:35:06 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start +2022-10-17 10:35:08 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start +2022-10-17 10:35:08 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start +2022-10-17 10:35:09 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start +2022-10-17 10:35:10 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start +2022-10-17 10:35:10 INFO:  {"cmd":"../demo/nodejs/process-folder.js","args":["samples"]} start +2022-10-17 10:35:13 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start +2022-10-17 10:35:25 INFO:  {"cmd":"../demo/facematch/node-match.js","args":[]} start +2022-10-17 10:35:27 INFO:  tests: ["test-node-load.js","test-node-gear.js","test-backend-node.js","test-backend-node-gpu.js","test-backend-node-wasm.js"] +2022-10-17 10:35:27 INFO:  +2022-10-17 10:35:27 INFO:  test-node-load.js start +2022-10-17 10:35:27 INFO:  test-node-load.js load start {"human":"3.0.0","tf":"4.0.0","progress":0} +2022-10-17 10:35:27 DATA:  test-node-load.js load interval {"elapsed":1,"progress":0} +2022-10-17 10:35:27 DATA:  test-node-load.js load interval {"elapsed":11,"progress":0} +2022-10-17 10:35:27 DATA:  test-node-load.js load interval {"elapsed":24,"progress":0.05339166087267679} +2022-10-17 10:35:27 DATA:  test-node-load.js load interval {"elapsed":33,"progress":0.2135162934143239} +2022-10-17 10:35:27 DATA:  test-node-load.js load interval {"elapsed":57,"progress":0.3299591712723044} +2022-10-17 10:35:27 DATA:  test-node-load.js load interval {"elapsed":73,"progress":0.5125946867158943} +2022-10-17 10:35:27 DATA:  test-node-load.js load interval {"elapsed":82,"progress":0.7259096583739463} +2022-10-17 10:35:27 STATE: test-node-load.js passed {"progress":1} +2022-10-17 10:35:27 INFO:  test-node-load.js load final {"progress":1} +2022-10-17 10:35:28 DATA:  test-node-load.js load interval {"elapsed":454,"progress":1} +2022-10-17 10:35:28 INFO:  +2022-10-17 10:35:28 INFO:  test-node-gear.js start +2022-10-17 10:35:28 DATA:  test-node-gear.js input: ["samples/in/ai-face.jpg"] +2022-10-17 10:35:29 STATE: test-node-gear.js passed: gear faceres samples/in/ai-face.jpg +2022-10-17 10:35:29 DATA:  test-node-gear.js results {"face":0,"model":"faceres","image":"samples/in/ai-face.jpg","age":23.5,"gender":"female","genderScore":0.92} +2022-10-17 10:35:29 STATE: test-node-gear.js passed: gear gear samples/in/ai-face.jpg +2022-10-17 10:35:29 DATA:  test-node-gear.js results {"face":0,"model":"gear","image":"samples/in/ai-face.jpg","age":23.3,"gender":"female","genderScore":0.51,"race":[{"score":0.93,"race":"white"}]} +2022-10-17 10:35:29 STATE: test-node-gear.js passed: gear ssrnet samples/in/ai-face.jpg +2022-10-17 10:35:29 DATA:  test-node-gear.js results {"face":0,"model":"ssrnet","image":"samples/in/ai-face.jpg","age":23.4,"gender":"female","genderScore":0.99} +2022-10-17 10:35:29 INFO:  +2022-10-17 10:35:29 INFO:  test-backend-node.js start +2022-10-17 10:35:29 INFO:  test-backend-node.js test: configuration validation +2022-10-17 10:35:29 STATE: test-backend-node.js passed: configuration default validation [] +2022-10-17 10:35:29 STATE: test-backend-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-10-17 10:35:29 INFO:  test-backend-node.js test: model load +2022-10-17 10:35:29 STATE: test-backend-node.js passed: models loaded 25 11 [{"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":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-10-17 10:35:29 INFO:  test-backend-node.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} +2022-10-17 10:35:29 INFO:  test-backend-node.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-10-17 10:35:29 INFO:  test-backend-node.js test: warmup +2022-10-17 10:35:29 STATE: test-backend-node.js passed: create human +2022-10-17 10:35:29 INFO:  test-backend-node.js human version: 3.0.0 +2022-10-17 10:35:29 INFO:  test-backend-node.js platform: linux x64 agent: NodeJS v18.10.0 +2022-10-17 10:35:29 INFO:  test-backend-node.js tfjs version: 4.0.0 +2022-10-17 10:35:29 INFO:  test-backend-node.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.10.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":false},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-10-17 10:35:29 STATE: test-backend-node.js passed: set backend: tensorflow +2022-10-17 10:35:29 STATE: test-backend-node.js tensors 1785 +2022-10-17 10:35:29 STATE: test-backend-node.js passed: load models +2022-10-17 10:35:29 STATE: test-backend-node.js result: defined models: 25 loaded models: 11 +2022-10-17 10:35:29 STATE: test-backend-node.js passed: warmup: none default +2022-10-17 10:35:29 DATA:  test-backend-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-10-17 10:35:29 DATA:  test-backend-node.js result: performance: load: null total: null +2022-10-17 10:35:29 STATE: test-backend-node.js passed: warmup none result match +2022-10-17 10:35:29 STATE: test-backend-node.js event: image +2022-10-17 10:35:30 STATE: test-backend-node.js event: detect +2022-10-17 10:35:30 STATE: test-backend-node.js event: warmup +2022-10-17 10:35:30 STATE: test-backend-node.js passed: warmup: face default +2022-10-17 10:35:30 DATA:  test-backend-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-10-17 10:35:30 DATA:  test-backend-node.js result: performance: load: null total: 438 +2022-10-17 10:35:30 STATE: test-backend-node.js passed: warmup face result match +2022-10-17 10:35:30 STATE: test-backend-node.js event: image +2022-10-17 10:35:30 STATE: test-backend-node.js event: detect +2022-10-17 10:35:30 STATE: test-backend-node.js event: warmup +2022-10-17 10:35:30 STATE: test-backend-node.js passed: warmup: body default +2022-10-17 10:35:30 DATA:  test-backend-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-10-17 10:35:30 DATA:  test-backend-node.js result: performance: load: null total: 361 +2022-10-17 10:35:30 STATE: test-backend-node.js passed: warmup body result match +2022-10-17 10:35:30 STATE: test-backend-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-10-17 10:35:30 INFO:  test-backend-node.js test: details verification +2022-10-17 10:35:30 STATE: test-backend-node.js start default +2022-10-17 10:35:30 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:30 STATE: test-backend-node.js event: image +2022-10-17 10:35:31 STATE: test-backend-node.js event: detect +2022-10-17 10:35:31 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg default +2022-10-17 10:35:31 DATA:  test-backend-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-10-17 10:35:31 DATA:  test-backend-node.js result: performance: load: null total: 350 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details face length 1 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details face score 1 0.93 1 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details face arrays 4 478 1024 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details face anti-spoofing 0.79 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details face liveness 0.83 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details body length 1 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details body 0.92 17 6 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details hand length 1 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details hand 0.51 0.73 point +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details hand arrays 21 5 7 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details gesture length 7 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details object length 1 +2022-10-17 10:35:31 STATE: test-backend-node.js passed: details object 0.72 person +2022-10-17 10:35:31 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-10-17 10:35:31 STATE: test-backend-node.js event: image +2022-10-17 10:35:31 STATE: test-backend-node.js event: detect +2022-10-17 10:35:31 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-10-17 10:35:32 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-10-17 10:35:32 STATE: test-backend-node.js event: image +2022-10-17 10:35:32 STATE: test-backend-node.js event: detect +2022-10-17 10:35:32 STATE: test-backend-node.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-10-17 10:35:32 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:32 STATE: test-backend-node.js event: image +2022-10-17 10:35:32 STATE: test-backend-node.js event: detect +2022-10-17 10:35:32 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-10-17 10:35:33 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:33 STATE: test-backend-node.js event: image +2022-10-17 10:35:33 STATE: test-backend-node.js event: detect +2022-10-17 10:35:33 STATE: test-backend-node.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-10-17 10:35:33 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-10-17 10:35:33 STATE: test-backend-node.js event: image +2022-10-17 10:35:33 STATE: test-backend-node.js event: detect +2022-10-17 10:35:33 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-10-17 10:35:33 INFO:  test-backend-node.js test default +2022-10-17 10:35:33 STATE: test-backend-node.js start async +2022-10-17 10:35:34 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:34 STATE: test-backend-node.js event: image +2022-10-17 10:35:34 STATE: test-backend-node.js event: detect +2022-10-17 10:35:34 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg async +2022-10-17 10:35:34 DATA:  test-backend-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-10-17 10:35:34 DATA:  test-backend-node.js result: performance: load: null total: 325 +2022-10-17 10:35:34 STATE: test-backend-node.js passed: default result face match 1 female 0.97 +2022-10-17 10:35:34 INFO:  test-backend-node.js test sync +2022-10-17 10:35:34 STATE: test-backend-node.js start sync +2022-10-17 10:35:34 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:34 STATE: test-backend-node.js event: image +2022-10-17 10:35:34 STATE: test-backend-node.js event: detect +2022-10-17 10:35:34 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sync +2022-10-17 10:35:34 DATA:  test-backend-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-10-17 10:35:34 DATA:  test-backend-node.js result: performance: load: null total: 326 +2022-10-17 10:35:34 STATE: test-backend-node.js passed: default sync 1 female 0.97 +2022-10-17 10:35:34 INFO:  test-backend-node.js test: image process +2022-10-17 10:35:34 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-10-17 10:35:34 STATE: test-backend-node.js passed: image input null [1,256,256,3] +2022-10-17 10:35:34 INFO:  test-backend-node.js test: image null +2022-10-17 10:35:34 STATE: test-backend-node.js passed: invalid input could not convert input to tensor +2022-10-17 10:35:34 INFO:  test-backend-node.js test face similarity +2022-10-17 10:35:34 STATE: test-backend-node.js start face similarity +2022-10-17 10:35:34 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-10-17 10:35:34 STATE: test-backend-node.js event: image +2022-10-17 10:35:35 STATE: test-backend-node.js event: detect +2022-10-17 10:35:35 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face similarity +2022-10-17 10:35:35 DATA:  test-backend-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-10-17 10:35:35 DATA:  test-backend-node.js result: performance: load: null total: 315 +2022-10-17 10:35:35 STATE: test-backend-node.js start face similarity +2022-10-17 10:35:35 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:35 STATE: test-backend-node.js event: image +2022-10-17 10:35:35 STATE: test-backend-node.js event: detect +2022-10-17 10:35:35 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg face similarity +2022-10-17 10:35:35 DATA:  test-backend-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-10-17 10:35:35 DATA:  test-backend-node.js result: performance: load: null total: 307 +2022-10-17 10:35:35 STATE: test-backend-node.js start face similarity +2022-10-17 10:35:35 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-10-17 10:35:35 STATE: test-backend-node.js event: image +2022-10-17 10:35:36 STATE: test-backend-node.js event: detect +2022-10-17 10:35:36 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-10-17 10:35:36 DATA:  test-backend-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-10-17 10:35:36 DATA:  test-backend-node.js result: performance: load: null total: 272 +2022-10-17 10:35:36 STATE: test-backend-node.js passed: face descriptor +2022-10-17 10:35:36 STATE: test-backend-node.js passed: face similarity {"similarity":[1,0.44727441595492046,0.556793560189727],"descriptors":[1024,1024,1024]} +2022-10-17 10:35:36 INFO:  test-backend-node.js test object +2022-10-17 10:35:36 STATE: test-backend-node.js start object +2022-10-17 10:35:36 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:36 STATE: test-backend-node.js event: image +2022-10-17 10:35:36 STATE: test-backend-node.js event: detect +2022-10-17 10:35:36 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object +2022-10-17 10:35:36 DATA:  test-backend-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-10-17 10:35:36 DATA:  test-backend-node.js result: performance: load: null total: 300 +2022-10-17 10:35:36 STATE: test-backend-node.js passed: centernet +2022-10-17 10:35:36 STATE: test-backend-node.js start object +2022-10-17 10:35:37 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:37 STATE: test-backend-node.js event: image +2022-10-17 10:35:37 STATE: test-backend-node.js event: detect +2022-10-17 10:35:37 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object +2022-10-17 10:35:37 DATA:  test-backend-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-10-17 10:35:37 DATA:  test-backend-node.js result: performance: load: null total: 315 +2022-10-17 10:35:37 STATE: test-backend-node.js passed: nanodet +2022-10-17 10:35:37 INFO:  test-backend-node.js test sensitive +2022-10-17 10:35:37 STATE: test-backend-node.js start sensitive +2022-10-17 10:35:37 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:37 STATE: test-backend-node.js event: image +2022-10-17 10:35:38 STATE: test-backend-node.js event: detect +2022-10-17 10:35:38 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sensitive +2022-10-17 10:35:38 DATA:  test-backend-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-10-17 10:35:38 DATA:  test-backend-node.js result: performance: load: null total: 279 +2022-10-17 10:35:38 STATE: test-backend-node.js passed: sensitive result match +2022-10-17 10:35:38 STATE: test-backend-node.js passed: sensitive face result match +2022-10-17 10:35:38 STATE: test-backend-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-10-17 10:35:38 STATE: test-backend-node.js passed: sensitive body result match +2022-10-17 10:35:38 STATE: test-backend-node.js passed: sensitive hand result match +2022-10-17 10:35:38 INFO:  test-backend-node.js test body +2022-10-17 10:35:38 STATE: test-backend-node.js start blazepose +2022-10-17 10:35:40 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:40 STATE: test-backend-node.js event: image +2022-10-17 10:35:40 STATE: test-backend-node.js event: detect +2022-10-17 10:35:40 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg blazepose +2022-10-17 10:35:40 DATA:  test-backend-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-10-17 10:35:40 DATA:  test-backend-node.js result: performance: load: null total: 344 +2022-10-17 10:35:40 STATE: test-backend-node.js passed: blazepose +2022-10-17 10:35:40 STATE: test-backend-node.js start efficientpose +2022-10-17 10:35:40 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:40 STATE: test-backend-node.js event: image +2022-10-17 10:35:41 STATE: test-backend-node.js event: detect +2022-10-17 10:35:41 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-10-17 10:35:41 DATA:  test-backend-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-10-17 10:35:41 DATA:  test-backend-node.js result: performance: load: null total: 321 +2022-10-17 10:35:41 STATE: test-backend-node.js passed: efficientpose +2022-10-17 10:35:41 STATE: test-backend-node.js start posenet +2022-10-17 10:35:41 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:41 STATE: test-backend-node.js event: image +2022-10-17 10:35:42 STATE: test-backend-node.js event: detect +2022-10-17 10:35:42 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg posenet +2022-10-17 10:35:42 DATA:  test-backend-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-10-17 10:35:42 DATA:  test-backend-node.js result: performance: load: null total: 269 +2022-10-17 10:35:42 STATE: test-backend-node.js passed: posenet +2022-10-17 10:35:42 STATE: test-backend-node.js start movenet +2022-10-17 10:35:42 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-10-17 10:35:42 STATE: test-backend-node.js event: image +2022-10-17 10:35:42 STATE: test-backend-node.js event: detect +2022-10-17 10:35:42 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg movenet +2022-10-17 10:35:42 DATA:  test-backend-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-10-17 10:35:42 DATA:  test-backend-node.js result: performance: load: null total: 279 +2022-10-17 10:35:42 STATE: test-backend-node.js passed: movenet +2022-10-17 10:35:42 INFO:  test-backend-node.js test face matching +2022-10-17 10:35:42 STATE: test-backend-node.js passed: face database 40 +2022-10-17 10:35:42 STATE: test-backend-node.js passed: face match {"first":{"index":4,"similarity":0.7827852251220577}} {"second":{"index":4,"similarity":0.5002052057057577}} {"third":{"index":4,"similarity":0.5401588464054732}} +2022-10-17 10:35:42 INFO:  test-backend-node.js test face similarity alternative +2022-10-17 10:35:42 STATE: test-backend-node.js start face embeddings +2022-10-17 10:35:42 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-10-17 10:35:42 STATE: test-backend-node.js event: image +2022-10-17 10:35:42 ERROR: test-backend-node.js failed: testDetect face embeddings +2022-10-17 10:35:42 ERROR: test-backend-node.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node.js:99:175358"," at new Promise ()"," at q5 (/home/vlado/dev/human/dist/human.node.js:99:175127)"," at R1 (/home/vlado/dev/human/dist/human.node.js:111:11475)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node.js:830:8854"]} +2022-10-17 10:35:43 INFO:  +2022-10-17 10:35:43 INFO:  test-backend-node-gpu.js start +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js test: configuration validation +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: configuration default validation [] +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js test: model load +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: models loaded 25 11 [{"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":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js test: warmup +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: create human +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js human version: 3.0.0 +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js platform: linux x64 agent: NodeJS v18.10.0 +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js tfjs version: 4.0.0 +2022-10-17 10:35:44 INFO:  test-backend-node-gpu.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.10.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":true},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: set backend: tensorflow +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js tensors 1785 +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: load models +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js result: defined models: 25 loaded models: 11 +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: warmup: none default +2022-10-17 10:35:44 DATA:  test-backend-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-10-17 10:35:44 DATA:  test-backend-node-gpu.js result: performance: load: null total: null +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js passed: warmup none result match +2022-10-17 10:35:44 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: warmup +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: warmup: face default +2022-10-17 10:35:47 DATA:  test-backend-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-10-17 10:35:47 DATA:  test-backend-node-gpu.js result: performance: load: null total: 2722 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: warmup face result match +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: warmup +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: warmup: body default +2022-10-17 10:35:47 DATA:  test-backend-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-10-17 10:35:47 DATA:  test-backend-node-gpu.js result: performance: load: null total: 141 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: warmup body result match +2022-10-17 10:35:47 STATE: test-backend-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-10-17 10:35:47 INFO:  test-backend-node-gpu.js test: details verification +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js start default +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-10-17 10:35:47 DATA:  test-backend-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-10-17 10:35:47 DATA:  test-backend-node-gpu.js result: performance: load: null total: 134 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details face length 1 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details face score 1 0.93 1 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details face arrays 4 478 1024 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details face anti-spoofing 0.79 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details face liveness 0.83 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details body length 1 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details body 0.92 17 6 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details hand length 1 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details hand 0.51 0.73 point +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details hand arrays 21 5 7 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details gesture length 7 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details object length 1 +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: details object 0.72 person +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:47 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:48 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-10-17 10:35:49 INFO:  test-backend-node-gpu.js test default +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js start async +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg async +2022-10-17 10:35:49 DATA:  test-backend-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-10-17 10:35:49 DATA:  test-backend-node-gpu.js result: performance: load: null total: 119 +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: default result face match 1 female 0.97 +2022-10-17 10:35:49 INFO:  test-backend-node-gpu.js test sync +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js start sync +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sync +2022-10-17 10:35:49 DATA:  test-backend-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-10-17 10:35:49 DATA:  test-backend-node-gpu.js result: performance: load: null total: 124 +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: default sync 1 female 0.97 +2022-10-17 10:35:49 INFO:  test-backend-node-gpu.js test: image process +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: image input null [1,256,256,3] +2022-10-17 10:35:49 INFO:  test-backend-node-gpu.js test: image null +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: invalid input could not convert input to tensor +2022-10-17 10:35:49 INFO:  test-backend-node-gpu.js test face similarity +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js start face similarity +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity +2022-10-17 10:35:49 DATA:  test-backend-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-10-17 10:35:49 DATA:  test-backend-node-gpu.js result: performance: load: null total: 116 +2022-10-17 10:35:49 STATE: test-backend-node-gpu.js start face similarity +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity +2022-10-17 10:35:50 DATA:  test-backend-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-10-17 10:35:50 DATA:  test-backend-node-gpu.js result: performance: load: null total: 114 +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js start face similarity +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-10-17 10:35:50 DATA:  test-backend-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-10-17 10:35:50 DATA:  test-backend-node-gpu.js result: performance: load: null total: 102 +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: face descriptor +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: face similarity {"similarity":[1,0.4475002983522097,0.5570879556505012],"descriptors":[1024,1024,1024]} +2022-10-17 10:35:50 INFO:  test-backend-node-gpu.js test object +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js start object +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-10-17 10:35:50 DATA:  test-backend-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-10-17 10:35:50 DATA:  test-backend-node-gpu.js result: performance: load: null total: 132 +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js passed: centernet +2022-10-17 10:35:50 STATE: test-backend-node-gpu.js start object +2022-10-17 10:35:51 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:51 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:51 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:51 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-10-17 10:35:51 DATA:  test-backend-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-10-17 10:35:51 DATA:  test-backend-node-gpu.js result: performance: load: null total: 547 +2022-10-17 10:35:51 STATE: test-backend-node-gpu.js passed: nanodet +2022-10-17 10:35:51 INFO:  test-backend-node-gpu.js test sensitive +2022-10-17 10:35:51 STATE: test-backend-node-gpu.js start sensitive +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive +2022-10-17 10:35:52 DATA:  test-backend-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-10-17 10:35:52 DATA:  test-backend-node-gpu.js result: performance: load: null total: 105 +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js passed: sensitive result match +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js passed: sensitive face result match +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js passed: sensitive body result match +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js passed: sensitive hand result match +2022-10-17 10:35:52 INFO:  test-backend-node-gpu.js test body +2022-10-17 10:35:52 STATE: test-backend-node-gpu.js start blazepose +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose +2022-10-17 10:35:54 DATA:  test-backend-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-10-17 10:35:54 DATA:  test-backend-node-gpu.js result: performance: load: null total: 267 +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js passed: blazepose +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js start efficientpose +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:54 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:55 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:55 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-10-17 10:35:55 DATA:  test-backend-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-10-17 10:35:55 DATA:  test-backend-node-gpu.js result: performance: load: null total: 1008 +2022-10-17 10:35:55 STATE: test-backend-node-gpu.js passed: efficientpose +2022-10-17 10:35:55 STATE: test-backend-node-gpu.js start posenet +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet +2022-10-17 10:35:56 DATA:  test-backend-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-10-17 10:35:56 DATA:  test-backend-node-gpu.js result: performance: load: null total: 182 +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js passed: posenet +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js start movenet +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-10-17 10:35:56 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js event: detect +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet +2022-10-17 10:35:57 DATA:  test-backend-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-10-17 10:35:57 DATA:  test-backend-node-gpu.js result: performance: load: null total: 119 +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js passed: movenet +2022-10-17 10:35:57 INFO:  test-backend-node-gpu.js test face matching +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js passed: face database 40 +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7829338043932047}} {"second":{"index":4,"similarity":0.5002928781584631}} {"third":{"index":4,"similarity":0.5402934771672516}} +2022-10-17 10:35:57 INFO:  test-backend-node-gpu.js test face similarity alternative +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js start face embeddings +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-10-17 10:35:57 STATE: test-backend-node-gpu.js event: image +2022-10-17 10:35:57 ERROR: test-backend-node-gpu.js failed: testDetect face embeddings +2022-10-17 10:35:57 ERROR: test-backend-node-gpu.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node-gpu.js:99:175358"," at new Promise ()"," at q5 (/home/vlado/dev/human/dist/human.node-gpu.js:99:175127)"," at R1 (/home/vlado/dev/human/dist/human.node-gpu.js:111:11475)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node-gpu.js:830:8854"]} +2022-10-17 10:35:58 INFO:  +2022-10-17 10:35:58 INFO:  test-backend-node-wasm.js start +2022-10-17 10:35:58 DATA:  test-backend-node-wasm.js stdout: 2022-10-17 10:35:58 INFO:  { supported: true, backend: true, simd: true, multithread: false } https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.0.0/dist/ +2022-10-17 10:35:58 STATE: test-backend-node-wasm.js passed: model server: https://vladmandic.github.io/human-models/models/ +2022-10-17 10:35:58 INFO:  test-backend-node-wasm.js test: configuration validation +2022-10-17 10:35:58 STATE: test-backend-node-wasm.js passed: configuration default validation [] +2022-10-17 10:35:58 STATE: test-backend-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-10-17 10:35:58 INFO:  test-backend-node-wasm.js test: model load +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: models loaded 25 11 [{"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/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/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human-models/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human-models/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human-models/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human-models/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/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human-models/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human-models/models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human-models/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human-models/models/antispoof.json"}] +2022-10-17 10:36:01 INFO:  test-backend-node-wasm.js memory: {"memory":{"unreliable":false,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} +2022-10-17 10:36:01 INFO:  test-backend-node-wasm.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-10-17 10:36:01 INFO:  test-backend-node-wasm.js test: warmup +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: create human +2022-10-17 10:36:01 INFO:  test-backend-node-wasm.js human version: 3.0.0 +2022-10-17 10:36:01 INFO:  test-backend-node-wasm.js platform: linux x64 agent: NodeJS v18.10.0 +2022-10-17 10:36:01 INFO:  test-backend-node-wasm.js tfjs version: 4.0.0 +2022-10-17 10:36:01 INFO:  test-backend-node-wasm.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v18.10.0","backends":["wasm"],"initial":false,"tfjs":{"version":"4.0.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-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: set backend: wasm +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js tensors 1785 +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: load models +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js result: defined models: 25 loaded models: 11 +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: warmup: none default +2022-10-17 10:36:01 DATA:  test-backend-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-10-17 10:36:01 DATA:  test-backend-node-wasm.js result: performance: load: null total: null +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: warmup none result match +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js event: warmup +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: warmup: face default +2022-10-17 10:36:01 DATA:  test-backend-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-10-17 10:36:01 DATA:  test-backend-node-wasm.js result: performance: load: null total: 532 +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js passed: warmup face result match +2022-10-17 10:36:01 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js event: warmup +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: warmup: body default +2022-10-17 10:36:02 DATA:  test-backend-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-10-17 10:36:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 376 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: warmup body result match +2022-10-17 10:36:02 STATE: test-backend-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-10-17 10:36:02 INFO:  test-backend-node-wasm.js test: details verification +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js start default +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-10-17 10:36:02 DATA:  test-backend-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-10-17 10:36:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 346 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details face length 1 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details face score 1 0.93 1 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details face arrays 4 478 1024 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details face anti-spoofing 0.79 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details face liveness 0.83 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details body length 1 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details body 0.92 17 6 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details hand length 1 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details hand 0.51 0.73 point +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details hand arrays 21 5 7 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details gesture length 7 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details object length 1 +2022-10-17 10:36:02 STATE: test-backend-node-wasm.js passed: details object 0.72 person +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:03 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-10-17 10:36:04 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:04 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:04 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:04 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-10-17 10:36:04 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:04 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-10-17 10:36:05 INFO:  test-backend-node-wasm.js test default +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js start async +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:05 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg async +2022-10-17 10:36:06 DATA:  test-backend-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-10-17 10:36:06 DATA:  test-backend-node-wasm.js result: performance: load: null total: 326 +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: default result face match 1 female 0.97 +2022-10-17 10:36:06 INFO:  test-backend-node-wasm.js test sync +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js start sync +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sync +2022-10-17 10:36:06 DATA:  test-backend-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-10-17 10:36:06 DATA:  test-backend-node-wasm.js result: performance: load: null total: 333 +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: default sync 1 female 0.97 +2022-10-17 10:36:06 INFO:  test-backend-node-wasm.js test: image process +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: image input null [1,256,256,3] +2022-10-17 10:36:06 INFO:  test-backend-node-wasm.js test: image null +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: invalid input could not convert input to tensor +2022-10-17 10:36:06 INFO:  test-backend-node-wasm.js test face similarity +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js start face similarity +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity +2022-10-17 10:36:06 DATA:  test-backend-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-10-17 10:36:06 DATA:  test-backend-node-wasm.js result: performance: load: null total: 311 +2022-10-17 10:36:06 STATE: test-backend-node-wasm.js start face similarity +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity +2022-10-17 10:36:07 DATA:  test-backend-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-10-17 10:36:07 DATA:  test-backend-node-wasm.js result: performance: load: null total: 339 +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js start face similarity +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-10-17 10:36:07 DATA:  test-backend-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-10-17 10:36:07 DATA:  test-backend-node-wasm.js result: performance: load: null total: 297 +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js passed: face descriptor +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} +2022-10-17 10:36:07 INFO:  test-backend-node-wasm.js test object +2022-10-17 10:36:07 STATE: test-backend-node-wasm.js start object +2022-10-17 10:36:08 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:08 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:08 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:08 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-10-17 10:36:08 DATA:  test-backend-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-10-17 10:36:08 DATA:  test-backend-node-wasm.js result: performance: load: null total: 326 +2022-10-17 10:36:08 STATE: test-backend-node-wasm.js passed: centernet +2022-10-17 10:36:08 STATE: test-backend-node-wasm.js start object +2022-10-17 10:36:09 WARN:  test-backend-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-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-10-17 10:36:09 DATA:  test-backend-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-10-17 10:36:09 DATA:  test-backend-node-wasm.js result: performance: load: null total: 217 +2022-10-17 10:36:09 ERROR: test-backend-node-wasm.js failed: nanodet [] +2022-10-17 10:36:09 INFO:  test-backend-node-wasm.js test sensitive +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js start sensitive +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive +2022-10-17 10:36:09 DATA:  test-backend-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-10-17 10:36:09 DATA:  test-backend-node-wasm.js result: performance: load: null total: 243 +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: sensitive result match +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: sensitive face result match +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: sensitive face emotion result [{"score":0.46,"emotion":"neutral"},{"score":0.24,"emotion":"fear"},{"score":0.17,"emotion":"sad"}] +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: sensitive body result match +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js passed: sensitive hand result match +2022-10-17 10:36:09 INFO:  test-backend-node-wasm.js test body +2022-10-17 10:36:09 STATE: test-backend-node-wasm.js start blazepose +2022-10-17 10:36:11 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:11 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:12 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:12 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose +2022-10-17 10:36:12 DATA:  test-backend-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-10-17 10:36:12 DATA:  test-backend-node-wasm.js result: performance: load: null total: 403 +2022-10-17 10:36:12 STATE: test-backend-node-wasm.js passed: blazepose +2022-10-17 10:36:12 STATE: test-backend-node-wasm.js start efficientpose +2022-10-17 10:36:12 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:12 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:13 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:13 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-10-17 10:36:13 DATA:  test-backend-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-10-17 10:36:13 DATA:  test-backend-node-wasm.js result: performance: load: null total: 656 +2022-10-17 10:36:13 STATE: test-backend-node-wasm.js passed: efficientpose +2022-10-17 10:36:13 STATE: test-backend-node-wasm.js start posenet +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet +2022-10-17 10:36:14 DATA:  test-backend-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-10-17 10:36:14 DATA:  test-backend-node-wasm.js result: performance: load: null total: 290 +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js passed: posenet +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js start movenet +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js event: detect +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet +2022-10-17 10:36:14 DATA:  test-backend-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-10-17 10:36:14 DATA:  test-backend-node-wasm.js result: performance: load: null total: 236 +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js passed: movenet +2022-10-17 10:36:14 INFO:  test-backend-node-wasm.js test face matching +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js passed: face database 40 +2022-10-17 10:36:14 STATE: test-backend-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-10-17 10:36:14 INFO:  test-backend-node-wasm.js test face similarity alternative +2022-10-17 10:36:14 STATE: test-backend-node-wasm.js start face embeddings +2022-10-17 10:36:15 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-10-17 10:36:15 STATE: test-backend-node-wasm.js event: image +2022-10-17 10:36:15 ERROR: test-backend-node-wasm.js failed: testDetect face embeddings +2022-10-17 10:36:15 ERROR: test-backend-node-wasm.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node-wasm.js:99:175358"," at new Promise ()"," at U5 (/home/vlado/dev/human/dist/human.node-wasm.js:99:175127)"," at k1 (/home/vlado/dev/human/dist/human.node-wasm.js:111:11475)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node-wasm.js:830:8854"]} +2022-10-17 10:36:15 STATE: all tests complete +2022-10-17 10:36:15 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"../demo/nodejs/process-folder.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"../demo/facematch/node-match.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"test-node-load.js","passed":1,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"test-node-gear.js","passed":3,"failed":0} +2022-10-17 10:36:15 INFO:  status {"test":"test-backend-node.js","passed":85,"failed":1} +2022-10-17 10:36:15 INFO:  status {"test":"test-backend-node-gpu.js","passed":85,"failed":1} +2022-10-17 10:36:15 INFO:  status {"test":"test-backend-node-wasm.js","passed":85,"failed":2} +2022-10-17 10:36:15 INFO:  failures {"count":4} +2022-10-17 10:36:15 WARN:  failed {"test":"test-backend-node.js","message":["error",["failed:","testDetect face embeddings"]]} +2022-10-17 10:36:15 WARN:  failed {"test":"test-backend-node-gpu.js","message":["error",["failed:","testDetect face embeddings"]]} +2022-10-17 10:36:15 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: nanodet",[]]]} +2022-10-17 10:36:15 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed:","testDetect face embeddings"]]} diff --git a/tfjs/tf-browser.ts b/tfjs/tf-browser.ts index f1139eee..c1e9d7e8 100644 --- a/tfjs/tf-browser.ts +++ b/tfjs/tf-browser.ts @@ -1,21 +1,25 @@ -/** - * Creates tfjs bundle used by Human browser build target +/** Creates tfjs bundle used by Human browser build target * @external */ /* eslint-disable import/no-extraneous-dependencies */ -// export all from build bundle -export * from '@tensorflow/tfjs/dist/index.js'; -export * from '@tensorflow/tfjs-backend-webgl/dist/index.js'; -// export * from '@tensorflow/tfjs-backend-wasm/dist/index.js'; +// export * from '@vladmandic/tfjs/dist/tfjs-core.esm.js'; +// export * from '@vladmandic/tfjs/dist/tfjs.esm.js'; -// add webgpu to bundle, experimental -// export * from '@tensorflow/tfjs-backend-webgpu/dist/index.js'; +// export all from build bundle +export * from '@tensorflow/tfjs-core/dist/index.js'; +// export * from '@tensorflow/tfjs-data/dist/index.js'; +// export * from '@tensorflow/tfjs-layers/dist/index.js'; +export * from '@tensorflow/tfjs-converter/dist/index.js'; +export * from '@tensorflow/tfjs-backend-cpu/dist/index.js'; +export * from '@tensorflow/tfjs-backend-webgl/dist/index.js'; +export * from '@tensorflow/tfjs-backend-wasm/dist/index.js'; +export * from '@tensorflow/tfjs-backend-webgpu/dist/index.js'; + +// add tflite to bundle, experimental +// @ts-ignore duplicate definition for setWasmPath +// export * from '@tensorflow/tfjs-tflite/dist/index.js'; // export versions, overrides version object from @tensorflow/tfjs -export { version } from '../dist/tfjs.version.js'; - -// export utility types used by Human -export { Tensor } from '@tensorflow/tfjs/dist/index.js'; -export { GraphModel } from '@tensorflow/tfjs-converter/dist/index'; +export { version } from 'dist/tfjs.version.js'; diff --git a/tfjs/tf-node-gpu.ts b/tfjs/tf-node-gpu.ts index a7dcb93c..beea291b 100644 --- a/tfjs/tf-node-gpu.ts +++ b/tfjs/tf-node-gpu.ts @@ -5,3 +5,5 @@ /* eslint-disable import/no-extraneous-dependencies */ export * from '@tensorflow/tfjs-node-gpu'; + +export { version } from 'dist/tfjs.version.js'; diff --git a/tfjs/tf-node-wasm.ts b/tfjs/tf-node-wasm.ts index 122351b0..8c68d19a 100644 --- a/tfjs/tf-node-wasm.ts +++ b/tfjs/tf-node-wasm.ts @@ -4,5 +4,8 @@ /* eslint-disable import/no-extraneous-dependencies */ -export * from '@tensorflow/tfjs'; +export * from '@tensorflow/tfjs-core'; +export * from '@tensorflow/tfjs-converter'; export * from '@tensorflow/tfjs-backend-wasm'; + +export { version } from 'dist/tfjs.version.js'; diff --git a/tfjs/tf-node.ts b/tfjs/tf-node.ts index 7945d4e0..71600883 100644 --- a/tfjs/tf-node.ts +++ b/tfjs/tf-node.ts @@ -5,3 +5,5 @@ /* eslint-disable import/no-extraneous-dependencies */ export * from '@tensorflow/tfjs-node'; + +export { version } from 'dist/tfjs.version.js'; diff --git a/tfjs/tf-version.ts b/tfjs/tf-version.ts index b3564e53..69020e90 100644 --- a/tfjs/tf-version.ts +++ b/tfjs/tf-version.ts @@ -1,22 +1,24 @@ /* eslint-disable import/no-extraneous-dependencies */ // get versions of all packages -import { version as tfjsVersion } from '@tensorflow/tfjs/package.json'; +// import { version as tfjsVersion } from '@tensorflow/tfjs/package.json'; import { version as tfjsCoreVersion } from '@tensorflow/tfjs-core/package.json'; -import { version as tfjsDataVersion } from '@tensorflow/tfjs-data/package.json'; -import { version as tfjsLayersVersion } from '@tensorflow/tfjs-layers/package.json'; import { version as tfjsConverterVersion } from '@tensorflow/tfjs-converter/package.json'; -// import { version as tfjsBackendCPUVersion } from '@tensorflow/tfjs-backend-cpu/package.json'; +// import { version as tfjsDataVersion } from '@tensorflow/tfjs-data/package.json'; +// import { version as tfjsLayersVersion } from '@tensorflow/tfjs-layers/package.json'; +import { version as tfjsBackendCPUVersion } from '@tensorflow/tfjs-backend-cpu/package.json'; import { version as tfjsBackendWebGLVersion } from '@tensorflow/tfjs-backend-webgl/package.json'; import { version as tfjsBackendWASMVersion } from '@tensorflow/tfjs-backend-wasm/package.json'; +import { version as tfjsBackendWebGPUVersion } from '@tensorflow/tfjs-backend-webgpu/package.json'; export const version = { - tfjs: tfjsVersion, + tfjs: tfjsCoreVersion, 'tfjs-core': tfjsCoreVersion, - 'tfjs-data': tfjsDataVersion, - 'tfjs-layers': tfjsLayersVersion, + // 'tfjs-data': tfjsDataVersion, + // 'tfjs-layers': tfjsLayersVersion, 'tfjs-converter': tfjsConverterVersion, - // 'tfjs-backend-cpu': tfjsBackendCPUVersion, + 'tfjs-backend-cpu': tfjsBackendCPUVersion, 'tfjs-backend-webgl': tfjsBackendWebGLVersion, 'tfjs-backend-wasm': tfjsBackendWASMVersion, + 'tfjs-backend-webgpu': tfjsBackendWebGPUVersion, };