improve face box caching

pull/193/head
Vladimir Mandic 2021-08-17 09:15:47 -04:00
parent c205c08fb0
commit a8bd46e6fe
12 changed files with 237 additions and 188 deletions

View File

@ -9,7 +9,10 @@ Repository: **<git+https://github.com/vladmandic/human.git>**
## Changelog
### **HEAD -> main** 2021/08/15 mandic00@live.com
### **HEAD -> main** 2021/08/17 mandic00@live.com
### **origin/main** 2021/08/15 mandic00@live.com
- experimental webgpu support
- add experimental webgu demo

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/human.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/human.js vendored

File diff suppressed because one or more lines are too long

View File

@ -4031,8 +4031,8 @@ var Pipeline = class {
});
}
const results = [];
for (let i = 0; i < this.storedBoxes.length; i++) {
let box6 = this.storedBoxes[i];
const newBoxes = [];
for (let box6 of this.storedBoxes) {
let face5;
let angle = 0;
let rotationMatrix;
@ -4065,16 +4065,13 @@ var Pipeline = class {
tf4.dispose(contourCoords);
tf4.dispose(coordsReshaped);
if (faceConfidence < config3.face.detector.minConfidence) {
this.storedBoxes[i].confidence = faceConfidence;
box6.confidence = faceConfidence;
tf4.dispose(face5);
} else {
if (config3.face.iris.enabled)
rawCoords = await this.augmentIris(rawCoords, face5);
const mesh = this.transformRawCoords(rawCoords, box6, angle, rotationMatrix);
box6 = {
confidence: box6.confidence,
...enlargeBox(calculateLandmarksBoundingBox(mesh), 1.5)
};
box6 = { ...enlargeBox(calculateLandmarksBoundingBox(mesh), 1.5), confidence: box6.confidence };
if (config3.face.detector.rotation && config3.face.mesh.enabled && config3.face.description.enabled && tf4.ENV.flags.IS_BROWSER) {
[angle, rotationMatrix, face5] = this.correctFaceRotation(config3, box6, input);
}
@ -4086,12 +4083,13 @@ var Pipeline = class {
confidence: faceConfidence,
image: face5
});
this.storedBoxes[i] = { ...squarifyBox(box6), confidence: box6.confidence, faceConfidence };
box6 = { ...squarifyBox(box6), confidence: box6.confidence, faceConfidence };
}
}
newBoxes.push(box6);
}
if (config3.face.mesh.enabled)
this.storedBoxes = this.storedBoxes.filter((a) => a.confidence > config3.face.detector.minConfidence);
this.storedBoxes = newBoxes.filter((a) => a.confidence > config3.face.detector.minConfidence);
this.detectedFaces = results.length;
return results;
}

View File

@ -4032,8 +4032,8 @@ var Pipeline = class {
});
}
const results = [];
for (let i = 0; i < this.storedBoxes.length; i++) {
let box6 = this.storedBoxes[i];
const newBoxes = [];
for (let box6 of this.storedBoxes) {
let face5;
let angle = 0;
let rotationMatrix;
@ -4066,16 +4066,13 @@ var Pipeline = class {
tf4.dispose(contourCoords);
tf4.dispose(coordsReshaped);
if (faceConfidence < config3.face.detector.minConfidence) {
this.storedBoxes[i].confidence = faceConfidence;
box6.confidence = faceConfidence;
tf4.dispose(face5);
} else {
if (config3.face.iris.enabled)
rawCoords = await this.augmentIris(rawCoords, face5);
const mesh = this.transformRawCoords(rawCoords, box6, angle, rotationMatrix);
box6 = {
confidence: box6.confidence,
...enlargeBox(calculateLandmarksBoundingBox(mesh), 1.5)
};
box6 = { ...enlargeBox(calculateLandmarksBoundingBox(mesh), 1.5), confidence: box6.confidence };
if (config3.face.detector.rotation && config3.face.mesh.enabled && config3.face.description.enabled && tf4.ENV.flags.IS_BROWSER) {
[angle, rotationMatrix, face5] = this.correctFaceRotation(config3, box6, input);
}
@ -4087,12 +4084,13 @@ var Pipeline = class {
confidence: faceConfidence,
image: face5
});
this.storedBoxes[i] = { ...squarifyBox(box6), confidence: box6.confidence, faceConfidence };
box6 = { ...squarifyBox(box6), confidence: box6.confidence, faceConfidence };
}
}
newBoxes.push(box6);
}
if (config3.face.mesh.enabled)
this.storedBoxes = this.storedBoxes.filter((a) => a.confidence > config3.face.detector.minConfidence);
this.storedBoxes = newBoxes.filter((a) => a.confidence > config3.face.detector.minConfidence);
this.detectedFaces = results.length;
return results;
}

