diff --git a/.api-extractor.json b/.api-extractor.json index 007617e4..e1f8299b 100644 --- a/.api-extractor.json +++ b/.api-extractor.json @@ -1,7 +1,7 @@ { "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", "mainEntryPointFilePath": "types/lib/src/human.d.ts", - "bundledPackages": ["@types/offscreencanvas", "@tensorflow/tfjs-core", "@tensorflow/tfjs-converter", "@tensorflow/tfjs-data"], + "bundledPackages": ["@tensorflow/tfjs-core", "@tensorflow/tfjs-converter", "@tensorflow/tfjs-data", "@tensorflow/tfjs-layers"], "compiler": { "skipLibCheck": false }, diff --git a/.build.json b/.build.json index 15e5a484..971b2f55 100644 --- a/.build.json +++ b/.build.json @@ -108,7 +108,7 @@ "format": "esm", "input": "src/human.ts", "output": "dist/human.esm-nobundle.js", - "sourcemap": true, + "sourcemap": false, "external": ["@tensorflow"] }, { diff --git a/.eslintrc.json b/.eslintrc.json index 7815c0a2..3b9f9394 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -70,6 +70,54 @@ "radix":"off" } }, + { + "files": ["**/*.d.ts"], + "env": { + "browser": true, + "commonjs": false, + "node": false, + "es2021": true + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "project": ["./tsconfig.json"] + }, + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "airbnb-base", + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:@typescript-eslint/strict", + "plugin:import/recommended", + "plugin:promise/recommended" + ], + "rules": { + "@typescript-eslint/array-type":"off", + "@typescript-eslint/ban-types":"off", + "@typescript-eslint/consistent-indexed-object-style":"off", + "@typescript-eslint/consistent-type-definitions":"off", + "@typescript-eslint/no-empty-interface":"off", + "@typescript-eslint/no-explicit-any":"off", + "@typescript-eslint/no-invalid-void-type":"off", + "@typescript-eslint/no-unnecessary-type-arguments":"off", + "@typescript-eslint/no-unnecessary-type-constraint":"off", + "comma-dangle":"off", + "indent":"off", + "lines-between-class-members":"off", + "max-classes-per-file":"off", + "max-len":"off", + "no-multiple-empty-lines":"off", + "no-shadow":"off", + "no-use-before-define":"off", + "quotes":"off", + "semi":"off" + } + }, { "files": ["**/*.js"], "env": { diff --git a/CHANGELOG.md b/CHANGELOG.md index 9eef4be8..b598967a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ ## Changelog -### **HEAD -> main** 2022/09/27 mandic00@live.com +### **HEAD -> main** 2022/09/29 mandic00@live.com - create funding.yml - fix rotation interpolation diff --git a/TODO.md b/TODO.md index 67a7b574..aa1b58e5 100644 --- a/TODO.md +++ b/TODO.md @@ -24,11 +24,11 @@ N/A ### Face with Attention -`FaceMesh-Attention` is not supported in browser using `WASM` backend due to missing kernel op in **TFJS** +`FaceMesh-Attention` is not supported when using `WASM` backend due to missing kernel op in **TFJS** ### Object Detection -`NanoDet` model is not supported in in browser using `WASM` backend due to missing kernel op in **TFJS** +`NanoDet` model is not supported when using `WASM` backend due to missing kernel op in **TFJS** ### WebGPU @@ -45,16 +45,20 @@ Enable via `about:config` -> `gfx.offscreencanvas.enabled` ## Pending Release Changes - New methods [`human.webcam.*`](https://vladmandic.github.io/human/typedoc/classes/WebCam.html) - Directgly configures and controls WebCam streams + Enables built-in configuration and control of **WebCam** streams - New method [`human.video()`](https://vladmandic.github.io/human/typedoc/classes/Human.html#video) - Runs continous detection of an input video instead of processing each frame manually using `human.detect()` -- New simple demo [*Live*](https://vladmandic.github.io/human/demo/video/index.html) - Full HTML and JavaScript code in less than a screen -- New advanced demo using BabylonJS -- Enable model cache when using web workers -- Fix for `face.rotation` interpolation + Runs continous detection of an input **video** + instead of processing each frame manually using `human.detect()` +- New simple demo [*Live*](https://vladmandic.github.io/human/demo/video/index.html) | [*Code*](https://github.com/vladmandic/human/blob/main/demo/video/index.html) + *Full HTML and JavaScript code in less than a screen* +- New advanced demo using **BabylonJS and VRM** [*Live*](https://vladmandic.github.io/human-bjs-vrm) | [*Code*](https://github.com/vladmandic/human-bjs-vrm) +- Update **TypeDoc** generation [*Link*](https://vladmandic.github.io/human/typedoc) +- Update **TypeDefs** bundle generation [*Link*](https://github.com/vladmandic/human/blob/main/types/human.d.ts) + No external dependencies +- Fix model caching when using web workers +- Fix `face.rotation` when using interpolation - Improve NodeJS resolver when using ESM - Update demo `demo/typescript` - Update demo `demo/faceid` - Update demo `demo/nodejs/process-folder.js` - and re-process `/samples` + and re-process `/samples` [*Link*](https://vladmandic.github.io/human/samples) diff --git a/build.js b/build.js index 98850fa5..db38a1e2 100644 --- a/build.js +++ b/build.js @@ -37,6 +37,21 @@ function copy(src, dst) { fs.writeFileSync(dst, buffer); } +function write(str, dst) { + fs.writeFileSync(dst, str); +} + +function filter(str, src) { + if (!fs.existsSync(src)) return; + const buffer = fs.readFileSync(src, 'UTF-8'); + const lines = buffer.split(/\r?\n/); + const out = []; + for (const line of lines) { + if (!line.includes(str)) out.push(line); + } + fs.writeFileSync(src, out.join('\n')); +} + async function analyzeModels() { log.info('Analyze models:', { folders: modelsFolders.length, result: modelsOut }); let totalSize = 0; @@ -95,13 +110,24 @@ async function main() { }); log.state('API-Extractor:', { succeeeded: extractorResult.succeeded, errors: extractorResult.errorCount, warnings: extractorResult.warningCount }); // distribute typedefs - log.state('Copy:', { input: 'types/human.d.ts' }); - copy('types/human.d.ts', 'dist/human.esm-nobundle.d.ts'); - copy('types/human.d.ts', 'dist/human.esm.d.ts'); - copy('types/human.d.ts', 'dist/human.d.ts'); - copy('types/human.d.ts', 'dist/human.node-gpu.d.ts'); - copy('types/human.d.ts', 'dist/human.node.d.ts'); - copy('types/human.d.ts', 'dist/human.node-wasm.d.ts'); + // log.state('Copy:', { input: 'types/human.d.ts' }); + // copy('types/human.d.ts', 'dist/human.esm-nobundle.d.ts'); + // copy('types/human.d.ts', 'dist/human.esm.d.ts'); + // copy('types/human.d.ts', 'dist/human.d.ts'); + // copy('types/human.d.ts', 'dist/human.node-gpu.d.ts'); + // copy('types/human.d.ts', 'dist/human.node.d.ts'); + // copy('types/human.d.ts', 'dist/human.node-wasm.d.ts'); + log.state('Filter:', { input: 'types/human.d.ts' }); + filter('reference types', 'types/human.d.ts'); + log.state('Link:', { input: 'types/human.d.ts' }); + write('export * from \'../types/human\';', 'dist/human.esm-nobundle.d.ts'); + write('export * from \'../types/human\';', 'dist/human.esm.d.ts'); + write('export * from \'../types/human\';', 'dist/human.d.ts'); + write('export * from \'../types/human\';', 'dist/human.node-gpu.d.ts'); + write('export * from \'../types/human\';', 'dist/human.node.d.ts'); + write('export * from \'../types/human\';', 'dist/human.node-wasm.d.ts'); + // export * from '../types/human'; + // generate model signature await analyzeModels(); log.info('Human Build complete...', { logFile }); diff --git a/demo/typescript/index.js.map b/demo/typescript/index.js.map index d767529d..0f131def 100644 --- a/demo/typescript/index.js.map +++ b/demo/typescript/index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["index.ts"], - "sourcesContent": ["/**\n * Human demo for browsers\n * @default Human Library\n * @summary \n * @author \n * @copyright \n * @license MIT\n */\n\nimport * as H from '../../dist/human.esm.js'; // equivalent of @vladmandic/Human\n\nconst humanConfig: Partial = { // user configuration for human, used to fine-tune behavior\n // backend: 'wasm' as const,\n // wasmPath: 'https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@3.20.0/dist/',\n // cacheSensitivity: 0,\n // async: false,\n modelBasePath: '../../models',\n filter: { enabled: true, equalization: false, flip: false },\n face: { enabled: true, detector: { rotation: false }, mesh: { enabled: true }, attention: { enabled: false }, iris: { enabled: true }, description: { enabled: true }, emotion: { enabled: true } },\n body: { enabled: true },\n hand: { enabled: true },\n object: { enabled: false },\n segmentation: { enabled: false },\n gesture: { enabled: true },\n};\n\nconst human = new H.Human(humanConfig); // create instance of human with overrides from user configuration\n\nhuman.env.perfadd = false; // is performance data showing instant or total values\nhuman.draw.options.font = 'small-caps 18px \"Lato\"'; // set font used to draw labels when using draw methods\nhuman.draw.options.lineHeight = 20;\n// human.draw.options.fillPolygons = true;\n\nconst dom = { // grab instances of dom objects so we dont have to look them up later\n video: document.getElementById('video') as HTMLVideoElement,\n canvas: document.getElementById('canvas') as HTMLCanvasElement,\n log: document.getElementById('log') as HTMLPreElement,\n fps: document.getElementById('status') as HTMLPreElement,\n perf: document.getElementById('performance') as HTMLDivElement,\n};\nconst timestamp = { detect: 0, draw: 0, tensors: 0, start: 0 }; // holds information used to calculate performance and possible memory leaks\nconst fps = { detectFPS: 0, drawFPS: 0, frames: 0, averageMs: 0 }; // holds calculated fps information for both detect and screen refresh\n\nconst log = (...msg) => { // helper method to output messages\n dom.log.innerText += msg.join(' ') + '\\n';\n console.log(...msg); // eslint-disable-line no-console\n};\nconst status = (msg) => dom.fps.innerText = msg; // print status element\nconst perf = (msg) => dom.perf.innerText = 'tensors:' + (human.tf.memory().numTensors as number).toString() + ' | performance: ' + JSON.stringify(msg).replace(/\"|{|}/g, '').replace(/,/g, ' | '); // print performance element\n\nasync function detectionLoop() { // main detection loop\n if (!dom.video.paused) {\n if (timestamp.start === 0) timestamp.start = human.now();\n // log('profiling data:', await human.profile(dom.video));\n await human.detect(dom.video); // actual detection; were not capturing output in a local variable as it can also be reached via human.result\n const tensors = human.tf.memory().numTensors; // check current tensor usage for memory leaks\n if (tensors - timestamp.tensors !== 0) log('allocated tensors:', tensors - timestamp.tensors); // printed on start and each time there is a tensor leak\n timestamp.tensors = tensors;\n fps.detectFPS = Math.round(1000 * 1000 / (human.now() - timestamp.detect)) / 1000;\n fps.frames++;\n fps.averageMs = Math.round(1000 * (human.now() - timestamp.start) / fps.frames) / 1000;\n if (fps.frames % 100 === 0 && !dom.video.paused) log('performance', { ...fps, tensors: timestamp.tensors });\n }\n timestamp.detect = human.now();\n requestAnimationFrame(detectionLoop); // start new frame immediately\n}\n\nasync function drawLoop() { // main screen refresh loop\n if (!dom.video.paused) {\n const interpolated = human.next(human.result); // smoothen result using last-known results\n if (human.config.filter.flip) human.draw.canvas(interpolated.canvas as HTMLCanvasElement, dom.canvas); // draw processed image to screen canvas\n else human.draw.canvas(dom.video, dom.canvas); // draw original video to screen canvas // better than using procesed image as this loop happens faster than processing loop\n await human.draw.all(dom.canvas, interpolated); // draw labels, boxes, lines, etc.\n perf(interpolated.performance); // write performance data\n }\n const now = human.now();\n fps.drawFPS = Math.round(1000 * 1000 / (now - timestamp.draw)) / 1000;\n timestamp.draw = now;\n status(dom.video.paused ? 'paused' : `fps: ${fps.detectFPS.toFixed(1).padStart(5, ' ')} detect | ${fps.drawFPS.toFixed(1).padStart(5, ' ')} draw`); // write status\n setTimeout(drawLoop, 30); // use to slow down refresh from max refresh rate to target of 30 fps\n}\n\nasync function webCam() {\n await human.webcam.start({ element: dom.video, crop: true }); // use human webcam helper methods and associate webcam stream with a dom element\n dom.canvas.width = human.webcam.width;\n dom.canvas.height = human.webcam.height;\n dom.canvas.onclick = async () => { // pause when clicked on screen and resume on next click\n if (human.webcam.paused) await human.webcam.play();\n else human.webcam.pause();\n };\n}\n\nasync function main() { // main entry point\n log('human version:', human.version, '| tfjs version:', human.tf.version['tfjs-core']);\n log('platform:', human.env.platform, '| agent:', human.env.agent);\n status('loading...');\n await human.load(); // preload all models\n log('backend:', human.tf.getBackend(), '| available:', human.env.backends);\n log('models stats:', human.getModelStats());\n log('models loaded:', Object.values(human.models).filter((model) => model !== null).length);\n status('initializing...');\n await human.warmup(); // warmup function to initialize backend for future faster detection\n await webCam(); // start webcam\n await detectionLoop(); // start detection loop\n await drawLoop(); // start draw loop\n}\n\nwindow.onload = main;\n"], + "sourcesContent": ["/**\n * Human demo for browsers\n * @default Human Library\n * @summary \n * @author \n * @copyright \n * @license MIT\n */\n\nimport * as H from '../../dist/human.esm.js'; // equivalent of @vladmandic/Human\n\nconst humanConfig: Partial = { // user configuration for human, used to fine-tune behavior\n // backend: 'wasm',\n // wasmPath: 'https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@3.20.0/dist/',\n // cacheSensitivity: 0,\n // async: false,\n modelBasePath: '../../models',\n filter: { enabled: true, equalization: false, flip: false },\n face: { enabled: true, detector: { rotation: false }, mesh: { enabled: true }, attention: { enabled: false }, iris: { enabled: true }, description: { enabled: true }, emotion: { enabled: true } },\n body: { enabled: true },\n hand: { enabled: true },\n object: { enabled: false },\n segmentation: { enabled: false },\n gesture: { enabled: true },\n};\n\nconst human = new H.Human(humanConfig); // create instance of human with overrides from user configuration\n\nhuman.env.perfadd = false; // is performance data showing instant or total values\nhuman.draw.options.font = 'small-caps 18px \"Lato\"'; // set font used to draw labels when using draw methods\nhuman.draw.options.lineHeight = 20;\n// human.draw.options.fillPolygons = true;\n\nconst dom = { // grab instances of dom objects so we dont have to look them up later\n video: document.getElementById('video') as HTMLVideoElement,\n canvas: document.getElementById('canvas') as HTMLCanvasElement,\n log: document.getElementById('log') as HTMLPreElement,\n fps: document.getElementById('status') as HTMLPreElement,\n perf: document.getElementById('performance') as HTMLDivElement,\n};\nconst timestamp = { detect: 0, draw: 0, tensors: 0, start: 0 }; // holds information used to calculate performance and possible memory leaks\nconst fps = { detectFPS: 0, drawFPS: 0, frames: 0, averageMs: 0 }; // holds calculated fps information for both detect and screen refresh\n\nconst log = (...msg) => { // helper method to output messages\n dom.log.innerText += msg.join(' ') + '\\n';\n console.log(...msg); // eslint-disable-line no-console\n};\nconst status = (msg) => dom.fps.innerText = msg; // print status element\nconst perf = (msg) => dom.perf.innerText = 'tensors:' + (human.tf.memory().numTensors as number).toString() + ' | performance: ' + JSON.stringify(msg).replace(/\"|{|}/g, '').replace(/,/g, ' | '); // print performance element\n\nasync function detectionLoop() { // main detection loop\n if (!dom.video.paused) {\n if (timestamp.start === 0) timestamp.start = human.now();\n // log('profiling data:', await human.profile(dom.video));\n await human.detect(dom.video); // actual detection; were not capturing output in a local variable as it can also be reached via human.result\n const tensors = human.tf.memory().numTensors; // check current tensor usage for memory leaks\n if (tensors - timestamp.tensors !== 0) log('allocated tensors:', tensors - timestamp.tensors); // printed on start and each time there is a tensor leak\n timestamp.tensors = tensors;\n fps.detectFPS = Math.round(1000 * 1000 / (human.now() - timestamp.detect)) / 1000;\n fps.frames++;\n fps.averageMs = Math.round(1000 * (human.now() - timestamp.start) / fps.frames) / 1000;\n if (fps.frames % 100 === 0 && !dom.video.paused) log('performance', { ...fps, tensors: timestamp.tensors });\n }\n timestamp.detect = human.now();\n requestAnimationFrame(detectionLoop); // start new frame immediately\n}\n\nasync function drawLoop() { // main screen refresh loop\n if (!dom.video.paused) {\n const interpolated = human.next(human.result); // smoothen result using last-known results\n if (human.config.filter.flip) human.draw.canvas(interpolated.canvas as HTMLCanvasElement, dom.canvas); // draw processed image to screen canvas\n else human.draw.canvas(dom.video, dom.canvas); // draw original video to screen canvas // better than using procesed image as this loop happens faster than processing loop\n await human.draw.all(dom.canvas, interpolated); // draw labels, boxes, lines, etc.\n perf(interpolated.performance); // write performance data\n }\n const now = human.now();\n fps.drawFPS = Math.round(1000 * 1000 / (now - timestamp.draw)) / 1000;\n timestamp.draw = now;\n status(dom.video.paused ? 'paused' : `fps: ${fps.detectFPS.toFixed(1).padStart(5, ' ')} detect | ${fps.drawFPS.toFixed(1).padStart(5, ' ')} draw`); // write status\n setTimeout(drawLoop, 30); // use to slow down refresh from max refresh rate to target of 30 fps\n}\n\nasync function webCam() {\n await human.webcam.start({ element: dom.video, crop: true }); // use human webcam helper methods and associate webcam stream with a dom element\n dom.canvas.width = human.webcam.width;\n dom.canvas.height = human.webcam.height;\n dom.canvas.onclick = async () => { // pause when clicked on screen and resume on next click\n if (human.webcam.paused) await human.webcam.play();\n else human.webcam.pause();\n };\n}\n\nasync function main() { // main entry point\n log('human version:', human.version, '| tfjs version:', human.tf.version['tfjs-core']);\n log('platform:', human.env.platform, '| agent:', human.env.agent);\n status('loading...');\n await human.load(); // preload all models\n log('backend:', human.tf.getBackend(), '| available:', human.env.backends);\n log('models stats:', human.getModelStats());\n log('models loaded:', Object.values(human.models).filter((model) => model !== null).length);\n status('initializing...');\n await human.warmup(); // warmup function to initialize backend for future faster detection\n await webCam(); // start webcam\n await detectionLoop(); // start detection loop\n await drawLoop(); // start draw loop\n}\n\nwindow.onload = main;\n"], "mappings": ";;;;;;AASA,UAAYA,MAAO,0BAEnB,IAAMC,EAAiC,CAKrC,cAAe,eACf,OAAQ,CAAE,QAAS,GAAM,aAAc,GAAO,KAAM,EAAM,EAC1D,KAAM,CAAE,QAAS,GAAM,SAAU,CAAE,SAAU,EAAM,EAAG,KAAM,CAAE,QAAS,EAAK,EAAG,UAAW,CAAE,QAAS,EAAM,EAAG,KAAM,CAAE,QAAS,EAAK,EAAG,YAAa,CAAE,QAAS,EAAK,EAAG,QAAS,CAAE,QAAS,EAAK,CAAE,EAClM,KAAM,CAAE,QAAS,EAAK,EACtB,KAAM,CAAE,QAAS,EAAK,EACtB,OAAQ,CAAE,QAAS,EAAM,EACzB,aAAc,CAAE,QAAS,EAAM,EAC/B,QAAS,CAAE,QAAS,EAAK,CAC3B,EAEMC,EAAQ,IAAM,QAAMD,CAAW,EAErCC,EAAM,IAAI,QAAU,GACpBA,EAAM,KAAK,QAAQ,KAAO,yBAC1BA,EAAM,KAAK,QAAQ,WAAa,GAGhC,IAAMC,EAAM,CACV,MAAO,SAAS,eAAe,OAAO,EACtC,OAAQ,SAAS,eAAe,QAAQ,EACxC,IAAK,SAAS,eAAe,KAAK,EAClC,IAAK,SAAS,eAAe,QAAQ,EACrC,KAAM,SAAS,eAAe,aAAa,CAC7C,EACMC,EAAY,CAAE,OAAQ,EAAG,KAAM,EAAG,QAAS,EAAG,MAAO,CAAE,EACvDC,EAAM,CAAE,UAAW,EAAG,QAAS,EAAG,OAAQ,EAAG,UAAW,CAAE,EAE1DC,EAAM,IAAIC,IAAQ,CACtBJ,EAAI,IAAI,WAAaI,EAAI,KAAK,GAAG,EAAI;AAAA,EACrC,QAAQ,IAAI,GAAGA,CAAG,CACpB,EACMC,EAAUD,GAAQJ,EAAI,IAAI,UAAYI,EACtCE,EAAQF,GAAQJ,EAAI,KAAK,UAAY,WAAcD,EAAM,GAAG,OAAO,EAAE,WAAsB,SAAS,EAAI,mBAAqB,KAAK,UAAUK,CAAG,EAAE,QAAQ,SAAU,EAAE,EAAE,QAAQ,KAAM,KAAK,EAEhM,eAAeG,GAAgB,CAC7B,GAAI,CAACP,EAAI,MAAM,OAAQ,CACjBC,EAAU,QAAU,IAAGA,EAAU,MAAQF,EAAM,IAAI,GAEvD,MAAMA,EAAM,OAAOC,EAAI,KAAK,EAC5B,IAAMQ,EAAUT,EAAM,GAAG,OAAO,EAAE,WAC9BS,EAAUP,EAAU,UAAY,GAAGE,EAAI,qBAAsBK,EAAUP,EAAU,OAAO,EAC5FA,EAAU,QAAUO,EACpBN,EAAI,UAAY,KAAK,MAAM,IAAO,KAAQH,EAAM,IAAI,EAAIE,EAAU,OAAO,EAAI,IAC7EC,EAAI,SACJA,EAAI,UAAY,KAAK,MAAM,KAAQH,EAAM,IAAI,EAAIE,EAAU,OAASC,EAAI,MAAM,EAAI,IAC9EA,EAAI,OAAS,MAAQ,GAAK,CAACF,EAAI,MAAM,QAAQG,EAAI,cAAe,CAAE,GAAGD,EAAK,QAASD,EAAU,OAAQ,CAAC,CAC5G,CACAA,EAAU,OAASF,EAAM,IAAI,EAC7B,sBAAsBQ,CAAa,CACrC,CAEA,eAAeE,GAAW,CACxB,GAAI,CAACT,EAAI,MAAM,OAAQ,CACrB,IAAMU,EAAeX,EAAM,KAAKA,EAAM,MAAM,EACxCA,EAAM,OAAO,OAAO,KAAMA,EAAM,KAAK,OAAOW,EAAa,OAA6BV,EAAI,MAAM,EAC/FD,EAAM,KAAK,OAAOC,EAAI,MAAOA,EAAI,MAAM,EAC5C,MAAMD,EAAM,KAAK,IAAIC,EAAI,OAAQU,CAAY,EAC7CJ,EAAKI,EAAa,WAAW,CAC/B,CACA,IAAMC,EAAMZ,EAAM,IAAI,EACtBG,EAAI,QAAU,KAAK,MAAM,IAAO,KAAQS,EAAMV,EAAU,KAAK,EAAI,IACjEA,EAAU,KAAOU,EACjBN,EAAOL,EAAI,MAAM,OAAS,SAAW,QAAQE,EAAI,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAG,GAAG,cAAcA,EAAI,QAAQ,QAAQ,CAAC,EAAE,SAAS,EAAG,GAAG,QAAQ,EACjJ,WAAWO,EAAU,EAAE,CACzB,CAEA,eAAeG,GAAS,CACtB,MAAMb,EAAM,OAAO,MAAM,CAAE,QAASC,EAAI,MAAO,KAAM,EAAK,CAAC,EAC3DA,EAAI,OAAO,MAAQD,EAAM,OAAO,MAChCC,EAAI,OAAO,OAASD,EAAM,OAAO,OACjCC,EAAI,OAAO,QAAU,SAAY,CAC3BD,EAAM,OAAO,OAAQ,MAAMA,EAAM,OAAO,KAAK,EAC5CA,EAAM,OAAO,MAAM,CAC1B,CACF,CAEA,eAAec,GAAO,CACpBV,EAAI,iBAAkBJ,EAAM,QAAS,kBAAmBA,EAAM,GAAG,QAAQ,YAAY,EACrFI,EAAI,YAAaJ,EAAM,IAAI,SAAU,WAAYA,EAAM,IAAI,KAAK,EAChEM,EAAO,YAAY,EACnB,MAAMN,EAAM,KAAK,EACjBI,EAAI,WAAYJ,EAAM,GAAG,WAAW,EAAG,eAAgBA,EAAM,IAAI,QAAQ,EACzEI,EAAI,gBAAiBJ,EAAM,cAAc,CAAC,EAC1CI,EAAI,iBAAkB,OAAO,OAAOJ,EAAM,MAAM,EAAE,OAAQe,GAAUA,IAAU,IAAI,EAAE,MAAM,EAC1FT,EAAO,iBAAiB,EACxB,MAAMN,EAAM,OAAO,EACnB,MAAMa,EAAO,EACb,MAAML,EAAc,EACpB,MAAME,EAAS,CACjB,CAEA,OAAO,OAASI", "names": ["H", "humanConfig", "human", "dom", "timestamp", "fps", "log", "msg", "status", "perf", "detectionLoop", "tensors", "drawLoop", "interpolated", "now", "webCam", "main", "model"] } diff --git a/demo/typescript/index.ts b/demo/typescript/index.ts index b35bc198..ae31b517 100644 --- a/demo/typescript/index.ts +++ b/demo/typescript/index.ts @@ -10,7 +10,7 @@ import * as H from '../../dist/human.esm.js'; // equivalent of @vladmandic/Human const humanConfig: Partial = { // user configuration for human, used to fine-tune behavior - // backend: 'wasm' as const, + // backend: 'wasm', // wasmPath: 'https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@3.20.0/dist/', // cacheSensitivity: 0, // async: false, diff --git a/package.json b/package.json index 13964ab1..6b854326 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,7 @@ "@tensorflow/tfjs-node": "^3.20.0", "@tensorflow/tfjs-node-gpu": "^3.20.0", "@tensorflow/tfjs-tflite": "0.0.1-alpha.8", + "@types/emscripten": "^1.39.6", "@types/node": "^18.7.23", "@types/offscreencanvas": "^2019.7.0", "@typescript-eslint/eslint-plugin": "^5.38.1", @@ -98,6 +99,7 @@ "eslint-plugin-json": "^3.1.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.1", + "long": "^5.2.0", "node-fetch": "^3.2.10", "rimraf": "^3.0.2", "seedrandom": "^3.0.5", diff --git a/src/config.ts b/src/config.ts index fc08450f..b054b450 100644 --- a/src/config.ts +++ b/src/config.ts @@ -209,10 +209,10 @@ export interface GestureConfig { enabled: boolean, } /** Possible TensorFlow backends */ -export type BackendType = ['cpu', 'wasm', 'webgl', 'humangl', 'tensorflow', 'webgpu']; +export type BackendEnum = '' | 'cpu' | 'wasm' | 'webgl' | 'humangl' | 'tensorflow' | 'webgpu'; /** Possible values for `human.warmup` */ -export type WarmupType = ['' | 'none' | 'face' | 'full' | 'body']; +export type WarmupEnum = '' | 'none' | 'face' | 'full' | 'body'; /** * Configuration interface definition for **Human** library @@ -226,7 +226,7 @@ export interface Config { * - NodeJS: `cpu`, `wasm`, `tensorflow` * default: `webgl` for browser and `tensorflow` for nodejs */ - backend: '' | 'cpu' | 'wasm' | 'webgl' | 'humangl' | 'tensorflow' | 'webgpu', + backend: BackendEnum, /** Path to *.wasm files if backend is set to `wasm` * @@ -258,7 +258,7 @@ export interface Config { * * default: `full` */ - warmup: '' | 'none' | 'face' | 'full' | 'body', + warmup: WarmupEnum, /** Base model path (typically starting with file://, http:// or https://) for all models * - individual modelPath values are relative to this path diff --git a/src/exports.ts b/src/exports.ts index bc7f317e..e83978d9 100644 --- a/src/exports.ts +++ b/src/exports.ts @@ -9,15 +9,17 @@ export * from './result'; /* Explict reexport of main @tensorflow/tfjs types */ export type { Tensor, TensorLike, GraphModel, Rank } from './tfjs/types'; +// re-export types export type { DrawOptions } from './draw/options'; -export type { Descriptor } from './face/match'; export type { Box, Point } from './result'; -export type { Models } from './models'; -export type { Env } from './util/env'; +export { env, Env } from './util/env'; export type { FaceGesture, BodyGesture, HandGesture, IrisGesture } from './gesture/gesture'; export type { Emotion, Finger, FingerCurl, FingerDirection, HandType, Gender, Race, FaceLandmark, BodyLandmark, BodyAnnotation, ObjectType } from './result'; -export type { WebCamConfig } from './util/webcam'; -export { env } from './util/env'; +export type { WebCam, WebCamConfig } from './util/webcam'; +// export type { Models, ModelStats, KernelOps } from './models'; +export type { ModelInfo } from './tfjs/load'; + +// define enum types /** Events dispatched by `human.events` * - `create`: triggered when Human object is instantiated @@ -27,7 +29,6 @@ export { env } from './util/env'; * - `warmup`: triggered when warmup is complete */ export type Events = 'create' | 'load' | 'image' | 'result' | 'warmup' | 'error'; - /** Defines all possible canvas types */ export type AnyCanvas = HTMLCanvasElement | OffscreenCanvas; /** Defines all possible image types */ @@ -40,11 +41,3 @@ export type ImageObjects = ImageData | ImageBitmap export type ExternalCanvas = typeof env.Canvas; /** Defines all possible input types for **Human** detection */ export type Input = Tensor | AnyCanvas | AnyImage | AnyVideo | ImageObjects | ExternalCanvas; -/** WebCam helper class */ -export type { WebCam } from './util/webcam'; -/** Defines model stats */ -export type { ModelStats } from './models'; -/** Defines individual model sizes */ -export type { ModelInfo } from './tfjs/load'; -/** Defines model kernel ops */ -export type { KernelOps } from './models'; diff --git a/src/human.ts b/src/human.ts index 38424a93..cf50c4ee 100644 --- a/src/human.ts +++ b/src/human.ts @@ -11,6 +11,7 @@ import { log, now, mergeDeep, validate } from './util/util'; import { defaults } from './config'; import { env, Env } from './util/env'; +import { WebCam } from './util/webcam'; import { setModelLoadOptions } from './tfjs/load'; import * as tf from '../dist/tfjs.esm.js'; import * as app from '../package.json'; @@ -36,10 +37,9 @@ import * as persons from './util/persons'; import * as posenet from './body/posenet'; import * as segmentation from './segmentation/segmentation'; import * as warmups from './warmup'; -import * as webcam from './util/webcam'; // type definitions -import type { Input, Tensor, DrawOptions, Config, Result, FaceResult, HandResult, BodyResult, ObjectResult, GestureResult, PersonResult, AnyCanvas, ModelStats } from './exports'; +import type { Input, Tensor, DrawOptions, Config, Result, FaceResult, HandResult, BodyResult, ObjectResult, GestureResult, PersonResult, AnyCanvas } from './exports'; // type exports export * from './exports'; @@ -95,7 +95,7 @@ export class Human { /** Currently loaded models * @internal - * {@link Models} + * {@link models#Models} */ models: models.Models; @@ -177,7 +177,7 @@ export class Human { // include platform info this.emit('create'); if (this.config.debug || this.env.browser) log(`version: ${this.version}`); - if (this.config.debug) log(`tfjs version: ${this.tf.version['tfjs-core'] as string}`); + if (this.config.debug) log(`tfjs version: ${this.tf.version['tfjs-core']}`); const envTemp = JSON.parse(JSON.stringify(this.env)); delete envTemp.kernels; delete envTemp.initial; @@ -299,7 +299,7 @@ export class Human { /** WebCam helper methods * */ - public webcam = new webcam.WebCam(); + public webcam = new WebCam(); /** Load method preloads all configured models on-demand * - Not explicitly required as any required model is load implicitly on it's first run @@ -351,7 +351,7 @@ export class Human { } /** get model loading/loaded stats */ - getModelStats(): ModelStats { return models.getModelStats(this); } + getModelStats(): models.ModelStats { return models.getModelStats(this); } /** Warmup method pre-initializes all configured models for faster inference * - can take significant time on startup diff --git a/src/models.ts b/src/models.ts index 595b41e7..44bf8b12 100644 --- a/src/models.ts +++ b/src/models.ts @@ -61,6 +61,7 @@ export class Models { antispoof: null | GraphModel | Promise = null; } +/** structure that holds global stats for currently loaded models */ export interface ModelStats { numLoadedModels: number, numEnabledModels: undefined, @@ -73,7 +74,11 @@ export interface ModelStats { modelStats: ModelInfo[], } -export const getModelStats = (instance: Human): ModelStats => { +let instance: Human; + +export const getModelStats = (currentInstance: Human): ModelStats => { + if (currentInstance) instance = currentInstance; + if (!instance) log('instance not registred'); let totalSizeFromManifest = 0; let totalSizeWeights = 0; let totalSizeLoading = 0; @@ -96,13 +101,16 @@ export const getModelStats = (instance: Human): ModelStats => { }; }; -export function reset(instance: Human): void { +export function reset(currentInstance: Human): void { + if (currentInstance) instance = currentInstance; // if (instance.config.debug) log('resetting loaded models'); for (const model of Object.keys(instance.models)) instance.models[model as keyof Models] = null; } /** Load method preloads all instance.configured models on-demand */ -export async function load(instance: Human): Promise { +export async function load(currentInstance: Human): Promise { + if (currentInstance) instance = currentInstance; + if (!instance) log('instance not registred'); if (env.initial) reset(instance); if (instance.config.hand.enabled) { // handpose model is a combo that must be loaded as a whole if (!instance.models.handpose && instance.config.hand.detector?.modelPath?.includes('handdetect')) { @@ -143,14 +151,13 @@ export async function load(instance: Human): Promise { } } -let instance: Human; export interface KernelOps { name: string, url: string, missing: string[], ops: string[] } -export function validateModel(newInstance: Human | null, model: GraphModel | null, name: string): KernelOps | null { - if (newInstance) instance = newInstance; +export function validateModel(currentInstance: Human | null, model: GraphModel | null, name: string): KernelOps | null { if (!model) return null; + if (currentInstance) instance = currentInstance; if (!instance) log('instance not registred'); - if (!instance.config.validateModels) return null; + if (!instance?.config?.validateModels) return null; const simpleOps = ['const', 'placeholder', 'noop', 'pad', 'squeeze', 'add', 'sub', 'mul', 'div']; const ignoreOps = ['biasadd', 'fusedbatchnormv3', 'matmul']; const ops: string[] = []; @@ -182,13 +189,14 @@ export function validateModel(newInstance: Human | null, model: GraphModel | nul return missing.length > 0 ? { name, missing, ops, url } : null; } -export function validate(newInstance: Human): { name: string, missing: string[] }[] { - instance = newInstance; +export function validate(currentInstance: Human): { name: string, missing: string[] }[] { + if (currentInstance) instance = currentInstance; + if (!instance) log('instance not registred'); const missing: KernelOps[] = []; - for (const defined of Object.keys(instance.models)) { - const model: GraphModel | null = instance.models[defined as keyof Models] as GraphModel | null; + for (const defined of Object.keys(currentInstance.models)) { + const model: GraphModel | null = currentInstance.models[defined as keyof Models] as GraphModel | null; if (!model) continue; - const res = validateModel(instance, model, defined); + const res = validateModel(currentInstance, model, defined); if (res) missing.push(res); } return missing; diff --git a/test/build.log b/test/build.log index 796acfe3..6580d0fd 100644 --- a/test/build.log +++ b/test/build.log @@ -1,40 +1,40 @@ -2022-09-29 21:25:14 DATA:  Build {"name":"@vladmandic/human","version":"2.11.0"} -2022-09-29 21:25:14 INFO:  Application: {"name":"@vladmandic/human","version":"2.11.0"} -2022-09-29 21:25:14 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} -2022-09-29 21:25:14 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.10","typescript":"4.8.4","typedoc":"0.23.15","eslint":"8.24.0"} -2022-09-29 21:25:14 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} -2022-09-29 21:25:14 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} -2022-09-29 21:25:14 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-09-29 21:25:14 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":76,"inputBytes":665091,"outputBytes":312560} -2022-09-29 21:25:14 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-09-29 21:25:14 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":76,"inputBytes":665095,"outputBytes":312564} -2022-09-29 21:25:14 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-09-29 21:25:14 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":76,"inputBytes":665147,"outputBytes":312614} -2022-09-29 21:25:14 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":358} -2022-09-29 21:25:14 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1088,"outputBytes":583} -2022-09-29 21:25:14 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":76,"inputBytes":665066,"outputBytes":311419} -2022-09-29 21:25:14 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":11,"inputBytes":1344,"outputBytes":2821914} -2022-09-29 21:25:14 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":76,"inputBytes":3486397,"outputBytes":1691568} -2022-09-29 21:25:14 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":76,"inputBytes":3486397,"outputBytes":3115662} -2022-09-29 21:25:19 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15} -2022-09-29 21:25:21 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":79,"generated":true} -2022-09-29 21:25:21 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5850,"outputBytes":2632} -2022-09-29 21:25:21 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17155,"outputBytes":9175} -2022-09-29 21:25:31 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":111,"errors":0,"warnings":0} -2022-09-29 21:25:31 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} -2022-09-29 21:25:31 STATE: Copy: {"input":"tfjs/tfjs.esm.d.ts"} -2022-09-29 21:25:31 INFO:  Done... -2022-09-29 21:25:32 DATA:  API {"level":"warning","category":"Extractor","id":"ae-forgotten-export","file":"/home/vlado/dev/human/types/lib/src/human.d.ts","line":170,"text":"The symbol \"webcam\" needs to be exported by the entry point human.d.ts"} -2022-09-29 21:25:32 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":194} -2022-09-29 21:25:32 STATE: Copy: {"input":"types/human.d.ts"} -2022-09-29 21:25:32 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} -2022-09-29 21:25:32 STATE: Models {"folder":"./models","models":13} -2022-09-29 21:25:32 STATE: Models {"folder":"../human-models/models","models":42} -2022-09-29 21:25:32 STATE: Models {"folder":"../blazepose/model/","models":4} -2022-09-29 21:25:32 STATE: Models {"folder":"../anti-spoofing/model","models":1} -2022-09-29 21:25:32 STATE: Models {"folder":"../efficientpose/models","models":3} -2022-09-29 21:25:32 STATE: Models {"folder":"../insightface/models","models":5} -2022-09-29 21:25:32 STATE: Models {"folder":"../movenet/models","models":3} -2022-09-29 21:25:32 STATE: Models {"folder":"../nanodet/models","models":4} -2022-09-29 21:25:32 STATE: Models: {"count":57,"totalSize":383017442} -2022-09-29 21:25:32 INFO:  Human Build complete... {"logFile":"test/build.log"} +2022-09-30 10:10:34 DATA:  Build {"name":"@vladmandic/human","version":"2.11.0"} +2022-09-30 10:10:34 INFO:  Application: {"name":"@vladmandic/human","version":"2.11.0"} +2022-09-30 10:10:34 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} +2022-09-30 10:10:34 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.10","typescript":"4.8.4","typedoc":"0.23.15","eslint":"8.24.0"} +2022-09-30 10:10:34 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} +2022-09-30 10:10:34 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} +2022-09-30 10:10:34 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-09-30 10:10:35 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":76,"inputBytes":665243,"outputBytes":312739} +2022-09-30 10:10:35 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-09-30 10:10:35 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":76,"inputBytes":665247,"outputBytes":312743} +2022-09-30 10:10:35 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-09-30 10:10:35 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":76,"inputBytes":665299,"outputBytes":312793} +2022-09-30 10:10:35 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":358} +2022-09-30 10:10:35 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1088,"outputBytes":583} +2022-09-30 10:10:35 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":76,"inputBytes":665218,"outputBytes":311543} +2022-09-30 10:10:35 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":11,"inputBytes":1344,"outputBytes":2821914} +2022-09-30 10:10:35 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":76,"inputBytes":3486549,"outputBytes":1691871} +2022-09-30 10:10:35 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":76,"inputBytes":3486549,"outputBytes":3116005} +2022-09-30 10:10:39 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15} +2022-09-30 10:10:41 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":75,"generated":true} +2022-09-30 10:10:41 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5841,"outputBytes":2632} +2022-09-30 10:10:41 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17155,"outputBytes":9175} +2022-09-30 10:10:52 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":111,"errors":0,"warnings":0} +2022-09-30 10:10:52 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} +2022-09-30 10:10:52 STATE: Copy: {"input":"tfjs/tfjs.esm.d.ts"} +2022-09-30 10:10:52 INFO:  Done... +2022-09-30 10:10:53 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":193} +2022-09-30 10:10:53 STATE: Filter: {"input":"types/human.d.ts"} +2022-09-30 10:10:53 STATE: Link: {"input":"types/human.d.ts"} +2022-09-30 10:10:53 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} +2022-09-30 10:10:53 STATE: Models {"folder":"./models","models":13} +2022-09-30 10:10:53 STATE: Models {"folder":"../human-models/models","models":42} +2022-09-30 10:10:53 STATE: Models {"folder":"../blazepose/model/","models":4} +2022-09-30 10:10:53 STATE: Models {"folder":"../anti-spoofing/model","models":1} +2022-09-30 10:10:53 STATE: Models {"folder":"../efficientpose/models","models":3} +2022-09-30 10:10:53 STATE: Models {"folder":"../insightface/models","models":5} +2022-09-30 10:10:53 STATE: Models {"folder":"../movenet/models","models":3} +2022-09-30 10:10:53 STATE: Models {"folder":"../nanodet/models","models":4} +2022-09-30 10:10:53 STATE: Models: {"count":57,"totalSize":383017442} +2022-09-30 10:10:53 INFO:  Human Build complete... {"logFile":"test/build.log"} diff --git a/test/test.log b/test/test.log index 35b26bc3..ba3d682f 100644 --- a/test/test.log +++ b/test/test.log @@ -1,1001 +1,1002 @@ -2022-09-29 21:25:38 INFO:  @vladmandic/human version 2.11.0 -2022-09-29 21:25:38 INFO:  User: vlado Platform: linux Arch: x64 Node: v18.10.0 -2022-09-29 21:25:38 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-09-29 21:25:38 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start -2022-09-29 21:25:39 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start -2022-09-29 21:25:39 INFO:  {"cmd":"../demo/nodejs/node-fetch.js","args":[]} start -2022-09-29 21:25:42 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start -2022-09-29 21:25:42 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start -2022-09-29 21:25:43 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start -2022-09-29 21:25:43 INFO:  {"cmd":"../demo/nodejs/process-folder.js","args":["samples"]} start -2022-09-29 21:25:45 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start -2022-09-29 21:25:55 INFO:  {"cmd":"../demo/facematch/node-match.js","args":[]} start -2022-09-29 21:25:57 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-09-29 21:25:57 INFO:  -2022-09-29 21:25:57 INFO:  test-node-load.js start -2022-09-29 21:25:57 INFO:  test-node-load.js load start {"human":"2.11.0","tf":"3.20.0","progress":0} -2022-09-29 21:25:57 DATA:  test-node-load.js load interval {"elapsed":0,"progress":0} -2022-09-29 21:25:57 DATA:  test-node-load.js load interval {"elapsed":11,"progress":0} -2022-09-29 21:25:57 DATA:  test-node-load.js load interval {"elapsed":22,"progress":0.02116619810068672} -2022-09-29 21:25:57 DATA:  test-node-load.js load interval {"elapsed":32,"progress":0.2135162934143239} -2022-09-29 21:25:57 DATA:  test-node-load.js load interval {"elapsed":59,"progress":0.3299591712723044} -2022-09-29 21:25:57 DATA:  test-node-load.js load interval {"elapsed":80,"progress":0.5125946867158943} -2022-09-29 21:25:57 STATE: test-node-load.js passed {"progress":1} -2022-09-29 21:25:57 INFO:  test-node-load.js load final {"progress":1} -2022-09-29 21:25:58 DATA:  test-node-load.js load interval {"elapsed":351,"progress":1} -2022-09-29 21:25:58 INFO:  -2022-09-29 21:25:58 INFO:  test-node-gear.js start -2022-09-29 21:25:58 DATA:  test-node-gear.js input: ["samples/in/ai-face.jpg"] -2022-09-29 21:25:59 STATE: test-node-gear.js passed: gear faceres samples/in/ai-face.jpg -2022-09-29 21:25:59 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-09-29 21:25:59 STATE: test-node-gear.js passed: gear gear samples/in/ai-face.jpg -2022-09-29 21:25:59 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-09-29 21:25:59 STATE: test-node-gear.js passed: gear ssrnet samples/in/ai-face.jpg -2022-09-29 21:25:59 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-09-29 21:25:59 INFO:  -2022-09-29 21:25:59 INFO:  test-backend-node.js start -2022-09-29 21:26:00 INFO:  test-backend-node.js test: configuration validation -2022-09-29 21:26:00 STATE: test-backend-node.js passed: configuration default validation [] -2022-09-29 21:26:00 STATE: test-backend-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-09-29 21:26:00 INFO:  test-backend-node.js test: model load -2022-09-29 21:26:00 STATE: test-backend-node.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-09-29 21:26:00 INFO:  test-backend-node.js memory: {"memory":{"unreliable":true,"numTensors":1921,"numDataBuffers":1921,"numBytes":63673064}} -2022-09-29 21:26:00 INFO:  test-backend-node.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63673064,"numTensors":1921,"numStringTensors":0,"numDataBuffers":1921,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-09-29 21:26:00 INFO:  test-backend-node.js test: warmup -2022-09-29 21:26:00 STATE: test-backend-node.js passed: create human -2022-09-29 21:26:00 INFO:  test-backend-node.js human version: 2.11.0 -2022-09-29 21:26:00 INFO:  test-backend-node.js platform: linux x64 agent: NodeJS v18.10.0 -2022-09-29 21:26:00 INFO:  test-backend-node.js tfjs version: 3.20.0 -2022-09-29 21:26:00 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":"3.20.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.7.3-dev20220521","gpu":false},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} -2022-09-29 21:26:00 STATE: test-backend-node.js passed: set backend: tensorflow -2022-09-29 21:26:00 STATE: test-backend-node.js tensors 1921 -2022-09-29 21:26:00 STATE: test-backend-node.js passed: load models -2022-09-29 21:26:00 STATE: test-backend-node.js result: defined models: 23 loaded models: 12 -2022-09-29 21:26:00 STATE: test-backend-node.js passed: warmup: none default -2022-09-29 21:26:00 DATA:  test-backend-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-09-29 21:26:00 DATA:  test-backend-node.js result: performance: load: null total: null -2022-09-29 21:26:00 STATE: test-backend-node.js passed: warmup none result match -2022-09-29 21:26:00 STATE: test-backend-node.js event: image -2022-09-29 21:26:00 STATE: test-backend-node.js event: detect -2022-09-29 21:26:00 STATE: test-backend-node.js event: warmup -2022-09-29 21:26:00 STATE: test-backend-node.js passed: warmup: face default -2022-09-29 21:26:00 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-09-29 21:26:00 DATA:  test-backend-node.js result: performance: load: null total: 338 -2022-09-29 21:26:00 STATE: test-backend-node.js passed: warmup face result match -2022-09-29 21:26:00 STATE: test-backend-node.js event: image -2022-09-29 21:26:00 STATE: test-backend-node.js event: detect -2022-09-29 21:26:00 STATE: test-backend-node.js event: warmup -2022-09-29 21:26:00 STATE: test-backend-node.js passed: warmup: body default -2022-09-29 21:26: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-09-29 21:26:00 DATA:  test-backend-node.js result: performance: load: null total: 235 -2022-09-29 21:26:00 STATE: test-backend-node.js passed: warmup body result match -2022-09-29 21:26:00 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-09-29 21:26:00 INFO:  test-backend-node.js test: details verification -2022-09-29 21:26:00 STATE: test-backend-node.js start default -2022-09-29 21:26:01 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:01 STATE: test-backend-node.js event: image -2022-09-29 21:26:01 STATE: test-backend-node.js event: detect -2022-09-29 21:26:01 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg default -2022-09-29 21:26:01 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-09-29 21:26:01 DATA:  test-backend-node.js result: performance: load: null total: 217 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details face length 1 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details face score 1 0.93 1 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details face arrays 4 478 1024 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details face anti-spoofing 0.79 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details face liveness 0.83 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details body length 1 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details body 0.92 17 6 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details hand length 1 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details hand 0.51 0.73 point -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details hand arrays 21 5 7 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details gesture length 7 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details object length 1 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: details object 0.72 person -2022-09-29 21:26:01 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-09-29 21:26:01 STATE: test-backend-node.js event: image -2022-09-29 21:26:01 STATE: test-backend-node.js event: detect -2022-09-29 21:26:01 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-09-29 21:26:01 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-09-29 21:26:01 STATE: test-backend-node.js event: image -2022-09-29 21:26:02 STATE: test-backend-node.js event: detect -2022-09-29 21:26:02 STATE: test-backend-node.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-09-29 21:26:02 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:02 STATE: test-backend-node.js event: image -2022-09-29 21:26:02 STATE: test-backend-node.js event: detect -2022-09-29 21:26:02 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-09-29 21:26:02 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:02 STATE: test-backend-node.js event: image -2022-09-29 21:26:02 STATE: test-backend-node.js event: detect -2022-09-29 21:26:02 STATE: test-backend-node.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-09-29 21:26:03 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-09-29 21:26:03 STATE: test-backend-node.js event: image -2022-09-29 21:26:03 STATE: test-backend-node.js event: detect -2022-09-29 21:26:03 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-09-29 21:26:03 INFO:  test-backend-node.js test default -2022-09-29 21:26:03 STATE: test-backend-node.js start async -2022-09-29 21:26:03 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:03 STATE: test-backend-node.js event: image -2022-09-29 21:26:03 STATE: test-backend-node.js event: detect -2022-09-29 21:26:03 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg async -2022-09-29 21:26:03 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-09-29 21:26:03 DATA:  test-backend-node.js result: performance: load: null total: 204 -2022-09-29 21:26:03 STATE: test-backend-node.js passed: default result face match 1 female 0.97 -2022-09-29 21:26:03 INFO:  test-backend-node.js test sync -2022-09-29 21:26:03 STATE: test-backend-node.js start sync -2022-09-29 21:26:03 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:03 STATE: test-backend-node.js event: image -2022-09-29 21:26:03 STATE: test-backend-node.js event: detect -2022-09-29 21:26:03 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sync -2022-09-29 21:26:03 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-09-29 21:26:03 DATA:  test-backend-node.js result: performance: load: null total: 199 -2022-09-29 21:26:03 STATE: test-backend-node.js passed: default sync 1 female 0.97 -2022-09-29 21:26:03 INFO:  test-backend-node.js test: image process -2022-09-29 21:26:03 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:03 STATE: test-backend-node.js passed: image input null [1,256,256,3] -2022-09-29 21:26:03 INFO:  test-backend-node.js test: image null -2022-09-29 21:26:03 STATE: test-backend-node.js passed: invalid input could not convert input to tensor -2022-09-29 21:26:03 INFO:  test-backend-node.js test face similarity -2022-09-29 21:26:03 STATE: test-backend-node.js start face similarity -2022-09-29 21:26:04 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:04 STATE: test-backend-node.js event: image -2022-09-29 21:26:04 STATE: test-backend-node.js event: detect -2022-09-29 21:26:04 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face similarity -2022-09-29 21:26:04 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-09-29 21:26:04 DATA:  test-backend-node.js result: performance: load: null total: 194 -2022-09-29 21:26:04 STATE: test-backend-node.js start face similarity -2022-09-29 21:26:04 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:04 STATE: test-backend-node.js event: image -2022-09-29 21:26:04 STATE: test-backend-node.js event: detect -2022-09-29 21:26:04 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg face similarity -2022-09-29 21:26:04 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-09-29 21:26:04 DATA:  test-backend-node.js result: performance: load: null total: 196 -2022-09-29 21:26:04 STATE: test-backend-node.js start face similarity -2022-09-29 21:26:04 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-09-29 21:26:04 STATE: test-backend-node.js event: image -2022-09-29 21:26:04 STATE: test-backend-node.js event: detect -2022-09-29 21:26:04 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-09-29 21:26:04 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-09-29 21:26:04 DATA:  test-backend-node.js result: performance: load: null total: 178 -2022-09-29 21:26:04 STATE: test-backend-node.js passed: face descriptor -2022-09-29 21:26:04 STATE: test-backend-node.js passed: face similarity {"similarity":[1,0.44727452329649126,0.5567935850640406],"descriptors":[1024,1024,1024]} -2022-09-29 21:26:04 INFO:  test-backend-node.js test object -2022-09-29 21:26:04 STATE: test-backend-node.js start object -2022-09-29 21:26:04 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:04 STATE: test-backend-node.js event: image -2022-09-29 21:26:05 STATE: test-backend-node.js event: detect -2022-09-29 21:26:05 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object -2022-09-29 21:26:05 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-09-29 21:26:05 DATA:  test-backend-node.js result: performance: load: null total: 195 -2022-09-29 21:26:05 STATE: test-backend-node.js passed: centernet -2022-09-29 21:26:05 STATE: test-backend-node.js start object -2022-09-29 21:26:06 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:06 STATE: test-backend-node.js event: image -2022-09-29 21:26:06 STATE: test-backend-node.js event: detect -2022-09-29 21:26:06 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object -2022-09-29 21:26:06 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-09-29 21:26:06 DATA:  test-backend-node.js result: performance: load: null total: 214 -2022-09-29 21:26:06 STATE: test-backend-node.js passed: nanodet -2022-09-29 21:26:06 INFO:  test-backend-node.js test sensitive -2022-09-29 21:26:06 STATE: test-backend-node.js start sensitive -2022-09-29 21:26:06 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:06 STATE: test-backend-node.js event: image -2022-09-29 21:26:06 STATE: test-backend-node.js event: detect -2022-09-29 21:26:06 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sensitive -2022-09-29 21:26: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.92,"keypoints":17} -2022-09-29 21:26:06 DATA:  test-backend-node.js result: performance: load: null total: 173 -2022-09-29 21:26:06 STATE: test-backend-node.js passed: sensitive result match -2022-09-29 21:26:06 STATE: test-backend-node.js passed: sensitive face result match -2022-09-29 21:26:06 STATE: test-backend-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-09-29 21:26:06 STATE: test-backend-node.js passed: sensitive body result match -2022-09-29 21:26:06 STATE: test-backend-node.js passed: sensitive hand result match -2022-09-29 21:26:06 INFO:  test-backend-node.js test body -2022-09-29 21:26:06 STATE: test-backend-node.js start blazepose -2022-09-29 21:26:08 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:08 STATE: test-backend-node.js event: image -2022-09-29 21:26:09 STATE: test-backend-node.js event: detect -2022-09-29 21:26:09 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg blazepose -2022-09-29 21:26:09 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-09-29 21:26:09 DATA:  test-backend-node.js result: performance: load: null total: 217 -2022-09-29 21:26:09 STATE: test-backend-node.js passed: blazepose -2022-09-29 21:26:09 STATE: test-backend-node.js start efficientpose -2022-09-29 21:26:09 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:09 STATE: test-backend-node.js event: image -2022-09-29 21:26:10 STATE: test-backend-node.js event: detect -2022-09-29 21:26:10 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-09-29 21:26:10 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-09-29 21:26:10 DATA:  test-backend-node.js result: performance: load: null total: 251 -2022-09-29 21:26:10 STATE: test-backend-node.js passed: efficientpose -2022-09-29 21:26:10 STATE: test-backend-node.js start posenet -2022-09-29 21:26:10 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:10 STATE: test-backend-node.js event: image -2022-09-29 21:26:10 STATE: test-backend-node.js event: detect -2022-09-29 21:26:10 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg posenet -2022-09-29 21:26:10 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-09-29 21:26:10 DATA:  test-backend-node.js result: performance: load: null total: 172 -2022-09-29 21:26:10 STATE: test-backend-node.js passed: posenet -2022-09-29 21:26:10 STATE: test-backend-node.js start movenet -2022-09-29 21:26:11 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:11 STATE: test-backend-node.js event: image -2022-09-29 21:26:11 STATE: test-backend-node.js event: detect -2022-09-29 21:26:11 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg movenet -2022-09-29 21:26:11 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-09-29 21:26:11 DATA:  test-backend-node.js result: performance: load: null total: 161 -2022-09-29 21:26:11 STATE: test-backend-node.js passed: movenet -2022-09-29 21:26:11 INFO:  test-backend-node.js test face matching -2022-09-29 21:26:11 STATE: test-backend-node.js passed: face database 40 -2022-09-29 21:26:11 STATE: test-backend-node.js passed: face match {"first":{"index":4,"similarity":0.7827852615252829}} {"second":{"index":4,"similarity":0.5002052633015844}} {"third":{"index":4,"similarity":0.5401587887998899}} -2022-09-29 21:26:11 INFO:  test-backend-node.js test face similarity alternative -2022-09-29 21:26:11 STATE: test-backend-node.js start face embeddings -2022-09-29 21:26:12 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:12 STATE: test-backend-node.js event: image -2022-09-29 21:26:12 STATE: test-backend-node.js event: detect -2022-09-29 21:26:12 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-09-29 21:26:12 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:12 DATA:  test-backend-node.js result: performance: load: null total: 190 -2022-09-29 21:26:12 STATE: test-backend-node.js passed: mobilefacenet {"embedding":192} -2022-09-29 21:26:12 STATE: test-backend-node.js start face embeddings -2022-09-29 21:26:13 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:13 STATE: test-backend-node.js event: image -2022-09-29 21:26:13 STATE: test-backend-node.js event: detect -2022-09-29 21:26:13 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-09-29 21:26:13 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:13 DATA:  test-backend-node.js result: performance: load: null total: 182 -2022-09-29 21:26:13 STATE: test-backend-node.js passed: insightface {"embedding":512} -2022-09-29 21:26:13 INFO:  test-backend-node.js test face attention -2022-09-29 21:26:13 STATE: test-backend-node.js start face attention -2022-09-29 21:26:13 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:13 STATE: test-backend-node.js event: image -2022-09-29 21:26:14 STATE: test-backend-node.js event: detect -2022-09-29 21:26:14 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face attention -2022-09-29 21:26:14 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:14 DATA:  test-backend-node.js result: performance: load: null total: 173 -2022-09-29 21:26:14 STATE: test-backend-node.js passed: face attention -2022-09-29 21:26:14 INFO:  test-backend-node.js test detectors -2022-09-29 21:26:14 STATE: test-backend-node.js start detectors -2022-09-29 21:26:14 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:14 STATE: test-backend-node.js event: image -2022-09-29 21:26:14 STATE: test-backend-node.js event: detect -2022-09-29 21:26:14 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg detectors -2022-09-29 21:26:14 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:14 DATA:  test-backend-node.js result: performance: load: null total: 128 -2022-09-29 21:26:14 STATE: test-backend-node.js passed: detector result face match -2022-09-29 21:26:14 STATE: test-backend-node.js passed: detector result hand match -2022-09-29 21:26:14 INFO:  test-backend-node.js test: multi-instance -2022-09-29 21:26:14 STATE: test-backend-node.js start multi instance -2022-09-29 21:26:14 STATE: test-backend-node.js event: image -2022-09-29 21:26:14 STATE: test-backend-node.js event: detect -2022-09-29 21:26:14 STATE: test-backend-node.js passed: detect: random multi instance -2022-09-29 21:26:14 DATA:  test-backend-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} -2022-09-29 21:26:14 DATA:  test-backend-node.js result: performance: load: null total: 84 -2022-09-29 21:26:14 INFO:  test-backend-node.js test: first instance -2022-09-29 21:26:14 STATE: test-backend-node.js start multi instance -2022-09-29 21:26:14 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-09-29 21:26:14 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-09-29 21:26:14 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:14 DATA:  test-backend-node.js result: performance: load: null total: 113 -2022-09-29 21:26:14 INFO:  test-backend-node.js test: second instance -2022-09-29 21:26:14 STATE: test-backend-node.js start multi instance -2022-09-29 21:26:14 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-09-29 21:26:14 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-09-29 21:26:14 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:14 DATA:  test-backend-node.js result: performance: load: null total: 90 -2022-09-29 21:26:14 INFO:  test-backend-node.js test: concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js start concurrent -2022-09-29 21:26:14 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:14 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:15 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:15 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:15 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-09-29 21:26:15 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-09-29 21:26:15 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:15 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:15 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-09-29 21:26:15 STATE: test-backend-node.js event: image -2022-09-29 21:26:15 STATE: test-backend-node.js event: image -2022-09-29 21:26:15 STATE: test-backend-node.js event: image -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1329 -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1329 -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1329 -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1329 -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1329 -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1329 -2022-09-29 21:26:16 STATE: test-backend-node.js event: detect -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1068 -2022-09-29 21:26:16 STATE: test-backend-node.js event: detect -2022-09-29 21:26:16 STATE: test-backend-node.js event: detect -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1068 -2022-09-29 21:26:16 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:26:16 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:16 DATA:  test-backend-node.js result: performance: load: null total: 1068 -2022-09-29 21:26:16 INFO:  test-backend-node.js test: monkey-patch -2022-09-29 21:26:16 STATE: test-backend-node.js event: image -2022-09-29 21:26:16 STATE: test-backend-node.js event: detect -2022-09-29 21:26:16 STATE: test-backend-node.js passed: monkey patch -2022-09-29 21:26:16 STATE: test-backend-node.js passed: segmentation [65536] -2022-09-29 21:26:16 STATE: test-backend-node.js passeed: equal usage -2022-09-29 21:26:16 INFO:  test-backend-node.js test: input compare -2022-09-29 21:26:16 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:17 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-09-29 21:26:17 STATE: test-backend-node.js passed: image compare 0 23.275441687091504 -2022-09-29 21:26:17 INFO:  test-backend-node.js events: {"image":29,"detect":29,"warmup":2} -2022-09-29 21:26:17 INFO:  test-backend-node.js tensors 4147 -2022-09-29 21:26:17 INFO:  test-backend-node.js test complete: 16988 ms -2022-09-29 21:26:17 INFO:  -2022-09-29 21:26:17 INFO:  test-backend-node-gpu.js start -2022-09-29 21:26:17 INFO:  test-backend-node-gpu.js test: configuration validation -2022-09-29 21:26:17 STATE: test-backend-node-gpu.js passed: configuration default validation [] -2022-09-29 21:26:17 STATE: test-backend-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-09-29 21:26:17 INFO:  test-backend-node-gpu.js test: model load -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-09-29 21:26:18 INFO:  test-backend-node-gpu.js memory: {"memory":{"unreliable":true,"numTensors":1921,"numDataBuffers":1921,"numBytes":63673064}} -2022-09-29 21:26:18 INFO:  test-backend-node-gpu.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63673064,"numTensors":1921,"numStringTensors":0,"numDataBuffers":1921,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-09-29 21:26:18 INFO:  test-backend-node-gpu.js test: warmup -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js passed: create human -2022-09-29 21:26:18 INFO:  test-backend-node-gpu.js human version: 2.11.0 -2022-09-29 21:26:18 INFO:  test-backend-node-gpu.js platform: linux x64 agent: NodeJS v18.10.0 -2022-09-29 21:26:18 INFO:  test-backend-node-gpu.js tfjs version: 3.20.0 -2022-09-29 21:26:18 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":"3.20.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.7.3-dev20220521","gpu":true},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js passed: set backend: tensorflow -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js tensors 1921 -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js passed: load models -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js result: defined models: 23 loaded models: 12 -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js passed: warmup: none default -2022-09-29 21:26:18 DATA:  test-backend-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-09-29 21:26:18 DATA:  test-backend-node-gpu.js result: performance: load: null total: null -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js passed: warmup none result match -2022-09-29 21:26:18 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js event: warmup -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js passed: warmup: face default -2022-09-29 21:26:21 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-09-29 21:26:21 DATA:  test-backend-node-gpu.js result: performance: load: null total: 3298 -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js passed: warmup face result match -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js event: warmup -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js passed: warmup: body default -2022-09-29 21:26:21 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-09-29 21:26:21 DATA:  test-backend-node-gpu.js result: performance: load: null total: 141 -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js passed: warmup body result match -2022-09-29 21:26:21 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-09-29 21:26:21 INFO:  test-backend-node-gpu.js test: details verification -2022-09-29 21:26:21 STATE: test-backend-node-gpu.js start default -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-09-29 21:26:22 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-09-29 21:26:22 DATA:  test-backend-node-gpu.js result: performance: load: null total: 146 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details face length 1 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details face score 1 0.93 1 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details face arrays 4 478 1024 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details face anti-spoofing 0.79 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details face liveness 0.83 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details body length 1 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details body 0.92 17 6 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details hand length 1 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details hand 0.51 0.73 point -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details hand arrays 21 5 7 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details gesture length 7 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details object length 1 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: details object 0.72 person -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:22 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-09-29 21:26:23 INFO:  test-backend-node-gpu.js test default -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js start async -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:23 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg async -2022-09-29 21:26:24 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-09-29 21:26:24 DATA:  test-backend-node-gpu.js result: performance: load: null total: 129 -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: default result face match 1 female 0.97 -2022-09-29 21:26:24 INFO:  test-backend-node-gpu.js test sync -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js start sync -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sync -2022-09-29 21:26:24 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-09-29 21:26:24 DATA:  test-backend-node-gpu.js result: performance: load: null total: 129 -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: default sync 1 female 0.97 -2022-09-29 21:26:24 INFO:  test-backend-node-gpu.js test: image process -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: image input null [1,256,256,3] -2022-09-29 21:26:24 INFO:  test-backend-node-gpu.js test: image null -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: invalid input could not convert input to tensor -2022-09-29 21:26:24 INFO:  test-backend-node-gpu.js test face similarity -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js start face similarity -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity -2022-09-29 21:26:24 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-09-29 21:26:24 DATA:  test-backend-node-gpu.js result: performance: load: null total: 138 -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js start face similarity -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity -2022-09-29 21:26:24 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-09-29 21:26:24 DATA:  test-backend-node-gpu.js result: performance: load: null total: 143 -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js start face similarity -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-09-29 21:26:24 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-09-29 21:26:25 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-09-29 21:26:25 DATA:  test-backend-node-gpu.js result: performance: load: null total: 126 -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js passed: face descriptor -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js passed: face similarity {"similarity":[1,0.447238756461232,0.556914029877052],"descriptors":[1024,1024,1024]} -2022-09-29 21:26:25 INFO:  test-backend-node-gpu.js test object -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js start object -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-09-29 21:26:25 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-09-29 21:26:25 DATA:  test-backend-node-gpu.js result: performance: load: null total: 149 -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js passed: centernet -2022-09-29 21:26:25 STATE: test-backend-node-gpu.js start object -2022-09-29 21:26:26 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:26 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:26 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:26 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-09-29 21:26:26 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-09-29 21:26:26 DATA:  test-backend-node-gpu.js result: performance: load: null total: 566 -2022-09-29 21:26:26 STATE: test-backend-node-gpu.js passed: nanodet -2022-09-29 21:26:26 INFO:  test-backend-node-gpu.js test sensitive -2022-09-29 21:26:26 STATE: test-backend-node-gpu.js start sensitive -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive -2022-09-29 21:26:27 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-09-29 21:26:27 DATA:  test-backend-node-gpu.js result: performance: load: null total: 110 -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js passed: sensitive result match -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js passed: sensitive face result match -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js passed: sensitive body result match -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js passed: sensitive hand result match -2022-09-29 21:26:27 INFO:  test-backend-node-gpu.js test body -2022-09-29 21:26:27 STATE: test-backend-node-gpu.js start blazepose -2022-09-29 21:26:28 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:28 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:29 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:29 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose -2022-09-29 21:26:29 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-09-29 21:26:29 DATA:  test-backend-node-gpu.js result: performance: load: null total: 261 -2022-09-29 21:26:29 STATE: test-backend-node-gpu.js passed: blazepose -2022-09-29 21:26:29 STATE: test-backend-node-gpu.js start efficientpose -2022-09-29 21:26:29 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:29 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:30 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:30 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-09-29 21:26:30 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-09-29 21:26:30 DATA:  test-backend-node-gpu.js result: performance: load: null total: 710 -2022-09-29 21:26:30 STATE: test-backend-node-gpu.js passed: efficientpose -2022-09-29 21:26:30 STATE: test-backend-node-gpu.js start posenet -2022-09-29 21:26:30 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:30 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet -2022-09-29 21:26:31 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-09-29 21:26:31 DATA:  test-backend-node-gpu.js result: performance: load: null total: 131 -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: posenet -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js start movenet -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet -2022-09-29 21:26:31 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-09-29 21:26:31 DATA:  test-backend-node-gpu.js result: performance: load: null total: 108 -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: movenet -2022-09-29 21:26:31 INFO:  test-backend-node-gpu.js test face matching -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: face database 40 -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7828184453007331}} {"second":{"index":4,"similarity":0.5001334216773398}} {"third":{"index":4,"similarity":0.5403054967489764}} -2022-09-29 21:26:31 INFO:  test-backend-node-gpu.js test face similarity alternative -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js start face embeddings -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-09-29 21:26:31 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:31 DATA:  test-backend-node-gpu.js result: performance: load: null total: 148 -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js passed: mobilefacenet {"embedding":192} -2022-09-29 21:26:31 STATE: test-backend-node-gpu.js start face embeddings -2022-09-29 21:26:32 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:32 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:32 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:32 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-09-29 21:26:32 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:32 DATA:  test-backend-node-gpu.js result: performance: load: null total: 168 -2022-09-29 21:26:32 STATE: test-backend-node-gpu.js passed: insightface {"embedding":512} -2022-09-29 21:26:32 INFO:  test-backend-node-gpu.js test face attention -2022-09-29 21:26:32 STATE: test-backend-node-gpu.js start face attention -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face attention -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: performance: load: null total: 242 -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: face attention -2022-09-29 21:26:33 INFO:  test-backend-node-gpu.js test detectors -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js start detectors -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg detectors -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: performance: load: null total: 100 -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: detector result face match -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: detector result hand match -2022-09-29 21:26:33 INFO:  test-backend-node-gpu.js test: multi-instance -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js start multi instance -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: detect: random multi instance -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: performance: load: null total: 55 -2022-09-29 21:26:33 INFO:  test-backend-node-gpu.js test: first instance -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js start multi instance -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:33 DATA:  test-backend-node-gpu.js result: performance: load: null total: 74 -2022-09-29 21:26:33 INFO:  test-backend-node-gpu.js test: second instance -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js start multi instance -2022-09-29 21:26:33 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-09-29 21:26:34 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:34 DATA:  test-backend-node-gpu.js result: performance: load: null total: 62 -2022-09-29 21:26:34 INFO:  test-backend-node-gpu.js test: concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js start concurrent -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:34 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 911 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 911 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 911 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 911 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 911 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 911 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 635 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 635 -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:26:35 DATA:  test-backend-node-gpu.js result: performance: load: null total: 635 -2022-09-29 21:26:35 INFO:  test-backend-node-gpu.js test: monkey-patch -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js event: image -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js event: detect -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: monkey patch -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: segmentation [65536] -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passeed: equal usage -2022-09-29 21:26:35 INFO:  test-backend-node-gpu.js test: input compare -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-09-29 21:26:35 STATE: test-backend-node-gpu.js passed: image compare 0 23.275441687091504 -2022-09-29 21:26:35 INFO:  test-backend-node-gpu.js events: {"image":29,"detect":29,"warmup":2} -2022-09-29 21:26:35 INFO:  test-backend-node-gpu.js tensors 4147 -2022-09-29 21:26:35 INFO:  test-backend-node-gpu.js test complete: 17801 ms -2022-09-29 21:26:36 INFO:  -2022-09-29 21:26:36 INFO:  test-backend-node-wasm.js start -2022-09-29 21:26:36 DATA:  test-backend-node-wasm.js stdout: 2022-09-29 21:26:36 INFO:  { supported: true, backend: true, simd: true, multithread: false } https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@3.20.0/dist/ -2022-09-29 21:26:36 STATE: test-backend-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ -2022-09-29 21:26:36 INFO:  test-backend-node-wasm.js test: configuration validation -2022-09-29 21:26:36 STATE: test-backend-node-wasm.js passed: configuration default validation [] -2022-09-29 21:26:36 STATE: test-backend-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-09-29 21:26:36 INFO:  test-backend-node-wasm.js test: model load -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"https://vladmandic.github.io/human/models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"https://vladmandic.github.io/human/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human/models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"https://vladmandic.github.io/human/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human/models/liveness.json"},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"https://vladmandic.github.io/human/models/selfie.json"},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human/models/antispoof.json"}] -2022-09-29 21:26:38 INFO:  test-backend-node-wasm.js memory: {"memory":{"unreliable":false,"numTensors":1921,"numDataBuffers":1921,"numBytes":63673064}} -2022-09-29 21:26:38 INFO:  test-backend-node-wasm.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63673064,"numTensors":1921,"numStringTensors":0,"numDataBuffers":1921,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-09-29 21:26:38 INFO:  test-backend-node-wasm.js test: warmup -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js passed: create human -2022-09-29 21:26:38 INFO:  test-backend-node-wasm.js human version: 2.11.0 -2022-09-29 21:26:38 INFO:  test-backend-node-wasm.js platform: linux x64 agent: NodeJS v18.10.0 -2022-09-29 21:26:38 INFO:  test-backend-node-wasm.js tfjs version: 3.20.0 -2022-09-29 21:26:38 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":"3.20.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-09-29 21:26:38 STATE: test-backend-node-wasm.js passed: set backend: wasm -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js tensors 1921 -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js passed: load models -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js result: defined models: 23 loaded models: 12 -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js passed: warmup: none default -2022-09-29 21:26:38 DATA:  test-backend-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-09-29 21:26:38 DATA:  test-backend-node-wasm.js result: performance: load: null total: null -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js passed: warmup none result match -2022-09-29 21:26:38 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js event: warmup -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js passed: warmup: face default -2022-09-29 21:26:39 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-09-29 21:26:39 DATA:  test-backend-node-wasm.js result: performance: load: null total: 501 -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js passed: warmup face result match -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js event: warmup -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js passed: warmup: body default -2022-09-29 21:26:39 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-09-29 21:26:39 DATA:  test-backend-node-wasm.js result: performance: load: null total: 362 -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js passed: warmup body result match -2022-09-29 21:26:39 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-09-29 21:26:39 INFO:  test-backend-node-wasm.js test: details verification -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js start default -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:39 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-09-29 21:26:40 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-09-29 21:26:40 DATA:  test-backend-node-wasm.js result: performance: load: null total: 318 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details face length 1 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details face score 1 0.93 1 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details face arrays 4 478 1024 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details face anti-spoofing 0.79 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details face liveness 0.83 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details body length 1 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details body 0.92 17 6 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details hand length 1 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details hand 0.51 0.73 point -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details hand arrays 21 5 7 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details gesture length 7 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details object length 1 -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: details object 0.72 person -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:40 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:41 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-09-29 21:26:42 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:42 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:42 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:42 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-09-29 21:26:42 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-09-29 21:26:42 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-09-29 21:26:43 INFO:  test-backend-node-wasm.js test default -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js start async -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg async -2022-09-29 21:26:43 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-09-29 21:26:43 DATA:  test-backend-node-wasm.js result: performance: load: null total: 326 -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js passed: default result face match 1 female 0.97 -2022-09-29 21:26:43 INFO:  test-backend-node-wasm.js test sync -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js start sync -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:43 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sync -2022-09-29 21:26:44 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-09-29 21:26:44 DATA:  test-backend-node-wasm.js result: performance: load: null total: 308 -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: default sync 1 female 0.97 -2022-09-29 21:26:44 INFO:  test-backend-node-wasm.js test: image process -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: image input null [1,256,256,3] -2022-09-29 21:26:44 INFO:  test-backend-node-wasm.js test: image null -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: invalid input could not convert input to tensor -2022-09-29 21:26:44 INFO:  test-backend-node-wasm.js test face similarity -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js start face similarity -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity -2022-09-29 21:26:44 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-09-29 21:26:44 DATA:  test-backend-node-wasm.js result: performance: load: null total: 290 -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js start face similarity -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity -2022-09-29 21:26:44 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-09-29 21:26:44 DATA:  test-backend-node-wasm.js result: performance: load: null total: 325 -2022-09-29 21:26:44 STATE: test-backend-node-wasm.js start face similarity -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-09-29 21:26:45 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-09-29 21:26:45 DATA:  test-backend-node-wasm.js result: performance: load: null total: 295 -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js passed: face descriptor -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} -2022-09-29 21:26:45 INFO:  test-backend-node-wasm.js test object -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js start object -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-09-29 21:26:45 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-09-29 21:26:45 DATA:  test-backend-node-wasm.js result: performance: load: null total: 318 -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js passed: centernet -2022-09-29 21:26:45 STATE: test-backend-node-wasm.js start object -2022-09-29 21:26:47 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-09-29 21:26:47 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:47 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:47 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:47 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-09-29 21:26:47 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-09-29 21:26:47 DATA:  test-backend-node-wasm.js result: performance: load: null total: 221 -2022-09-29 21:26:47 ERROR: test-backend-node-wasm.js failed: nanodet [] -2022-09-29 21:26:47 INFO:  test-backend-node-wasm.js test sensitive -2022-09-29 21:26:47 STATE: test-backend-node-wasm.js start sensitive -2022-09-29 21:26:47 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:47 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:48 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:48 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive -2022-09-29 21:26:48 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-09-29 21:26:48 DATA:  test-backend-node-wasm.js result: performance: load: null total: 241 -2022-09-29 21:26:48 STATE: test-backend-node-wasm.js passed: sensitive result match -2022-09-29 21:26:48 STATE: test-backend-node-wasm.js passed: sensitive face result match -2022-09-29 21:26:48 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-09-29 21:26:48 STATE: test-backend-node-wasm.js passed: sensitive body result match -2022-09-29 21:26:48 STATE: test-backend-node-wasm.js passed: sensitive hand result match -2022-09-29 21:26:48 INFO:  test-backend-node-wasm.js test body -2022-09-29 21:26:48 STATE: test-backend-node-wasm.js start blazepose -2022-09-29 21:26:51 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:51 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:51 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:51 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose -2022-09-29 21:26:51 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-09-29 21:26:51 DATA:  test-backend-node-wasm.js result: performance: load: null total: 410 -2022-09-29 21:26:51 STATE: test-backend-node-wasm.js passed: blazepose -2022-09-29 21:26:51 STATE: test-backend-node-wasm.js start efficientpose -2022-09-29 21:26:52 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:52 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:53 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:53 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-09-29 21:26:53 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-09-29 21:26:53 DATA:  test-backend-node-wasm.js result: performance: load: null total: 641 -2022-09-29 21:26:53 STATE: test-backend-node-wasm.js passed: efficientpose -2022-09-29 21:26:53 STATE: test-backend-node-wasm.js start posenet -2022-09-29 21:26:53 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:53 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet -2022-09-29 21:26:54 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-09-29 21:26:54 DATA:  test-backend-node-wasm.js result: performance: load: null total: 300 -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js passed: posenet -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js start movenet -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet -2022-09-29 21:26:54 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-09-29 21:26:54 DATA:  test-backend-node-wasm.js result: performance: load: null total: 236 -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js passed: movenet -2022-09-29 21:26:54 INFO:  test-backend-node-wasm.js test face matching -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js passed: face database 40 -2022-09-29 21:26:54 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-09-29 21:26:54 INFO:  test-backend-node-wasm.js test face similarity alternative -2022-09-29 21:26:54 STATE: test-backend-node-wasm.js start face embeddings -2022-09-29 21:26:55 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:26:55 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:56 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:56 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-09-29 21:26:56 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:56 DATA:  test-backend-node-wasm.js result: performance: load: null total: 247 -2022-09-29 21:26:56 STATE: test-backend-node-wasm.js passed: mobilefacenet {"embedding":192} -2022-09-29 21:26:56 STATE: test-backend-node-wasm.js start face embeddings -2022-09-29 21:26:58 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:26:58 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:58 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:58 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings -2022-09-29 21:26:58 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:58 DATA:  test-backend-node-wasm.js result: performance: load: null total: 290 -2022-09-29 21:26:58 STATE: test-backend-node-wasm.js passed: insightface {"embedding":512} -2022-09-29 21:26:58 INFO:  test-backend-node-wasm.js test face attention -2022-09-29 21:26:58 STATE: test-backend-node-wasm.js start face attention -2022-09-29 21:26:59 WARN:  test-backend-node-wasm.js missing kernel ops {"title":"face attention","model":"facemesh","url":"https://vladmandic.github.io/human-models/models/facemesh-attention.json","missing":["atan2"],"backkend":"wasm"} -2022-09-29 21:26:59 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:26:59 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:26:59 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:26:59 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face attention -2022-09-29 21:26:59 DATA:  test-backend-node-wasm.js result: face: 0 body: 1 hand: 1 gesture: 2 object: 0 person: 0 {} {} {"score":0.47,"keypoints":3} -2022-09-29 21:26:59 DATA:  test-backend-node-wasm.js result: performance: load: null total: 120 -2022-09-29 21:26:59 ERROR: test-backend-node-wasm.js failed: face attention {"annotations":0} -2022-09-29 21:26:59 INFO:  test-backend-node-wasm.js test detectors -2022-09-29 21:26:59 STATE: test-backend-node-wasm.js start detectors -2022-09-29 21:26:59 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:26:59 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg detectors -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: performance: load: null total: 117 -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: detector result face match -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: detector result hand match -2022-09-29 21:27:00 INFO:  test-backend-node-wasm.js test: multi-instance -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start multi instance -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: detect: random multi instance -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: performance: load: null total: 97 -2022-09-29 21:27:00 INFO:  test-backend-node-wasm.js test: first instance -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start multi instance -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: performance: load: null total: 112 -2022-09-29 21:27:00 INFO:  test-backend-node-wasm.js test: second instance -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start multi instance -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:27:00 DATA:  test-backend-node-wasm.js result: performance: load: null total: 107 -2022-09-29 21:27:00 INFO:  test-backend-node-wasm.js test: concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js start concurrent -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:27:00 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:27:01 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 1257 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 1257 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 1258 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 1258 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 1258 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 1258 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} -2022-09-29 21:27:02 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 -2022-09-29 21:27:02 INFO:  test-backend-node-wasm.js test: monkey-patch -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js event: image -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js event: detect -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: monkey patch -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: segmentation [65536] -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passeed: equal usage -2022-09-29 21:27:02 INFO:  test-backend-node-wasm.js test: input compare -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-09-29 21:27:02 STATE: test-backend-node-wasm.js passed: image compare 0 23.280073018790848 -2022-09-29 21:27:02 INFO:  test-backend-node-wasm.js events: {"image":29,"detect":29,"warmup":2} -2022-09-29 21:27:02 INFO:  test-backend-node-wasm.js tensors 4149 -2022-09-29 21:27:02 INFO:  test-backend-node-wasm.js test complete: 26162 ms -2022-09-29 21:27:02 STATE: all tests complete -2022-09-29 21:27:02 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/nodejs/node-fetch.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/nodejs/process-folder.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"../demo/facematch/node-match.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"test-node-load.js","passed":1,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"test-node-gear.js","passed":3,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"test-backend-node.js","passed":125,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"test-backend-node-gpu.js","passed":125,"failed":0} -2022-09-29 21:27:02 INFO:  status {"test":"test-backend-node-wasm.js","passed":124,"failed":2} -2022-09-29 21:27:02 INFO:  failures {"count":2} -2022-09-29 21:27:02 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: nanodet",[]]]} -2022-09-29 21:27:02 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: face attention",{"annotations":0}]]} +2022-09-30 10:04:19 INFO:  @vladmandic/human version 2.11.0 +2022-09-30 10:04:19 INFO:  User: vlado Platform: linux Arch: x64 Node: v18.10.0 +2022-09-30 10:04:19 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-09-30 10:04:19 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start +2022-09-30 10:04:20 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start +2022-09-30 10:04:21 INFO:  {"cmd":"../demo/nodejs/node-fetch.js","args":[]} start +2022-09-30 10:04:24 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start +2022-09-30 10:04:24 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start +2022-09-30 10:04:25 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start +2022-09-30 10:04:26 INFO:  {"cmd":"../demo/nodejs/process-folder.js","args":["samples"]} start +2022-09-30 10:04:27 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start +2022-09-30 10:04:38 INFO:  {"cmd":"../demo/facematch/node-match.js","args":[]} start +2022-09-30 10:04:39 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-09-30 10:04:39 INFO:  +2022-09-30 10:04:39 INFO:  test-node-load.js start +2022-09-30 10:04:40 INFO:  test-node-load.js load start {"human":"2.11.0","tf":"3.20.0","progress":0} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":1,"progress":0} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":11,"progress":0} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":23,"progress":0.05339166087267679} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":33,"progress":0.2135162934143239} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":60,"progress":0.3299591712723044} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":81,"progress":0.5125946867158943} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":91,"progress":0.7259096583739463} +2022-09-30 10:04:40 STATE: test-node-load.js passed {"progress":1} +2022-09-30 10:04:40 INFO:  test-node-load.js load final {"progress":1} +2022-09-30 10:04:40 DATA:  test-node-load.js load interval {"elapsed":366,"progress":1} +2022-09-30 10:04:40 INFO:  +2022-09-30 10:04:40 INFO:  test-node-gear.js start +2022-09-30 10:04:40 DATA:  test-node-gear.js input: ["samples/in/ai-face.jpg"] +2022-09-30 10:04:42 STATE: test-node-gear.js passed: gear faceres samples/in/ai-face.jpg +2022-09-30 10:04:42 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-09-30 10:04:42 STATE: test-node-gear.js passed: gear gear samples/in/ai-face.jpg +2022-09-30 10:04:42 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-09-30 10:04:42 STATE: test-node-gear.js passed: gear ssrnet samples/in/ai-face.jpg +2022-09-30 10:04:42 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-09-30 10:04:42 INFO:  +2022-09-30 10:04:42 INFO:  test-backend-node.js start +2022-09-30 10:04:42 INFO:  test-backend-node.js test: configuration validation +2022-09-30 10:04:42 STATE: test-backend-node.js passed: configuration default validation [] +2022-09-30 10:04:42 STATE: test-backend-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-09-30 10:04:42 INFO:  test-backend-node.js test: model load +2022-09-30 10:04:42 STATE: test-backend-node.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-09-30 10:04:42 INFO:  test-backend-node.js memory: {"memory":{"unreliable":true,"numTensors":1921,"numDataBuffers":1921,"numBytes":63673064}} +2022-09-30 10:04:42 INFO:  test-backend-node.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63673064,"numTensors":1921,"numStringTensors":0,"numDataBuffers":1921,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-09-30 10:04:42 INFO:  test-backend-node.js test: warmup +2022-09-30 10:04:42 STATE: test-backend-node.js passed: create human +2022-09-30 10:04:42 INFO:  test-backend-node.js human version: 2.11.0 +2022-09-30 10:04:42 INFO:  test-backend-node.js platform: linux x64 agent: NodeJS v18.10.0 +2022-09-30 10:04:42 INFO:  test-backend-node.js tfjs version: 3.20.0 +2022-09-30 10:04:42 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":"3.20.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.7.3-dev20220521","gpu":false},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-09-30 10:04:42 STATE: test-backend-node.js passed: set backend: tensorflow +2022-09-30 10:04:42 STATE: test-backend-node.js tensors 1921 +2022-09-30 10:04:42 STATE: test-backend-node.js passed: load models +2022-09-30 10:04:42 STATE: test-backend-node.js result: defined models: 23 loaded models: 12 +2022-09-30 10:04:42 STATE: test-backend-node.js passed: warmup: none default +2022-09-30 10:04:42 DATA:  test-backend-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-09-30 10:04:42 DATA:  test-backend-node.js result: performance: load: null total: null +2022-09-30 10:04:42 STATE: test-backend-node.js passed: warmup none result match +2022-09-30 10:04:42 STATE: test-backend-node.js event: image +2022-09-30 10:04:42 STATE: test-backend-node.js event: detect +2022-09-30 10:04:42 STATE: test-backend-node.js event: warmup +2022-09-30 10:04:42 STATE: test-backend-node.js passed: warmup: face default +2022-09-30 10:04:42 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-09-30 10:04:42 DATA:  test-backend-node.js result: performance: load: null total: 361 +2022-09-30 10:04:42 STATE: test-backend-node.js passed: warmup face result match +2022-09-30 10:04:42 STATE: test-backend-node.js event: image +2022-09-30 10:04:43 STATE: test-backend-node.js event: detect +2022-09-30 10:04:43 STATE: test-backend-node.js event: warmup +2022-09-30 10:04:43 STATE: test-backend-node.js passed: warmup: body default +2022-09-30 10:04:43 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-09-30 10:04:43 DATA:  test-backend-node.js result: performance: load: null total: 253 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: warmup body result match +2022-09-30 10:04:43 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-09-30 10:04:43 INFO:  test-backend-node.js test: details verification +2022-09-30 10:04:43 STATE: test-backend-node.js start default +2022-09-30 10:04:43 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:43 STATE: test-backend-node.js event: image +2022-09-30 10:04:43 STATE: test-backend-node.js event: detect +2022-09-30 10:04:43 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg default +2022-09-30 10:04:43 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-09-30 10:04:43 DATA:  test-backend-node.js result: performance: load: null total: 246 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details face length 1 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details face score 1 0.93 1 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details face arrays 4 478 1024 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details face anti-spoofing 0.79 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details face liveness 0.83 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details body length 1 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details body 0.92 17 6 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details hand length 1 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details hand 0.51 0.73 point +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details hand arrays 21 5 7 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details gesture length 7 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details object length 1 +2022-09-30 10:04:43 STATE: test-backend-node.js passed: details object 0.72 person +2022-09-30 10:04:43 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-09-30 10:04:43 STATE: test-backend-node.js event: image +2022-09-30 10:04:44 STATE: test-backend-node.js event: detect +2022-09-30 10:04:44 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-09-30 10:04:44 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-09-30 10:04:44 STATE: test-backend-node.js event: image +2022-09-30 10:04:44 STATE: test-backend-node.js event: detect +2022-09-30 10:04:44 STATE: test-backend-node.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-09-30 10:04:44 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:44 STATE: test-backend-node.js event: image +2022-09-30 10:04:44 STATE: test-backend-node.js event: detect +2022-09-30 10:04:44 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-09-30 10:04:44 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:44 STATE: test-backend-node.js event: image +2022-09-30 10:04:45 STATE: test-backend-node.js event: detect +2022-09-30 10:04:45 STATE: test-backend-node.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-09-30 10:04:45 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-09-30 10:04:45 STATE: test-backend-node.js event: image +2022-09-30 10:04:45 STATE: test-backend-node.js event: detect +2022-09-30 10:04:45 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-09-30 10:04:45 INFO:  test-backend-node.js test default +2022-09-30 10:04:45 STATE: test-backend-node.js start async +2022-09-30 10:04:45 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:45 STATE: test-backend-node.js event: image +2022-09-30 10:04:46 STATE: test-backend-node.js event: detect +2022-09-30 10:04:46 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg async +2022-09-30 10:04:46 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-09-30 10:04:46 DATA:  test-backend-node.js result: performance: load: null total: 232 +2022-09-30 10:04:46 STATE: test-backend-node.js passed: default result face match 1 female 0.97 +2022-09-30 10:04:46 INFO:  test-backend-node.js test sync +2022-09-30 10:04:46 STATE: test-backend-node.js start sync +2022-09-30 10:04:46 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:46 STATE: test-backend-node.js event: image +2022-09-30 10:04:46 STATE: test-backend-node.js event: detect +2022-09-30 10:04:46 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sync +2022-09-30 10:04:46 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-09-30 10:04:46 DATA:  test-backend-node.js result: performance: load: null total: 217 +2022-09-30 10:04:46 STATE: test-backend-node.js passed: default sync 1 female 0.97 +2022-09-30 10:04:46 INFO:  test-backend-node.js test: image process +2022-09-30 10:04:46 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:46 STATE: test-backend-node.js passed: image input null [1,256,256,3] +2022-09-30 10:04:46 INFO:  test-backend-node.js test: image null +2022-09-30 10:04:46 STATE: test-backend-node.js passed: invalid input could not convert input to tensor +2022-09-30 10:04:46 INFO:  test-backend-node.js test face similarity +2022-09-30 10:04:46 STATE: test-backend-node.js start face similarity +2022-09-30 10:04:46 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:46 STATE: test-backend-node.js event: image +2022-09-30 10:04:46 STATE: test-backend-node.js event: detect +2022-09-30 10:04:46 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face similarity +2022-09-30 10:04:46 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-09-30 10:04:46 DATA:  test-backend-node.js result: performance: load: null total: 202 +2022-09-30 10:04:46 STATE: test-backend-node.js start face similarity +2022-09-30 10:04:46 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:46 STATE: test-backend-node.js event: image +2022-09-30 10:04:47 STATE: test-backend-node.js event: detect +2022-09-30 10:04:47 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg face similarity +2022-09-30 10:04:47 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-09-30 10:04:47 DATA:  test-backend-node.js result: performance: load: null total: 214 +2022-09-30 10:04:47 STATE: test-backend-node.js start face similarity +2022-09-30 10:04:47 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-09-30 10:04:47 STATE: test-backend-node.js event: image +2022-09-30 10:04:47 STATE: test-backend-node.js event: detect +2022-09-30 10:04:47 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-09-30 10:04:47 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-09-30 10:04:47 DATA:  test-backend-node.js result: performance: load: null total: 191 +2022-09-30 10:04:47 STATE: test-backend-node.js passed: face descriptor +2022-09-30 10:04:47 STATE: test-backend-node.js passed: face similarity {"similarity":[1,0.44727452329649126,0.5567935850640406],"descriptors":[1024,1024,1024]} +2022-09-30 10:04:47 INFO:  test-backend-node.js test object +2022-09-30 10:04:47 STATE: test-backend-node.js start object +2022-09-30 10:04:47 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:47 STATE: test-backend-node.js event: image +2022-09-30 10:04:47 STATE: test-backend-node.js event: detect +2022-09-30 10:04:47 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object +2022-09-30 10:04:47 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-09-30 10:04:47 DATA:  test-backend-node.js result: performance: load: null total: 231 +2022-09-30 10:04:47 STATE: test-backend-node.js passed: centernet +2022-09-30 10:04:47 STATE: test-backend-node.js start object +2022-09-30 10:04:48 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:48 STATE: test-backend-node.js event: image +2022-09-30 10:04:48 STATE: test-backend-node.js event: detect +2022-09-30 10:04:48 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object +2022-09-30 10:04:48 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-09-30 10:04:48 DATA:  test-backend-node.js result: performance: load: null total: 215 +2022-09-30 10:04:48 STATE: test-backend-node.js passed: nanodet +2022-09-30 10:04:48 INFO:  test-backend-node.js test sensitive +2022-09-30 10:04:48 STATE: test-backend-node.js start sensitive +2022-09-30 10:04:49 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:49 STATE: test-backend-node.js event: image +2022-09-30 10:04:49 STATE: test-backend-node.js event: detect +2022-09-30 10:04:49 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sensitive +2022-09-30 10:04:49 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-09-30 10:04:49 DATA:  test-backend-node.js result: performance: load: null total: 171 +2022-09-30 10:04:49 STATE: test-backend-node.js passed: sensitive result match +2022-09-30 10:04:49 STATE: test-backend-node.js passed: sensitive face result match +2022-09-30 10:04:49 STATE: test-backend-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-09-30 10:04:49 STATE: test-backend-node.js passed: sensitive body result match +2022-09-30 10:04:49 STATE: test-backend-node.js passed: sensitive hand result match +2022-09-30 10:04:49 INFO:  test-backend-node.js test body +2022-09-30 10:04:49 STATE: test-backend-node.js start blazepose +2022-09-30 10:04:51 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:51 STATE: test-backend-node.js event: image +2022-09-30 10:04:51 STATE: test-backend-node.js event: detect +2022-09-30 10:04:51 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg blazepose +2022-09-30 10:04:51 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-09-30 10:04:51 DATA:  test-backend-node.js result: performance: load: null total: 219 +2022-09-30 10:04:51 STATE: test-backend-node.js passed: blazepose +2022-09-30 10:04:51 STATE: test-backend-node.js start efficientpose +2022-09-30 10:04:52 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:52 STATE: test-backend-node.js event: image +2022-09-30 10:04:52 STATE: test-backend-node.js event: detect +2022-09-30 10:04:52 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-09-30 10:04:52 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-09-30 10:04:52 DATA:  test-backend-node.js result: performance: load: null total: 236 +2022-09-30 10:04:52 STATE: test-backend-node.js passed: efficientpose +2022-09-30 10:04:52 STATE: test-backend-node.js start posenet +2022-09-30 10:04:53 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:53 STATE: test-backend-node.js event: image +2022-09-30 10:04:53 STATE: test-backend-node.js event: detect +2022-09-30 10:04:53 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg posenet +2022-09-30 10:04:53 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-09-30 10:04:53 DATA:  test-backend-node.js result: performance: load: null total: 169 +2022-09-30 10:04:53 STATE: test-backend-node.js passed: posenet +2022-09-30 10:04:53 STATE: test-backend-node.js start movenet +2022-09-30 10:04:53 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:53 STATE: test-backend-node.js event: image +2022-09-30 10:04:53 STATE: test-backend-node.js event: detect +2022-09-30 10:04:53 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg movenet +2022-09-30 10:04:53 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-09-30 10:04:53 DATA:  test-backend-node.js result: performance: load: null total: 170 +2022-09-30 10:04:53 STATE: test-backend-node.js passed: movenet +2022-09-30 10:04:53 INFO:  test-backend-node.js test face matching +2022-09-30 10:04:53 STATE: test-backend-node.js passed: face database 40 +2022-09-30 10:04:53 STATE: test-backend-node.js passed: face match {"first":{"index":4,"similarity":0.7827852615252829}} {"second":{"index":4,"similarity":0.5002052633015844}} {"third":{"index":4,"similarity":0.5401587887998899}} +2022-09-30 10:04:53 INFO:  test-backend-node.js test face similarity alternative +2022-09-30 10:04:53 STATE: test-backend-node.js start face embeddings +2022-09-30 10:04:54 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:54 STATE: test-backend-node.js event: image +2022-09-30 10:04:54 STATE: test-backend-node.js event: detect +2022-09-30 10:04:54 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-09-30 10:04:54 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:04:54 DATA:  test-backend-node.js result: performance: load: null total: 183 +2022-09-30 10:04:54 STATE: test-backend-node.js passed: mobilefacenet {"embedding":192} +2022-09-30 10:04:54 STATE: test-backend-node.js start face embeddings +2022-09-30 10:04:55 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:55 STATE: test-backend-node.js event: image +2022-09-30 10:04:55 STATE: test-backend-node.js event: detect +2022-09-30 10:04:55 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-09-30 10:04:55 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:04:55 DATA:  test-backend-node.js result: performance: load: null total: 195 +2022-09-30 10:04:55 STATE: test-backend-node.js passed: insightface {"embedding":512} +2022-09-30 10:04:55 INFO:  test-backend-node.js test face attention +2022-09-30 10:04:55 STATE: test-backend-node.js start face attention +2022-09-30 10:04:55 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:56 STATE: test-backend-node.js event: image +2022-09-30 10:04:56 STATE: test-backend-node.js event: detect +2022-09-30 10:04:56 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face attention +2022-09-30 10:04:56 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:04:56 DATA:  test-backend-node.js result: performance: load: null total: 175 +2022-09-30 10:04:56 STATE: test-backend-node.js passed: face attention +2022-09-30 10:04:56 INFO:  test-backend-node.js test detectors +2022-09-30 10:04:56 STATE: test-backend-node.js start detectors +2022-09-30 10:04:56 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:56 STATE: test-backend-node.js event: image +2022-09-30 10:04:56 STATE: test-backend-node.js event: detect +2022-09-30 10:04:56 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg detectors +2022-09-30 10:04:56 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:04:56 DATA:  test-backend-node.js result: performance: load: null total: 127 +2022-09-30 10:04:56 STATE: test-backend-node.js passed: detector result face match +2022-09-30 10:04:56 STATE: test-backend-node.js passed: detector result hand match +2022-09-30 10:04:56 INFO:  test-backend-node.js test: multi-instance +2022-09-30 10:04:56 STATE: test-backend-node.js start multi instance +2022-09-30 10:04:56 STATE: test-backend-node.js event: image +2022-09-30 10:04:56 STATE: test-backend-node.js event: detect +2022-09-30 10:04:56 STATE: test-backend-node.js passed: detect: random multi instance +2022-09-30 10:04:56 DATA:  test-backend-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} +2022-09-30 10:04:56 DATA:  test-backend-node.js result: performance: load: null total: 87 +2022-09-30 10:04:56 INFO:  test-backend-node.js test: first instance +2022-09-30 10:04:56 STATE: test-backend-node.js start multi instance +2022-09-30 10:04:56 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-09-30 10:04:56 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-09-30 10:04:56 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:04:56 DATA:  test-backend-node.js result: performance: load: null total: 108 +2022-09-30 10:04:56 INFO:  test-backend-node.js test: second instance +2022-09-30 10:04:56 STATE: test-backend-node.js start multi instance +2022-09-30 10:04:56 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-09-30 10:04:56 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-09-30 10:04:56 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:04:56 DATA:  test-backend-node.js result: performance: load: null total: 91 +2022-09-30 10:04:56 INFO:  test-backend-node.js test: concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js start concurrent +2022-09-30 10:04:56 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:56 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:57 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:57 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:57 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:57 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:57 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-09-30 10:04:57 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-09-30 10:04:57 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-09-30 10:04:57 STATE: test-backend-node.js event: image +2022-09-30 10:04:57 STATE: test-backend-node.js event: image +2022-09-30 10:04:57 STATE: test-backend-node.js event: image +2022-09-30 10:04:58 STATE: test-backend-node.js event: detect +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js event: detect +2022-09-30 10:04:58 STATE: test-backend-node.js event: detect +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:04:58 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:04:58 DATA:  test-backend-node.js result: performance: load: null total: 835 +2022-09-30 10:04:58 INFO:  test-backend-node.js test: monkey-patch +2022-09-30 10:04:58 STATE: test-backend-node.js event: image +2022-09-30 10:04:58 STATE: test-backend-node.js event: detect +2022-09-30 10:04:58 STATE: test-backend-node.js passed: monkey patch +2022-09-30 10:04:58 STATE: test-backend-node.js passed: segmentation [65536] +2022-09-30 10:04:58 STATE: test-backend-node.js passeed: equal usage +2022-09-30 10:04:58 INFO:  test-backend-node.js test: input compare +2022-09-30 10:04:58 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:04:58 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-09-30 10:04:58 STATE: test-backend-node.js passed: image compare 0 23.275441687091504 +2022-09-30 10:04:58 INFO:  test-backend-node.js events: {"image":29,"detect":29,"warmup":2} +2022-09-30 10:04:58 INFO:  test-backend-node.js tensors 4147 +2022-09-30 10:04:58 INFO:  test-backend-node.js test complete: 16423 ms +2022-09-30 10:04:58 INFO:  +2022-09-30 10:04:58 INFO:  test-backend-node-gpu.js start +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js test: configuration validation +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: configuration default validation [] +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js test: model load +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"file://models/selfie.json"},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js memory: {"memory":{"unreliable":true,"numTensors":1921,"numDataBuffers":1921,"numBytes":63673064}} +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63673064,"numTensors":1921,"numStringTensors":0,"numDataBuffers":1921,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js test: warmup +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: create human +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js human version: 2.11.0 +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js platform: linux x64 agent: NodeJS v18.10.0 +2022-09-30 10:04:59 INFO:  test-backend-node-gpu.js tfjs version: 3.20.0 +2022-09-30 10:04:59 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":"3.20.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.7.3-dev20220521","gpu":true},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: set backend: tensorflow +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js tensors 1921 +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: load models +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js result: defined models: 23 loaded models: 12 +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: warmup: none default +2022-09-30 10:04:59 DATA:  test-backend-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-09-30 10:04:59 DATA:  test-backend-node-gpu.js result: performance: load: null total: null +2022-09-30 10:04:59 STATE: test-backend-node-gpu.js passed: warmup none result match +2022-09-30 10:05:00 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: warmup +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: warmup: face default +2022-09-30 10:05:03 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-09-30 10:05:03 DATA:  test-backend-node-gpu.js result: performance: load: null total: 3145 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: warmup face result match +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: warmup +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: warmup: body default +2022-09-30 10:05:03 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-09-30 10:05:03 DATA:  test-backend-node-gpu.js result: performance: load: null total: 143 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: warmup body result match +2022-09-30 10:05:03 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-09-30 10:05:03 INFO:  test-backend-node-gpu.js test: details verification +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js start default +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-09-30 10:05:03 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-09-30 10:05:03 DATA:  test-backend-node-gpu.js result: performance: load: null total: 132 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details face length 1 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details face score 1 0.93 1 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details face arrays 4 478 1024 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details face anti-spoofing 0.79 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details face liveness 0.83 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details body length 1 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details body 0.92 17 6 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details hand length 1 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details hand 0.51 0.73 point +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details hand arrays 21 5 7 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details gesture length 7 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details object length 1 +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: details object 0.72 person +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:03 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:04 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-09-30 10:05:05 INFO:  test-backend-node-gpu.js test default +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js start async +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg async +2022-09-30 10:05:05 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-09-30 10:05:05 DATA:  test-backend-node-gpu.js result: performance: load: null total: 121 +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: default result face match 1 female 0.97 +2022-09-30 10:05:05 INFO:  test-backend-node-gpu.js test sync +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js start sync +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sync +2022-09-30 10:05:05 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-09-30 10:05:05 DATA:  test-backend-node-gpu.js result: performance: load: null total: 143 +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: default sync 1 female 0.97 +2022-09-30 10:05:05 INFO:  test-backend-node-gpu.js test: image process +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: image input null [1,256,256,3] +2022-09-30 10:05:05 INFO:  test-backend-node-gpu.js test: image null +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: invalid input could not convert input to tensor +2022-09-30 10:05:05 INFO:  test-backend-node-gpu.js test face similarity +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js start face similarity +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity +2022-09-30 10:05:05 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-09-30 10:05:05 DATA:  test-backend-node-gpu.js result: performance: load: null total: 128 +2022-09-30 10:05:05 STATE: test-backend-node-gpu.js start face similarity +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity +2022-09-30 10:05:06 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-09-30 10:05:06 DATA:  test-backend-node-gpu.js result: performance: load: null total: 139 +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js start face similarity +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-09-30 10:05:06 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-09-30 10:05:06 DATA:  test-backend-node-gpu.js result: performance: load: null total: 129 +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: face descriptor +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: face similarity {"similarity":[1,0.447238756461232,0.556914029877052],"descriptors":[1024,1024,1024]} +2022-09-30 10:05:06 INFO:  test-backend-node-gpu.js test object +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js start object +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-09-30 10:05:06 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-09-30 10:05:06 DATA:  test-backend-node-gpu.js result: performance: load: null total: 130 +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js passed: centernet +2022-09-30 10:05:06 STATE: test-backend-node-gpu.js start object +2022-09-30 10:05:07 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:07 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-09-30 10:05:08 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-09-30 10:05:08 DATA:  test-backend-node-gpu.js result: performance: load: null total: 560 +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: nanodet +2022-09-30 10:05:08 INFO:  test-backend-node-gpu.js test sensitive +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js start sensitive +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive +2022-09-30 10:05:08 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-09-30 10:05:08 DATA:  test-backend-node-gpu.js result: performance: load: null total: 115 +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: sensitive result match +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: sensitive face result match +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: sensitive body result match +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js passed: sensitive hand result match +2022-09-30 10:05:08 INFO:  test-backend-node-gpu.js test body +2022-09-30 10:05:08 STATE: test-backend-node-gpu.js start blazepose +2022-09-30 10:05:10 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:10 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:10 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:10 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose +2022-09-30 10:05:10 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-09-30 10:05:10 DATA:  test-backend-node-gpu.js result: performance: load: null total: 265 +2022-09-30 10:05:10 STATE: test-backend-node-gpu.js passed: blazepose +2022-09-30 10:05:10 STATE: test-backend-node-gpu.js start efficientpose +2022-09-30 10:05:11 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:11 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:11 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:11 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-09-30 10:05:11 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-09-30 10:05:11 DATA:  test-backend-node-gpu.js result: performance: load: null total: 740 +2022-09-30 10:05:11 STATE: test-backend-node-gpu.js passed: efficientpose +2022-09-30 10:05:11 STATE: test-backend-node-gpu.js start posenet +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet +2022-09-30 10:05:12 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-09-30 10:05:12 DATA:  test-backend-node-gpu.js result: performance: load: null total: 144 +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: posenet +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js start movenet +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet +2022-09-30 10:05:12 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-09-30 10:05:12 DATA:  test-backend-node-gpu.js result: performance: load: null total: 131 +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: movenet +2022-09-30 10:05:12 INFO:  test-backend-node-gpu.js test face matching +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: face database 40 +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7828184453007331}} {"second":{"index":4,"similarity":0.5001334216773398}} {"third":{"index":4,"similarity":0.5403054967489764}} +2022-09-30 10:05:12 INFO:  test-backend-node-gpu.js test face similarity alternative +2022-09-30 10:05:12 STATE: test-backend-node-gpu.js start face embeddings +2022-09-30 10:05:13 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:13 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:13 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:13 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-09-30 10:05:13 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:13 DATA:  test-backend-node-gpu.js result: performance: load: null total: 164 +2022-09-30 10:05:13 STATE: test-backend-node-gpu.js passed: mobilefacenet {"embedding":192} +2022-09-30 10:05:13 STATE: test-backend-node-gpu.js start face embeddings +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-09-30 10:05:14 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:14 DATA:  test-backend-node-gpu.js result: performance: load: null total: 178 +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: insightface {"embedding":512} +2022-09-30 10:05:14 INFO:  test-backend-node-gpu.js test face attention +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js start face attention +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face attention +2022-09-30 10:05:14 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:14 DATA:  test-backend-node-gpu.js result: performance: load: null total: 243 +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: face attention +2022-09-30 10:05:14 INFO:  test-backend-node-gpu.js test detectors +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js start detectors +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg detectors +2022-09-30 10:05:14 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:14 DATA:  test-backend-node-gpu.js result: performance: load: null total: 104 +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: detector result face match +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js passed: detector result hand match +2022-09-30 10:05:14 INFO:  test-backend-node-gpu.js test: multi-instance +2022-09-30 10:05:14 STATE: test-backend-node-gpu.js start multi instance +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: detect: random multi instance +2022-09-30 10:05:15 DATA:  test-backend-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} +2022-09-30 10:05:15 DATA:  test-backend-node-gpu.js result: performance: load: null total: 60 +2022-09-30 10:05:15 INFO:  test-backend-node-gpu.js test: first instance +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start multi instance +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-09-30 10:05:15 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:15 DATA:  test-backend-node-gpu.js result: performance: load: null total: 90 +2022-09-30 10:05:15 INFO:  test-backend-node-gpu.js test: second instance +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start multi instance +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-09-30 10:05:15 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:15 DATA:  test-backend-node-gpu.js result: performance: load: null total: 77 +2022-09-30 10:05:15 INFO:  test-backend-node-gpu.js test: concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js start concurrent +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 656 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 656 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 656 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 657 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 657 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 656 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 657 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 657 +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:16 DATA:  test-backend-node-gpu.js result: performance: load: null total: 656 +2022-09-30 10:05:16 INFO:  test-backend-node-gpu.js test: monkey-patch +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: image +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js event: detect +2022-09-30 10:05:16 STATE: test-backend-node-gpu.js passed: monkey patch +2022-09-30 10:05:17 STATE: test-backend-node-gpu.js passed: segmentation [65536] +2022-09-30 10:05:17 STATE: test-backend-node-gpu.js passeed: equal usage +2022-09-30 10:05:17 INFO:  test-backend-node-gpu.js test: input compare +2022-09-30 10:05:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-09-30 10:05:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-09-30 10:05:17 STATE: test-backend-node-gpu.js passed: image compare 0 23.275441687091504 +2022-09-30 10:05:17 INFO:  test-backend-node-gpu.js events: {"image":29,"detect":29,"warmup":2} +2022-09-30 10:05:17 INFO:  test-backend-node-gpu.js tensors 4147 +2022-09-30 10:05:17 INFO:  test-backend-node-gpu.js test complete: 17677 ms +2022-09-30 10:05:17 INFO:  +2022-09-30 10:05:17 INFO:  test-backend-node-wasm.js start +2022-09-30 10:05:18 DATA:  test-backend-node-wasm.js stdout: 2022-09-30 10:05:18 INFO:  { supported: true, backend: true, simd: true, multithread: false } https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@3.20.0/dist/ +2022-09-30 10:05:18 STATE: test-backend-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ +2022-09-30 10:05:18 INFO:  test-backend-node-wasm.js test: configuration validation +2022-09-30 10:05:18 STATE: test-backend-node-wasm.js passed: configuration default validation [] +2022-09-30 10:05:18 STATE: test-backend-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-09-30 10:05:18 INFO:  test-backend-node-wasm.js test: model load +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: models loaded 23 12 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"https://vladmandic.github.io/human/models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"https://vladmandic.github.io/human/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human/models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"https://vladmandic.github.io/human/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human/models/liveness.json"},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"segmentation","loaded":true,"url":"https://vladmandic.github.io/human/models/selfie.json"},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human/models/antispoof.json"}] +2022-09-30 10:05:20 INFO:  test-backend-node-wasm.js memory: {"memory":{"unreliable":false,"numTensors":1921,"numDataBuffers":1921,"numBytes":63673064}} +2022-09-30 10:05:20 INFO:  test-backend-node-wasm.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63673064,"numTensors":1921,"numStringTensors":0,"numDataBuffers":1921,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-09-30 10:05:20 INFO:  test-backend-node-wasm.js test: warmup +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: create human +2022-09-30 10:05:20 INFO:  test-backend-node-wasm.js human version: 2.11.0 +2022-09-30 10:05:20 INFO:  test-backend-node-wasm.js platform: linux x64 agent: NodeJS v18.10.0 +2022-09-30 10:05:20 INFO:  test-backend-node-wasm.js tfjs version: 3.20.0 +2022-09-30 10:05:20 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":"3.20.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-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: set backend: wasm +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js tensors 1921 +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: load models +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js result: defined models: 23 loaded models: 12 +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: warmup: none default +2022-09-30 10:05:20 DATA:  test-backend-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-09-30 10:05:20 DATA:  test-backend-node-wasm.js result: performance: load: null total: null +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: warmup none result match +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js event: warmup +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: warmup: face default +2022-09-30 10:05:20 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-09-30 10:05:20 DATA:  test-backend-node-wasm.js result: performance: load: null total: 523 +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js passed: warmup face result match +2022-09-30 10:05:20 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js event: warmup +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: warmup: body default +2022-09-30 10:05:21 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-09-30 10:05:21 DATA:  test-backend-node-wasm.js result: performance: load: null total: 356 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: warmup body result match +2022-09-30 10:05:21 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-09-30 10:05:21 INFO:  test-backend-node-wasm.js test: details verification +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js start default +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-09-30 10:05:21 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-09-30 10:05:21 DATA:  test-backend-node-wasm.js result: performance: load: null total: 316 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details face length 1 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details face score 1 0.93 1 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details face age/gender 23.7 female 0.97 85.47 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details face arrays 4 478 1024 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details face anti-spoofing 0.79 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details face liveness 0.83 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details body length 1 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details body 0.92 17 6 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details hand length 1 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details hand 0.51 0.73 point +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details hand arrays 21 5 7 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details gesture length 7 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details object length 1 +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: details object 0.72 person +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} +2022-09-30 10:05:21 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:22 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:22 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-09-30 10:05:22 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} +2022-09-30 10:05:22 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:22 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:22 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-09-30 10:05:23 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:23 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:23 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:23 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-09-30 10:05:23 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:23 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-09-30 10:05:24 INFO:  test-backend-node-wasm.js test default +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js start async +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:24 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg async +2022-09-30 10:05:25 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-09-30 10:05:25 DATA:  test-backend-node-wasm.js result: performance: load: null total: 353 +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: default result face match 1 female 0.97 +2022-09-30 10:05:25 INFO:  test-backend-node-wasm.js test sync +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js start sync +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sync +2022-09-30 10:05:25 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-09-30 10:05:25 DATA:  test-backend-node-wasm.js result: performance: load: null total: 412 +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: default sync 1 female 0.97 +2022-09-30 10:05:25 INFO:  test-backend-node-wasm.js test: image process +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: image input null [1,256,256,3] +2022-09-30 10:05:25 INFO:  test-backend-node-wasm.js test: image null +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js passed: invalid input could not convert input to tensor +2022-09-30 10:05:25 INFO:  test-backend-node-wasm.js test face similarity +2022-09-30 10:05:25 STATE: test-backend-node-wasm.js start face similarity +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity +2022-09-30 10:05:26 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-09-30 10:05:26 DATA:  test-backend-node-wasm.js result: performance: load: null total: 303 +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js start face similarity +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity +2022-09-30 10:05:26 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-09-30 10:05:26 DATA:  test-backend-node-wasm.js result: performance: load: null total: 330 +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js start face similarity +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-09-30 10:05:26 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-09-30 10:05:27 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-09-30 10:05:27 DATA:  test-backend-node-wasm.js result: performance: load: null total: 311 +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js passed: face descriptor +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} +2022-09-30 10:05:27 INFO:  test-backend-node-wasm.js test object +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js start object +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-09-30 10:05:27 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-09-30 10:05:27 DATA:  test-backend-node-wasm.js result: performance: load: null total: 324 +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js passed: centernet +2022-09-30 10:05:27 STATE: test-backend-node-wasm.js start object +2022-09-30 10:05:28 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-09-30 10:05:28 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:28 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-09-30 10:05:29 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-09-30 10:05:29 DATA:  test-backend-node-wasm.js result: performance: load: null total: 225 +2022-09-30 10:05:29 ERROR: test-backend-node-wasm.js failed: nanodet [] +2022-09-30 10:05:29 INFO:  test-backend-node-wasm.js test sensitive +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js start sensitive +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive +2022-09-30 10:05:29 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-09-30 10:05:29 DATA:  test-backend-node-wasm.js result: performance: load: null total: 243 +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js passed: sensitive result match +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js passed: sensitive face result match +2022-09-30 10:05:29 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-09-30 10:05:29 STATE: test-backend-node-wasm.js passed: sensitive body result match +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js passed: sensitive hand result match +2022-09-30 10:05:29 INFO:  test-backend-node-wasm.js test body +2022-09-30 10:05:29 STATE: test-backend-node-wasm.js start blazepose +2022-09-30 10:05:32 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:32 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:32 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:32 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose +2022-09-30 10:05:32 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-09-30 10:05:32 DATA:  test-backend-node-wasm.js result: performance: load: null total: 419 +2022-09-30 10:05:32 STATE: test-backend-node-wasm.js passed: blazepose +2022-09-30 10:05:32 STATE: test-backend-node-wasm.js start efficientpose +2022-09-30 10:05:33 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:33 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:34 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:34 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-09-30 10:05:34 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-09-30 10:05:34 DATA:  test-backend-node-wasm.js result: performance: load: null total: 716 +2022-09-30 10:05:34 STATE: test-backend-node-wasm.js passed: efficientpose +2022-09-30 10:05:34 STATE: test-backend-node-wasm.js start posenet +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet +2022-09-30 10:05:35 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-09-30 10:05:35 DATA:  test-backend-node-wasm.js result: performance: load: null total: 289 +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js passed: posenet +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js start movenet +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet +2022-09-30 10:05:35 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-09-30 10:05:35 DATA:  test-backend-node-wasm.js result: performance: load: null total: 239 +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js passed: movenet +2022-09-30 10:05:35 INFO:  test-backend-node-wasm.js test face matching +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js passed: face database 40 +2022-09-30 10:05:35 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-09-30 10:05:35 INFO:  test-backend-node-wasm.js test face similarity alternative +2022-09-30 10:05:35 STATE: test-backend-node-wasm.js start face embeddings +2022-09-30 10:05:36 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:36 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:36 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:36 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-09-30 10:05:36 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:36 DATA:  test-backend-node-wasm.js result: performance: load: null total: 243 +2022-09-30 10:05:36 STATE: test-backend-node-wasm.js passed: mobilefacenet {"embedding":192} +2022-09-30 10:05:36 STATE: test-backend-node-wasm.js start face embeddings +2022-09-30 10:05:37 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:37 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:37 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:37 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face embeddings +2022-09-30 10:05:37 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 0 person: 1 {"score":1,"age":23.5,"gender":"female"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:37 DATA:  test-backend-node-wasm.js result: performance: load: null total: 288 +2022-09-30 10:05:37 STATE: test-backend-node-wasm.js passed: insightface {"embedding":512} +2022-09-30 10:05:37 INFO:  test-backend-node-wasm.js test face attention +2022-09-30 10:05:37 STATE: test-backend-node-wasm.js start face attention +2022-09-30 10:05:38 WARN:  test-backend-node-wasm.js missing kernel ops {"title":"face attention","model":"facemesh","url":"https://vladmandic.github.io/human-models/models/facemesh-attention.json","missing":["atan2"],"backkend":"wasm"} +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face attention +2022-09-30 10:05:38 DATA:  test-backend-node-wasm.js result: face: 0 body: 1 hand: 1 gesture: 2 object: 0 person: 0 {} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:38 DATA:  test-backend-node-wasm.js result: performance: load: null total: 117 +2022-09-30 10:05:38 ERROR: test-backend-node-wasm.js failed: face attention {"annotations":0} +2022-09-30 10:05:38 INFO:  test-backend-node-wasm.js test detectors +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js start detectors +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg detectors +2022-09-30 10:05:38 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:38 DATA:  test-backend-node-wasm.js result: performance: load: null total: 118 +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js passed: detector result face match +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js passed: detector result hand match +2022-09-30 10:05:38 INFO:  test-backend-node-wasm.js test: multi-instance +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js start multi instance +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js passed: detect: random multi instance +2022-09-30 10:05:38 DATA:  test-backend-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0} +2022-09-30 10:05:38 DATA:  test-backend-node-wasm.js result: performance: load: null total: 98 +2022-09-30 10:05:38 INFO:  test-backend-node-wasm.js test: first instance +2022-09-30 10:05:38 STATE: test-backend-node-wasm.js start multi instance +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-09-30 10:05:39 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:39 DATA:  test-backend-node-wasm.js result: performance: load: null total: 111 +2022-09-30 10:05:39 INFO:  test-backend-node-wasm.js test: second instance +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start multi instance +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg multi instance +2022-09-30 10:05:39 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:39 DATA:  test-backend-node-wasm.js result: performance: load: null total: 111 +2022-09-30 10:05:39 INFO:  test-backend-node-wasm.js test: concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js start concurrent +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:40 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:40 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-09-30 10:05:40 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-09-30 10:05:40 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-09-30 10:05:40 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:40 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:40 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 944 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 944 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 0 person: 1 {"score":0.96,"gender":"unknown"} {} {"score":0.75,"keypoints":7} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 944 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.91,"gender":"unknown"} {} {"score":0.47,"keypoints":3} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg concurrent +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 0 person: 1 {"score":0.93,"gender":"unknown"} {} {"score":0.92,"keypoints":17} +2022-09-30 10:05:41 DATA:  test-backend-node-wasm.js result: performance: load: null total: 945 +2022-09-30 10:05:41 INFO:  test-backend-node-wasm.js test: monkey-patch +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js event: image +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js event: detect +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: monkey patch +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: segmentation [65536] +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passeed: equal usage +2022-09-30 10:05:41 INFO:  test-backend-node-wasm.js test: input compare +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-09-30 10:05:41 STATE: test-backend-node-wasm.js passed: image compare 0 23.280073018790848 +2022-09-30 10:05:41 INFO:  test-backend-node-wasm.js events: {"image":29,"detect":29,"warmup":2} +2022-09-30 10:05:41 INFO:  test-backend-node-wasm.js tensors 4149 +2022-09-30 10:05:41 INFO:  test-backend-node-wasm.js test complete: 23460 ms +2022-09-30 10:05:41 STATE: all tests complete +2022-09-30 10:05:41 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/nodejs/node-fetch.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/nodejs/process-folder.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"../demo/facematch/node-match.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"test-node-load.js","passed":1,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"test-node-gear.js","passed":3,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"test-backend-node.js","passed":125,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"test-backend-node-gpu.js","passed":125,"failed":0} +2022-09-30 10:05:41 INFO:  status {"test":"test-backend-node-wasm.js","passed":124,"failed":2} +2022-09-30 10:05:41 INFO:  failures {"count":2} +2022-09-30 10:05:41 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: nanodet",[]]]} +2022-09-30 10:05:41 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: face attention",{"annotations":0}]]} diff --git a/tsconfig.json b/tsconfig.json index be1b8e29..bbde1847 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -51,7 +51,7 @@ "indentSize": 2, "tabSize": 2 }, - "exclude": ["node_modules/", "types/", "dist/"], + "exclude": ["node_modules/", "types/", "dist/**/*.js"], "include": ["src", "tfjs/*.ts", "types/human.d.ts", "test/**/*.ts", "demo/**/*.ts"], "typedocOptions": { "externalPattern": ["node_modules/", "tfjs/"]