diff --git a/CHANGELOG.md b/CHANGELOG.md index c7a79a98..863a030c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,9 @@ ## Changelog -### **HEAD -> main** 2022/11/12 mandic00@live.com +### **HEAD -> main** 2022/11/16 mandic00@live.com +- include external typedefs - prepare external typedefs - rebuild all - include project files for types diff --git a/TODO.md b/TODO.md index 41fb08d7..8f58e523 100644 --- a/TODO.md +++ b/TODO.md @@ -69,6 +69,8 @@ Features: Image and video on-demand histogram equalization - Support selecting specific video source when multiple cameras are present See `human.webcam.enumerate()` +- Updated algorithm to determine distance from camera based on iris size + See `human.result.face[n].iris` Architecture: - Reduce build dependencies diff --git a/samples/out/ai-body.jpg b/samples/out/ai-body.jpg index 5001f415..e5a7ec9f 100644 Binary files a/samples/out/ai-body.jpg and b/samples/out/ai-body.jpg differ diff --git a/src/draw/face.ts b/src/draw/face.ts index 71e72690..ca1ad5d0 100644 --- a/src/draw/face.ts +++ b/src/draw/face.ts @@ -15,7 +15,7 @@ function drawLabels(f: FaceResult, ctx: CanvasRenderingContext2D | OffscreenCanv if (f.gender) l = replace(l, '[gender]', f.gender); if (f.genderScore) l = replace(l, '[genderScore]', 100 * f.genderScore); if (f.age) l = replace(l, '[age]', f.age); - if (f.iris) l = replace(l, '[distance]', f.iris); + if (f.iris) l = replace(l, '[distance]', 100 * f.iris); if (f.real) l = replace(l, '[real]', 100 * f.real); if (f.live) l = replace(l, '[live]', 100 * f.live); if (f.emotion && f.emotion.length > 0) { diff --git a/src/face/anthropometry.ts b/src/face/anthropometry.ts new file mode 100644 index 00000000..84248857 --- /dev/null +++ b/src/face/anthropometry.ts @@ -0,0 +1,28 @@ +import type { FaceResult } from '../result'; + +export function calculateCameraDistance(face: FaceResult, width: number): number { + // iris points are [center, left, top, right, bottom] + // average size of human iris is 11.7mm - fairly constant for all ages/genders/races + const f = face?.annotations; + if (!f) return 0; + // get size of left and right iris in pixels, pick larger one as its likely to be more accurate and normalize to 0..1 range instead of pixels + const irisSize = Math.max(Math.abs(f.leftEyeIris[3][0] - f.leftEyeIris[1][0]), Math.abs(f.rightEyeIris[3][0] - f.rightEyeIris[1][0])) / width; + // distance of eye from camera in meters + const cameraDistance = Math.round(1.17 / irisSize) / 100; + return cameraDistance; +} + +export function calculateEyesDistance(face: FaceResult, width: number): number { + // average distance between eyes is 65mm - fairly constant for typical adult male, but varies otherwise + const f = face?.annotations; + if (!f) return 0; + // get size of left and right iris in pixels, pick larger one as its likely to be more accurate and normalize to 0..1 range instead of pixels + const irisSize = Math.max(Math.abs(f.leftEyeIris[3][0] - f.leftEyeIris[1][0]), Math.abs(f.rightEyeIris[3][0] - f.rightEyeIris[1][0])) / width; + // pixel x and y distance of centers of left and right iris, you can use edges instead + const irisDistanceXY = [f.leftEyeIris[0][0] - f.rightEyeIris[0][0], f.leftEyeIris[0][1] - f.rightEyeIris[0][1]]; + // absolute distance bewtween eyes in 0..1 range to account for head pitch (we can ignore yaw) + const irisDistance = Math.sqrt((irisDistanceXY[0] * irisDistanceXY[0]) + (irisDistanceXY[1] * irisDistanceXY[1])) / width; + // distance between eyes in meters + const eyesDistance = Math.round(1.17 * irisDistance / irisSize) / 100; + return eyesDistance; +} diff --git a/src/face/face.ts b/src/face/face.ts index bb8fbca2..68d84c29 100644 --- a/src/face/face.ts +++ b/src/face/face.ts @@ -21,6 +21,7 @@ import type { FaceResult, Emotion, Gender, Race } from '../result'; import type { Tensor4D } from '../tfjs/types'; import type { Human } from '../human'; import { calculateFaceAngle } from './angles'; +import { calculateCameraDistance } from './anthropometry'; interface DescRes { age: number, gender: Gender, genderScore: number, descriptor: number[], race?: { score: number, race: Race }[] } @@ -40,7 +41,7 @@ export const detectFace = async (instance: Human /* instance of human */, input: const faceRes: FaceResult[] = []; instance.state = 'run:face'; - const faces = await facemesh.predict(input, instance.config); + const faces: FaceResult[] = await facemesh.predict(input, instance.config); instance.performance.face = env.perfadd ? (instance.performance.face || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp); if (!input.shape || input.shape.length !== 4) return []; if (!faces) return []; @@ -194,17 +195,7 @@ export const detectFace = async (instance: Human /* instance of human */, input: (descRes as DescRes).descriptor = insightfaceRes as number[]; } - // calculate iris distance - // iris: array[ center, left, top, right, bottom] - if (!instance.config.face.iris?.enabled) { - // if (faces[i]?.annotations?.leftEyeIris) delete faces[i].annotations.leftEyeIris; - // if (faces[i]?.annotations?.rightEyeIris) delete faces[i].annotations.rightEyeIris; - } - const irisSize = (faces[i]?.annotations?.leftEyeIris?.[0] && faces[i]?.annotations?.rightEyeIris?.[0] - && (faces[i].annotations.leftEyeIris.length > 0) && (faces[i].annotations.rightEyeIris.length > 0) - && (faces[i].annotations.leftEyeIris[0] !== null) && (faces[i].annotations.rightEyeIris[0] !== null)) - ? Math.max(Math.abs(faces[i].annotations.leftEyeIris[3][0] - faces[i].annotations.leftEyeIris[1][0]), Math.abs(faces[i].annotations.rightEyeIris[4][1] - faces[i].annotations.rightEyeIris[2][1])) / input.shape[2] - : 0; // note: average human iris size is 11.7mm + const irisSize = instance.config.face.iris?.enabled ? calculateCameraDistance(faces[i], input.shape[2]) : 0; // optionally return tensor const tensor = instance.config.face.detector?.return ? tf.squeeze(faces[i].tensor as Tensor4D) : null; @@ -225,7 +216,7 @@ export const detectFace = async (instance: Human /* instance of human */, input: if (emotionRes) res.emotion = emotionRes as { score: number, emotion: Emotion }[]; if (antispoofRes) res.real = antispoofRes as number; if (livenessRes) res.live = livenessRes as number; - if (irisSize && irisSize !== 0) res.iris = Math.trunc(500 / irisSize / 11.7) / 100; + if (irisSize > 0) res.iris = irisSize; if (rotation) res.rotation = rotation; if (tensor) res.tensor = tensor; faceRes.push(res); diff --git a/test/build.log b/test/build.log index 314f8897..7eca27d0 100644 --- a/test/build.log +++ b/test/build.log @@ -1,50 +1,50 @@ -2022-11-16 11:18:02 DATA:  Build {"name":"@vladmandic/human","version":"3.0.0"} -2022-11-16 11:18:02 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.0"} -2022-11-16 11:18:02 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} -2022-11-16 11:18:02 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.14","typescript":"4.9.3","typedoc":"0.23.21","eslint":"8.27.0"} -2022-11-16 11:18:02 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} -2022-11-16 11:18:02 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]} -2022-11-16 11:18:02 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":361} -2022-11-16 11:18:02 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":569,"outputBytes":924} -2022-11-16 11:18:02 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":79,"inputBytes":672671,"outputBytes":318315} -2022-11-16 11:18:02 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":577,"outputBytes":928} -2022-11-16 11:18:02 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":79,"inputBytes":672675,"outputBytes":318319} -2022-11-16 11:18:02 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":665,"outputBytes":1876} -2022-11-16 11:18:02 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":79,"inputBytes":673623,"outputBytes":318430} -2022-11-16 11:18:02 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1375,"outputBytes":670} -2022-11-16 11:18:02 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":79,"inputBytes":672417,"outputBytes":316894} -2022-11-16 11:18:02 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1375,"outputBytes":1144900} -2022-11-16 11:18:02 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":79,"inputBytes":1816647,"outputBytes":1458374} -2022-11-16 11:18:02 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":79,"inputBytes":1816647,"outputBytes":1917806} -2022-11-16 11:18:06 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15} -2022-11-16 11:18:09 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":76,"generated":true} -2022-11-16 11:18:09 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6136,"outputBytes":2914} -2022-11-16 11:18:09 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17166,"outputBytes":9243} -2022-11-16 11:18:17 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":113,"errors":0,"warnings":0} -2022-11-16 11:18:17 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} -2022-11-16 11:18:17 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"} -2022-11-16 11:18:17 INFO:  Done... -2022-11-16 11:18:17 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"} -2022-11-16 11:18:17 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"} -2022-11-16 11:18:17 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"} -2022-11-16 11:18:17 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"} -2022-11-16 11:18:17 STATE: Filter: {"input":"types/tfjs-core.d.ts"} -2022-11-16 11:18:19 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":195} -2022-11-16 11:18:19 STATE: Filter: {"input":"types/human.d.ts"} -2022-11-16 11:18:19 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"} -2022-11-16 11:18:19 STATE: Write: {"output":"dist/human.esm.d.ts"} -2022-11-16 11:18:19 STATE: Write: {"output":"dist/human.d.ts"} -2022-11-16 11:18:19 STATE: Write: {"output":"dist/human.node-gpu.d.ts"} -2022-11-16 11:18:19 STATE: Write: {"output":"dist/human.node.d.ts"} -2022-11-16 11:18:19 STATE: Write: {"output":"dist/human.node-wasm.d.ts"} -2022-11-16 11:18:19 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} -2022-11-16 11:18:19 STATE: Models {"folder":"./models","models":12} -2022-11-16 11:18:19 STATE: Models {"folder":"../human-models/models","models":43} -2022-11-16 11:18:19 STATE: Models {"folder":"../blazepose/model/","models":4} -2022-11-16 11:18:19 STATE: Models {"folder":"../anti-spoofing/model","models":1} -2022-11-16 11:18:19 STATE: Models {"folder":"../efficientpose/models","models":3} -2022-11-16 11:18:19 STATE: Models {"folder":"../insightface/models","models":5} -2022-11-16 11:18:19 STATE: Models {"folder":"../movenet/models","models":3} -2022-11-16 11:18:19 STATE: Models {"folder":"../nanodet/models","models":4} -2022-11-16 11:18:19 STATE: Models: {"count":58,"totalSize":386543911} -2022-11-16 11:18:19 INFO:  Human Build complete... {"logFile":"test/build.log"} +2022-11-16 17:46:46 DATA:  Build {"name":"@vladmandic/human","version":"3.0.0"} +2022-11-16 17:46:46 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.0"} +2022-11-16 17:46:46 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} +2022-11-16 17:46:46 INFO:  Toolchain: {"build":"0.7.14","esbuild":"0.15.14","typescript":"4.9.3","typedoc":"0.23.21","eslint":"8.27.0"} +2022-11-16 17:46:46 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} +2022-11-16 17:46:46 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]} +2022-11-16 17:46:46 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":361} +2022-11-16 17:46:46 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":569,"outputBytes":924} +2022-11-16 17:46:46 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":80,"inputBytes":673738,"outputBytes":317961} +2022-11-16 17:46:46 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":577,"outputBytes":928} +2022-11-16 17:46:46 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":80,"inputBytes":673742,"outputBytes":317965} +2022-11-16 17:46:46 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":665,"outputBytes":1876} +2022-11-16 17:46:46 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":80,"inputBytes":674690,"outputBytes":318076} +2022-11-16 17:46:46 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1375,"outputBytes":670} +2022-11-16 17:46:46 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":80,"inputBytes":673484,"outputBytes":316540} +2022-11-16 17:46:46 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1375,"outputBytes":1144900} +2022-11-16 17:46:46 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":80,"inputBytes":1817714,"outputBytes":1458000} +2022-11-16 17:46:46 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":80,"inputBytes":1817714,"outputBytes":1917498} +2022-11-16 17:46:50 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15} +2022-11-16 17:46:52 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":76,"generated":true} +2022-11-16 17:46:52 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6136,"outputBytes":2914} +2022-11-16 17:46:52 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17166,"outputBytes":9243} +2022-11-16 17:47:01 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":114,"errors":0,"warnings":0} +2022-11-16 17:47:01 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} +2022-11-16 17:47:01 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"} +2022-11-16 17:47:01 INFO:  Done... +2022-11-16 17:47:01 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"} +2022-11-16 17:47:01 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"} +2022-11-16 17:47:01 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"} +2022-11-16 17:47:01 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"} +2022-11-16 17:47:01 STATE: Filter: {"input":"types/tfjs-core.d.ts"} +2022-11-16 17:47:02 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":195} +2022-11-16 17:47:02 STATE: Filter: {"input":"types/human.d.ts"} +2022-11-16 17:47:02 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"} +2022-11-16 17:47:02 STATE: Write: {"output":"dist/human.esm.d.ts"} +2022-11-16 17:47:02 STATE: Write: {"output":"dist/human.d.ts"} +2022-11-16 17:47:02 STATE: Write: {"output":"dist/human.node-gpu.d.ts"} +2022-11-16 17:47:02 STATE: Write: {"output":"dist/human.node.d.ts"} +2022-11-16 17:47:02 STATE: Write: {"output":"dist/human.node-wasm.d.ts"} +2022-11-16 17:47:02 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} +2022-11-16 17:47:02 STATE: Models {"folder":"./models","models":12} +2022-11-16 17:47:02 STATE: Models {"folder":"../human-models/models","models":43} +2022-11-16 17:47:02 STATE: Models {"folder":"../blazepose/model/","models":4} +2022-11-16 17:47:02 STATE: Models {"folder":"../anti-spoofing/model","models":1} +2022-11-16 17:47:02 STATE: Models {"folder":"../efficientpose/models","models":3} +2022-11-16 17:47:02 STATE: Models {"folder":"../insightface/models","models":5} +2022-11-16 17:47:02 STATE: Models {"folder":"../movenet/models","models":3} +2022-11-16 17:47:02 STATE: Models {"folder":"../nanodet/models","models":4} +2022-11-16 17:47:02 STATE: Models: {"count":58,"totalSize":386543911} +2022-11-16 17:47:02 INFO:  Human Build complete... {"logFile":"test/build.log"} diff --git a/test/test-node-main.js b/test/test-node-main.js index 5aba0c6d..8c138b31 100644 --- a/test/test-node-main.js +++ b/test/test-node-main.js @@ -189,7 +189,7 @@ async function verifyDetails(human) { verify(res.face.length === 1, 'details face length', res.face.length); for (const face of res.face) { verify(face.score > 0.9 && face.boxScore > 0.9 && face.faceScore > 0.9, 'details face score', face.score, face.boxScore, face.faceScore); - verify(face.age > 23 && face.age < 30 && face.gender === 'female' && face.genderScore > 0.9 && face.iris > 70 && face.iris < 105, 'details face age/gender', face.age, face.gender, face.genderScore, face.iris); + verify(face.age > 23 && face.age < 30 && face.gender === 'female' && face.genderScore > 0.9 && face.iris > 0.5 && face.iris < 2.5, 'details face age/gender', face.age, face.gender, face.genderScore, face.iris); verify(face.box.length === 4 && face.boxRaw.length === 4 && face.mesh.length === 478 && face.meshRaw.length === 478 && face.embedding.length === 1024, 'details face arrays', face.box.length, face.mesh.length, face.embedding.length); verify(face.emotion.length >= 2 && face.emotion[0].score > 0.30 && face.emotion[0].emotion === 'angry', 'details face emotion', face.emotion.length, face.emotion[0]); verify(face.real > 0.55, 'details face anti-spoofing', face.real); diff --git a/test/test.log b/test/test.log index 15248515..0962b59f 100644 --- a/test/test.log +++ b/test/test.log @@ -1,657 +1,658 @@ -2022-11-16 11:24:32 INFO:  @vladmandic/human version 3.0.0 -2022-11-16 11:24:32 INFO:  User: vlado Platform: linux Arch: x64 Node: v19.1.0 -2022-11-16 11:24:32 INFO:  demos: [{"cmd":"../demo/nodejs/node.js","args":[]},{"cmd":"../demo/nodejs/node-simple.js","args":[]},{"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]},{"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]},{"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]},{"cmd":"../demo/nodejs/process-folder.js","args":["samples"]},{"cmd":"../demo/multithread/node-multiprocess.js","args":[]},{"cmd":"../demo/facematch/node-match.js","args":[]}] -2022-11-16 11:24:32 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start -2022-11-16 11:24:33 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start -2022-11-16 11:24:34 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start -2022-11-16 11:24:34 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start -2022-11-16 11:24:35 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start -2022-11-16 11:24:36 INFO:  {"cmd":"../demo/nodejs/process-folder.js","args":["samples"]} start -2022-11-16 11:24:38 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start -2022-11-16 11:24:51 INFO:  {"cmd":"../demo/facematch/node-match.js","args":[]} start -2022-11-16 11:24:52 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-11-16 11:24:52 INFO:  -2022-11-16 11:24:52 INFO:  test-node-load.js start -2022-11-16 11:24:52 INFO:  test-node-load.js load start {"human":"3.0.0","tf":"4.0.0","progress":0} -2022-11-16 11:24:52 DATA:  test-node-load.js load interval {"elapsed":1,"progress":0} -2022-11-16 11:24:52 DATA:  test-node-load.js load interval {"elapsed":11,"progress":0} -2022-11-16 11:24:52 DATA:  test-node-load.js load interval {"elapsed":30,"progress":0.11143791531203556} -2022-11-16 11:24:52 DATA:  test-node-load.js load interval {"elapsed":58,"progress":0.3299591712723044} -2022-11-16 11:24:52 DATA:  test-node-load.js load interval {"elapsed":79,"progress":0.7259096583739463} -2022-11-16 11:24:52 STATE: test-node-load.js passed {"progress":1} -2022-11-16 11:24:52 INFO:  test-node-load.js load final {"progress":1} -2022-11-16 11:24:52 DATA:  test-node-load.js load interval {"elapsed":465,"progress":1} -2022-11-16 11:24:52 INFO:  -2022-11-16 11:24:52 INFO:  test-node-gear.js start -2022-11-16 11:24:53 DATA:  test-node-gear.js input: ["samples/in/ai-face.jpg"] -2022-11-16 11:24:54 STATE: test-node-gear.js passed: gear faceres samples/in/ai-face.jpg -2022-11-16 11:24:54 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-11-16 11:24:54 STATE: test-node-gear.js passed: gear gear samples/in/ai-face.jpg -2022-11-16 11:24:54 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-11-16 11:24:54 STATE: test-node-gear.js passed: gear ssrnet samples/in/ai-face.jpg -2022-11-16 11:24:54 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-11-16 11:24:54 INFO:  -2022-11-16 11:24:54 INFO:  test-backend-node.js start -2022-11-16 11:24:54 INFO:  test-backend-node.js test: configuration validation -2022-11-16 11:24:54 STATE: test-backend-node.js passed: configuration default validation [] -2022-11-16 11:24:54 STATE: test-backend-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-11-16 11:24:54 INFO:  test-backend-node.js test: model load -2022-11-16 11:24:54 STATE: test-backend-node.js passed: models loaded 25 11 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-11-16 11:24:54 INFO:  test-backend-node.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} -2022-11-16 11:24:54 INFO:  test-backend-node.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-11-16 11:24:54 INFO:  test-backend-node.js test: warmup -2022-11-16 11:24:54 STATE: test-backend-node.js passed: create human -2022-11-16 11:24:54 INFO:  test-backend-node.js human version: 3.0.0 -2022-11-16 11:24:54 INFO:  test-backend-node.js platform: linux x64 agent: NodeJS v19.1.0 -2022-11-16 11:24:54 INFO:  test-backend-node.js tfjs version: 4.0.0 -2022-11-16 11:24:54 INFO:  test-backend-node.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v19.1.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":false},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} -2022-11-16 11:24:54 STATE: test-backend-node.js passed: set backend: tensorflow -2022-11-16 11:24:54 STATE: test-backend-node.js tensors 1785 -2022-11-16 11:24:54 STATE: test-backend-node.js passed: load models -2022-11-16 11:24:54 STATE: test-backend-node.js result: defined models: 25 loaded models: 11 -2022-11-16 11:24:54 STATE: test-backend-node.js passed: warmup: none default -2022-11-16 11:24:54 DATA:  test-backend-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-11-16 11:24:54 DATA:  test-backend-node.js result: performance: load: null total: null -2022-11-16 11:24:54 STATE: test-backend-node.js passed: warmup none result match -2022-11-16 11:24:54 STATE: test-backend-node.js event: image -2022-11-16 11:24:55 STATE: test-backend-node.js event: detect -2022-11-16 11:24:55 STATE: test-backend-node.js event: warmup -2022-11-16 11:24:55 STATE: test-backend-node.js passed: warmup: face default -2022-11-16 11:24:55 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-11-16 11:24:55 DATA:  test-backend-node.js result: performance: load: null total: 439 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: warmup face result match -2022-11-16 11:24:55 STATE: test-backend-node.js event: image -2022-11-16 11:24:55 STATE: test-backend-node.js event: detect -2022-11-16 11:24:55 STATE: test-backend-node.js event: warmup -2022-11-16 11:24:55 STATE: test-backend-node.js passed: warmup: body default -2022-11-16 11:24:55 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:24:55 DATA:  test-backend-node.js result: performance: load: null total: 350 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: warmup body result match -2022-11-16 11:24:55 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-11-16 11:24:55 INFO:  test-backend-node.js test: details verification -2022-11-16 11:24:55 STATE: test-backend-node.js start default -2022-11-16 11:24:55 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:24:55 STATE: test-backend-node.js event: image -2022-11-16 11:24:55 STATE: test-backend-node.js event: detect -2022-11-16 11:24:55 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg default -2022-11-16 11:24:55 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:24:55 DATA:  test-backend-node.js result: performance: load: null total: 314 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details face length 1 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details face score 1 0.93 1 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details face arrays 4 478 1024 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details face anti-spoofing 0.79 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details face liveness 0.83 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details body length 1 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details body 0.92 17 6 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details hand length 1 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details hand 0.51 0.73 point -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details hand arrays 21 5 7 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details gesture length 7 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details object length 1 -2022-11-16 11:24:55 STATE: test-backend-node.js passed: details object 0.72 person -2022-11-16 11:24:56 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-11-16 11:24:56 STATE: test-backend-node.js event: image -2022-11-16 11:24:56 STATE: test-backend-node.js event: detect -2022-11-16 11:24:56 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-11-16 11:24:56 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-11-16 11:24:56 STATE: test-backend-node.js event: image -2022-11-16 11:24:57 STATE: test-backend-node.js event: detect -2022-11-16 11:24:57 STATE: test-backend-node.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-11-16 11:24:57 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:24:57 STATE: test-backend-node.js event: image -2022-11-16 11:24:57 STATE: test-backend-node.js event: detect -2022-11-16 11:24:57 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-11-16 11:24:57 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} -2022-11-16 11:24:57 STATE: test-backend-node.js event: image -2022-11-16 11:24:58 STATE: test-backend-node.js event: detect -2022-11-16 11:24:58 STATE: test-backend-node.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-11-16 11:24:58 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-11-16 11:24:58 STATE: test-backend-node.js event: image -2022-11-16 11:24:58 STATE: test-backend-node.js event: detect -2022-11-16 11:24:58 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-11-16 11:24:58 INFO:  test-backend-node.js test default -2022-11-16 11:24:58 STATE: test-backend-node.js start async -2022-11-16 11:24:58 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:24:58 STATE: test-backend-node.js event: image -2022-11-16 11:24:59 STATE: test-backend-node.js event: detect -2022-11-16 11:24:59 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg async -2022-11-16 11:24:59 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:24:59 DATA:  test-backend-node.js result: performance: load: null total: 298 -2022-11-16 11:24:59 STATE: test-backend-node.js passed: default result face match 1 female 0.97 -2022-11-16 11:24:59 INFO:  test-backend-node.js test sync -2022-11-16 11:24:59 STATE: test-backend-node.js start sync -2022-11-16 11:24:59 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:24:59 STATE: test-backend-node.js event: image -2022-11-16 11:24:59 STATE: test-backend-node.js event: detect -2022-11-16 11:24:59 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sync -2022-11-16 11:24:59 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:24:59 DATA:  test-backend-node.js result: performance: load: null total: 298 -2022-11-16 11:24:59 STATE: test-backend-node.js passed: default sync 1 female 0.97 -2022-11-16 11:24:59 INFO:  test-backend-node.js test: image process -2022-11-16 11:24:59 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-11-16 11:24:59 STATE: test-backend-node.js passed: image input null [1,256,256,3] -2022-11-16 11:24:59 INFO:  test-backend-node.js test: image null -2022-11-16 11:24:59 STATE: test-backend-node.js passed: invalid input could not convert input to tensor -2022-11-16 11:24:59 INFO:  test-backend-node.js test face similarity -2022-11-16 11:24:59 STATE: test-backend-node.js start face similarity -2022-11-16 11:24:59 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-11-16 11:24:59 STATE: test-backend-node.js event: image -2022-11-16 11:24:59 STATE: test-backend-node.js event: detect -2022-11-16 11:24:59 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face similarity -2022-11-16 11:24:59 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-11-16 11:24:59 DATA:  test-backend-node.js result: performance: load: null total: 292 -2022-11-16 11:24:59 STATE: test-backend-node.js start face similarity -2022-11-16 11:25:00 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:00 STATE: test-backend-node.js event: image -2022-11-16 11:25:00 STATE: test-backend-node.js event: detect -2022-11-16 11:25:00 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg face similarity -2022-11-16 11:25: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-11-16 11:25:00 DATA:  test-backend-node.js result: performance: load: null total: 303 -2022-11-16 11:25:00 STATE: test-backend-node.js start face similarity -2022-11-16 11:25:00 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-11-16 11:25:00 STATE: test-backend-node.js event: image -2022-11-16 11:25:00 STATE: test-backend-node.js event: detect -2022-11-16 11:25:00 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-11-16 11:25:00 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2022-11-16 11:25:00 DATA:  test-backend-node.js result: performance: load: null total: 271 -2022-11-16 11:25:00 STATE: test-backend-node.js passed: face descriptor -2022-11-16 11:25:00 STATE: test-backend-node.js passed: face similarity {"similarity":[1,0.44727441595492046,0.556793560189727],"descriptors":[1024,1024,1024]} -2022-11-16 11:25:00 INFO:  test-backend-node.js test object -2022-11-16 11:25:00 STATE: test-backend-node.js start object -2022-11-16 11:25:00 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:00 STATE: test-backend-node.js event: image -2022-11-16 11:25:01 STATE: test-backend-node.js event: detect -2022-11-16 11:25:01 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object -2022-11-16 11:25: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-11-16 11:25:01 DATA:  test-backend-node.js result: performance: load: null total: 297 -2022-11-16 11:25:01 STATE: test-backend-node.js passed: centernet -2022-11-16 11:25:01 STATE: test-backend-node.js start object -2022-11-16 11:25:03 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:03 STATE: test-backend-node.js event: image -2022-11-16 11:25:03 STATE: test-backend-node.js event: detect -2022-11-16 11:25:03 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object -2022-11-16 11:25:03 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-11-16 11:25:03 DATA:  test-backend-node.js result: performance: load: null total: 296 -2022-11-16 11:25:03 STATE: test-backend-node.js passed: nanodet -2022-11-16 11:25:03 INFO:  test-backend-node.js test sensitive -2022-11-16 11:25:03 STATE: test-backend-node.js start sensitive -2022-11-16 11:25:03 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:03 STATE: test-backend-node.js event: image -2022-11-16 11:25:04 STATE: test-backend-node.js event: detect -2022-11-16 11:25:04 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sensitive -2022-11-16 11:25:04 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} -2022-11-16 11:25:04 DATA:  test-backend-node.js result: performance: load: null total: 256 -2022-11-16 11:25:04 STATE: test-backend-node.js passed: sensitive result match -2022-11-16 11:25:04 STATE: test-backend-node.js passed: sensitive face result match -2022-11-16 11:25:04 STATE: test-backend-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-11-16 11:25:04 STATE: test-backend-node.js passed: sensitive body result match -2022-11-16 11:25:04 STATE: test-backend-node.js passed: sensitive hand result match -2022-11-16 11:25:04 INFO:  test-backend-node.js test body -2022-11-16 11:25:04 STATE: test-backend-node.js start blazepose -2022-11-16 11:25:06 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:06 STATE: test-backend-node.js event: image -2022-11-16 11:25:06 STATE: test-backend-node.js event: detect -2022-11-16 11:25:06 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg blazepose -2022-11-16 11:25: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.99,"keypoints":39} -2022-11-16 11:25:06 DATA:  test-backend-node.js result: performance: load: null total: 346 -2022-11-16 11:25:06 STATE: test-backend-node.js passed: blazepose -2022-11-16 11:25:06 STATE: test-backend-node.js start efficientpose -2022-11-16 11:25:08 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:08 STATE: test-backend-node.js event: image -2022-11-16 11:25:08 STATE: test-backend-node.js event: detect -2022-11-16 11:25:08 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-11-16 11:25:08 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-11-16 11:25:08 DATA:  test-backend-node.js result: performance: load: null total: 318 -2022-11-16 11:25:08 STATE: test-backend-node.js passed: efficientpose -2022-11-16 11:25:08 STATE: test-backend-node.js start posenet -2022-11-16 11:25:09 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:09 STATE: test-backend-node.js event: image -2022-11-16 11:25:09 STATE: test-backend-node.js event: detect -2022-11-16 11:25:09 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg posenet -2022-11-16 11:25: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.96,"keypoints":16} -2022-11-16 11:25:09 DATA:  test-backend-node.js result: performance: load: null total: 252 -2022-11-16 11:25:09 STATE: test-backend-node.js passed: posenet -2022-11-16 11:25:09 STATE: test-backend-node.js start movenet -2022-11-16 11:25:09 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-11-16 11:25:09 STATE: test-backend-node.js event: image -2022-11-16 11:25:10 STATE: test-backend-node.js event: detect -2022-11-16 11:25:10 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg movenet -2022-11-16 11:25: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.92,"keypoints":17} -2022-11-16 11:25:10 DATA:  test-backend-node.js result: performance: load: null total: 256 -2022-11-16 11:25:10 STATE: test-backend-node.js passed: movenet -2022-11-16 11:25:10 INFO:  test-backend-node.js test face matching -2022-11-16 11:25:10 STATE: test-backend-node.js passed: face database 40 -2022-11-16 11:25:10 STATE: test-backend-node.js passed: face match {"first":{"index":4,"similarity":0.7827852251220577}} {"second":{"index":4,"similarity":0.5002052057057577}} {"third":{"index":4,"similarity":0.5401588464054732}} -2022-11-16 11:25:10 INFO:  test-backend-node.js test face similarity alternative -2022-11-16 11:25:10 STATE: test-backend-node.js start face embeddings -2022-11-16 11:25:10 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-11-16 11:25:10 STATE: test-backend-node.js event: image -2022-11-16 11:25:10 ERROR: test-backend-node.js failed: testDetect face embeddings -2022-11-16 11:25:10 ERROR: test-backend-node.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node.js:99:176887"," at new Promise ()"," at J5 (/home/vlado/dev/human/dist/human.node.js:99:176656)"," at S1 (/home/vlado/dev/human/dist/human.node.js:121:6622)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node.js:840:9036"]} -2022-11-16 11:25:10 INFO:  -2022-11-16 11:25:10 INFO:  test-backend-node-gpu.js start -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js test: configuration validation -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: configuration default validation [] -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js test: model load -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: models loaded 25 11 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js test: warmup -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: create human -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js human version: 3.0.0 -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js platform: linux x64 agent: NodeJS v19.1.0 -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js tfjs version: 4.0.0 -2022-11-16 11:25:11 INFO:  test-backend-node-gpu.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v19.1.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":true},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: set backend: tensorflow -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js tensors 1785 -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: load models -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js result: defined models: 25 loaded models: 11 -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: warmup: none default -2022-11-16 11:25:11 DATA:  test-backend-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-11-16 11:25:11 DATA:  test-backend-node-gpu.js result: performance: load: null total: null -2022-11-16 11:25:11 STATE: test-backend-node-gpu.js passed: warmup none result match -2022-11-16 11:25:12 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: warmup -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: warmup: face default -2022-11-16 11:25:15 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-11-16 11:25:15 DATA:  test-backend-node-gpu.js result: performance: load: null total: 3118 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: warmup face result match -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: warmup -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: warmup: body default -2022-11-16 11:25:15 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-11-16 11:25:15 DATA:  test-backend-node-gpu.js result: performance: load: null total: 152 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: warmup body result match -2022-11-16 11:25:15 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-11-16 11:25:15 INFO:  test-backend-node-gpu.js test: details verification -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js start default -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-11-16 11:25:15 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-11-16 11:25:15 DATA:  test-backend-node-gpu.js result: performance: load: null total: 135 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details face length 1 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details face score 1 0.93 1 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details face arrays 4 478 1024 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details face anti-spoofing 0.79 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details face liveness 0.83 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details body length 1 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details body 0.92 17 6 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details hand length 1 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details hand 0.51 0.73 point -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details hand arrays 21 5 7 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details gesture length 7 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details object length 1 -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: details object 0.72 person -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-11-16 11:25:15 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:16 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-11-16 11:25:17 INFO:  test-backend-node-gpu.js test default -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js start async -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg async -2022-11-16 11:25:17 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:25:17 DATA:  test-backend-node-gpu.js result: performance: load: null total: 127 -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js passed: default result face match 1 female 0.97 -2022-11-16 11:25:17 INFO:  test-backend-node-gpu.js test sync -2022-11-16 11:25:17 STATE: test-backend-node-gpu.js start sync -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sync -2022-11-16 11:25:18 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:25:18 DATA:  test-backend-node-gpu.js result: performance: load: null total: 153 -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: default sync 1 female 0.97 -2022-11-16 11:25:18 INFO:  test-backend-node-gpu.js test: image process -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: image input null [1,256,256,3] -2022-11-16 11:25:18 INFO:  test-backend-node-gpu.js test: image null -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: invalid input could not convert input to tensor -2022-11-16 11:25:18 INFO:  test-backend-node-gpu.js test face similarity -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js start face similarity -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity -2022-11-16 11:25:18 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-11-16 11:25:18 DATA:  test-backend-node-gpu.js result: performance: load: null total: 133 -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js start face similarity -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity -2022-11-16 11:25:18 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:25:18 DATA:  test-backend-node-gpu.js result: performance: load: null total: 148 -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js start face similarity -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-11-16 11:25:18 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-11-16 11:25:19 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-11-16 11:25:19 DATA:  test-backend-node-gpu.js result: performance: load: null total: 139 -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js passed: face descriptor -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js passed: face similarity {"similarity":[1,0.4475002983522097,0.5570879556505012],"descriptors":[1024,1024,1024]} -2022-11-16 11:25:19 INFO:  test-backend-node-gpu.js test object -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js start object -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-11-16 11:25:19 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:25:19 DATA:  test-backend-node-gpu.js result: performance: load: null total: 165 -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js passed: centernet -2022-11-16 11:25:19 STATE: test-backend-node-gpu.js start object -2022-11-16 11:25:20 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:20 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:20 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:20 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object -2022-11-16 11:25:20 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 3 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:25:20 DATA:  test-backend-node-gpu.js result: performance: load: null total: 522 -2022-11-16 11:25:20 STATE: test-backend-node-gpu.js passed: nanodet -2022-11-16 11:25:20 INFO:  test-backend-node-gpu.js test sensitive -2022-11-16 11:25:20 STATE: test-backend-node-gpu.js start sensitive -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive -2022-11-16 11:25:21 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-11-16 11:25:21 DATA:  test-backend-node-gpu.js result: performance: load: null total: 115 -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js passed: sensitive result match -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js passed: sensitive face result match -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js passed: sensitive body result match -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js passed: sensitive hand result match -2022-11-16 11:25:21 INFO:  test-backend-node-gpu.js test body -2022-11-16 11:25:21 STATE: test-backend-node-gpu.js start blazepose -2022-11-16 11:25:23 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:23 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:23 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:23 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose -2022-11-16 11:25:23 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-11-16 11:25:23 DATA:  test-backend-node-gpu.js result: performance: load: null total: 259 -2022-11-16 11:25:23 STATE: test-backend-node-gpu.js passed: blazepose -2022-11-16 11:25:23 STATE: test-backend-node-gpu.js start efficientpose -2022-11-16 11:25:24 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:24 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-11-16 11:25:25 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.75,"keypoints":13} -2022-11-16 11:25:25 DATA:  test-backend-node-gpu.js result: performance: load: null total: 1067 -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js passed: efficientpose -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js start posenet -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet -2022-11-16 11:25:25 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.96,"keypoints":16} -2022-11-16 11:25:25 DATA:  test-backend-node-gpu.js result: performance: load: null total: 209 -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js passed: posenet -2022-11-16 11:25:25 STATE: test-backend-node-gpu.js start movenet -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js event: detect -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet -2022-11-16 11:25:26 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-11-16 11:25:26 DATA:  test-backend-node-gpu.js result: performance: load: null total: 112 -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js passed: movenet -2022-11-16 11:25:26 INFO:  test-backend-node-gpu.js test face matching -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js passed: face database 40 -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7829338043932047}} {"second":{"index":4,"similarity":0.5002928781584631}} {"third":{"index":4,"similarity":0.5402934771672516}} -2022-11-16 11:25:26 INFO:  test-backend-node-gpu.js test face similarity alternative -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js start face embeddings -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-11-16 11:25:26 STATE: test-backend-node-gpu.js event: image -2022-11-16 11:25:26 ERROR: test-backend-node-gpu.js failed: testDetect face embeddings -2022-11-16 11:25:26 ERROR: test-backend-node-gpu.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node-gpu.js:99:176887"," at new Promise ()"," at J5 (/home/vlado/dev/human/dist/human.node-gpu.js:99:176656)"," at S1 (/home/vlado/dev/human/dist/human.node-gpu.js:121:6622)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node-gpu.js:840:9036"]} -2022-11-16 11:25:27 INFO:  -2022-11-16 11:25:27 INFO:  test-backend-node-wasm.js start -2022-11-16 11:25:27 DATA:  test-backend-node-wasm.js stdout: 2022-11-16 11:25:27 INFO:  { supported: true, backend: true, simd: undefined, multithread: undefined } https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.0.0/dist/ -2022-11-16 11:25:27 STATE: test-backend-node-wasm.js passed: model server: https://vladmandic.github.io/human-models/models/ -2022-11-16 11:25:27 INFO:  test-backend-node-wasm.js test: configuration validation -2022-11-16 11:25:27 STATE: test-backend-node-wasm.js passed: configuration default validation [] -2022-11-16 11:25:27 STATE: test-backend-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-11-16 11:25:27 INFO:  test-backend-node-wasm.js test: model load -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: models loaded 25 11 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"https://vladmandic.github.io/human-models/models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"https://vladmandic.github.io/human-models/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human-models/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human-models/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human-models/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human-models/models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"https://vladmandic.github.io/human-models/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human-models/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human-models/models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human-models/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human-models/models/antispoof.json"}] -2022-11-16 11:25:30 INFO:  test-backend-node-wasm.js memory: {"memory":{"unreliable":false,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} -2022-11-16 11:25:30 INFO:  test-backend-node-wasm.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} -2022-11-16 11:25:30 INFO:  test-backend-node-wasm.js test: warmup -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: create human -2022-11-16 11:25:30 INFO:  test-backend-node-wasm.js human version: 3.0.0 -2022-11-16 11:25:30 INFO:  test-backend-node-wasm.js platform: linux x64 agent: NodeJS v19.1.0 -2022-11-16 11:25:30 INFO:  test-backend-node-wasm.js tfjs version: 4.0.0 -2022-11-16 11:25:30 INFO:  test-backend-node-wasm.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v19.1.0","backends":["wasm"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{},"wasm":{"supported":true,"backend":true,"simd":true,"multithread":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":126} -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: set backend: wasm -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js tensors 1785 -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: load models -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js result: defined models: 25 loaded models: 11 -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: warmup: none default -2022-11-16 11:25:30 DATA:  test-backend-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-11-16 11:25:30 DATA:  test-backend-node-wasm.js result: performance: load: null total: null -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: warmup none result match -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js event: warmup -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: warmup: face default -2022-11-16 11:25:30 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-11-16 11:25:30 DATA:  test-backend-node-wasm.js result: performance: load: null total: 518 -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js passed: warmup face result match -2022-11-16 11:25:30 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js event: warmup -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: warmup: body default -2022-11-16 11:25:31 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-11-16 11:25:31 DATA:  test-backend-node-wasm.js result: performance: load: null total: 350 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: warmup body result match -2022-11-16 11:25:31 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-11-16 11:25:31 INFO:  test-backend-node-wasm.js test: details verification -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js start default -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-11-16 11:25:31 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-11-16 11:25:31 DATA:  test-backend-node-wasm.js result: performance: load: null total: 339 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details face length 1 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details face score 1 0.93 1 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details face age/gender 23.7 female 0.97 85.47 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details face arrays 4 478 1024 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details face anti-spoofing 0.79 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details face liveness 0.83 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details body length 1 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details body 0.92 17 6 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details hand length 1 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details hand 0.51 0.73 point -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details hand arrays 21 5 7 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details gesture length 7 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details object length 1 -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: details object 0.72 person -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} -2022-11-16 11:25:31 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:32 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:32 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-11-16 11:25:32 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} -2022-11-16 11:25:32 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:32 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:32 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:33 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-11-16 11:25:34 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-11-16 11:25:34 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:34 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:34 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-11-16 11:25:34 INFO:  test-backend-node-wasm.js test default -2022-11-16 11:25:34 STATE: test-backend-node-wasm.js start async -2022-11-16 11:25:34 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:34 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg async -2022-11-16 11:25:35 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-11-16 11:25:35 DATA:  test-backend-node-wasm.js result: performance: load: null total: 326 -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: default result face match 1 female 0.97 -2022-11-16 11:25:35 INFO:  test-backend-node-wasm.js test sync -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js start sync -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sync -2022-11-16 11:25:35 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-11-16 11:25:35 DATA:  test-backend-node-wasm.js result: performance: load: null total: 322 -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: default sync 1 female 0.97 -2022-11-16 11:25:35 INFO:  test-backend-node-wasm.js test: image process -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: image input null [1,256,256,3] -2022-11-16 11:25:35 INFO:  test-backend-node-wasm.js test: image null -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: invalid input could not convert input to tensor -2022-11-16 11:25:35 INFO:  test-backend-node-wasm.js test face similarity -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js start face similarity -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-11-16 11:25:35 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity -2022-11-16 11:25:36 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-11-16 11:25:36 DATA:  test-backend-node-wasm.js result: performance: load: null total: 333 -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js start face similarity -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity -2022-11-16 11:25:36 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:25:36 DATA:  test-backend-node-wasm.js result: performance: load: null total: 387 -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js start face similarity -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-11-16 11:25:36 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity -2022-11-16 11:25:37 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-11-16 11:25:37 DATA:  test-backend-node-wasm.js result: performance: load: null total: 300 -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js passed: face descriptor -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} -2022-11-16 11:25:37 INFO:  test-backend-node-wasm.js test object -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js start object -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-11-16 11:25:37 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-11-16 11:25:37 DATA:  test-backend-node-wasm.js result: performance: load: null total: 317 -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js passed: centernet -2022-11-16 11:25:37 STATE: test-backend-node-wasm.js start object -2022-11-16 11:25:38 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-11-16 11:25:38 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:38 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:38 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:38 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object -2022-11-16 11:25:38 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-11-16 11:25:38 DATA:  test-backend-node-wasm.js result: performance: load: null total: 224 -2022-11-16 11:25:38 ERROR: test-backend-node-wasm.js failed: nanodet [] -2022-11-16 11:25:38 INFO:  test-backend-node-wasm.js test sensitive -2022-11-16 11:25:38 STATE: test-backend-node-wasm.js start sensitive -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive -2022-11-16 11:25:39 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-11-16 11:25:39 DATA:  test-backend-node-wasm.js result: performance: load: null total: 262 -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js passed: sensitive result match -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js passed: sensitive face result match -2022-11-16 11:25:39 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-11-16 11:25:39 STATE: test-backend-node-wasm.js passed: sensitive body result match -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js passed: sensitive hand result match -2022-11-16 11:25:39 INFO:  test-backend-node-wasm.js test body -2022-11-16 11:25:39 STATE: test-backend-node-wasm.js start blazepose -2022-11-16 11:25:42 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:42 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:42 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:42 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose -2022-11-16 11:25:42 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.99,"keypoints":39} -2022-11-16 11:25:42 DATA:  test-backend-node-wasm.js result: performance: load: null total: 458 -2022-11-16 11:25:42 STATE: test-backend-node-wasm.js passed: blazepose -2022-11-16 11:25:42 STATE: test-backend-node-wasm.js start efficientpose -2022-11-16 11:25:43 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:43 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:44 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:44 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose -2022-11-16 11:25:44 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.75,"keypoints":13} -2022-11-16 11:25:44 DATA:  test-backend-node-wasm.js result: performance: load: null total: 687 -2022-11-16 11:25:44 STATE: test-backend-node-wasm.js passed: efficientpose -2022-11-16 11:25:44 STATE: test-backend-node-wasm.js start posenet -2022-11-16 11:25:45 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:45 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:45 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:45 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet -2022-11-16 11:25:45 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.96,"keypoints":16} -2022-11-16 11:25:45 DATA:  test-backend-node-wasm.js result: performance: load: null total: 305 -2022-11-16 11:25:45 STATE: test-backend-node-wasm.js passed: posenet -2022-11-16 11:25:45 STATE: test-backend-node-wasm.js start movenet -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js event: detect -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet -2022-11-16 11:25:46 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-11-16 11:25:46 DATA:  test-backend-node-wasm.js result: performance: load: null total: 253 -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js passed: movenet -2022-11-16 11:25:46 INFO:  test-backend-node-wasm.js test face matching -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js passed: face database 40 -2022-11-16 11:25:46 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-11-16 11:25:46 INFO:  test-backend-node-wasm.js test face similarity alternative -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js start face embeddings -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-11-16 11:25:46 STATE: test-backend-node-wasm.js event: image -2022-11-16 11:25:46 ERROR: test-backend-node-wasm.js failed: testDetect face embeddings -2022-11-16 11:25:46 ERROR: test-backend-node-wasm.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node-wasm.js:99:176887"," at new Promise ()"," at Q5 (/home/vlado/dev/human/dist/human.node-wasm.js:99:176656)"," at j1 (/home/vlado/dev/human/dist/human.node-wasm.js:121:6622)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node-wasm.js:840:9036"]} -2022-11-16 11:25:46 STATE: all tests complete -2022-11-16 11:25:46 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"../demo/nodejs/process-folder.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"../demo/facematch/node-match.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"test-node-load.js","passed":1,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"test-node-gear.js","passed":3,"failed":0} -2022-11-16 11:25:46 INFO:  status {"test":"test-backend-node.js","passed":85,"failed":1} -2022-11-16 11:25:46 INFO:  status {"test":"test-backend-node-gpu.js","passed":85,"failed":1} -2022-11-16 11:25:46 INFO:  status {"test":"test-backend-node-wasm.js","passed":85,"failed":2} -2022-11-16 11:25:46 INFO:  failures {"count":4} -2022-11-16 11:25:46 WARN:  failed {"test":"test-backend-node.js","message":["error",["failed:","testDetect face embeddings"]]} -2022-11-16 11:25:46 WARN:  failed {"test":"test-backend-node-gpu.js","message":["error",["failed:","testDetect face embeddings"]]} -2022-11-16 11:25:46 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: nanodet",[]]]} -2022-11-16 11:25:46 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed:","testDetect face embeddings"]]} +2022-11-16 17:45:10 INFO:  @vladmandic/human version 3.0.0 +2022-11-16 17:45:10 INFO:  User: vlado Platform: linux Arch: x64 Node: v19.1.0 +2022-11-16 17:45:10 INFO:  demos: [{"cmd":"../demo/nodejs/node.js","args":[]},{"cmd":"../demo/nodejs/node-simple.js","args":[]},{"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]},{"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]},{"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]},{"cmd":"../demo/nodejs/process-folder.js","args":["samples"]},{"cmd":"../demo/multithread/node-multiprocess.js","args":[]},{"cmd":"../demo/facematch/node-match.js","args":[]}] +2022-11-16 17:45:10 INFO:  {"cmd":"../demo/nodejs/node.js","args":[]} start +2022-11-16 17:45:11 INFO:  {"cmd":"../demo/nodejs/node-simple.js","args":[]} start +2022-11-16 17:45:12 INFO:  {"cmd":"../demo/nodejs/node-event.js","args":["samples/in/ai-body.jpg"]} start +2022-11-16 17:45:13 INFO:  {"cmd":"../demo/nodejs/node-similarity.js","args":["samples/in/ai-face.jpg","samples/in/ai-upper.jpg"]} start +2022-11-16 17:45:13 INFO:  {"cmd":"../demo/nodejs/node-canvas.js","args":["samples/in/ai-body.jpg","samples/out/ai-body.jpg"]} start +2022-11-16 17:45:14 INFO:  {"cmd":"../demo/nodejs/process-folder.js","args":["samples"]} start +2022-11-16 17:45:15 INFO:  {"cmd":"../demo/multithread/node-multiprocess.js","args":[]} start +2022-11-16 17:45:27 INFO:  {"cmd":"../demo/facematch/node-match.js","args":[]} start +2022-11-16 17:45:28 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-11-16 17:45:28 INFO:  +2022-11-16 17:45:28 INFO:  test-node-load.js start +2022-11-16 17:45:28 INFO:  test-node-load.js load start {"human":"3.0.0","tf":"4.0.0","progress":0} +2022-11-16 17:45:28 DATA:  test-node-load.js load interval {"elapsed":1,"progress":0} +2022-11-16 17:45:28 DATA:  test-node-load.js load interval {"elapsed":12,"progress":0} +2022-11-16 17:45:28 DATA:  test-node-load.js load interval {"elapsed":24,"progress":0.03222546277199007} +2022-11-16 17:45:28 DATA:  test-node-load.js load interval {"elapsed":35,"progress":0.2135162934143239} +2022-11-16 17:45:28 DATA:  test-node-load.js load interval {"elapsed":61,"progress":0.3299591712723044} +2022-11-16 17:45:28 DATA:  test-node-load.js load interval {"elapsed":79,"progress":0.7259096583739463} +2022-11-16 17:45:28 STATE: test-node-load.js passed {"progress":1} +2022-11-16 17:45:28 INFO:  test-node-load.js load final {"progress":1} +2022-11-16 17:45:28 DATA:  test-node-load.js load interval {"elapsed":426,"progress":1} +2022-11-16 17:45:28 INFO:  +2022-11-16 17:45:28 INFO:  test-node-gear.js start +2022-11-16 17:45:28 DATA:  test-node-gear.js input: ["samples/in/ai-face.jpg"] +2022-11-16 17:45:29 STATE: test-node-gear.js passed: gear faceres samples/in/ai-face.jpg +2022-11-16 17:45:29 DATA:  test-node-gear.js results {"face":0,"model":"faceres","image":"samples/in/ai-face.jpg","age":23.5,"gender":"female","genderScore":0.92} +2022-11-16 17:45:29 STATE: test-node-gear.js passed: gear gear samples/in/ai-face.jpg +2022-11-16 17:45:29 DATA:  test-node-gear.js results {"face":0,"model":"gear","image":"samples/in/ai-face.jpg","age":23.3,"gender":"female","genderScore":0.51,"race":[{"score":0.93,"race":"white"}]} +2022-11-16 17:45:30 STATE: test-node-gear.js passed: gear ssrnet samples/in/ai-face.jpg +2022-11-16 17:45:30 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-11-16 17:45:30 INFO:  +2022-11-16 17:45:30 INFO:  test-backend-node.js start +2022-11-16 17:45:30 INFO:  test-backend-node.js test: configuration validation +2022-11-16 17:45:30 STATE: test-backend-node.js passed: configuration default validation [] +2022-11-16 17:45:30 STATE: test-backend-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-11-16 17:45:30 INFO:  test-backend-node.js test: model load +2022-11-16 17:45:30 STATE: test-backend-node.js passed: models loaded 25 11 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-11-16 17:45:30 INFO:  test-backend-node.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} +2022-11-16 17:45:30 INFO:  test-backend-node.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-11-16 17:45:30 INFO:  test-backend-node.js test: warmup +2022-11-16 17:45:30 STATE: test-backend-node.js passed: create human +2022-11-16 17:45:30 INFO:  test-backend-node.js human version: 3.0.0 +2022-11-16 17:45:30 INFO:  test-backend-node.js platform: linux x64 agent: NodeJS v19.1.0 +2022-11-16 17:45:30 INFO:  test-backend-node.js tfjs version: 4.0.0 +2022-11-16 17:45:30 INFO:  test-backend-node.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v19.1.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":false},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-11-16 17:45:30 STATE: test-backend-node.js passed: set backend: tensorflow +2022-11-16 17:45:30 STATE: test-backend-node.js tensors 1785 +2022-11-16 17:45:30 STATE: test-backend-node.js passed: load models +2022-11-16 17:45:30 STATE: test-backend-node.js result: defined models: 25 loaded models: 11 +2022-11-16 17:45:30 STATE: test-backend-node.js passed: warmup: none default +2022-11-16 17:45:30 DATA:  test-backend-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-11-16 17:45:30 DATA:  test-backend-node.js result: performance: load: null total: null +2022-11-16 17:45:30 STATE: test-backend-node.js passed: warmup none result match +2022-11-16 17:45:30 STATE: test-backend-node.js event: image +2022-11-16 17:45:30 STATE: test-backend-node.js event: detect +2022-11-16 17:45:30 STATE: test-backend-node.js event: warmup +2022-11-16 17:45:30 STATE: test-backend-node.js passed: warmup: face default +2022-11-16 17:45:30 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} +2022-11-16 17:45:30 DATA:  test-backend-node.js result: performance: load: null total: 421 +2022-11-16 17:45:30 STATE: test-backend-node.js passed: warmup face result match +2022-11-16 17:45:30 STATE: test-backend-node.js event: image +2022-11-16 17:45:31 STATE: test-backend-node.js event: detect +2022-11-16 17:45:31 STATE: test-backend-node.js event: warmup +2022-11-16 17:45:31 STATE: test-backend-node.js passed: warmup: body default +2022-11-16 17:45:31 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:31 DATA:  test-backend-node.js result: performance: load: null total: 317 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: warmup body result match +2022-11-16 17:45:31 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-11-16 17:45:31 INFO:  test-backend-node.js test: details verification +2022-11-16 17:45:31 STATE: test-backend-node.js start default +2022-11-16 17:45:31 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:31 STATE: test-backend-node.js event: image +2022-11-16 17:45:31 STATE: test-backend-node.js event: detect +2022-11-16 17:45:31 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg default +2022-11-16 17:45:31 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:31 DATA:  test-backend-node.js result: performance: load: null total: 313 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details face length 1 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details face score 1 0.93 1 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details face age/gender 23.7 female 0.97 2.34 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details face arrays 4 478 1024 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details face anti-spoofing 0.79 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details face liveness 0.83 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details body length 1 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details body 0.92 17 6 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details hand length 1 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details hand 0.51 0.73 point +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details hand arrays 21 5 7 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details gesture length 7 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details object length 1 +2022-11-16 17:45:31 STATE: test-backend-node.js passed: details object 0.72 person +2022-11-16 17:45:31 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-11-16 17:45:31 STATE: test-backend-node.js event: image +2022-11-16 17:45:32 STATE: test-backend-node.js event: detect +2022-11-16 17:45:32 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-11-16 17:45:32 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-11-16 17:45:32 STATE: test-backend-node.js event: image +2022-11-16 17:45:32 STATE: test-backend-node.js event: detect +2022-11-16 17:45:32 STATE: test-backend-node.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-11-16 17:45:32 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:32 STATE: test-backend-node.js event: image +2022-11-16 17:45:33 STATE: test-backend-node.js event: detect +2022-11-16 17:45:33 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-11-16 17:45:33 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:33 STATE: test-backend-node.js event: image +2022-11-16 17:45:33 STATE: test-backend-node.js event: detect +2022-11-16 17:45:33 STATE: test-backend-node.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-11-16 17:45:33 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-11-16 17:45:33 STATE: test-backend-node.js event: image +2022-11-16 17:45:34 STATE: test-backend-node.js event: detect +2022-11-16 17:45:34 STATE: test-backend-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-11-16 17:45:34 INFO:  test-backend-node.js test default +2022-11-16 17:45:34 STATE: test-backend-node.js start async +2022-11-16 17:45:34 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:34 STATE: test-backend-node.js event: image +2022-11-16 17:45:34 STATE: test-backend-node.js event: detect +2022-11-16 17:45:34 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg async +2022-11-16 17:45:34 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:34 DATA:  test-backend-node.js result: performance: load: null total: 314 +2022-11-16 17:45:34 STATE: test-backend-node.js passed: default result face match 1 female 0.97 +2022-11-16 17:45:34 INFO:  test-backend-node.js test sync +2022-11-16 17:45:34 STATE: test-backend-node.js start sync +2022-11-16 17:45:34 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:34 STATE: test-backend-node.js event: image +2022-11-16 17:45:35 STATE: test-backend-node.js event: detect +2022-11-16 17:45:35 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sync +2022-11-16 17:45:35 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:35 DATA:  test-backend-node.js result: performance: load: null total: 295 +2022-11-16 17:45:35 STATE: test-backend-node.js passed: default sync 1 female 0.97 +2022-11-16 17:45:35 INFO:  test-backend-node.js test: image process +2022-11-16 17:45:35 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-11-16 17:45:35 STATE: test-backend-node.js passed: image input null [1,256,256,3] +2022-11-16 17:45:35 INFO:  test-backend-node.js test: image null +2022-11-16 17:45:35 STATE: test-backend-node.js passed: invalid input could not convert input to tensor +2022-11-16 17:45:35 INFO:  test-backend-node.js test face similarity +2022-11-16 17:45:35 STATE: test-backend-node.js start face similarity +2022-11-16 17:45:35 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-11-16 17:45:35 STATE: test-backend-node.js event: image +2022-11-16 17:45:35 STATE: test-backend-node.js event: detect +2022-11-16 17:45:35 STATE: test-backend-node.js passed: detect: samples/in/ai-face.jpg face similarity +2022-11-16 17:45:35 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-11-16 17:45:35 DATA:  test-backend-node.js result: performance: load: null total: 284 +2022-11-16 17:45:35 STATE: test-backend-node.js start face similarity +2022-11-16 17:45:35 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:35 STATE: test-backend-node.js event: image +2022-11-16 17:45:35 STATE: test-backend-node.js event: detect +2022-11-16 17:45:35 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg face similarity +2022-11-16 17:45:35 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:35 DATA:  test-backend-node.js result: performance: load: null total: 292 +2022-11-16 17:45:35 STATE: test-backend-node.js start face similarity +2022-11-16 17:45:35 STATE: test-backend-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-11-16 17:45:35 STATE: test-backend-node.js event: image +2022-11-16 17:45:36 STATE: test-backend-node.js event: detect +2022-11-16 17:45:36 STATE: test-backend-node.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-11-16 17:45:36 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-11-16 17:45:36 DATA:  test-backend-node.js result: performance: load: null total: 267 +2022-11-16 17:45:36 STATE: test-backend-node.js passed: face descriptor +2022-11-16 17:45:36 STATE: test-backend-node.js passed: face similarity {"similarity":[1,0.44727441595492046,0.556793560189727],"descriptors":[1024,1024,1024]} +2022-11-16 17:45:36 INFO:  test-backend-node.js test object +2022-11-16 17:45:36 STATE: test-backend-node.js start object +2022-11-16 17:45:36 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:36 STATE: test-backend-node.js event: image +2022-11-16 17:45:36 STATE: test-backend-node.js event: detect +2022-11-16 17:45:36 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object +2022-11-16 17:45:36 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:36 DATA:  test-backend-node.js result: performance: load: null total: 291 +2022-11-16 17:45:36 STATE: test-backend-node.js passed: centernet +2022-11-16 17:45:36 STATE: test-backend-node.js start object +2022-11-16 17:45:37 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:37 STATE: test-backend-node.js event: image +2022-11-16 17:45:37 STATE: test-backend-node.js event: detect +2022-11-16 17:45:37 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg object +2022-11-16 17:45:37 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 3 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:37 DATA:  test-backend-node.js result: performance: load: null total: 295 +2022-11-16 17:45:37 STATE: test-backend-node.js passed: nanodet +2022-11-16 17:45:37 INFO:  test-backend-node.js test sensitive +2022-11-16 17:45:37 STATE: test-backend-node.js start sensitive +2022-11-16 17:45:38 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:38 STATE: test-backend-node.js event: image +2022-11-16 17:45:38 STATE: test-backend-node.js event: detect +2022-11-16 17:45:38 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg sensitive +2022-11-16 17:45:38 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-11-16 17:45:38 DATA:  test-backend-node.js result: performance: load: null total: 263 +2022-11-16 17:45:38 STATE: test-backend-node.js passed: sensitive result match +2022-11-16 17:45:38 STATE: test-backend-node.js passed: sensitive face result match +2022-11-16 17:45:38 STATE: test-backend-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-11-16 17:45:38 STATE: test-backend-node.js passed: sensitive body result match +2022-11-16 17:45:38 STATE: test-backend-node.js passed: sensitive hand result match +2022-11-16 17:45:38 INFO:  test-backend-node.js test body +2022-11-16 17:45:38 STATE: test-backend-node.js start blazepose +2022-11-16 17:45:40 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:40 STATE: test-backend-node.js event: image +2022-11-16 17:45:40 STATE: test-backend-node.js event: detect +2022-11-16 17:45:40 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg blazepose +2022-11-16 17:45:40 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.99,"keypoints":39} +2022-11-16 17:45:40 DATA:  test-backend-node.js result: performance: load: null total: 338 +2022-11-16 17:45:40 STATE: test-backend-node.js passed: blazepose +2022-11-16 17:45:40 STATE: test-backend-node.js start efficientpose +2022-11-16 17:45:41 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:41 STATE: test-backend-node.js event: image +2022-11-16 17:45:41 STATE: test-backend-node.js event: detect +2022-11-16 17:45:41 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-11-16 17:45:41 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.75,"keypoints":13} +2022-11-16 17:45:41 DATA:  test-backend-node.js result: performance: load: null total: 307 +2022-11-16 17:45:41 STATE: test-backend-node.js passed: efficientpose +2022-11-16 17:45:41 STATE: test-backend-node.js start posenet +2022-11-16 17:45:41 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:41 STATE: test-backend-node.js event: image +2022-11-16 17:45:42 STATE: test-backend-node.js event: detect +2022-11-16 17:45:42 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg posenet +2022-11-16 17:45:42 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.96,"keypoints":16} +2022-11-16 17:45:42 DATA:  test-backend-node.js result: performance: load: null total: 254 +2022-11-16 17:45:42 STATE: test-backend-node.js passed: posenet +2022-11-16 17:45:42 STATE: test-backend-node.js start movenet +2022-11-16 17:45:42 STATE: test-backend-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-11-16 17:45:42 STATE: test-backend-node.js event: image +2022-11-16 17:45:42 STATE: test-backend-node.js event: detect +2022-11-16 17:45:42 STATE: test-backend-node.js passed: detect: samples/in/ai-body.jpg movenet +2022-11-16 17:45:42 DATA:  test-backend-node.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-11-16 17:45:42 DATA:  test-backend-node.js result: performance: load: null total: 252 +2022-11-16 17:45:42 STATE: test-backend-node.js passed: movenet +2022-11-16 17:45:42 INFO:  test-backend-node.js test face matching +2022-11-16 17:45:42 STATE: test-backend-node.js passed: face database 40 +2022-11-16 17:45:42 STATE: test-backend-node.js passed: face match {"first":{"index":4,"similarity":0.7827852251220577}} {"second":{"index":4,"similarity":0.5002052057057577}} {"third":{"index":4,"similarity":0.5401588464054732}} +2022-11-16 17:45:42 INFO:  test-backend-node.js test face similarity alternative +2022-11-16 17:45:42 STATE: test-backend-node.js start face embeddings +2022-11-16 17:45:43 STATE: test-backend-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-11-16 17:45:43 STATE: test-backend-node.js event: image +2022-11-16 17:45:43 ERROR: test-backend-node.js failed: testDetect face embeddings +2022-11-16 17:45:43 ERROR: test-backend-node.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node.js:99:176887"," at new Promise ()"," at q5 (/home/vlado/dev/human/dist/human.node.js:99:176656)"," at k1 (/home/vlado/dev/human/dist/human.node.js:121:6792)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node.js:840:9036"]} +2022-11-16 17:45:43 INFO:  +2022-11-16 17:45:43 INFO:  test-backend-node-gpu.js start +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js test: configuration validation +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: configuration default validation [] +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js test: model load +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: models loaded 25 11 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"file://models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"file://models/emotion.json"},{"name":"facedetect","loaded":true,"url":"file://models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"file://models/iris.json"},{"name":"facemesh","loaded":true,"url":"file://models/facemesh.json"},{"name":"faceres","loaded":true,"url":"file://models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"file://models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"file://models/handtrack.json"},{"name":"liveness","loaded":true,"url":"file://models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"file://models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"file://models/antispoof.json"}] +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js memory: {"memory":{"unreliable":true,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js test: warmup +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: create human +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js human version: 3.0.0 +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js platform: linux x64 agent: NodeJS v19.1.0 +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js tfjs version: 4.0.0 +2022-11-16 17:45:44 INFO:  test-backend-node-gpu.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v19.1.0","backends":["cpu","tensorflow"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{"version":"2.9.1","gpu":true},"wasm":{"supported":true,"backend":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":169} +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: set backend: tensorflow +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js tensors 1785 +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: load models +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js result: defined models: 25 loaded models: 11 +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: warmup: none default +2022-11-16 17:45:44 DATA:  test-backend-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-11-16 17:45:44 DATA:  test-backend-node-gpu.js result: performance: load: null total: null +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js passed: warmup none result match +2022-11-16 17:45:44 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js event: warmup +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: warmup: face default +2022-11-16 17:45:46 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-11-16 17:45:46 DATA:  test-backend-node-gpu.js result: performance: load: null total: 1862 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: warmup face result match +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js event: warmup +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: warmup: body default +2022-11-16 17:45:46 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-11-16 17:45:46 DATA:  test-backend-node-gpu.js result: performance: load: null total: 155 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: warmup body result match +2022-11-16 17:45:46 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-11-16 17:45:46 INFO:  test-backend-node-gpu.js test: details verification +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js start default +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-11-16 17:45:46 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-11-16 17:45:46 DATA:  test-backend-node-gpu.js result: performance: load: null total: 169 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details face length 1 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details face score 1 0.93 1 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details face age/gender 23.7 female 0.97 2.34 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details face arrays 4 478 1024 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details face anti-spoofing 0.79 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details face liveness 0.83 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details body length 1 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details body 0.92 17 6 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details hand length 1 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details hand 0.51 0.73 point +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details hand arrays 21 5 7 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details gesture length 7 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details object length 1 +2022-11-16 17:45:46 STATE: test-backend-node-gpu.js passed: details object 0.72 person +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:47 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-11-16 17:45:48 INFO:  test-backend-node-gpu.js test default +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js start async +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg async +2022-11-16 17:45:48 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-11-16 17:45:48 DATA:  test-backend-node-gpu.js result: performance: load: null total: 149 +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js passed: default result face match 1 female 0.97 +2022-11-16 17:45:48 INFO:  test-backend-node-gpu.js test sync +2022-11-16 17:45:48 STATE: test-backend-node-gpu.js start sync +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sync +2022-11-16 17:45:49 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:49 DATA:  test-backend-node-gpu.js result: performance: load: null total: 145 +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: default sync 1 female 0.97 +2022-11-16 17:45:49 INFO:  test-backend-node-gpu.js test: image process +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: image input null [1,256,256,3] +2022-11-16 17:45:49 INFO:  test-backend-node-gpu.js test: image null +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: invalid input could not convert input to tensor +2022-11-16 17:45:49 INFO:  test-backend-node-gpu.js test face similarity +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js start face similarity +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-face.jpg face similarity +2022-11-16 17:45:49 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-11-16 17:45:49 DATA:  test-backend-node-gpu.js result: performance: load: null total: 145 +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js start face similarity +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg face similarity +2022-11-16 17:45:49 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:49 DATA:  test-backend-node-gpu.js result: performance: load: null total: 137 +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js start face similarity +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-11-16 17:45:49 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-11-16 17:45:50 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-11-16 17:45:50 DATA:  test-backend-node-gpu.js result: performance: load: null total: 149 +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js passed: face descriptor +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js passed: face similarity {"similarity":[1,0.4475002983522097,0.5570879556505012],"descriptors":[1024,1024,1024]} +2022-11-16 17:45:50 INFO:  test-backend-node-gpu.js test object +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js start object +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-11-16 17:45:50 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:50 DATA:  test-backend-node-gpu.js result: performance: load: null total: 139 +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js passed: centernet +2022-11-16 17:45:50 STATE: test-backend-node-gpu.js start object +2022-11-16 17:45:51 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:51 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:51 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:51 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg object +2022-11-16 17:45:51 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 3 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:45:51 DATA:  test-backend-node-gpu.js result: performance: load: null total: 566 +2022-11-16 17:45:51 STATE: test-backend-node-gpu.js passed: nanodet +2022-11-16 17:45:51 INFO:  test-backend-node-gpu.js test sensitive +2022-11-16 17:45:51 STATE: test-backend-node-gpu.js start sensitive +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg sensitive +2022-11-16 17:45:52 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-11-16 17:45:52 DATA:  test-backend-node-gpu.js result: performance: load: null total: 125 +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js passed: sensitive result match +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js passed: sensitive face result match +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js passed: sensitive body result match +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js passed: sensitive hand result match +2022-11-16 17:45:52 INFO:  test-backend-node-gpu.js test body +2022-11-16 17:45:52 STATE: test-backend-node-gpu.js start blazepose +2022-11-16 17:45:54 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:54 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:54 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:54 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg blazepose +2022-11-16 17:45:54 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.99,"keypoints":39} +2022-11-16 17:45:54 DATA:  test-backend-node-gpu.js result: performance: load: null total: 300 +2022-11-16 17:45:54 STATE: test-backend-node-gpu.js passed: blazepose +2022-11-16 17:45:54 STATE: test-backend-node-gpu.js start efficientpose +2022-11-16 17:45:55 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:55 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:55 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:55 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-11-16 17:45:55 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.75,"keypoints":13} +2022-11-16 17:45:55 DATA:  test-backend-node-gpu.js result: performance: load: null total: 942 +2022-11-16 17:45:55 STATE: test-backend-node-gpu.js passed: efficientpose +2022-11-16 17:45:55 STATE: test-backend-node-gpu.js start posenet +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg posenet +2022-11-16 17:45:56 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.96,"keypoints":16} +2022-11-16 17:45:56 DATA:  test-backend-node-gpu.js result: performance: load: null total: 119 +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js passed: posenet +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js start movenet +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-11-16 17:45:56 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js event: detect +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js passed: detect: samples/in/ai-body.jpg movenet +2022-11-16 17:45:57 DATA:  test-backend-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 0 person: 1 {"score":1,"age":23.7,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-11-16 17:45:57 DATA:  test-backend-node-gpu.js result: performance: load: null total: 130 +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js passed: movenet +2022-11-16 17:45:57 INFO:  test-backend-node-gpu.js test face matching +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js passed: face database 40 +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7829338043932047}} {"second":{"index":4,"similarity":0.5002928781584631}} {"third":{"index":4,"similarity":0.5402934771672516}} +2022-11-16 17:45:57 INFO:  test-backend-node-gpu.js test face similarity alternative +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js start face embeddings +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-11-16 17:45:57 STATE: test-backend-node-gpu.js event: image +2022-11-16 17:45:57 ERROR: test-backend-node-gpu.js failed: testDetect face embeddings +2022-11-16 17:45:57 ERROR: test-backend-node-gpu.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node-gpu.js:99:176887"," at new Promise ()"," at q5 (/home/vlado/dev/human/dist/human.node-gpu.js:99:176656)"," at k1 (/home/vlado/dev/human/dist/human.node-gpu.js:121:6792)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node-gpu.js:840:9036"]} +2022-11-16 17:45:57 INFO:  +2022-11-16 17:45:57 INFO:  test-backend-node-wasm.js start +2022-11-16 17:45:58 DATA:  test-backend-node-wasm.js stdout: 2022-11-16 17:45:58 INFO:  { supported: true, backend: true, simd: undefined, multithread: undefined } https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.0.0/dist/ +2022-11-16 17:45:58 STATE: test-backend-node-wasm.js passed: model server: https://vladmandic.github.io/human-models/models/ +2022-11-16 17:45:58 INFO:  test-backend-node-wasm.js test: configuration validation +2022-11-16 17:45:58 STATE: test-backend-node-wasm.js passed: configuration default validation [] +2022-11-16 17:45:58 STATE: test-backend-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-11-16 17:45:58 INFO:  test-backend-node-wasm.js test: model load +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: models loaded 25 11 [{"name":"ssrnetage","loaded":false,"url":null},{"name":"gear","loaded":false,"url":null},{"name":"blazeposedetect","loaded":false,"url":null},{"name":"blazepose","loaded":false,"url":null},{"name":"centernet","loaded":true,"url":"https://vladmandic.github.io/human-models/models/mb3-centernet.json"},{"name":"efficientpose","loaded":false,"url":null},{"name":"mobilefacenet","loaded":false,"url":null},{"name":"insightface","loaded":false,"url":null},{"name":"emotion","loaded":true,"url":"https://vladmandic.github.io/human-models/models/emotion.json"},{"name":"facedetect","loaded":true,"url":"https://vladmandic.github.io/human-models/models/blazeface.json"},{"name":"faceiris","loaded":true,"url":"https://vladmandic.github.io/human-models/models/iris.json"},{"name":"facemesh","loaded":true,"url":"https://vladmandic.github.io/human-models/models/facemesh.json"},{"name":"faceres","loaded":true,"url":"https://vladmandic.github.io/human-models/models/faceres.json"},{"name":"ssrnetgender","loaded":false,"url":null},{"name":"handpose","loaded":false,"url":null},{"name":"handskeleton","loaded":true,"url":"https://vladmandic.github.io/human-models/models/handlandmark-full.json"},{"name":"handtrack","loaded":true,"url":"https://vladmandic.github.io/human-models/models/handtrack.json"},{"name":"liveness","loaded":true,"url":"https://vladmandic.github.io/human-models/models/liveness.json"},{"name":"meet","loaded":false,"url":null},{"name":"movenet","loaded":true,"url":"https://vladmandic.github.io/human-models/models/movenet-lightning.json"},{"name":"nanodet","loaded":false,"url":null},{"name":"posenet","loaded":false,"url":null},{"name":"selfie","loaded":false,"url":null},{"name":"rvm","loaded":false,"url":null},{"name":"antispoof","loaded":true,"url":"https://vladmandic.github.io/human-models/models/antispoof.json"}] +2022-11-16 17:46:00 INFO:  test-backend-node-wasm.js memory: {"memory":{"unreliable":false,"numTensors":1785,"numDataBuffers":1785,"numBytes":63247332}} +2022-11-16 17:46:00 INFO:  test-backend-node-wasm.js state: {"state":{"registeredVariables":{},"nextTapeNodeId":0,"numBytes":63247332,"numTensors":1785,"numStringTensors":0,"numDataBuffers":1785,"gradientDepth":0,"kernelDepth":0,"scopeStack":[],"numDataMovesStack":[],"nextScopeId":0,"tensorInfo":{},"profiling":false,"activeProfile":{"newBytes":0,"newTensors":0,"peakBytes":0,"kernels":[],"result":null,"kernelNames":[]}}} +2022-11-16 17:46:00 INFO:  test-backend-node-wasm.js test: warmup +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: create human +2022-11-16 17:46:00 INFO:  test-backend-node-wasm.js human version: 3.0.0 +2022-11-16 17:46:00 INFO:  test-backend-node-wasm.js platform: linux x64 agent: NodeJS v19.1.0 +2022-11-16 17:46:00 INFO:  test-backend-node-wasm.js tfjs version: 4.0.0 +2022-11-16 17:46:00 INFO:  test-backend-node-wasm.js env: {"browser":false,"node":true,"platform":"linux x64","agent":"NodeJS v19.1.0","backends":["wasm"],"initial":false,"tfjs":{"version":"4.0.0"},"offscreen":false,"perfadd":false,"tensorflow":{},"wasm":{"supported":true,"backend":true,"simd":true,"multithread":false},"webgl":{"supported":false,"backend":false},"webgpu":{"supported":false,"backend":false},"cpu":{"flags":[]},"kernels":126} +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: set backend: wasm +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js tensors 1785 +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: load models +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js result: defined models: 25 loaded models: 11 +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: warmup: none default +2022-11-16 17:46:00 DATA:  test-backend-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-11-16 17:46:00 DATA:  test-backend-node-wasm.js result: performance: load: null total: null +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: warmup none result match +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js event: warmup +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: warmup: face default +2022-11-16 17:46:00 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-11-16 17:46:00 DATA:  test-backend-node-wasm.js result: performance: load: null total: 471 +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js passed: warmup face result match +2022-11-16 17:46:00 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js event: warmup +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: warmup: body default +2022-11-16 17:46:01 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-11-16 17:46:01 DATA:  test-backend-node-wasm.js result: performance: load: null total: 345 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: warmup body result match +2022-11-16 17:46:01 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-11-16 17:46:01 INFO:  test-backend-node-wasm.js test: details verification +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js start default +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-11-16 17:46:01 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-11-16 17:46:01 DATA:  test-backend-node-wasm.js result: performance: load: null total: 328 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details face length 1 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details face score 1 0.93 1 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details face age/gender 23.7 female 0.97 2.34 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details face arrays 4 478 1024 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details face anti-spoofing 0.79 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details face liveness 0.83 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details body length 1 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details body 0.92 17 6 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details hand length 1 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details hand 0.51 0.73 point +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details hand arrays 21 5 7 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details gesture length 7 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details object length 1 +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: details object 0.72 person +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} +2022-11-16 17:46:01 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:02 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:02 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-11-16 17:46:02 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} +2022-11-16 17:46:02 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:02 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:02 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:03 STATE: test-backend-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-11-16 17:46:04 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-11-16 17:46:04 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:04 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:04 STATE: test-backend-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-11-16 17:46:04 INFO:  test-backend-node-wasm.js test default +2022-11-16 17:46:04 STATE: test-backend-node-wasm.js start async +2022-11-16 17:46:04 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:04 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg async +2022-11-16 17:46:05 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-11-16 17:46:05 DATA:  test-backend-node-wasm.js result: performance: load: null total: 342 +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: default result face match 1 female 0.97 +2022-11-16 17:46:05 INFO:  test-backend-node-wasm.js test sync +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js start sync +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sync +2022-11-16 17:46:05 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-11-16 17:46:05 DATA:  test-backend-node-wasm.js result: performance: load: null total: 327 +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: default sync 1 female 0.97 +2022-11-16 17:46:05 INFO:  test-backend-node-wasm.js test: image process +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: image input null [1,256,256,3] +2022-11-16 17:46:05 INFO:  test-backend-node-wasm.js test: image null +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: invalid input could not convert input to tensor +2022-11-16 17:46:05 INFO:  test-backend-node-wasm.js test face similarity +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js start face similarity +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-face.jpg face similarity +2022-11-16 17:46:05 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-11-16 17:46:05 DATA:  test-backend-node-wasm.js result: performance: load: null total: 305 +2022-11-16 17:46:05 STATE: test-backend-node-wasm.js start face similarity +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg face similarity +2022-11-16 17:46:06 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:46:06 DATA:  test-backend-node-wasm.js result: performance: load: null total: 338 +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js start face similarity +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-upper.jpg face similarity +2022-11-16 17:46:06 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-11-16 17:46:06 DATA:  test-backend-node-wasm.js result: performance: load: null total: 296 +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js passed: face descriptor +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} +2022-11-16 17:46:06 INFO:  test-backend-node-wasm.js test object +2022-11-16 17:46:06 STATE: test-backend-node-wasm.js start object +2022-11-16 17:46:07 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:07 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:07 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:07 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-11-16 17:46:07 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-11-16 17:46:07 DATA:  test-backend-node-wasm.js result: performance: load: null total: 333 +2022-11-16 17:46:07 STATE: test-backend-node-wasm.js passed: centernet +2022-11-16 17:46:07 STATE: test-backend-node-wasm.js start object +2022-11-16 17:46:07 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-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg object +2022-11-16 17:46:08 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-11-16 17:46:08 DATA:  test-backend-node-wasm.js result: performance: load: null total: 221 +2022-11-16 17:46:08 ERROR: test-backend-node-wasm.js failed: nanodet [] +2022-11-16 17:46:08 INFO:  test-backend-node-wasm.js test sensitive +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js start sensitive +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg sensitive +2022-11-16 17:46:08 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-11-16 17:46:08 DATA:  test-backend-node-wasm.js result: performance: load: null total: 245 +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: sensitive result match +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: sensitive face result match +2022-11-16 17:46:08 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-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: sensitive body result match +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js passed: sensitive hand result match +2022-11-16 17:46:08 INFO:  test-backend-node-wasm.js test body +2022-11-16 17:46:08 STATE: test-backend-node-wasm.js start blazepose +2022-11-16 17:46:10 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:10 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:11 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:11 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg blazepose +2022-11-16 17:46:11 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-11-16 17:46:11 DATA:  test-backend-node-wasm.js result: performance: load: null total: 412 +2022-11-16 17:46:11 STATE: test-backend-node-wasm.js passed: blazepose +2022-11-16 17:46:11 STATE: test-backend-node-wasm.js start efficientpose +2022-11-16 17:46:11 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:11 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:12 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:12 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg efficientpose +2022-11-16 17:46:12 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.75,"keypoints":13} +2022-11-16 17:46:12 DATA:  test-backend-node-wasm.js result: performance: load: null total: 675 +2022-11-16 17:46:12 STATE: test-backend-node-wasm.js passed: efficientpose +2022-11-16 17:46:12 STATE: test-backend-node-wasm.js start posenet +2022-11-16 17:46:12 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:12 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg posenet +2022-11-16 17:46:13 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.96,"keypoints":16} +2022-11-16 17:46:13 DATA:  test-backend-node-wasm.js result: performance: load: null total: 298 +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js passed: posenet +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js start movenet +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js event: detect +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js passed: detect: samples/in/ai-body.jpg movenet +2022-11-16 17:46:13 DATA:  test-backend-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 10 object: 0 person: 1 {"score":1,"age":29.6,"gender":"female"} {} {"score":0.92,"keypoints":17} +2022-11-16 17:46:13 DATA:  test-backend-node-wasm.js result: performance: load: null total: 247 +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js passed: movenet +2022-11-16 17:46:13 INFO:  test-backend-node-wasm.js test face matching +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js passed: face database 40 +2022-11-16 17:46:13 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-11-16 17:46:13 INFO:  test-backend-node-wasm.js test face similarity alternative +2022-11-16 17:46:13 STATE: test-backend-node-wasm.js start face embeddings +2022-11-16 17:46:14 STATE: test-backend-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-11-16 17:46:14 STATE: test-backend-node-wasm.js event: image +2022-11-16 17:46:14 ERROR: test-backend-node-wasm.js failed: testDetect face embeddings +2022-11-16 17:46:14 ERROR: test-backend-node-wasm.js uncaughtException {"name":"TypeError","message":"Cannot read properties of undefined (reading 'img_inputs')","stack":["TypeError: Cannot read properties of undefined (reading 'img_inputs')"," at /home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30706:69"," at Array.reduce ()"," at GraphModel.normalizeInputs (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30705:32)"," at GraphModel.execute (/home/vlado/dev/human/node_modules/.pnpm/@tensorflow+tfjs-converter@4.0.0_hdmpc5coifabqk2ogondqkcwg4/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:30777:23)"," at /home/vlado/dev/human/dist/human.node-wasm.js:99:176887"," at new Promise ()"," at U5 (/home/vlado/dev/human/dist/human.node-wasm.js:99:176656)"," at w1 (/home/vlado/dev/human/dist/human.node-wasm.js:121:6792)"," at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"," at async /home/vlado/dev/human/dist/human.node-wasm.js:840:9036"]} +2022-11-16 17:46:14 STATE: all tests complete +2022-11-16 17:46:14 INFO:  status {"test":"../demo/nodejs/node.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"../demo/nodejs/node-simple.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"../demo/nodejs/node-event.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"../demo/nodejs/node-similarity.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"../demo/nodejs/node-canvas.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"../demo/nodejs/process-folder.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"../demo/multithread/node-multiprocess.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"../demo/facematch/node-match.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"test-node-load.js","passed":1,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"test-node-gear.js","passed":3,"failed":0} +2022-11-16 17:46:14 INFO:  status {"test":"test-backend-node.js","passed":85,"failed":1} +2022-11-16 17:46:14 INFO:  status {"test":"test-backend-node-gpu.js","passed":85,"failed":1} +2022-11-16 17:46:14 INFO:  status {"test":"test-backend-node-wasm.js","passed":85,"failed":2} +2022-11-16 17:46:14 INFO:  failures {"count":4} +2022-11-16 17:46:14 WARN:  failed {"test":"test-backend-node.js","message":["error",["failed:","testDetect face embeddings"]]} +2022-11-16 17:46:14 WARN:  failed {"test":"test-backend-node-gpu.js","message":["error",["failed:","testDetect face embeddings"]]} +2022-11-16 17:46:14 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed: nanodet",[]]]} +2022-11-16 17:46:14 WARN:  failed {"test":"test-backend-node-wasm.js","message":["error",["failed:","testDetect face embeddings"]]}