16
dist/human.node.js vendored
View File

@ -4031,8 +4031,8 @@ var Pipeline = class {
});
}
const results = [];
for (let i = 0; i < this.storedBoxes.length; i++) {
let box6 = this.storedBoxes[i];
const newBoxes = [];
for (let box6 of this.storedBoxes) {
let face5;
let angle = 0;
let rotationMatrix;
@ -4065,16 +4065,13 @@ var Pipeline = class {
tf4.dispose(contourCoords);
tf4.dispose(coordsReshaped);
if (faceConfidence < config3.face.detector.minConfidence) {
this.storedBoxes[i].confidence = faceConfidence;
box6.confidence = faceConfidence;
tf4.dispose(face5);
} else {
if (config3.face.iris.enabled)
rawCoords = await this.augmentIris(rawCoords, face5);
const mesh = this.transformRawCoords(rawCoords, box6, angle, rotationMatrix);
box6 = {
confidence: box6.confidence,
...enlargeBox(calculateLandmarksBoundingBox(mesh), 1.5)
};
box6 = { ...enlargeBox(calculateLandmarksBoundingBox(mesh), 1.5), confidence: box6.confidence };
if (config3.face.detector.rotation && config3.face.mesh.enabled && config3.face.description.enabled && tf4.ENV.flags.IS_BROWSER) {
[angle, rotationMatrix, face5] = this.correctFaceRotation(config3, box6, input);
}
@ -4086,12 +4083,13 @@ var Pipeline = class {
confidence: faceConfidence,
image: face5
});
this.storedBoxes[i] = { ...squarifyBox(box6), confidence: box6.confidence, faceConfidence };
box6 = { ...squarifyBox(box6), confidence: box6.confidence, faceConfidence };
}
}
newBoxes.push(box6);
}
if (config3.face.mesh.enabled)
this.storedBoxes = this.storedBoxes.filter((a) => a.confidence > config3.face.detector.minConfidence);
this.storedBoxes = newBoxes.filter((a) => a.confidence > config3.face.detector.minConfidence);
this.detectedFaces = results.length;
return results;
}

View File

