diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c2c52f9..0b52ac54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,10 +11,11 @@ ### **HEAD -> main** 2022/04/11 mandic00@live.com +- face attention model is available in human-models +- beta release 2.7 +- refactor draw methods - implement face attention model - -### **origin/main** 2022/04/10 mandic00@live.com - +- add electronjs demo - rebuild ### **2.6.5** 2022/04/01 mandic00@live.com diff --git a/src/face/attention.ts b/src/face/attention.ts index 1654388a..533a7cf5 100644 --- a/src/face/attention.ts +++ b/src/face/attention.ts @@ -1,19 +1,71 @@ import type { Tensor } from '../tfjs/types'; +const attentionDefinitions = { + eyeLLower: [33, 7, 163, 144, 145, 153, 154, 155, 133], // 9 + eyeRLower: [263, 249, 390, 373, 374, 380, 381, 382, 362], // 9 + // eslint-disable-next-line max-len + lips: [61, 76, 91, 181, 84, 17, 314, 405, 321, 291, 291, 185, 40, 39, 37, 0, 267, 269, 270, 291, 62, 183, 88, 178, 87, 14, 268, 303, 304, 408, 291, 184, 42, 178, 87, 14, 268, 303, 304, 408, 61, 62, 90, 180, 85, 16, 315, 404, 307, 308, 291, 185, 40, 73, 72, 0, 302, 269, 270, 409, 61, 184, 95, 179, 86, 15, 316, 403, 324, 408, 291, 184, 74, 41, 38, 11, 268, 303, 304, 408], + // eslint-disable-next-line max-len + eyeL: [33, 7, 163, 144, 145, 153, 154, 155, 133, 246, 161, 160, 159, 158, 157, 173, 130, 25, 110, 24, 23, 22, 26, 112, 243, 247, 30, 29, 27, 28, 56, 190, 226, 31, 228, 229, 230, 231, 232, 233, 244, 113, 225, 224, 223, 222, 221, 189, 35, 124, 46, 53, 52, 65, 143, 111, 117, 118, 119, 120, 121, 128, 245, 156, 70, 63, 105, 66, 107, 55, 193], + // eslint-disable-next-line max-len + eyeR: [263, 249, 390, 373, 374, 380, 381, 382, 362, 466, 388, 387, 386, 385, 384, 398, 359, 255, 339, 254, 253, 252, 256, 341, 463, 467, 260, 259, 257, 258, 286, 414, 446, 261, 448, 449, 450, 451, 452, 453, 464, 342, 445, 444, 443, 442, 441, 413, 265, 353, 276, 283, 282, 295, 372, 340, 346, 347, 348, 349, 350, 357, 465, 383, 300, 293, 334, 296, 336, 285, 417], +}; + +/* +// function used to determine heuristic mapping +// values in attentionDefinitions are based on top values from 200 iterations +function replaceClosestPoint(rawCoords, newCoords) { + const res: number[] = []; + for (let i = 0; i < newCoords.length / 2; i++) { + let minDist = Number.MAX_VALUE; + let minDistIdx = -1; + const pts = rawCoords.map((r) => [r[0], r[1]]); + for (let j = 0; j < rawCoords.length; j++) { + const x = pts[j][0] - newCoords[2 * i + 0]; + const y = pts[j][1] - newCoords[2 * i + 1]; + const dist = (x * x) + (y * y); + if (dist < minDist) { + minDist = dist; + minDistIdx = j; + } + } + res.push(minDistIdx); + rawCoords[minDistIdx] = [newCoords[2 * i + 0], newCoords[2 * i + 1], rawCoords[minDistIdx][2]]; + } + return rawCoords; +} +*/ + export async function augment(rawCoords, results: Tensor[]) { - const t: Record = { - eyeL: results[0].dataSync() as Float32Array, // 71 x 2d // output_left_eye - eyeR: results[6].dataSync() as Float32Array, // 71 x 2d // output_right_eye + const t: Record = { // all attention models produce 2d results so it needs to be later augmented with correct z-coords irisL: results[3].dataSync() as Float32Array, // 5 x 2d // output_left_iris irisR: results[1].dataSync() as Float32Array, // 5 x 2d // output_right_iris + eyeL: results[0].dataSync() as Float32Array, // 71 x 2d // output_left_eye + eyeR: results[6].dataSync() as Float32Array, // 71 x 2d // output_right_eye lips: results[5].dataSync() as Float32Array, // 80 x 2d // output_lips // flag: results[4], // already processed in parent // conv_faceflag // mesh: results[2], // already have it in rawCoords // output_mesh_identity }; - for (let i = 0; i < t.lips.length / 2; i++) rawCoords.push([t.lips[2 * i + 0], t.lips[2 * i + 1], 0]); - for (let i = 0; i < t.eyeL.length / 2; i++) rawCoords.push([t.eyeL[2 * i + 0], t.eyeL[2 * i + 1], 0]); - for (let i = 0; i < t.eyeR.length / 2; i++) rawCoords.push([t.eyeR[2 * i + 0], t.eyeR[2 * i + 1], 0]); - for (let i = 0; i < t.irisL.length / 2; i++) rawCoords.push([t.irisL[2 * i + 0], t.irisL[2 * i + 1], 0]); - for (let i = 0; i < t.irisR.length / 2; i++) rawCoords.push([t.irisR[2 * i + 0], t.irisR[2 * i + 1], 0]); + + // rawCoords = replaceClosestPoint(rawCoords, t.eyeL); + // rawCoords = replaceClosestPoint(rawCoords, t.eyeR); + // rawCoords = replaceClosestPoint(rawCoords, t.lips); + + // augment iris: adds additional 5 keypoints per eye + const irisRDepth = attentionDefinitions.eyeRLower.reduce((prev, curr) => prev += rawCoords[curr][2], 0) / attentionDefinitions.eyeRLower.length; // get average z-coord for iris + for (let i = 0; i < t.irisR.length / 2; i++) rawCoords.push([t.irisR[2 * i + 0], t.irisR[2 * i + 1], irisRDepth]); + const irisLDepth = attentionDefinitions.eyeLLower.reduce((prev, curr) => prev += rawCoords[curr][2], 0) / attentionDefinitions.eyeLLower.length; // get average z-coord for iris + for (let i = 0; i < t.irisL.length / 2; i++) rawCoords.push([t.irisL[2 * i + 0], t.irisL[2 * i + 1], irisLDepth]); + + // augment eyes: replaces eye keypoints based on heuristic mapping + for (let i = 0; i < t.eyeL.length / 2; i++) rawCoords[attentionDefinitions.eyeL[i]] = [t.eyeL[2 * i + 0], t.eyeL[2 * i + 1], rawCoords[attentionDefinitions.eyeL[i]][2]]; + // for (let i = 0; i < t.eyeL.length / 2; i++) rawCoords.push([t.eyeL[2 * i + 0], t.eyeL[2 * i + 1], 0]); + for (let i = 0; i < t.eyeR.length / 2; i++) rawCoords[attentionDefinitions.eyeR[i]] = [t.eyeR[2 * i + 0], t.eyeR[2 * i + 1], rawCoords[attentionDefinitions.eyeR[i]][2]]; + // for (let i = 0; i < t.eyeR.length / 2; i++) rawCoords.push([t.eyeR[2 * i + 0], t.eyeR[2 * i + 1], 0]); + + // augment lips: replaces eye keypoints based on heuristic mapping + // for (let i = 0; i < t.lips.length / 2; i++) rawCoords[attentionDefinitions.lips[i]] = [t.lips[2 * i + 0], t.lips[2 * i + 1], rawCoords[attentionDefinitions.lips[i]][2]]; + // for (let i = 0; i < t.lips.length / 2; i++) rawCoords.push([t.lips[2 * i + 0], t.lips[2 * i + 1], 0]); + return rawCoords; } diff --git a/src/face/facemeshcoords.ts b/src/face/facemeshcoords.ts index 8ed03b92..23ad768c 100644 --- a/src/face/facemeshcoords.ts +++ b/src/face/facemeshcoords.ts @@ -9,20 +9,20 @@ export const meshAnnotations: Record = { 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136, 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109, ], - lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291], - lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291], - lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308], - lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308], - rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173], - rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133], - rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190], - rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243], - rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189], - rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244], - rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245], - rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193], - rightEyebrowLower: [35, 124, 46, 53, 52, 65], - rightEyeIris: [473, 474, 475, 476, 477], + lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291], // 11 + lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291], // 10 + lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308], // 11 + lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308], // 11 + rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173], // 7 + rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133], // 9 + rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190], // 7 + rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243], // 9 + rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189], // 7 + rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244], // 9 + rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245], // 9 + rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193], // 8 + rightEyebrowLower: [35, 124, 46, 53, 52, 65], // 6 + rightEyeIris: [473, 474, 475, 476, 477], // 5 leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398], leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362], leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414], @@ -59,15 +59,15 @@ export const blazeFaceLandmarks: Record = { }; export const MESH_TO_IRIS_INDICES_MAP: Array<{ key: string, indices: number[] }> = [ // A mapping from facemesh model keypoints to iris model keypoints. - { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] }, - { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] }, - { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] }, - { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] }, - { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] }, - { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] }, - { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] }, - // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] }, - // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] }, + { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] }, // 7 x 3d + { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] }, // 7 x 3d + { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] }, // 7 x 3d + { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] }, // 7 x 3d + { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] }, // 9 x 3d + { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] }, // 9 x 3d + { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] }, // 9 x 3d + { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] }, // 8 x 3d + { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] }, // 6 x 3d ]; export const UV468: [number, number][] = [ diff --git a/src/face/iris.ts b/src/face/iris.ts index 02ea2015..ebd864fa 100644 --- a/src/face/iris.ts +++ b/src/face/iris.ts @@ -39,7 +39,7 @@ export async function load(config: Config): Promise { // Replace the raw coordinates returned by facemesh with refined iris model coordinates // Update the z coordinate to be an average of the original and the new. -function replaceRawCoordinates(rawCoords, newCoords, prefix, keys) { +export function replaceIrisCoords(rawCoords, newCoords, prefix, keys) { for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) { const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i]; const originalIndices = coords.meshAnnotations[`${prefix}${key}`]; @@ -47,7 +47,8 @@ function replaceRawCoordinates(rawCoords, newCoords, prefix, keys) { for (let j = 0; j < indices.length; j++) { const index = indices[j]; rawCoords[originalIndices[j]] = [ - newCoords[index][0], newCoords[index][1], + newCoords[index][0], + newCoords[index][1], (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2, ]; } @@ -132,14 +133,14 @@ export async function augmentIris(rawCoords, face, config, meshSize) { const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize, false); const leftToRightEyeDepthDifference = getLeftToRightEyeDepthDifference(rawCoords); if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead. - replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null); - replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null); + replaceIrisCoords(rawCoords, leftEyeRawCoords, 'left', null); + replaceIrisCoords(rawCoords, rightEyeRawCoords, 'right', null); // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged // So we only update a single contour line above and below the eye. } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right. - replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']); + replaceIrisCoords(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']); } else { // User is looking towards the left. - replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']); + replaceIrisCoords(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']); } const adjustedLeftIrisCoords = getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left'); const adjustedRightIrisCoords = getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right'); diff --git a/src/models.ts b/src/models.ts index ba25760c..922122be 100644 --- a/src/models.ts +++ b/src/models.ts @@ -81,7 +81,7 @@ export async function load(instance: Human): Promise { if (instance.config.face.enabled && instance.config.face.liveness?.enabled && !instance.models.liveness) instance.models.liveness = liveness.load(instance.config); if (instance.config.face.enabled && instance.config.face.description?.enabled && !instance.models.faceres) instance.models.faceres = faceres.load(instance.config); if (instance.config.face.enabled && instance.config.face.emotion?.enabled && !instance.models.emotion) instance.models.emotion = emotion.load(instance.config); - if (instance.config.face.enabled && instance.config.face.iris?.enabled && !instance.models.faceiris) instance.models.faceiris = iris.load(instance.config); + if (instance.config.face.enabled && instance.config.face.iris?.enabled && !instance.config.face.attention?.enabled && !instance.models.faceiris) instance.models.faceiris = iris.load(instance.config); if (instance.config.face.enabled && instance.config.face.mesh?.enabled && !instance.models.facemesh) instance.models.facemesh = facemesh.load(instance.config); // @ts-ignore optional model if (instance.config.face.enabled && instance.config.face['gear']?.enabled && !instance.models.gear) instance.models.gear = gear.load(instance.config); diff --git a/test/build.log b/test/build.log index 21c47319..fe806b6e 100644 --- a/test/build.log +++ b/test/build.log @@ -1,24 +1,24 @@ -2022-04-11 11:46:03 INFO:  Application: {"name":"@vladmandic/human","version":"2.7.0"} -2022-04-11 11:46:03 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} -2022-04-11 11:46:03 INFO:  Toolchain: {"build":"0.7.2","esbuild":"0.14.34","typescript":"4.6.3","typedoc":"0.22.15","eslint":"8.13.0"} -2022-04-11 11:46:03 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} -2022-04-11 11:46:03 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} -2022-04-11 11:46:03 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":595} -2022-04-11 11:46:03 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":72,"inputBytes":568981,"outputBytes":294190} -2022-04-11 11:46:03 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":599} -2022-04-11 11:46:03 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":72,"inputBytes":568985,"outputBytes":294194} -2022-04-11 11:46:03 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":651} -2022-04-11 11:46:03 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":72,"inputBytes":569037,"outputBytes":294244} -2022-04-11 11:46:03 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":394} -2022-04-11 11:46:03 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1068,"outputBytes":615} -2022-04-11 11:46:03 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":72,"inputBytes":569001,"outputBytes":293151} -2022-04-11 11:46:04 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1344714} -2022-04-11 11:46:04 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":72,"inputBytes":1913100,"outputBytes":1636880} -2022-04-11 11:46:04 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":72,"inputBytes":1913100,"outputBytes":2115805} -2022-04-11 11:46:09 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":114} -2022-04-11 11:46:11 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":73,"generated":true} -2022-04-11 11:46:11 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5916,"outputBytes":2957} -2022-04-11 11:46:11 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15174,"outputBytes":7820} -2022-04-11 11:46:19 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":104,"errors":0,"warnings":0} -2022-04-11 11:46:19 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} -2022-04-11 11:46:19 INFO:  Done... +2022-04-14 11:39:30 INFO:  Application: {"name":"@vladmandic/human","version":"2.7.0"} +2022-04-14 11:39:30 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} +2022-04-14 11:39:30 INFO:  Toolchain: {"build":"0.7.2","esbuild":"0.14.34","typescript":"4.6.3","typedoc":"0.22.15","eslint":"8.13.0"} +2022-04-14 11:39:30 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} +2022-04-14 11:39:30 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} +2022-04-14 11:39:30 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":595} +2022-04-14 11:39:30 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":72,"inputBytes":572717,"outputBytes":295399} +2022-04-14 11:39:30 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":599} +2022-04-14 11:39:30 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":72,"inputBytes":572721,"outputBytes":295403} +2022-04-14 11:39:30 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":651} +2022-04-14 11:39:30 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":72,"inputBytes":572773,"outputBytes":295453} +2022-04-14 11:39:30 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":394} +2022-04-14 11:39:30 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1068,"outputBytes":615} +2022-04-14 11:39:30 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":72,"inputBytes":572737,"outputBytes":294360} +2022-04-14 11:39:31 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1344714} +2022-04-14 11:39:31 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":72,"inputBytes":1916836,"outputBytes":1638088} +2022-04-14 11:39:31 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":72,"inputBytes":1916836,"outputBytes":2117565} +2022-04-14 11:39:37 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":114} +2022-04-14 11:39:39 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":73,"generated":true} +2022-04-14 11:39:39 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5916,"outputBytes":2957} +2022-04-14 11:39:39 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15174,"outputBytes":7820} +2022-04-14 11:39:47 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":104,"errors":0,"warnings":0} +2022-04-14 11:39:48 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} +2022-04-14 11:39:48 INFO:  Done... diff --git a/test/test-main.js b/test/test-main.js index 26d67d9b..3d3eb2d0 100644 --- a/test/test-main.js +++ b/test/test-main.js @@ -150,9 +150,9 @@ 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 > 25 && face.age < 30 && face.gender === 'female' && face.genderScore > 0.9 && face.iris > 70 && face.iris < 80, '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 > 70 && face.iris < 80, '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 === 3 && face.emotion[0].score > 0.30 && face.emotion[0].emotion === 'fear', 'details face emotion', face.emotion.length, face.emotion[0]); + 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.75, 'details face anti-spoofing', face.real); verify(face.live > 0.75, 'details face liveness', face.live); } @@ -270,7 +270,7 @@ async function test(Human, inputConfig) { else log('state', 'passed: warmup none result match'); config.warmup = 'face'; res = await testWarmup(human, 'default'); - if (!res || res?.face?.length !== 1 || res?.body?.length !== 1 || res?.hand?.length !== 1 || res?.gesture?.length < 7) log('error', 'failed: warmup face result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length); + if (!res || res?.face?.length !== 1 || res?.body?.length !== 1 || res?.hand?.length !== 1 || res?.gesture?.length < 6) log('error', 'failed: warmup face result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length); else log('state', 'passed: warmup face result match'); config.warmup = 'body'; res = await testWarmup(human, 'default'); @@ -334,7 +334,7 @@ async function test(Human, inputConfig) { res1 = human.similarity(desc1, desc1); res2 = human.similarity(desc1, desc2); res3 = human.similarity(desc1, desc3); - if (res1 < 1 || res2 < 0.50 || res3 < 0.45 || res2 > 0.75 || res3 > 0.75) log('error', 'failed: face similarity', { similarity: [res1, res2, res3], descriptors: [desc1?.length, desc2?.length, desc3?.length] }); + if (res1 < 1 || res2 < 0.40 || res3 < 0.40 || res2 > 0.75 || res3 > 0.75) log('error', 'failed: face similarity', { similarity: [res1, res2, res3], descriptors: [desc1?.length, desc2?.length, desc3?.length] }); else log('state', 'passed: face similarity', { similarity: [res1, res2, res3], descriptors: [desc1?.length, desc2?.length, desc3?.length] }); // test face matching diff --git a/test/test.log b/test/test.log index dcf875f6..741066bc 100644 --- a/test/test.log +++ b/test/test.log @@ -1,684 +1,684 @@ -2022-04-10 10:12:07 INFO:  @vladmandic/human version 2.6.5 -2022-04-10 10:12:07 INFO:  User: vlado Platform: linux Arch: x64 Node: v17.4.0 -2022-04-10 10:12:07 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"] -2022-04-10 10:12:07 INFO:  demos: ["../demo/nodejs/node.js","../demo/nodejs/node-canvas.js","../demo/nodejs/node-env.js","../demo/nodejs/node-event.js","../demo/nodejs/node-multiprocess.js"] -2022-04-10 10:12:07 INFO:  -2022-04-10 10:12:07 INFO:  test-node.js start -2022-04-10 10:12:07 INFO:  test-node.js test: configuration validation -2022-04-10 10:12:07 STATE: test-node.js passed: configuration default validation [] -2022-04-10 10:12:07 STATE: test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-04-10 10:12:07 INFO:  test-node.js test: model load -2022-04-10 10:12:07 STATE: test-node.js passed: models loaded 22 12 [{"name":"ssrnetage","loaded":false},{"name":"gear","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"mobilefacenet","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"ssrnetgender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"liveness","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":true}] -2022-04-10 10:12:07 INFO:  test-node.js test: warmup -2022-04-10 10:12:07 STATE: test-node.js passed: create human -2022-04-10 10:12:07 INFO:  test-node.js human version: 2.6.5 -2022-04-10 10:12:07 INFO:  test-node.js platform: linux x64 agent: NodeJS v17.4.0 -2022-04-10 10:12:07 INFO:  test-node.js tfjs version: 3.15.0 -2022-04-10 10:12:07 INFO:  test-node.js tensorflow binding version: 2.7.0-dev20211101 -2022-04-10 10:12:07 STATE: test-node.js passed: set backend: tensorflow -2022-04-10 10:12:07 STATE: test-node.js tensors 1919 -2022-04-10 10:12:07 STATE: test-node.js passed: load models -2022-04-10 10:12:07 STATE: test-node.js result: defined models: 22 loaded models: 12 -2022-04-10 10:12:07 STATE: test-node.js passed: warmup: none default -2022-04-10 10:12:07 DATA:  test-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-04-10 10:12:07 DATA:  test-node.js result: performance: load: null total: null -2022-04-10 10:12:07 STATE: test-node.js passed: warmup none result match -2022-04-10 10:12:07 STATE: test-node.js event: image -2022-04-10 10:12:07 STATE: test-node.js event: detect -2022-04-10 10:12:07 STATE: test-node.js event: warmup -2022-04-10 10:12:07 STATE: test-node.js passed: warmup: face default -2022-04-10 10:12:07 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} -2022-04-10 10:12:07 DATA:  test-node.js result: performance: load: null total: 383 -2022-04-10 10:12:07 STATE: test-node.js passed: warmup face result match -2022-04-10 10:12:07 STATE: test-node.js event: image -2022-04-10 10:12:08 STATE: test-node.js event: detect -2022-04-10 10:12:08 STATE: test-node.js event: warmup -2022-04-10 10:12:08 STATE: test-node.js passed: warmup: body default -2022-04-10 10:12:08 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:08 DATA:  test-node.js result: performance: load: null total: 285 -2022-04-10 10:12:08 STATE: test-node.js passed: warmup body result match -2022-04-10 10:12:08 STATE: test-node.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":29.6,"gender":"female","genderScore":0.89},"emotion":[{"score":0.35,"emotion":"fear"},{"score":0.28,"emotion":"angry"},{"score":0.15,"emotion":"sad"},{"score":0.1,"emotion":"surprise"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"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-04-10 10:12:08 INFO:  test-node.js test: details verification -2022-04-10 10:12:08 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:08 STATE: test-node.js event: image -2022-04-10 10:12:08 STATE: test-node.js event: detect -2022-04-10 10:12:08 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:08 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:08 DATA:  test-node.js result: performance: load: null total: 280 -2022-04-10 10:12:08 STATE: test-node.js passed: details face length 1 -2022-04-10 10:12:08 STATE: test-node.js passed: details face score 1 0.93 1 -2022-04-10 10:12:08 STATE: test-node.js passed: details face age/gender 29.6 female 0.91 73.26 -2022-04-10 10:12:08 STATE: test-node.js passed: details face arrays 4 478 1024 -2022-04-10 10:12:08 STATE: test-node.js passed: details face emotion 3 {"score":0.34,"emotion":"fear"} -2022-04-10 10:12:08 STATE: test-node.js passed: details face anti-spoofing 0.78 -2022-04-10 10:12:08 STATE: test-node.js passed: details face liveness 0.83 -2022-04-10 10:12:08 STATE: test-node.js passed: details body length 1 -2022-04-10 10:12:08 STATE: test-node.js passed: details body 0.92 17 6 -2022-04-10 10:12:08 STATE: test-node.js passed: details hand length 1 -2022-04-10 10:12:08 STATE: test-node.js passed: details hand 0.51 0.73 point -2022-04-10 10:12:08 STATE: test-node.js passed: details hand arrays 21 5 7 -2022-04-10 10:12:08 STATE: test-node.js passed: details gesture length 6 -2022-04-10 10:12:08 STATE: test-node.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-04-10 10:12:08 STATE: test-node.js passed: details object length 1 -2022-04-10 10:12:08 STATE: test-node.js passed: details object 0.72 person -2022-04-10 10:12:08 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-04-10 10:12:08 STATE: test-node.js event: image -2022-04-10 10:12:09 STATE: test-node.js event: detect -2022-04-10 10:12:09 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-04-10 10:12:09 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-04-10 10:12:09 STATE: test-node.js event: image -2022-04-10 10:12:09 STATE: test-node.js event: detect -2022-04-10 10:12:09 STATE: test-node.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-04-10 10:12:09 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:09 STATE: test-node.js event: image -2022-04-10 10:12:10 STATE: test-node.js event: detect -2022-04-10 10:12:10 STATE: test-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-04-10 10:12:10 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:10 STATE: test-node.js event: image -2022-04-10 10:12:10 STATE: test-node.js event: detect -2022-04-10 10:12:10 STATE: test-node.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-04-10 10:12:10 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-04-10 10:12:10 STATE: test-node.js event: image -2022-04-10 10:12:11 STATE: test-node.js event: detect -2022-04-10 10:12:11 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-04-10 10:12:11 INFO:  test-node.js test default -2022-04-10 10:12:11 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:11 STATE: test-node.js event: image -2022-04-10 10:12:11 STATE: test-node.js event: detect -2022-04-10 10:12:11 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:11 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:11 DATA:  test-node.js result: performance: load: null total: 246 -2022-04-10 10:12:11 STATE: test-node.js passed: default result face match 1 female 0.91 -2022-04-10 10:12:11 INFO:  test-node.js test sync -2022-04-10 10:12:11 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:11 STATE: test-node.js event: image -2022-04-10 10:12:11 STATE: test-node.js event: detect -2022-04-10 10:12:11 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:11 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:11 DATA:  test-node.js result: performance: load: null total: 235 -2022-04-10 10:12:11 STATE: test-node.js passed: default sync 1 female 0.91 -2022-04-10 10:12:11 INFO:  test-node.js test: image process -2022-04-10 10:12:11 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:11 STATE: test-node.js passed: image input null [1,256,256,3] -2022-04-10 10:12:11 INFO:  test-node.js test: image null -2022-04-10 10:12:11 STATE: test-node.js passed: invalid input could not convert input to tensor -2022-04-10 10:12:11 INFO:  test-node.js test face similarity -2022-04-10 10:12:11 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:11 STATE: test-node.js event: image -2022-04-10 10:12:12 STATE: test-node.js event: detect -2022-04-10 10:12:12 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:12 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-04-10 10:12:12 DATA:  test-node.js result: performance: load: null total: 230 -2022-04-10 10:12:12 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:12 STATE: test-node.js event: image -2022-04-10 10:12:12 STATE: test-node.js event: detect -2022-04-10 10:12:12 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:12 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:12 DATA:  test-node.js result: performance: load: null total: 232 -2022-04-10 10:12:12 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-04-10 10:12:12 STATE: test-node.js event: image -2022-04-10 10:12:12 STATE: test-node.js event: detect -2022-04-10 10:12:12 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:12 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2022-04-10 10:12:12 DATA:  test-node.js result: performance: load: null total: 211 -2022-04-10 10:12:12 STATE: test-node.js passed: face descriptor -2022-04-10 10:12:12 STATE: test-node.js passed: face similarity {"similarity":[1,0.5632803981762933,0.5194114531612539],"descriptors":[1024,1024,1024]} -2022-04-10 10:12:12 INFO:  test-node.js test face matching -2022-04-10 10:12:12 STATE: test-node.js passed: face database 40 -2022-04-10 10:12:12 STATE: test-node.js passed: face match {"first":{"index":4,"similarity":0.8797924743573865}} {"second":{"index":4,"similarity":0.548081908581344}} {"third":{"index":4,"similarity":0.4999696807961951}} -2022-04-10 10:12:12 INFO:  test-node.js test object -2022-04-10 10:12:13 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:13 STATE: test-node.js event: image -2022-04-10 10:12:13 STATE: test-node.js event: detect -2022-04-10 10:12:13 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:13 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:13 DATA:  test-node.js result: performance: load: null total: 247 -2022-04-10 10:12:13 STATE: test-node.js passed: object result match -2022-04-10 10:12:13 INFO:  test-node.js test sensitive -2022-04-10 10:12:13 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:13 STATE: test-node.js event: image -2022-04-10 10:12:13 STATE: test-node.js event: detect -2022-04-10 10:12:13 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:13 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:13 DATA:  test-node.js result: performance: load: null total: 280 -2022-04-10 10:12:13 STATE: test-node.js passed: sensitive result match -2022-04-10 10:12:13 STATE: test-node.js passed: sensitive face result match -2022-04-10 10:12:13 STATE: test-node.js passed: sensitive face emotion result [{"score":0.34,"emotion":"fear"},{"score":0.29,"emotion":"angry"},{"score":0.15,"emotion":"sad"}] -2022-04-10 10:12:13 STATE: test-node.js passed: sensitive body result match -2022-04-10 10:12:13 STATE: test-node.js passed: sensitive hand result match -2022-04-10 10:12:13 INFO:  test-node.js test detectors -2022-04-10 10:12:14 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:14 STATE: test-node.js event: image -2022-04-10 10:12:14 STATE: test-node.js event: detect -2022-04-10 10:12:14 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:14 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:14 DATA:  test-node.js result: performance: load: null total: 163 -2022-04-10 10:12:14 STATE: test-node.js passed: detector result face match -2022-04-10 10:12:14 STATE: test-node.js passed: detector result hand match -2022-04-10 10:12:14 INFO:  test-node.js test: multi-instance -2022-04-10 10:12:14 STATE: test-node.js event: image -2022-04-10 10:12:14 STATE: test-node.js event: detect -2022-04-10 10:12:14 STATE: test-node.js passed: detect: random default -2022-04-10 10:12:14 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0.07,"keypoints":15} -2022-04-10 10:12:14 DATA:  test-node.js result: performance: load: null total: 156 -2022-04-10 10:12:14 INFO:  test-node.js test: first instance -2022-04-10 10:12:14 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-04-10 10:12:14 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:14 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:14 DATA:  test-node.js result: performance: load: null total: 160 -2022-04-10 10:12:14 INFO:  test-node.js test: second instance -2022-04-10 10:12:14 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-04-10 10:12:14 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:14 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:14 DATA:  test-node.js result: performance: load: null total: 152 -2022-04-10 10:12:14 INFO:  test-node.js test: concurrent -2022-04-10 10:12:14 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:14 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:15 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:15 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:15 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-04-10 10:12:15 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-04-10 10:12:15 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:15 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:15 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} -2022-04-10 10:12:15 STATE: test-node.js event: image -2022-04-10 10:12:15 STATE: test-node.js event: image -2022-04-10 10:12:15 STATE: test-node.js event: image -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1577 -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1577 -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1716 -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1716 -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1716 -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1716 -2022-04-10 10:12:17 STATE: test-node.js event: detect -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1441 -2022-04-10 10:12:17 STATE: test-node.js event: detect -2022-04-10 10:12:17 STATE: test-node.js event: detect -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1442 -2022-04-10 10:12:17 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:17 DATA:  test-node.js result: performance: load: null total: 1442 -2022-04-10 10:12:17 INFO:  test-node.js test: monkey-patch -2022-04-10 10:12:17 STATE: test-node.js event: image -2022-04-10 10:12:17 STATE: test-node.js event: detect -2022-04-10 10:12:17 STATE: test-node.js passed: monkey patch -2022-04-10 10:12:17 STATE: test-node.js passed: segmentation [65536] -2022-04-10 10:12:17 STATE: test-node.js passeed: equal usage -2022-04-10 10:12:17 INFO:  test-node.js test: input compare -2022-04-10 10:12:17 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:17 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2022-04-10 10:12:17 STATE: test-node.js passed: image compare 0 23.275441687091504 -2022-04-10 10:12:17 INFO:  test-node.js events: {"image":21,"detect":21,"warmup":2} -2022-04-10 10:12:17 INFO:  test-node.js tensors 1925 -2022-04-10 10:12:17 INFO:  test-node.js test complete: 10197 ms -2022-04-10 10:12:17 INFO:  -2022-04-10 10:12:17 INFO:  test-node-gpu.js start -2022-04-10 10:12:18 INFO:  test-node-gpu.js test: configuration validation -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: configuration default validation [] -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-04-10 10:12:18 INFO:  test-node-gpu.js test: model load -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: models loaded 22 12 [{"name":"ssrnetage","loaded":false},{"name":"gear","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"mobilefacenet","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"ssrnetgender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"liveness","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":true}] -2022-04-10 10:12:18 INFO:  test-node-gpu.js test: warmup -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: create human -2022-04-10 10:12:18 INFO:  test-node-gpu.js human version: 2.6.5 -2022-04-10 10:12:18 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v17.4.0 -2022-04-10 10:12:18 INFO:  test-node-gpu.js tfjs version: 3.15.0 -2022-04-10 10:12:18 INFO:  test-node-gpu.js tensorflow binding version: 2.7.0-dev20211101 -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: set backend: tensorflow -2022-04-10 10:12:18 STATE: test-node-gpu.js tensors 1919 -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: load models -2022-04-10 10:12:18 STATE: test-node-gpu.js result: defined models: 22 loaded models: 12 -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: warmup: none default -2022-04-10 10:12:18 DATA:  test-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-04-10 10:12:18 DATA:  test-node-gpu.js result: performance: load: null total: null -2022-04-10 10:12:18 STATE: test-node-gpu.js passed: warmup none result match -2022-04-10 10:12:19 STATE: test-node-gpu.js event: image -2022-04-10 10:12:22 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:22 STATE: test-node-gpu.js event: warmup -2022-04-10 10:12:22 STATE: test-node-gpu.js passed: warmup: face default -2022-04-10 10:12:22 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} -2022-04-10 10:12:22 DATA:  test-node-gpu.js result: performance: load: null total: 3162 -2022-04-10 10:12:22 STATE: test-node-gpu.js passed: warmup face result match -2022-04-10 10:12:22 STATE: test-node-gpu.js event: image -2022-04-10 10:12:22 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:22 STATE: test-node-gpu.js event: warmup -2022-04-10 10:12:22 STATE: test-node-gpu.js passed: warmup: body default -2022-04-10 10:12:22 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:22 DATA:  test-node-gpu.js result: performance: load: null total: 208 -2022-04-10 10:12:22 STATE: test-node-gpu.js passed: warmup body result match -2022-04-10 10:12:22 STATE: test-node-gpu.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":29.6,"gender":"female","genderScore":0.89},"emotion":[{"score":0.35,"emotion":"fear"},{"score":0.28,"emotion":"angry"},{"score":0.15,"emotion":"sad"},{"score":0.1,"emotion":"surprise"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"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-04-10 10:12:22 INFO:  test-node-gpu.js test: details verification -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:23 STATE: test-node-gpu.js event: image -2022-04-10 10:12:23 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:23 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:23 DATA:  test-node-gpu.js result: performance: load: null total: 175 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details face length 1 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details face score 1 0.93 1 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details face age/gender 29.6 female 0.91 73.26 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details face arrays 4 478 1024 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details face emotion 3 {"score":0.34,"emotion":"fear"} -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details face anti-spoofing 0.78 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details face liveness 0.83 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details body length 1 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details body 0.92 17 6 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details hand length 1 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details hand 0.51 0.73 point -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details hand arrays 21 5 7 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details gesture length 6 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details object length 1 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: details object 0.72 person -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} -2022-04-10 10:12:23 STATE: test-node-gpu.js event: image -2022-04-10 10:12:23 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-04-10 10:12:23 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} -2022-04-10 10:12:23 STATE: test-node-gpu.js event: image -2022-04-10 10:12:24 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:24 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-04-10 10:12:24 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:24 STATE: test-node-gpu.js event: image -2022-04-10 10:12:24 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:24 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-04-10 10:12:24 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:24 STATE: test-node-gpu.js event: image -2022-04-10 10:12:24 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:24 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-04-10 10:12:25 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-04-10 10:12:25 STATE: test-node-gpu.js event: image -2022-04-10 10:12:25 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:25 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-04-10 10:12:25 INFO:  test-node-gpu.js test default -2022-04-10 10:12:25 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:25 STATE: test-node-gpu.js event: image -2022-04-10 10:12:25 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:25 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:25 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:25 DATA:  test-node-gpu.js result: performance: load: null total: 183 -2022-04-10 10:12:25 STATE: test-node-gpu.js passed: default result face match 1 female 0.91 -2022-04-10 10:12:25 INFO:  test-node-gpu.js test sync -2022-04-10 10:12:25 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:25 STATE: test-node-gpu.js event: image -2022-04-10 10:12:26 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: performance: load: null total: 184 -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: default sync 1 female 0.91 -2022-04-10 10:12:26 INFO:  test-node-gpu.js test: image process -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: image input null [1,256,256,3] -2022-04-10 10:12:26 INFO:  test-node-gpu.js test: image null -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: invalid input could not convert input to tensor -2022-04-10 10:12:26 INFO:  test-node-gpu.js test face similarity -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:26 STATE: test-node-gpu.js event: image -2022-04-10 10:12:26 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: performance: load: null total: 244 -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:26 STATE: test-node-gpu.js event: image -2022-04-10 10:12:26 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: performance: load: null total: 186 -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-04-10 10:12:26 STATE: test-node-gpu.js event: image -2022-04-10 10:12:26 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2022-04-10 10:12:26 DATA:  test-node-gpu.js result: performance: load: null total: 158 -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: face descriptor -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: face similarity {"similarity":[1,0.5630857211196999,0.5193140083083794],"descriptors":[1024,1024,1024]} -2022-04-10 10:12:26 INFO:  test-node-gpu.js test face matching -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: face database 40 -2022-04-10 10:12:26 STATE: test-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.8799993617830532}} {"second":{"index":4,"similarity":0.5479640431307572}} {"third":{"index":4,"similarity":0.49994916272803597}} -2022-04-10 10:12:26 INFO:  test-node-gpu.js test object -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:27 STATE: test-node-gpu.js event: image -2022-04-10 10:12:27 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:27 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:27 DATA:  test-node-gpu.js result: performance: load: null total: 175 -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: object result match -2022-04-10 10:12:27 INFO:  test-node-gpu.js test sensitive -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:27 STATE: test-node-gpu.js event: image -2022-04-10 10:12:27 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:27 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:27 DATA:  test-node-gpu.js result: performance: load: null total: 180 -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: sensitive result match -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: sensitive face result match -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: sensitive face emotion result [{"score":0.34,"emotion":"fear"},{"score":0.29,"emotion":"angry"},{"score":0.15,"emotion":"sad"}] -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: sensitive body result match -2022-04-10 10:12:27 STATE: test-node-gpu.js passed: sensitive hand result match -2022-04-10 10:12:27 INFO:  test-node-gpu.js test detectors -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:28 STATE: test-node-gpu.js event: image -2022-04-10 10:12:28 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: performance: load: null total: 101 -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: detector result face match -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: detector result hand match -2022-04-10 10:12:28 INFO:  test-node-gpu.js test: multi-instance -2022-04-10 10:12:28 STATE: test-node-gpu.js event: image -2022-04-10 10:12:28 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: detect: random default -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0.08,"keypoints":15} -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: performance: load: null total: 100 -2022-04-10 10:12:28 INFO:  test-node-gpu.js test: first instance -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: performance: load: null total: 108 -2022-04-10 10:12:28 INFO:  test-node-gpu.js test: second instance -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:28 DATA:  test-node-gpu.js result: performance: load: null total: 119 -2022-04-10 10:12:28 INFO:  test-node-gpu.js test: concurrent -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:28 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-04-10 10:12:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-04-10 10:12:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} -2022-04-10 10:12:29 STATE: test-node-gpu.js event: image -2022-04-10 10:12:29 STATE: test-node-gpu.js event: image -2022-04-10 10:12:29 STATE: test-node-gpu.js event: image -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 1001 -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 1001 -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 1063 -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 1063 -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 1063 -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 1063 -2022-04-10 10:12:30 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 737 -2022-04-10 10:12:30 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:30 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 737 -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:30 DATA:  test-node-gpu.js result: performance: load: null total: 737 -2022-04-10 10:12:30 INFO:  test-node-gpu.js test: monkey-patch -2022-04-10 10:12:30 STATE: test-node-gpu.js event: image -2022-04-10 10:12:30 STATE: test-node-gpu.js event: detect -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: monkey patch -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: segmentation [65536] -2022-04-10 10:12:30 STATE: test-node-gpu.js passeed: equal usage -2022-04-10 10:12:30 INFO:  test-node-gpu.js test: input compare -2022-04-10 10:12:30 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2022-04-10 10:12:31 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} -2022-04-10 10:12:31 STATE: test-node-gpu.js passed: image compare 0 23.275441687091504 -2022-04-10 10:12:31 INFO:  test-node-gpu.js events: {"image":21,"detect":21,"warmup":2} -2022-04-10 10:12:31 INFO:  test-node-gpu.js tensors 1925 -2022-04-10 10:12:31 INFO:  test-node-gpu.js test complete: 12347 ms -2022-04-10 10:12:31 INFO:  -2022-04-10 10:12:31 INFO:  test-node-wasm.js start -2022-04-10 10:12:32 STATE: test-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ -2022-04-10 10:12:32 INFO:  test-node-wasm.js test: configuration validation -2022-04-10 10:12:32 STATE: test-node-wasm.js passed: configuration default validation [] -2022-04-10 10:12:32 STATE: test-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2022-04-10 10:12:32 INFO:  test-node-wasm.js test: model load -2022-04-10 10:12:33 STATE: test-node-wasm.js passed: models loaded 22 12 [{"name":"ssrnetage","loaded":false},{"name":"gear","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"mobilefacenet","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"ssrnetgender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"liveness","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":true}] -2022-04-10 10:12:33 INFO:  test-node-wasm.js test: warmup -2022-04-10 10:12:33 STATE: test-node-wasm.js passed: create human -2022-04-10 10:12:33 INFO:  test-node-wasm.js human version: 2.6.5 -2022-04-10 10:12:33 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v17.4.0 -2022-04-10 10:12:33 INFO:  test-node-wasm.js tfjs version: 3.15.0 -2022-04-10 10:12:33 STATE: test-node-wasm.js passed: set backend: wasm -2022-04-10 10:12:33 STATE: test-node-wasm.js tensors 1919 -2022-04-10 10:12:33 STATE: test-node-wasm.js passed: load models -2022-04-10 10:12:33 STATE: test-node-wasm.js result: defined models: 22 loaded models: 12 -2022-04-10 10:12:33 STATE: test-node-wasm.js passed: warmup: none default -2022-04-10 10:12:33 DATA:  test-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} -2022-04-10 10:12:33 DATA:  test-node-wasm.js result: performance: load: null total: null -2022-04-10 10:12:33 STATE: test-node-wasm.js passed: warmup none result match -2022-04-10 10:12:33 STATE: test-node-wasm.js event: image -2022-04-10 10:12:34 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:34 STATE: test-node-wasm.js event: warmup -2022-04-10 10:12:34 STATE: test-node-wasm.js passed: warmup: face default -2022-04-10 10:12:34 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-04-10 10:12:34 DATA:  test-node-wasm.js result: performance: load: null total: 562 -2022-04-10 10:12:34 STATE: test-node-wasm.js passed: warmup face result match -2022-04-10 10:12:34 STATE: test-node-wasm.js event: image -2022-04-10 10:12:34 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:34 STATE: test-node-wasm.js event: warmup -2022-04-10 10:12:34 STATE: test-node-wasm.js passed: warmup: body default -2022-04-10 10:12:34 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:34 DATA:  test-node-wasm.js result: performance: load: null total: 379 -2022-04-10 10:12:34 STATE: test-node-wasm.js passed: warmup body result match -2022-04-10 10:12:34 STATE: test-node-wasm.js details: {"face":{"boxScore":0.93,"faceScore":1,"age":29.6,"gender":"female","genderScore":0.91},"emotion":[{"score":0.34,"emotion":"fear"},{"score":0.29,"emotion":"angry"},{"score":0.15,"emotion":"sad"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.51,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"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-04-10 10:12:34 INFO:  test-node-wasm.js test: details verification -2022-04-10 10:12:34 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:34 STATE: test-node-wasm.js event: image -2022-04-10 10:12:35 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:35 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:35 DATA:  test-node-wasm.js result: performance: load: null total: 342 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details face length 1 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details face score 1 0.93 1 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details face age/gender 29.6 female 0.91 73.26 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details face arrays 4 478 1024 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details face emotion 3 {"score":0.34,"emotion":"fear"} -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details face anti-spoofing 0.78 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details face liveness 0.83 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details body length 1 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details body 0.92 17 6 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details hand length 1 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details hand 0.51 0.73 point -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details hand arrays 21 5 7 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details gesture length 6 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details object length 1 -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: details object 0.72 person -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} -2022-04-10 10:12:35 STATE: test-node-wasm.js event: image -2022-04-10 10:12:35 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:35 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 -2022-04-10 10:12:36 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} -2022-04-10 10:12:36 STATE: test-node-wasm.js event: image -2022-04-10 10:12:36 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:36 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 -2022-04-10 10:12:36 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:36 STATE: test-node-wasm.js event: image -2022-04-10 10:12:37 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:37 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 -2022-04-10 10:12:37 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:37 STATE: test-node-wasm.js event: image -2022-04-10 10:12:37 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:37 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 -2022-04-10 10:12:37 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} -2022-04-10 10:12:37 STATE: test-node-wasm.js event: image -2022-04-10 10:12:38 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:38 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 -2022-04-10 10:12:38 INFO:  test-node-wasm.js test default -2022-04-10 10:12:38 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:38 STATE: test-node-wasm.js event: image -2022-04-10 10:12:38 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:38 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:38 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:38 DATA:  test-node-wasm.js result: performance: load: null total: 332 -2022-04-10 10:12:38 STATE: test-node-wasm.js passed: default result face match 1 female 0.93 -2022-04-10 10:12:38 INFO:  test-node-wasm.js test sync -2022-04-10 10:12:38 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:39 STATE: test-node-wasm.js event: image -2022-04-10 10:12:39 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:39 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:39 DATA:  test-node-wasm.js result: performance: load: null total: 335 -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: default sync 1 female 0.93 -2022-04-10 10:12:39 INFO:  test-node-wasm.js test: image process -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: image input null [1,256,256,3] -2022-04-10 10:12:39 INFO:  test-node-wasm.js test: image null -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: invalid input could not convert input to tensor -2022-04-10 10:12:39 INFO:  test-node-wasm.js test face similarity -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-04-10 10:12:39 STATE: test-node-wasm.js event: image -2022-04-10 10:12:39 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:39 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2022-04-10 10:12:39 DATA:  test-node-wasm.js result: performance: load: null total: 321 -2022-04-10 10:12:39 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:39 STATE: test-node-wasm.js event: image -2022-04-10 10:12:40 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:40 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:40 DATA:  test-node-wasm.js result: performance: load: null total: 341 -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-04-10 10:12:40 STATE: test-node-wasm.js event: image -2022-04-10 10:12:40 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:40 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2022-04-10 10:12:40 DATA:  test-node-wasm.js result: performance: load: null total: 307 -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: face descriptor -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: face similarity {"similarity":[1,0.5888036339038205,0.4689331535670693],"descriptors":[1024,1024,1024]} -2022-04-10 10:12:40 INFO:  test-node-wasm.js test face matching -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: face database 40 -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: face match {"first":{"index":4,"similarity":0.8797924799049534}} {"second":{"index":4,"similarity":0.573642308237338}} {"third":{"index":4,"similarity":0.45582039900188964}} -2022-04-10 10:12:40 INFO:  test-node-wasm.js test object -2022-04-10 10:12:40 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:40 STATE: test-node-wasm.js event: image -2022-04-10 10:12:41 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:41 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:41 DATA:  test-node-wasm.js result: performance: load: null total: 340 -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: object result match -2022-04-10 10:12:41 INFO:  test-node-wasm.js test sensitive -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:41 STATE: test-node-wasm.js event: image -2022-04-10 10:12:41 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:41 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 9 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:41 DATA:  test-node-wasm.js result: performance: load: null total: 388 -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: sensitive result match -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: sensitive face result match -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: sensitive face emotion result [{"score":0.54,"emotion":"angry"},{"score":0.2,"emotion":"fear"},{"score":0.16,"emotion":"surprise"}] -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: sensitive body result match -2022-04-10 10:12:41 STATE: test-node-wasm.js passed: sensitive hand result match -2022-04-10 10:12:41 INFO:  test-node-wasm.js test detectors -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:42 STATE: test-node-wasm.js event: image -2022-04-10 10:12:42 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:42 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:42 DATA:  test-node-wasm.js result: performance: load: null total: 226 -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: detector result face match -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: detector result hand match -2022-04-10 10:12:42 INFO:  test-node-wasm.js test: multi-instance -2022-04-10 10:12:42 STATE: test-node-wasm.js event: image -2022-04-10 10:12:42 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: detect: random default -2022-04-10 10:12:42 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0.07,"keypoints":15} -2022-04-10 10:12:42 DATA:  test-node-wasm.js result: performance: load: null total: 208 -2022-04-10 10:12:42 INFO:  test-node-wasm.js test: first instance -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:42 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:42 DATA:  test-node-wasm.js result: performance: load: null total: 219 -2022-04-10 10:12:42 INFO:  test-node-wasm.js test: second instance -2022-04-10 10:12:42 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:43 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:43 DATA:  test-node-wasm.js result: performance: load: null total: 218 -2022-04-10 10:12:43 INFO:  test-node-wasm.js test: concurrent -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-04-10 10:12:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:44 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2022-04-10 10:12:44 STATE: test-node-wasm.js event: image -2022-04-10 10:12:44 STATE: test-node-wasm.js event: image -2022-04-10 10:12:44 STATE: test-node-wasm.js event: image -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2266 -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2266 -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2507 -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2507 -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2507 -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2507 -2022-04-10 10:12:46 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2192 -2022-04-10 10:12:46 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:46 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2192 -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2022-04-10 10:12:46 DATA:  test-node-wasm.js result: performance: load: null total: 2192 -2022-04-10 10:12:46 INFO:  test-node-wasm.js test: monkey-patch -2022-04-10 10:12:46 STATE: test-node-wasm.js event: image -2022-04-10 10:12:46 STATE: test-node-wasm.js event: detect -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: monkey patch -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: segmentation [65536] -2022-04-10 10:12:46 STATE: test-node-wasm.js passeed: equal usage -2022-04-10 10:12:46 INFO:  test-node-wasm.js test: input compare -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2022-04-10 10:12:46 STATE: test-node-wasm.js passed: image compare 0 23.280073018790848 -2022-04-10 10:12:46 INFO:  test-node-wasm.js events: {"image":21,"detect":21,"warmup":2} -2022-04-10 10:12:46 INFO:  test-node-wasm.js tensors 1927 -2022-04-10 10:12:46 INFO:  test-node-wasm.js test complete: 14703 ms -2022-04-10 10:12:46 INFO:  all tests complete -2022-04-10 10:12:46 INFO:  failed: {"count":0,"messages":[]} -2022-04-10 10:12:46 INFO:  status: {"test":"test-node.js","passed":101,"failed":0} -2022-04-10 10:12:46 INFO:  status: {"test":"test-node-gpu.js","passed":101,"failed":0} -2022-04-10 10:12:46 INFO:  status: {"test":"test-node-wasm.js","passed":102,"failed":0} +2022-04-14 11:46:16 INFO:  @vladmandic/human version 2.7.0 +2022-04-14 11:46:16 INFO:  User: vlado Platform: linux Arch: x64 Node: v17.4.0 +2022-04-14 11:46:16 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"] +2022-04-14 11:46:16 INFO:  demos: ["../demo/nodejs/node.js","../demo/nodejs/node-canvas.js","../demo/nodejs/node-env.js","../demo/nodejs/node-event.js","../demo/nodejs/node-multiprocess.js"] +2022-04-14 11:46:16 INFO:  +2022-04-14 11:46:16 INFO:  test-node.js start +2022-04-14 11:46:16 INFO:  test-node.js test: configuration validation +2022-04-14 11:46:16 STATE: test-node.js passed: configuration default validation [] +2022-04-14 11:46:16 STATE: test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-04-14 11:46:16 INFO:  test-node.js test: model load +2022-04-14 11:46:17 STATE: test-node.js passed: models loaded 22 12 [{"name":"ssrnetage","loaded":false},{"name":"gear","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"mobilefacenet","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"ssrnetgender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"liveness","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":true}] +2022-04-14 11:46:17 INFO:  test-node.js test: warmup +2022-04-14 11:46:17 STATE: test-node.js passed: create human +2022-04-14 11:46:17 INFO:  test-node.js human version: 2.7.0 +2022-04-14 11:46:17 INFO:  test-node.js platform: linux x64 agent: NodeJS v17.4.0 +2022-04-14 11:46:17 INFO:  test-node.js tfjs version: 3.15.0 +2022-04-14 11:46:17 INFO:  test-node.js tensorflow binding version: 2.7.0-dev20211101 +2022-04-14 11:46:17 STATE: test-node.js passed: set backend: tensorflow +2022-04-14 11:46:17 STATE: test-node.js tensors 1919 +2022-04-14 11:46:17 STATE: test-node.js passed: load models +2022-04-14 11:46:17 STATE: test-node.js result: defined models: 22 loaded models: 12 +2022-04-14 11:46:17 STATE: test-node.js passed: warmup: none default +2022-04-14 11:46:17 DATA:  test-node.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-04-14 11:46:17 DATA:  test-node.js result: performance: load: null total: null +2022-04-14 11:46:17 STATE: test-node.js passed: warmup none result match +2022-04-14 11:46:17 STATE: test-node.js event: image +2022-04-14 11:46:17 STATE: test-node.js event: detect +2022-04-14 11:46:17 STATE: test-node.js event: warmup +2022-04-14 11:46:17 STATE: test-node.js passed: warmup: face default +2022-04-14 11:46:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} +2022-04-14 11:46:17 DATA:  test-node.js result: performance: load: null total: 355 +2022-04-14 11:46:17 STATE: test-node.js passed: warmup face result match +2022-04-14 11:46:17 STATE: test-node.js event: image +2022-04-14 11:46:17 STATE: test-node.js event: detect +2022-04-14 11:46:17 STATE: test-node.js event: warmup +2022-04-14 11:46:17 STATE: test-node.js passed: warmup: body default +2022-04-14 11:46:17 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:17 DATA:  test-node.js result: performance: load: null total: 275 +2022-04-14 11:46:17 STATE: test-node.js passed: warmup body result match +2022-04-14 11:46:17 STATE: test-node.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.63,"emotion":"angry"},{"score":0.22,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking right"},{"iris":0,"gesture":"looking up"}]} +2022-04-14 11:46:17 INFO:  test-node.js test: details verification +2022-04-14 11:46:18 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:18 STATE: test-node.js event: image +2022-04-14 11:46:18 STATE: test-node.js event: detect +2022-04-14 11:46:18 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:18 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:18 DATA:  test-node.js result: performance: load: null total: 253 +2022-04-14 11:46:18 STATE: test-node.js passed: details face length 1 +2022-04-14 11:46:18 STATE: test-node.js passed: details face score 1 0.93 1 +2022-04-14 11:46:18 STATE: test-node.js passed: details face age/gender 23.7 female 0.97 73.26 +2022-04-14 11:46:18 STATE: test-node.js passed: details face arrays 4 478 1024 +2022-04-14 11:46:18 STATE: test-node.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-04-14 11:46:18 STATE: test-node.js passed: details face anti-spoofing 0.79 +2022-04-14 11:46:18 STATE: test-node.js passed: details face liveness 0.83 +2022-04-14 11:46:18 STATE: test-node.js passed: details body length 1 +2022-04-14 11:46:18 STATE: test-node.js passed: details body 0.92 17 6 +2022-04-14 11:46:18 STATE: test-node.js passed: details hand length 1 +2022-04-14 11:46:18 STATE: test-node.js passed: details hand 0.51 0.73 point +2022-04-14 11:46:18 STATE: test-node.js passed: details hand arrays 21 5 7 +2022-04-14 11:46:18 STATE: test-node.js passed: details gesture length 6 +2022-04-14 11:46:18 STATE: test-node.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-04-14 11:46:18 STATE: test-node.js passed: details object length 1 +2022-04-14 11:46:18 STATE: test-node.js passed: details object 0.72 person +2022-04-14 11:46:18 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-04-14 11:46:18 STATE: test-node.js event: image +2022-04-14 11:46:18 STATE: test-node.js event: detect +2022-04-14 11:46:18 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-04-14 11:46:18 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-04-14 11:46:18 STATE: test-node.js event: image +2022-04-14 11:46:19 STATE: test-node.js event: detect +2022-04-14 11:46:19 STATE: test-node.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-04-14 11:46:19 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:19 STATE: test-node.js event: image +2022-04-14 11:46:19 STATE: test-node.js event: detect +2022-04-14 11:46:19 STATE: test-node.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-04-14 11:46:19 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:19 STATE: test-node.js event: image +2022-04-14 11:46:20 STATE: test-node.js event: detect +2022-04-14 11:46:20 STATE: test-node.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-04-14 11:46:20 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-04-14 11:46:20 STATE: test-node.js event: image +2022-04-14 11:46:20 STATE: test-node.js event: detect +2022-04-14 11:46:20 STATE: test-node.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-04-14 11:46:20 INFO:  test-node.js test default +2022-04-14 11:46:20 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:20 STATE: test-node.js event: image +2022-04-14 11:46:20 STATE: test-node.js event: detect +2022-04-14 11:46:20 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:20 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:20 DATA:  test-node.js result: performance: load: null total: 247 +2022-04-14 11:46:20 STATE: test-node.js passed: default result face match 1 female 0.97 +2022-04-14 11:46:20 INFO:  test-node.js test sync +2022-04-14 11:46:21 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:21 STATE: test-node.js event: image +2022-04-14 11:46:21 STATE: test-node.js event: detect +2022-04-14 11:46:21 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:21 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:21 DATA:  test-node.js result: performance: load: null total: 220 +2022-04-14 11:46:21 STATE: test-node.js passed: default sync 1 female 0.97 +2022-04-14 11:46:21 INFO:  test-node.js test: image process +2022-04-14 11:46:21 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:21 STATE: test-node.js passed: image input null [1,256,256,3] +2022-04-14 11:46:21 INFO:  test-node.js test: image null +2022-04-14 11:46:21 STATE: test-node.js passed: invalid input could not convert input to tensor +2022-04-14 11:46:21 INFO:  test-node.js test face similarity +2022-04-14 11:46:21 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:21 STATE: test-node.js event: image +2022-04-14 11:46:21 STATE: test-node.js event: detect +2022-04-14 11:46:21 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:21 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-04-14 11:46:21 DATA:  test-node.js result: performance: load: null total: 211 +2022-04-14 11:46:21 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:21 STATE: test-node.js event: image +2022-04-14 11:46:21 STATE: test-node.js event: detect +2022-04-14 11:46:21 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:21 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:21 DATA:  test-node.js result: performance: load: null total: 226 +2022-04-14 11:46:21 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-04-14 11:46:21 STATE: test-node.js event: image +2022-04-14 11:46:22 STATE: test-node.js event: detect +2022-04-14 11:46:22 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:22 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-04-14 11:46:22 DATA:  test-node.js result: performance: load: null total: 202 +2022-04-14 11:46:22 STATE: test-node.js passed: face descriptor +2022-04-14 11:46:22 STATE: test-node.js passed: face similarity {"similarity":[1,0.44727452329649126,0.5567935850640406],"descriptors":[1024,1024,1024]} +2022-04-14 11:46:22 INFO:  test-node.js test face matching +2022-04-14 11:46:22 STATE: test-node.js passed: face database 40 +2022-04-14 11:46:22 STATE: test-node.js passed: face match {"first":{"index":4,"similarity":0.7827852615252829}} {"second":{"index":4,"similarity":0.5002052633015844}} {"third":{"index":4,"similarity":0.5401587887998899}} +2022-04-14 11:46:22 INFO:  test-node.js test object +2022-04-14 11:46:22 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:22 STATE: test-node.js event: image +2022-04-14 11:46:22 STATE: test-node.js event: detect +2022-04-14 11:46:22 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:22 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:22 DATA:  test-node.js result: performance: load: null total: 234 +2022-04-14 11:46:22 STATE: test-node.js passed: object result match +2022-04-14 11:46:22 INFO:  test-node.js test sensitive +2022-04-14 11:46:22 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:22 STATE: test-node.js event: image +2022-04-14 11:46:23 STATE: test-node.js event: detect +2022-04-14 11:46:23 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:23 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:23 DATA:  test-node.js result: performance: load: null total: 247 +2022-04-14 11:46:23 STATE: test-node.js passed: sensitive result match +2022-04-14 11:46:23 STATE: test-node.js passed: sensitive face result match +2022-04-14 11:46:23 STATE: test-node.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-04-14 11:46:23 STATE: test-node.js passed: sensitive body result match +2022-04-14 11:46:23 STATE: test-node.js passed: sensitive hand result match +2022-04-14 11:46:23 INFO:  test-node.js test detectors +2022-04-14 11:46:23 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:23 STATE: test-node.js event: image +2022-04-14 11:46:23 STATE: test-node.js event: detect +2022-04-14 11:46:23 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:23 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:23 DATA:  test-node.js result: performance: load: null total: 148 +2022-04-14 11:46:23 STATE: test-node.js passed: detector result face match +2022-04-14 11:46:23 STATE: test-node.js passed: detector result hand match +2022-04-14 11:46:23 INFO:  test-node.js test: multi-instance +2022-04-14 11:46:23 STATE: test-node.js event: image +2022-04-14 11:46:23 STATE: test-node.js event: detect +2022-04-14 11:46:23 STATE: test-node.js passed: detect: random default +2022-04-14 11:46:23 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0.08,"keypoints":15} +2022-04-14 11:46:23 DATA:  test-node.js result: performance: load: null total: 150 +2022-04-14 11:46:23 INFO:  test-node.js test: first instance +2022-04-14 11:46:23 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-04-14 11:46:23 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:23 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:23 DATA:  test-node.js result: performance: load: null total: 144 +2022-04-14 11:46:23 INFO:  test-node.js test: second instance +2022-04-14 11:46:23 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-04-14 11:46:24 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:24 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:24 DATA:  test-node.js result: performance: load: null total: 142 +2022-04-14 11:46:24 INFO:  test-node.js test: concurrent +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:24 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289024} +2022-04-14 11:46:24 STATE: test-node.js event: image +2022-04-14 11:46:24 STATE: test-node.js event: image +2022-04-14 11:46:24 STATE: test-node.js event: image +2022-04-14 11:46:25 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:25 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:25 DATA:  test-node.js result: performance: load: null total: 1431 +2022-04-14 11:46:25 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:25 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:25 DATA:  test-node.js result: performance: load: null total: 1431 +2022-04-14 11:46:26 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:26 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:26 DATA:  test-node.js result: performance: load: null total: 1557 +2022-04-14 11:46:26 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:26 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:26 DATA:  test-node.js result: performance: load: null total: 1557 +2022-04-14 11:46:26 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:26 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:26 DATA:  test-node.js result: performance: load: null total: 1557 +2022-04-14 11:46:26 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:26 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:26 DATA:  test-node.js result: performance: load: null total: 1557 +2022-04-14 11:46:26 STATE: test-node.js event: detect +2022-04-14 11:46:26 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:26 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:26 DATA:  test-node.js result: performance: load: null total: 1298 +2022-04-14 11:46:26 STATE: test-node.js event: detect +2022-04-14 11:46:26 STATE: test-node.js event: detect +2022-04-14 11:46:26 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:26 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:26 DATA:  test-node.js result: performance: load: null total: 1298 +2022-04-14 11:46:26 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:26 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:26 DATA:  test-node.js result: performance: load: null total: 1298 +2022-04-14 11:46:26 INFO:  test-node.js test: monkey-patch +2022-04-14 11:46:26 STATE: test-node.js event: image +2022-04-14 11:46:26 STATE: test-node.js event: detect +2022-04-14 11:46:26 STATE: test-node.js passed: monkey patch +2022-04-14 11:46:26 STATE: test-node.js passed: segmentation [65536] +2022-04-14 11:46:26 STATE: test-node.js passeed: equal usage +2022-04-14 11:46:26 INFO:  test-node.js test: input compare +2022-04-14 11:46:26 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:26 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2022-04-14 11:46:26 STATE: test-node.js passed: image compare 0 23.275441687091504 +2022-04-14 11:46:26 INFO:  test-node.js events: {"image":21,"detect":21,"warmup":2} +2022-04-14 11:46:26 INFO:  test-node.js tensors 1925 +2022-04-14 11:46:26 INFO:  test-node.js test complete: 9574 ms +2022-04-14 11:46:26 INFO:  +2022-04-14 11:46:26 INFO:  test-node-gpu.js start +2022-04-14 11:46:27 INFO:  test-node-gpu.js test: configuration validation +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: configuration default validation [] +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-04-14 11:46:27 INFO:  test-node-gpu.js test: model load +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: models loaded 22 12 [{"name":"ssrnetage","loaded":false},{"name":"gear","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"mobilefacenet","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"ssrnetgender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"liveness","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":true}] +2022-04-14 11:46:27 INFO:  test-node-gpu.js test: warmup +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: create human +2022-04-14 11:46:27 INFO:  test-node-gpu.js human version: 2.7.0 +2022-04-14 11:46:27 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v17.4.0 +2022-04-14 11:46:27 INFO:  test-node-gpu.js tfjs version: 3.15.0 +2022-04-14 11:46:27 INFO:  test-node-gpu.js tensorflow binding version: 2.7.0-dev20211101 +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: set backend: tensorflow +2022-04-14 11:46:27 STATE: test-node-gpu.js tensors 1919 +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: load models +2022-04-14 11:46:27 STATE: test-node-gpu.js result: defined models: 22 loaded models: 12 +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: warmup: none default +2022-04-14 11:46:27 DATA:  test-node-gpu.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-04-14 11:46:27 DATA:  test-node-gpu.js result: performance: load: null total: null +2022-04-14 11:46:27 STATE: test-node-gpu.js passed: warmup none result match +2022-04-14 11:46:27 STATE: test-node-gpu.js event: image +2022-04-14 11:46:30 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:30 STATE: test-node-gpu.js event: warmup +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: warmup: face default +2022-04-14 11:46:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 7 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} +2022-04-14 11:46:30 DATA:  test-node-gpu.js result: performance: load: null total: 2399 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: warmup face result match +2022-04-14 11:46:30 STATE: test-node-gpu.js event: image +2022-04-14 11:46:30 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:30 STATE: test-node-gpu.js event: warmup +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: warmup: body default +2022-04-14 11:46:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:30 DATA:  test-node-gpu.js result: performance: load: null total: 205 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: warmup body result match +2022-04-14 11:46:30 STATE: test-node-gpu.js details: {"face":{"boxScore":0.92,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.63,"emotion":"angry"},{"score":0.22,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.52,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"hand":0,"gesture":"pinky forward"},{"hand":0,"gesture":"palm up"},{"hand":0,"gesture":"open palm"},{"iris":0,"gesture":"looking right"},{"iris":0,"gesture":"looking up"}]} +2022-04-14 11:46:30 INFO:  test-node-gpu.js test: details verification +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:30 STATE: test-node-gpu.js event: image +2022-04-14 11:46:30 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:30 DATA:  test-node-gpu.js result: performance: load: null total: 161 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details face length 1 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details face score 1 0.93 1 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details face age/gender 23.7 female 0.97 73.26 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details face arrays 4 478 1024 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details face anti-spoofing 0.79 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details face liveness 0.83 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details body length 1 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details body 0.92 17 6 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details hand length 1 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details hand 0.51 0.73 point +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details hand arrays 21 5 7 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details gesture length 6 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details object length 1 +2022-04-14 11:46:30 STATE: test-node-gpu.js passed: details object 0.72 person +2022-04-14 11:46:31 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996928} +2022-04-14 11:46:31 STATE: test-node-gpu.js event: image +2022-04-14 11:46:31 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:31 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-04-14 11:46:31 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1371996928} +2022-04-14 11:46:31 STATE: test-node-gpu.js event: image +2022-04-14 11:46:31 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:31 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-04-14 11:46:31 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:31 STATE: test-node-gpu.js event: image +2022-04-14 11:46:31 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:31 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-04-14 11:46:32 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:32 STATE: test-node-gpu.js event: image +2022-04-14 11:46:32 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:32 STATE: test-node-gpu.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-04-14 11:46:32 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-04-14 11:46:32 STATE: test-node-gpu.js event: image +2022-04-14 11:46:32 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:32 STATE: test-node-gpu.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-04-14 11:46:32 INFO:  test-node-gpu.js test default +2022-04-14 11:46:32 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:32 STATE: test-node-gpu.js event: image +2022-04-14 11:46:32 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:32 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:32 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:32 DATA:  test-node-gpu.js result: performance: load: null total: 144 +2022-04-14 11:46:32 STATE: test-node-gpu.js passed: default result face match 1 female 0.97 +2022-04-14 11:46:32 INFO:  test-node-gpu.js test sync +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:33 STATE: test-node-gpu.js event: image +2022-04-14 11:46:33 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:33 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:33 DATA:  test-node-gpu.js result: performance: load: null total: 162 +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: default sync 1 female 0.97 +2022-04-14 11:46:33 INFO:  test-node-gpu.js test: image process +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: image input null [1,256,256,3] +2022-04-14 11:46:33 INFO:  test-node-gpu.js test: image null +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: invalid input could not convert input to tensor +2022-04-14 11:46:33 INFO:  test-node-gpu.js test face similarity +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:33 STATE: test-node-gpu.js event: image +2022-04-14 11:46:33 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:33 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-04-14 11:46:33 DATA:  test-node-gpu.js result: performance: load: null total: 147 +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:33 STATE: test-node-gpu.js event: image +2022-04-14 11:46:33 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:33 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:33 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:33 DATA:  test-node-gpu.js result: performance: load: null total: 199 +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-04-14 11:46:34 STATE: test-node-gpu.js event: image +2022-04-14 11:46:34 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:34 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-04-14 11:46:34 DATA:  test-node-gpu.js result: performance: load: null total: 140 +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: face descriptor +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: face similarity {"similarity":[1,0.447238756461232,0.556914029877052],"descriptors":[1024,1024,1024]} +2022-04-14 11:46:34 INFO:  test-node-gpu.js test face matching +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: face database 40 +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.7828184453007331}} {"second":{"index":4,"similarity":0.5001334216773398}} {"third":{"index":4,"similarity":0.5403054967489764}} +2022-04-14 11:46:34 INFO:  test-node-gpu.js test object +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:34 STATE: test-node-gpu.js event: image +2022-04-14 11:46:34 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:34 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:34 DATA:  test-node-gpu.js result: performance: load: null total: 151 +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: object result match +2022-04-14 11:46:34 INFO:  test-node-gpu.js test sensitive +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:34 STATE: test-node-gpu.js event: image +2022-04-14 11:46:34 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:34 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:34 DATA:  test-node-gpu.js result: performance: load: null total: 180 +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: sensitive result match +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: sensitive face result match +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: sensitive face emotion result [{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}] +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: sensitive body result match +2022-04-14 11:46:34 STATE: test-node-gpu.js passed: sensitive hand result match +2022-04-14 11:46:34 INFO:  test-node-gpu.js test detectors +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:35 STATE: test-node-gpu.js event: image +2022-04-14 11:46:35 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: performance: load: null total: 79 +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: detector result face match +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: detector result hand match +2022-04-14 11:46:35 INFO:  test-node-gpu.js test: multi-instance +2022-04-14 11:46:35 STATE: test-node-gpu.js event: image +2022-04-14 11:46:35 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: detect: random default +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0.07,"keypoints":15} +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: performance: load: null total: 80 +2022-04-14 11:46:35 INFO:  test-node-gpu.js test: first instance +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: performance: load: null total: 87 +2022-04-14 11:46:35 INFO:  test-node-gpu.js test: second instance +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:35 DATA:  test-node-gpu.js result: performance: load: null total: 92 +2022-04-14 11:46:35 INFO:  test-node-gpu.js test: concurrent +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:36 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:36 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-04-14 11:46:36 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-04-14 11:46:36 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:36 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:36 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289056} +2022-04-14 11:46:36 STATE: test-node-gpu.js event: image +2022-04-14 11:46:36 STATE: test-node-gpu.js event: image +2022-04-14 11:46:36 STATE: test-node-gpu.js event: image +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 990 +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 990 +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 1048 +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 1048 +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 1048 +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 1048 +2022-04-14 11:46:37 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 771 +2022-04-14 11:46:37 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:37 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 771 +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:37 DATA:  test-node-gpu.js result: performance: load: null total: 771 +2022-04-14 11:46:37 INFO:  test-node-gpu.js test: monkey-patch +2022-04-14 11:46:37 STATE: test-node-gpu.js event: image +2022-04-14 11:46:37 STATE: test-node-gpu.js event: detect +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: monkey patch +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: segmentation [65536] +2022-04-14 11:46:37 STATE: test-node-gpu.js passeed: equal usage +2022-04-14 11:46:37 INFO:  test-node-gpu.js test: input compare +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796928} +2022-04-14 11:46:37 STATE: test-node-gpu.js passed: image compare 0 23.275441687091504 +2022-04-14 11:46:37 INFO:  test-node-gpu.js events: {"image":21,"detect":21,"warmup":2} +2022-04-14 11:46:37 INFO:  test-node-gpu.js tensors 1925 +2022-04-14 11:46:37 INFO:  test-node-gpu.js test complete: 10573 ms +2022-04-14 11:46:38 INFO:  +2022-04-14 11:46:38 INFO:  test-node-wasm.js start +2022-04-14 11:46:39 STATE: test-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ +2022-04-14 11:46:39 INFO:  test-node-wasm.js test: configuration validation +2022-04-14 11:46:39 STATE: test-node-wasm.js passed: configuration default validation [] +2022-04-14 11:46:39 STATE: test-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2022-04-14 11:46:39 INFO:  test-node-wasm.js test: model load +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: models loaded 22 12 [{"name":"ssrnetage","loaded":false},{"name":"gear","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"mobilefacenet","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"ssrnetgender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"liveness","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":true}] +2022-04-14 11:46:40 INFO:  test-node-wasm.js test: warmup +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: create human +2022-04-14 11:46:40 INFO:  test-node-wasm.js human version: 2.7.0 +2022-04-14 11:46:40 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v17.4.0 +2022-04-14 11:46:40 INFO:  test-node-wasm.js tfjs version: 3.15.0 +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: set backend: wasm +2022-04-14 11:46:40 STATE: test-node-wasm.js tensors 1919 +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: load models +2022-04-14 11:46:40 STATE: test-node-wasm.js result: defined models: 22 loaded models: 12 +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: warmup: none default +2022-04-14 11:46:40 DATA:  test-node-wasm.js result: face: 0 body: 0 hand: 0 gesture: 0 object: 0 person: 0 {} {} {} +2022-04-14 11:46:40 DATA:  test-node-wasm.js result: performance: load: null total: null +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: warmup none result match +2022-04-14 11:46:40 STATE: test-node-wasm.js event: image +2022-04-14 11:46:40 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:40 STATE: test-node-wasm.js event: warmup +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: warmup: face default +2022-04-14 11:46:40 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-04-14 11:46:40 DATA:  test-node-wasm.js result: performance: load: null total: 616 +2022-04-14 11:46:40 STATE: test-node-wasm.js passed: warmup face result match +2022-04-14 11:46:40 STATE: test-node-wasm.js event: image +2022-04-14 11:46:41 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:41 STATE: test-node-wasm.js event: warmup +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: warmup: body default +2022-04-14 11:46:41 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:41 DATA:  test-node-wasm.js result: performance: load: null total: 451 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: warmup body result match +2022-04-14 11:46:41 STATE: test-node-wasm.js details: {"face":{"boxScore":0.93,"faceScore":1,"age":23.7,"gender":"female","genderScore":0.97},"emotion":[{"score":0.59,"emotion":"angry"},{"score":0.29,"emotion":"fear"}],"body":{"score":0.92,"keypoints":17},"hand":{"boxScore":0.51,"fingerScore":0.73,"keypoints":21},"gestures":[{"face":0,"gesture":"facing right"},{"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-04-14 11:46:41 INFO:  test-node-wasm.js test: details verification +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:41 STATE: test-node-wasm.js event: image +2022-04-14 11:46:41 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:41 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.7,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:41 DATA:  test-node-wasm.js result: performance: load: null total: 386 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details face length 1 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details face score 1 0.93 1 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details face age/gender 23.7 female 0.97 73.26 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details face arrays 4 478 1024 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details face emotion 2 {"score":0.59,"emotion":"angry"} +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details face anti-spoofing 0.79 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details face liveness 0.83 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details body length 1 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details body 0.92 17 6 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details hand length 1 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details hand 0.51 0.73 point +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details hand arrays 21 5 7 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details gesture length 6 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details gesture first {"face":0,"gesture":"facing right"} +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details object length 1 +2022-04-14 11:46:41 STATE: test-node-wasm.js passed: details object 0.72 person +2022-04-14 11:46:42 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1413675264} +2022-04-14 11:46:42 STATE: test-node-wasm.js event: image +2022-04-14 11:46:42 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:42 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: float32 +2022-04-14 11:46:42 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,4] {"checksum":1413675264} +2022-04-14 11:46:42 STATE: test-node-wasm.js event: image +2022-04-14 11:46:43 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:43 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,4] dtype: float32 +2022-04-14 11:46:43 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:43 STATE: test-node-wasm.js event: image +2022-04-14 11:46:43 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:43 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,3] dtype: float32 +2022-04-14 11:46:44 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:44 STATE: test-node-wasm.js event: image +2022-04-14 11:46:44 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:44 STATE: test-node-wasm.js passed: tensor shape: [1200,1200,3] dtype: float32 +2022-04-14 11:46:44 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,4] {"checksum":1371996871} +2022-04-14 11:46:44 STATE: test-node-wasm.js event: image +2022-04-14 11:46:45 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:45 STATE: test-node-wasm.js passed: tensor shape: [1,1200,1200,4] dtype: int32 +2022-04-14 11:46:45 INFO:  test-node-wasm.js test default +2022-04-14 11:46:45 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:45 STATE: test-node-wasm.js event: image +2022-04-14 11:46:45 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:45 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:45 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:45 DATA:  test-node-wasm.js result: performance: load: null total: 388 +2022-04-14 11:46:45 STATE: test-node-wasm.js passed: default result face match 1 female 0.97 +2022-04-14 11:46:45 INFO:  test-node-wasm.js test sync +2022-04-14 11:46:45 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:45 STATE: test-node-wasm.js event: image +2022-04-14 11:46:46 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:46 DATA:  test-node-wasm.js result: performance: load: null total: 383 +2022-04-14 11:46:46 STATE: test-node-wasm.js passed: default sync 1 female 0.97 +2022-04-14 11:46:46 INFO:  test-node-wasm.js test: image process +2022-04-14 11:46:46 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-04-14 11:46:46 STATE: test-node-wasm.js passed: image input null [1,256,256,3] +2022-04-14 11:46:46 INFO:  test-node-wasm.js test: image null +2022-04-14 11:46:46 STATE: test-node-wasm.js passed: invalid input could not convert input to tensor +2022-04-14 11:46:46 INFO:  test-node-wasm.js test face similarity +2022-04-14 11:46:46 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-04-14 11:46:46 STATE: test-node-wasm.js event: image +2022-04-14 11:46:46 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2022-04-14 11:46:46 DATA:  test-node-wasm.js result: performance: load: null total: 367 +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:47 STATE: test-node-wasm.js event: image +2022-04-14 11:46:47 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:47 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:47 DATA:  test-node-wasm.js result: performance: load: null total: 390 +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-04-14 11:46:47 STATE: test-node-wasm.js event: image +2022-04-14 11:46:47 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:47 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2022-04-14 11:46:47 DATA:  test-node-wasm.js result: performance: load: null total: 346 +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: face descriptor +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: face similarity {"similarity":[1,0.5266119940661309,0.4858842904087851],"descriptors":[1024,1024,1024]} +2022-04-14 11:46:47 INFO:  test-node-wasm.js test face matching +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: face database 40 +2022-04-14 11:46:47 STATE: test-node-wasm.js passed: face match {"first":{"index":4,"similarity":0.7827852754786533}} {"second":{"index":4,"similarity":0.5660821189104794}} {"third":{"index":4,"similarity":0.45074189882665594}} +2022-04-14 11:46:47 INFO:  test-node-wasm.js test object +2022-04-14 11:46:48 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:48 STATE: test-node-wasm.js event: image +2022-04-14 11:46:48 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:48 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:48 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:48 DATA:  test-node-wasm.js result: performance: load: null total: 358 +2022-04-14 11:46:48 STATE: test-node-wasm.js passed: object result match +2022-04-14 11:46:48 INFO:  test-node-wasm.js test sensitive +2022-04-14 11:46:48 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:48 STATE: test-node-wasm.js event: image +2022-04-14 11:46:49 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:49 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 8 object: 1 person: 1 {"score":1,"age":29.6,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:49 DATA:  test-node-wasm.js result: performance: load: null total: 424 +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: sensitive result match +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: sensitive face result match +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: sensitive face emotion result [{"score":0.46,"emotion":"neutral"},{"score":0.24,"emotion":"fear"},{"score":0.17,"emotion":"sad"}] +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: sensitive body result match +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: sensitive hand result match +2022-04-14 11:46:49 INFO:  test-node-wasm.js test detectors +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:49 STATE: test-node-wasm.js event: image +2022-04-14 11:46:49 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:49 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:49 DATA:  test-node-wasm.js result: performance: load: null total: 279 +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: detector result face match +2022-04-14 11:46:49 STATE: test-node-wasm.js passed: detector result hand match +2022-04-14 11:46:49 INFO:  test-node-wasm.js test: multi-instance +2022-04-14 11:46:49 STATE: test-node-wasm.js event: image +2022-04-14 11:46:50 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:50 STATE: test-node-wasm.js passed: detect: random default +2022-04-14 11:46:50 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0.07,"keypoints":15} +2022-04-14 11:46:50 DATA:  test-node-wasm.js result: performance: load: null total: 244 +2022-04-14 11:46:50 INFO:  test-node-wasm.js test: first instance +2022-04-14 11:46:50 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-04-14 11:46:50 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:50 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:50 DATA:  test-node-wasm.js result: performance: load: null total: 269 +2022-04-14 11:46:50 INFO:  test-node-wasm.js test: second instance +2022-04-14 11:46:50 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-04-14 11:46:50 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:50 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:50 DATA:  test-node-wasm.js result: performance: load: null total: 261 +2022-04-14 11:46:50 INFO:  test-node-wasm.js test: concurrent +2022-04-14 11:46:50 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-04-14 11:46:50 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-04-14 11:46:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-04-14 11:46:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-04-14 11:46:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-04-14 11:46:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2022-04-14 11:46:51 STATE: test-node-wasm.js event: image +2022-04-14 11:46:51 STATE: test-node-wasm.js event: image +2022-04-14 11:46:51 STATE: test-node-wasm.js event: image +2022-04-14 11:46:53 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:53 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:53 DATA:  test-node-wasm.js result: performance: load: null total: 2324 +2022-04-14 11:46:53 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:53 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:53 DATA:  test-node-wasm.js result: performance: load: null total: 2324 +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: performance: load: null total: 2584 +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: performance: load: null total: 2584 +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: performance: load: null total: 2584 +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: performance: load: null total: 2584 +2022-04-14 11:46:54 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 0 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: performance: load: null total: 2247 +2022-04-14 11:46:54 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:54 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: performance: load: null total: 2247 +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 0 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2022-04-14 11:46:54 DATA:  test-node-wasm.js result: performance: load: null total: 2247 +2022-04-14 11:46:54 INFO:  test-node-wasm.js test: monkey-patch +2022-04-14 11:46:54 STATE: test-node-wasm.js event: image +2022-04-14 11:46:54 STATE: test-node-wasm.js event: detect +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: monkey patch +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: segmentation [65536] +2022-04-14 11:46:54 STATE: test-node-wasm.js passeed: equal usage +2022-04-14 11:46:54 INFO:  test-node-wasm.js test: input compare +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2022-04-14 11:46:54 STATE: test-node-wasm.js passed: image compare 0 23.280073018790848 +2022-04-14 11:46:54 INFO:  test-node-wasm.js events: {"image":21,"detect":21,"warmup":2} +2022-04-14 11:46:54 INFO:  test-node-wasm.js tensors 1927 +2022-04-14 11:46:54 INFO:  test-node-wasm.js test complete: 15539 ms +2022-04-14 11:46:54 INFO:  all tests complete +2022-04-14 11:46:54 INFO:  failed: {"count":0,"messages":[]} +2022-04-14 11:46:54 INFO:  status: {"test":"test-node.js","passed":101,"failed":0} +2022-04-14 11:46:54 INFO:  status: {"test":"test-node-gpu.js","passed":101,"failed":0} +2022-04-14 11:46:54 INFO:  status: {"test":"test-node-wasm.js","passed":102,"failed":0} diff --git a/tsconfig.json b/tsconfig.json index 28a68335..83db3fb6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "outDir": "types", "baseUrl": "./", "paths": { "tslib": ["./node_modules/tslib/tslib.d.ts"] }, - "lib": ["esnext", "dom", "webworker"], + "lib": ["esnext", "dom"], "allowJs": true, "allowSyntheticDefaultImports": false, "allowUnreachableCode": false,