@ -1,22 +1,22 @@
2021-08-17 08:49:41 INFO:  @vladmandic/human version 2.1.3
2021-08-17 08:49:41 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.5.0
2021-08-17 08:49:41 INFO:  Toolchain: {"tfjs":"3.8.0","esbuild":"0.12.20","typescript":"4.3.5","typedoc":"0.21.5","eslint":"7.32.0"}
2021-08-17 08:49:41 INFO:  Clean: ["dist/*","types/*","typedoc/*"]
2021-08-17 08:49:41 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-08-17 08:49:41 STATE: target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1303,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 08:49:41 STATE: target: node type: node: {"imports":42,"importBytes":436292,"outputBytes":379767,"outputFiles":"dist/human.node.js"}
2021-08-17 08:49:41 STATE: target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1311,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 08:49:41 STATE: target: nodeGPU type: node: {"imports":42,"importBytes":436300,"outputBytes":379771,"outputFiles":"dist/human.node-gpu.js"}
2021-08-17 08:49:41 STATE: target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1378,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 08:49:41 STATE: target: nodeWASM type: node: {"imports":42,"importBytes":436367,"outputBytes":379843,"outputFiles":"dist/human.node-wasm.js"}
2021-08-17 08:49:41 STATE: target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2168,"outputBytes":1242,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 08:49:41 STATE: target: browserNoBundle type: esm: {"imports":42,"importBytes":436231,"outputBytes":249203,"outputFiles":"dist/human.esm-nobundle.js"}
2021-08-17 08:49:42 STATE: target: browserBundle type: tfjs: {"modules":1170,"moduleBytes":4145868,"imports":7,"importBytes":2168,"outputBytes":2334701,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 08:49:42 STATE: target: browserBundle type: iife: {"imports":42,"importBytes":2769690,"outputBytes":1379569,"outputFiles":"dist/human.js"}
2021-08-17 08:49:42 STATE: target: browserBundle type: esm: {"imports":42,"importBytes":2769690,"outputBytes":1379561,"outputFiles":"dist/human.esm.js"}
2021-08-17 08:49:42 INFO:  Running Linter: ["server/","src/","tfjs/","test/","demo/"]
2021-08-17 08:50:06 INFO:  Linter complete: files: 77 errors: 0 warnings: 0
2021-08-17 08:50:06 INFO:  Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-08-17 08:50:06 INFO:  Generate Typings: ["src/human.ts"] outDir: ["types"]
2021-08-17 08:50:21 INFO:  Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
2021-08-17 08:50:34 INFO:  Documentation generated at /home/vlado/dev/human/typedoc 1
2021-08-17 09:13:13 INFO:  @vladmandic/human version 2.1.3
2021-08-17 09:13:13 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.5.0
2021-08-17 09:13:13 INFO:  Toolchain: {"tfjs":"3.8.0","esbuild":"0.12.20","typescript":"4.3.5","typedoc":"0.21.5","eslint":"7.32.0"}
2021-08-17 09:13:13 INFO:  Clean: ["dist/*","types/*","typedoc/*"]
2021-08-17 09:13:13 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-08-17 09:13:13 STATE: target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1303,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 09:13:13 STATE: target: node type: node: {"imports":42,"importBytes":436765,"outputBytes":379694,"outputFiles":"dist/human.node.js"}
2021-08-17 09:13:13 STATE: target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1311,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 09:13:13 STATE: target: nodeGPU type: node: {"imports":42,"importBytes":436773,"outputBytes":379698,"outputFiles":"dist/human.node-gpu.js"}
2021-08-17 09:13:13 STATE: target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1378,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 09:13:13 STATE: target: nodeWASM type: node: {"imports":42,"importBytes":436840,"outputBytes":379770,"outputFiles":"dist/human.node-wasm.js"}
2021-08-17 09:13:13 STATE: target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2168,"outputBytes":1242,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 09:13:13 STATE: target: browserNoBundle type: esm: {"imports":42,"importBytes":436704,"outputBytes":249130,"outputFiles":"dist/human.esm-nobundle.js"}
2021-08-17 09:13:13 STATE: target: browserBundle type: tfjs: {"modules":1170,"moduleBytes":4145868,"imports":7,"importBytes":2168,"outputBytes":2334701,"outputFiles":"dist/tfjs.esm.js"}
2021-08-17 09:13:14 STATE: target: browserBundle type: iife: {"imports":42,"importBytes":2770163,"outputBytes":1379498,"outputFiles":"dist/human.js"}
2021-08-17 09:13:14 STATE: target: browserBundle type: esm: {"imports":42,"importBytes":2770163,"outputBytes":1379490,"outputFiles":"dist/human.esm.js"}
2021-08-17 09:13:14 INFO:  Running Linter: ["server/","src/","tfjs/","test/","demo/"]
2021-08-17 09:13:38 INFO:  Linter complete: files: 77 errors: 0 warnings: 0
2021-08-17 09:13:38 INFO:  Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-08-17 09:13:38 INFO:  Generate Typings: ["src/human.ts"] outDir: ["types"]
2021-08-17 09:13:53 INFO:  Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
2021-08-17 09:14:06 INFO:  Documentation generated at /home/vlado/dev/human/typedoc 1

View File

@ -249,8 +249,10 @@ export class Pipeline {
}
const results: Array<{ mesh, box, faceConfidence, boxConfidence, confidence, image }> = [];
for (let i = 0; i < this.storedBoxes.length; i++) {
let box = this.storedBoxes[i]; // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).
// for (let i = 0; i < this.storedBoxes.length; i++) {
const newBoxes: Array<{ startPoint: number[]; endPoint: number[]; landmarks: number[]; confidence: number; faceConfidence?: number | undefined; }> = [];
for (let box of this.storedBoxes) {
// let box = this.storedBoxes[i]; // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).
let face;
let angle = 0;
let rotationMatrix;
@ -288,17 +290,16 @@ export class Pipeline {
tf.dispose(contourCoords);
tf.dispose(coordsReshaped);
if (faceConfidence < config.face.detector.minConfidence) {
this.storedBoxes[i].confidence = faceConfidence; // reset confidence of cached box
// if (!this.storedBoxes[i]) console.log('2', i, this.storedBoxes.length, this.storedBoxes[i], box, this.storedBoxes);
// this.storedBoxes[i].confidence = faceConfidence; // reset confidence of cached box
box.confidence = faceConfidence; // reset confidence of cached box
tf.dispose(face);
} else {
if (config.face.iris.enabled) rawCoords = await this.augmentIris(rawCoords, face);
// override box from detection with one calculated from mesh
const mesh = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);
box = {
confidence: box.confidence, // keep confidence
...bounding.enlargeBox(bounding.calculateLandmarksBoundingBox(mesh), 1.5), // redefine box with mesh calculated one
};
box = { ...bounding.enlargeBox(bounding.calculateLandmarksBoundingBox(mesh), 1.5), confidence: box.confidence }; // redefine box with mesh calculated one
// do rotation one more time with mesh keypoints if we want to return perfect image
if (config.face.detector.rotation && config.face.mesh.enabled && config.face.description.enabled && tf.ENV.flags.IS_BROWSER) {
@ -315,14 +316,16 @@ export class Pipeline {
});
// updated stored cache values
this.storedBoxes[i] = { ...bounding.squarifyBox(box), confidence: box.confidence, faceConfidence };
// this.storedBoxes[i] = { ...bounding.squarifyBox(box), confidence: box.confidence, faceConfidence };
box = { ...bounding.squarifyBox(box), confidence: box.confidence, faceConfidence };
}
}
newBoxes.push(box);
}
// results = results.filter((a) => a !== null);
// remove cache entries for detected boxes on low confidence
if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.confidence > config.face.detector.minConfidence);
if (config.face.mesh.enabled) this.storedBoxes = newBoxes.filter((a) => a.confidence > config.face.detector.minConfidence);
this.detectedFaces = results.length;
return results;

View File

@ -1,120 +1,169 @@
2021-07-31 20:40:15 INFO:  @vladmandic/human version 2.1.2
2021-07-31 20:40:15 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.5.0
2021-07-31 20:40:15 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-07-31 20:40:15 INFO:  test-node.js start
2021-07-31 20:40:16 STATE: test-node.js passed: create human
2021-07-31 20:40:16 INFO:  test-node.js human version: 2.1.2
2021-07-31 20:40:16 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.5.0
2021-07-31 20:40:16 INFO:  test-node.js tfjs version: 3.8.0
2021-07-31 20:40:16 STATE: test-node.js passed: set backend: tensorflow
2021-07-31 20:40:16 STATE: test-node.js passed: load models
2021-07-31 20:40:16 STATE: test-node.js result: defined models: 14 loaded models: 7
2021-07-31 20:40:16 STATE: test-node.js passed: warmup: none default
2021-07-31 20:40:17 STATE: test-node.js passed: warmup: face default
2021-07-31 20:40:17 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4}
2021-07-31 20:40:17 DATA:  test-node.js result: performance: load: 371 total: 1216
2021-07-31 20:40:19 STATE: test-node.js passed: warmup: body default
2021-07-31 20:40:19 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:19 DATA:  test-node.js result: performance: load: 371 total: 1074
2021-07-31 20:40:19 INFO:  test-node.js test body variants
2021-07-31 20:40:19 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:20 STATE: test-node.js passed: detect: samples/ai-body.jpg posenet
2021-07-31 20:40:20 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-07-31 20:40:20 DATA:  test-node.js result: performance: load: 371 total: 698
2021-07-31 20:40:21 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:21 STATE: test-node.js passed: detect: samples/ai-body.jpg movenet
2021-07-31 20:40:21 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:21 DATA:  test-node.js result: performance: load: 371 total: 192
2021-07-31 20:40:22 STATE: test-node.js passed: detect: random default
2021-07-31 20:40:22 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0,"keypoints":0}
2021-07-31 20:40:22 DATA:  test-node.js result: performance: load: 371 total: 160
2021-07-31 20:40:22 INFO:  test-node.js test: first instance
2021-07-31 20:40:22 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-31 20:40:22 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-07-31 20:40:22 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0.69,"keypoints":10}
2021-07-31 20:40:22 DATA:  test-node.js result: performance: load: 371 total: 135
2021-07-31 20:40:22 INFO:  test-node.js test: second instance
2021-07-31 20:40:22 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-31 20:40:23 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-07-31 20:40:23 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
2021-07-31 20:40:23 DATA:  test-node.js result: performance: load: 4 total: 998
2021-07-31 20:40:23 INFO:  test-node.js test: concurrent
2021-07-31 20:40:23 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-31 20:40:23 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-31 20:40:24 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:25 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:29 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-07-31 20:40:29 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17}
2021-07-31 20:40:29 DATA:  test-node.js result: performance: load: 371 total: 3763
2021-07-31 20:40:29 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-07-31 20:40:29 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17}
2021-07-31 20:40:29 DATA:  test-node.js result: performance: load: 4 total: 3763
2021-07-31 20:40:29 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-07-31 20:40:29 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:29 DATA:  test-node.js result: performance: load: 371 total: 3763
2021-07-31 20:40:29 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-07-31 20:40:29 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:29 DATA:  test-node.js result: performance: load: 4 total: 3763
2021-07-31 20:40:29 INFO:  test-node.js test complete: 12980 ms
2021-07-31 20:40:29 INFO:  test-node-gpu.js start
2021-07-31 20:40:30 WARN:  test-node-gpu.js stderr: 2021-07-31 20:40:30.051221: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2021-07-31 20:40:30 WARN:  test-node-gpu.js stderr: 2021-07-31 20:40:30.213112: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-07-31 20:40:30 WARN:  test-node-gpu.js stderr: 2021-07-31 20:40:30.213172: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (wyse): /proc/driver/nvidia/version does not exist
2021-07-31 20:40:30 STATE: test-node-gpu.js passed: create human
2021-07-31 20:40:30 INFO:  test-node-gpu.js human version: 2.1.2
2021-07-31 20:40:30 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.5.0
2021-07-31 20:40:30 INFO:  test-node-gpu.js tfjs version: 3.8.0
2021-07-31 20:40:30 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-07-31 20:40:30 STATE: test-node-gpu.js passed: load models
2021-07-31 20:40:30 STATE: test-node-gpu.js result: defined models: 14 loaded models: 7
2021-07-31 20:40:30 STATE: test-node-gpu.js passed: warmup: none default
2021-07-31 20:40:31 STATE: test-node-gpu.js passed: warmup: face default
2021-07-31 20:40:31 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4}
2021-07-31 20:40:31 DATA:  test-node-gpu.js result: performance: load: 327 total: 1259
2021-07-31 20:40:33 STATE: test-node-gpu.js passed: warmup: body default
2021-07-31 20:40:33 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:33 DATA:  test-node-gpu.js result: performance: load: 327 total: 1089
2021-07-31 20:40:33 INFO:  test-node-gpu.js test body variants
2021-07-31 20:40:33 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:34 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
2021-07-31 20:40:34 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-07-31 20:40:34 DATA:  test-node-gpu.js result: performance: load: 327 total: 735
2021-07-31 20:40:35 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:35 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
2021-07-31 20:40:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:35 DATA:  test-node-gpu.js result: performance: load: 327 total: 209
2021-07-31 20:40:36 STATE: test-node-gpu.js passed: detect: random default
2021-07-31 20:40:36 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0}
2021-07-31 20:40:36 DATA:  test-node-gpu.js result: performance: load: 327 total: 618
2021-07-31 20:40:36 INFO:  test-node-gpu.js test: first instance
2021-07-31 20:40:36 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-31 20:40:37 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-07-31 20:40:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
2021-07-31 20:40:37 DATA:  test-node-gpu.js result: performance: load: 327 total: 920
2021-07-31 20:40:37 INFO:  test-node-gpu.js test: second instance
2021-07-31 20:40:37 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-31 20:40:38 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-07-31 20:40:38 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
2021-07-31 20:40:38 DATA:  test-node-gpu.js result: performance: load: 3 total: 980
2021-07-31 20:40:38 INFO:  test-node-gpu.js test: concurrent
2021-07-31 20:40:38 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-31 20:40:39 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-31 20:40:39 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:40 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-31 20:40:44 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17}
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: performance: load: 327 total: 3873
2021-07-31 20:40:44 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17}
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: performance: load: 3 total: 3873
2021-07-31 20:40:44 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: performance: load: 327 total: 3873
2021-07-31 20:40:44 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-07-31 20:40:44 DATA:  test-node-gpu.js result: performance: load: 3 total: 3873
2021-07-31 20:40:44 INFO:  test-node-gpu.js test complete: 14415 ms
2021-07-31 20:40:44 INFO:  test-node-wasm.js start
2021-07-31 20:40:44 ERROR: test-node-wasm.js failed: model server: request to http://localhost:10030/models/ failed, reason: connect ECONNREFUSED 127.0.0.1:10030
2021-07-31 20:40:44 ERROR: test-node-wasm.js aborting test
2021-07-31 20:40:44 INFO:  status: {"passed":46,"failed":1}
2021-08-17 09:12:17 INFO:  @vladmandic/human version 2.1.3
2021-08-17 09:12:17 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.5.0
2021-08-17 09:12:17 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-08-17 09:12:17 INFO:  test-node.js start
2021-08-17 09:12:18 STATE: test-node.js passed: create human
2021-08-17 09:12:18 INFO:  test-node.js human version: 2.1.3
2021-08-17 09:12:18 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.5.0
2021-08-17 09:12:18 INFO:  test-node.js tfjs version: 3.8.0
2021-08-17 09:12:18 STATE: test-node.js passed: set backend: tensorflow
2021-08-17 09:12:18 STATE: test-node.js passed: load models
2021-08-17 09:12:18 STATE: test-node.js result: defined models: 14 loaded models: 7
2021-08-17 09:12:18 STATE: test-node.js passed: warmup: none default
2021-08-17 09:12:19 STATE: test-node.js passed: warmup: face default
2021-08-17 09:12:19 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4}
2021-08-17 09:12:19 DATA:  test-node.js result: performance: load: 332 total: 1158
2021-08-17 09:12:20 STATE: test-node.js passed: warmup: body default
2021-08-17 09:12:20 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-08-17 09:12:20 DATA:  test-node.js result: performance: load: 332 total: 1080
2021-08-17 09:12:20 INFO:  test-node.js test body variants
2021-08-17 09:12:21 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:22 STATE: test-node.js passed: detect: samples/ai-body.jpg posenet
2021-08-17 09:12:22 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-08-17 09:12:22 DATA:  test-node.js result: performance: load: 332 total: 746
2021-08-17 09:12:23 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:23 STATE: test-node.js passed: detect: samples/ai-body.jpg movenet
2021-08-17 09:12:23 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-08-17 09:12:23 DATA:  test-node.js result: performance: load: 332 total: 195
2021-08-17 09:12:23 STATE: test-node.js passed: detect: random default
2021-08-17 09:12:23 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0,"keypoints":0}
2021-08-17 09:12:23 DATA:  test-node.js result: performance: load: 332 total: 179
2021-08-17 09:12:23 INFO:  test-node.js test: first instance
2021-08-17 09:12:24 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-08-17 09:12:24 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-08-17 09:12:24 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0.69,"keypoints":10}
2021-08-17 09:12:24 DATA:  test-node.js result: performance: load: 332 total: 140
2021-08-17 09:12:24 INFO:  test-node.js test: second instance
2021-08-17 09:12:24 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-08-17 09:12:25 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-08-17 09:12:25 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
2021-08-17 09:12:25 DATA:  test-node.js result: performance: load: 3 total: 1043
2021-08-17 09:12:25 INFO:  test-node.js test: concurrent
2021-08-17 09:12:25 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-08-17 09:12:25 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-08-17 09:12:26 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:27 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:31 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-08-17 09:12:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":42}
2021-08-17 09:12:31 DATA:  test-node.js result: performance: load: 332 total: 4402
2021-08-17 09:12:31 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-08-17 09:12:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":42}
2021-08-17 09:12:31 DATA:  test-node.js result: performance: load: 3 total: 4402
2021-08-17 09:12:31 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-08-17 09:12:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":42}
2021-08-17 09:12:31 DATA:  test-node.js result: performance: load: 332 total: 4402
2021-08-17 09:12:31 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-08-17 09:12:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":42}
2021-08-17 09:12:31 DATA:  test-node.js result: performance: load: 3 total: 4402
2021-08-17 09:12:31 INFO:  test-node.js test complete: 13794 ms
2021-08-17 09:12:31 INFO:  test-node-gpu.js start
2021-08-17 09:12:32 WARN:  test-node-gpu.js stderr: 2021-08-17 09:12:32.336897: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2021-08-17 09:12:32 WARN:  test-node-gpu.js stderr: 2021-08-17 09:12:32.387680: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-08-17 09:12:32 WARN:  test-node-gpu.js stderr: 2021-08-17 09:12:32.387718: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (wyse): /proc/driver/nvidia/version does not exist
2021-08-17 09:12:32 STATE: test-node-gpu.js passed: create human
2021-08-17 09:12:32 INFO:  test-node-gpu.js human version: 2.1.3
2021-08-17 09:12:32 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.5.0
2021-08-17 09:12:32 INFO:  test-node-gpu.js tfjs version: 3.8.0
2021-08-17 09:12:32 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-08-17 09:12:32 STATE: test-node-gpu.js passed: load models
2021-08-17 09:12:32 STATE: test-node-gpu.js result: defined models: 14 loaded models: 7
2021-08-17 09:12:32 STATE: test-node-gpu.js passed: warmup: none default
2021-08-17 09:12:33 STATE: test-node-gpu.js passed: warmup: face default
2021-08-17 09:12:33 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4}
2021-08-17 09:12:33 DATA:  test-node-gpu.js result: performance: load: 294 total: 1143
2021-08-17 09:12:35 STATE: test-node-gpu.js passed: warmup: body default
2021-08-17 09:12:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-08-17 09:12:35 DATA:  test-node-gpu.js result: performance: load: 294 total: 1140
2021-08-17 09:12:35 INFO:  test-node-gpu.js test body variants
2021-08-17 09:12:35 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:36 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
2021-08-17 09:12:36 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-08-17 09:12:36 DATA:  test-node-gpu.js result: performance: load: 294 total: 769
2021-08-17 09:12:37 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:37 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
2021-08-17 09:12:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
2021-08-17 09:12:37 DATA:  test-node-gpu.js result: performance: load: 294 total: 245
2021-08-17 09:12:38 STATE: test-node-gpu.js passed: detect: random default
2021-08-17 09:12:38 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0}
2021-08-17 09:12:38 DATA:  test-node-gpu.js result: performance: load: 294 total: 610
2021-08-17 09:12:38 INFO:  test-node-gpu.js test: first instance
2021-08-17 09:12:38 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-08-17 09:12:39 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-08-17 09:12:39 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
2021-08-17 09:12:39 DATA:  test-node-gpu.js result: performance: load: 294 total: 989
2021-08-17 09:12:39 INFO:  test-node-gpu.js test: second instance
2021-08-17 09:12:40 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-08-17 09:12:41 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-08-17 09:12:41 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
2021-08-17 09:12:41 DATA:  test-node-gpu.js result: performance: load: 4 total: 943
2021-08-17 09:12:41 INFO:  test-node-gpu.js test: concurrent
2021-08-17 09:12:41 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-08-17 09:12:41 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-08-17 09:12:41 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:42 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:47 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":42}
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: performance: load: 294 total: 4310
2021-08-17 09:12:47 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":42}
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: performance: load: 4 total: 4310
2021-08-17 09:12:47 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":42}
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: performance: load: 294 total: 4310
2021-08-17 09:12:47 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":42}
2021-08-17 09:12:47 DATA:  test-node-gpu.js result: performance: load: 4 total: 4310
2021-08-17 09:12:47 INFO:  test-node-gpu.js test complete: 14687 ms
2021-08-17 09:12:47 INFO:  test-node-wasm.js start
2021-08-17 09:12:47 STATE: test-node-wasm.js passed: model server: http://localhost:10030/models/
2021-08-17 09:12:47 STATE: test-node-wasm.js passed: create human
2021-08-17 09:12:47 INFO:  test-node-wasm.js human version: 2.1.3
2021-08-17 09:12:47 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v16.5.0
2021-08-17 09:12:47 INFO:  test-node-wasm.js tfjs version: 3.8.0
2021-08-17 09:12:48 STATE: test-node-wasm.js passed: set backend: wasm
2021-08-17 09:12:48 STATE: test-node-wasm.js passed: load models
2021-08-17 09:12:48 STATE: test-node-wasm.js result: defined models: 14 loaded models: 6
2021-08-17 09:12:48 STATE: test-node-wasm.js passed: warmup: none default
2021-08-17 09:12:48 ERROR: test-node-wasm.js failed: warmup: face default
2021-08-17 09:12:48 ERROR: test-node-wasm.js failed: warmup: body default
2021-08-17 09:12:48 INFO:  test-node-wasm.js test body variants
2021-08-17 09:12:49 STATE: test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:51 STATE: test-node-wasm.js passed: detect: samples/ai-body.jpg posenet
2021-08-17 09:12:51 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"age":28.5,"gender":"female"} {} {"score":0.96,"keypoints":16}
2021-08-17 09:12:51 DATA:  test-node-wasm.js result: performance: load: 573 total: 1616
2021-08-17 09:12:52 STATE: test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:53 STATE: test-node-wasm.js passed: detect: samples/ai-body.jpg movenet
2021-08-17 09:12:53 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
2021-08-17 09:12:53 DATA:  test-node-wasm.js result: performance: load: 573 total: 902
2021-08-17 09:12:53 STATE: test-node-wasm.js passed: detect: random default
2021-08-17 09:12:53 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.92,"keypoints":17}
2021-08-17 09:12:53 DATA:  test-node-wasm.js result: performance: load: 573 total: 92
2021-08-17 09:12:53 INFO:  test-node-wasm.js test: first instance
2021-08-17 09:12:54 STATE: test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-08-17 09:12:54 STATE: test-node-wasm.js passed: detect: samples/ai-upper.jpg default
2021-08-17 09:12:54 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.69,"keypoints":10}
2021-08-17 09:12:54 DATA:  test-node-wasm.js result: performance: load: 573 total: 141
2021-08-17 09:12:54 INFO:  test-node-wasm.js test: second instance
2021-08-17 09:12:55 STATE: test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-08-17 09:12:56 STATE: test-node-wasm.js passed: detect: samples/ai-upper.jpg default
2021-08-17 09:12:56 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"age":29.5,"gender":"female"} {} {"score":0.69,"keypoints":10}
2021-08-17 09:12:56 DATA:  test-node-wasm.js result: performance: load: 4 total: 987
2021-08-17 09:12:56 INFO:  test-node-wasm.js test: concurrent
2021-08-17 09:12:56 STATE: test-node-wasm.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-08-17 09:12:56 STATE: test-node-wasm.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-08-17 09:12:57 STATE: test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:12:59 STATE: test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-08-17 09:13:03 STATE: test-node-wasm.js passed: detect: samples/ai-face.jpg default
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 0 person: 1 {"age":23.6,"gender":"female"} {} {"score":0.47,"keypoints":42}
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: performance: load: 573 total: 3926
2021-08-17 09:13:03 STATE: test-node-wasm.js passed: detect: samples/ai-face.jpg default
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 0 person: 1 {"age":23.6,"gender":"female"} {} {"score":0.47,"keypoints":42}
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: performance: load: 4 total: 3926
2021-08-17 09:13:03 STATE: test-node-wasm.js passed: detect: samples/ai-body.jpg default
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":42}
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: performance: load: 573 total: 3926
2021-08-17 09:13:03 STATE: test-node-wasm.js passed: detect: samples/ai-body.jpg default
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":42}
2021-08-17 09:13:03 DATA:  test-node-wasm.js result: performance: load: 4 total: 3926
2021-08-17 09:13:03 INFO:  test-node-wasm.js test complete: 15921 ms
2021-08-17 09:13:03 INFO:  status: {"passed":68,"failed":2}