update build process to remove warnings

pull/193/head
Vladimir Mandic 2021-07-31 20:42:28 -04:00
parent e86a4cb435
commit fc6873c092
21 changed files with 287 additions and 175 deletions

View File

@ -9,8 +9,9 @@ Repository: **<git+https://github.com/vladmandic/human.git>**
## Changelog
### **HEAD -> main** 2021/07/30 mandic00@live.com
### **HEAD -> main** 2021/07/31 mandic00@live.com
- replace movenet with lightning-v4
- enable webgl uniform support for faster warmup
### **2.1.2** 2021/07/29 mandic00@live.com

View File

@ -34,10 +34,6 @@ Check out [**Live Demo**](https://vladmandic.github.io/human/demo/index.html) ap
<br>
*Note: `Human` Release 2.0 contains large list of changes, see [Change log](https://github.com/vladmandic/human/blob/main/CHANGELOG.md) for details*
<br>
## Demos
- [**Main Application**](https://vladmandic.github.io/human/demo/index.html)
@ -72,6 +68,7 @@ Check out [**Live Demo**](https://vladmandic.github.io/human/demo/index.html) ap
- [**Notes on Backends**](https://github.com/vladmandic/human/wiki/Backends)
- [**Development Server**](https://github.com/vladmandic/human/wiki/Development-Server)
- [**Build Process**](https://github.com/vladmandic/human/wiki/Build-Process)
- [**Adding Custom Modules**](https://github.com/vladmandic/human/wiki/Module)
- [**Performance Notes**](https://github.com/vladmandic/human/wiki/Performance)
- [**Performance Profiling**](https://github.com/vladmandic/human/wiki/Profiling)
- [**Platform Support**](https://github.com/vladmandic/human/wiki/Platforms)
@ -279,6 +276,7 @@ Default models in Human library are:
- **Face Description**: HSE FaceRes
- **Emotion Detection**: Oarriaga Emotion
- **Body Analysis**: MoveNet - Lightning variation
- **Object Detection**: CenterNet
Note that alternative models are provided and can be enabled via configuration
For example, `PoseNet` model can be switched for `BlazePose`, `EfficientPose` or `MoveNet` model depending on the use case

View File

@ -21,8 +21,6 @@ const userConfig = {
mesh: { enabled: true },
embedding: { enabled: false },
iris: { enabled: false },
age: { enabled: false },
gender: { enabled: false },
emotion: { enabled: true },
description: { enabled: true },
},
@ -174,12 +172,14 @@ async function createDB() {
}
async function main() {
/*
window.addEventListener('unhandledrejection', (evt) => {
// eslint-disable-next-line no-console
console.error(evt.reason || evt);
document.getElementById('list').innerHTML = evt?.reason?.message || evt?.reason || evt;
evt.preventDefault();
});
*/
// pre-load human models
await human.load();

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

@ -9747,6 +9747,7 @@ var detectFace = async (parent, input) => {
var _a, _b, _c, _d, _e, _f;
let timeStamp;
let ageRes;
let gearRes;
let genderRes;
let emotionRes;
let embeddingRes;
@ -9788,7 +9789,7 @@ var detectFace = async (parent, input) => {
}
parent.analyze("End Description:");
if (parent.config.async) {
[ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);
[ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes]);
}
parent.analyze("Finish Face:");
if (!parent.config.face.iris.enabled && ((_b = (_a = faces[i]) == null ? void 0 : _a.annotations) == null ? void 0 : _b.leftEyeIris) && ((_d = (_c = faces[i]) == null ? void 0 : _c.annotations) == null ? void 0 : _d.rightEyeIris)) {

View File

@ -9748,6 +9748,7 @@ var detectFace = async (parent, input) => {
var _a, _b, _c, _d, _e, _f;
let timeStamp;
let ageRes;
let gearRes;
let genderRes;
let emotionRes;
let embeddingRes;
@ -9789,7 +9790,7 @@ var detectFace = async (parent, input) => {
}
parent.analyze("End Description:");
if (parent.config.async) {
[ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);
[ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes]);
}
parent.analyze("Finish Face:");
if (!parent.config.face.iris.enabled && ((_b = (_a = faces[i]) == null ? void 0 : _a.annotations) == null ? void 0 : _b.leftEyeIris) && ((_d = (_c = faces[i]) == null ? void 0 : _c.annotations) == null ? void 0 : _d.rightEyeIris)) {

3
dist/human.node.js vendored
View File

@ -9747,6 +9747,7 @@ var detectFace = async (parent, input) => {
var _a, _b, _c, _d, _e, _f;
let timeStamp;
let ageRes;
let gearRes;
let genderRes;
let emotionRes;
let embeddingRes;
@ -9788,7 +9789,7 @@ var detectFace = async (parent, input) => {
}
parent.analyze("End Description:");
if (parent.config.async) {
[ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);
[ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes]);
}
parent.analyze("Finish Face:");
if (!parent.config.face.iris.enabled && ((_b = (_a = faces[i]) == null ? void 0 : _a.annotations) == null ? void 0 : _b.leftEyeIris) && ((_d = (_c = faces[i]) == null ? void 0 : _c.annotations) == null ? void 0 : _d.rightEyeIris)) {

View File

@ -23,7 +23,7 @@
"scripts": {
"start": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught demo/nodejs/node.js",
"dev": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",
"build": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",
"build": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation server/build.js",
"lint": "eslint src server demo test",
"test": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught test/test.js",
"scan": "npx auditjs@latest ossi --dev --quiet"
@ -65,7 +65,7 @@
"@tensorflow/tfjs-layers": "^3.8.0",
"@tensorflow/tfjs-node": "^3.8.0",
"@tensorflow/tfjs-node-gpu": "^3.8.0",
"@types/node": "^16.4.7",
"@types/node": "^16.4.9",
"@typescript-eslint/eslint-plugin": "^4.28.5",
"@typescript-eslint/parser": "^4.28.5",
"@vladmandic/pilogger": "^0.2.18",
@ -73,7 +73,7 @@
"chokidar": "^3.5.2",
"dayjs": "^1.10.6",
"esbuild": "^0.12.17",
"eslint": "^7.31.0",
"eslint": "^7.32.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.23.4",
"eslint-plugin-json": "^3.0.0",
@ -82,9 +82,9 @@
"node-fetch": "^2.6.1",
"rimraf": "^3.0.2",
"seedrandom": "^3.0.5",
"simple-git": "^2.41.2",
"simple-git": "^2.42.0",
"tslib": "^2.3.0",
"typedoc": "0.21.4",
"typedoc": "0.21.5",
"typescript": "4.3.5"
}
}

View File

@ -1,22 +1,22 @@
2021-07-30 07:15:56 INFO:  @vladmandic/human version 2.1.2
2021-07-30 07:15:56 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-07-30 07:15:56 INFO:  Toolchain: {"tfjs":"3.8.0","esbuild":"0.12.17","typescript":"4.3.5","typedoc":"0.21.4","eslint":"7.31.0"}
2021-07-30 07:15:56 INFO:  Clean: ["dist/*","types/*","typedoc/*"]
2021-07-30 07:15:56 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-07-30 07:15:56 STATE: target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1303,"outputFiles":"dist/tfjs.esm.js"}
2021-07-30 07:15:56 STATE: target: node type: node: {"imports":42,"importBytes":434230,"outputBytes":377710,"outputFiles":"dist/human.node.js"}
2021-07-30 07:15:56 STATE: target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1311,"outputFiles":"dist/tfjs.esm.js"}
2021-07-30 07:15:56 STATE: target: nodeGPU type: node: {"imports":42,"importBytes":434238,"outputBytes":377714,"outputFiles":"dist/human.node-gpu.js"}
2021-07-30 07:15:56 STATE: target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1378,"outputFiles":"dist/tfjs.esm.js"}
2021-07-30 07:15:56 STATE: target: nodeWASM type: node: {"imports":42,"importBytes":434305,"outputBytes":377786,"outputFiles":"dist/human.node-wasm.js"}
2021-07-30 07:15:56 STATE: target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2111,"outputBytes":1242,"outputFiles":"dist/tfjs.esm.js"}
2021-07-30 07:15:56 STATE: target: browserNoBundle type: esm: {"imports":42,"importBytes":434169,"outputBytes":247939,"outputFiles":"dist/human.esm-nobundle.js"}
2021-07-30 07:15:56 STATE: target: browserBundle type: tfjs: {"modules":1170,"moduleBytes":4145868,"imports":7,"importBytes":2111,"outputBytes":2334701,"outputFiles":"dist/tfjs.esm.js"}
2021-07-30 07:15:57 STATE: target: browserBundle type: iife: {"imports":42,"importBytes":2767628,"outputBytes":1378402,"outputFiles":"dist/human.js"}
2021-07-30 07:15:57 STATE: target: browserBundle type: esm: {"imports":42,"importBytes":2767628,"outputBytes":1378394,"outputFiles":"dist/human.esm.js"}
2021-07-30 07:15:57 INFO:  Running Linter: ["server/","src/","tfjs/","test/","demo/"]
2021-07-30 07:16:20 INFO:  Linter complete: files: 74 errors: 0 warnings: 0
2021-07-30 07:16:20 INFO:  Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-07-30 07:16:20 INFO:  Generate Typings: ["src/human.ts"] outDir: ["types"]
2021-07-30 07:16:34 INFO:  Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
2021-07-30 07:16:47 INFO:  Documentation generated at /home/vlado/dev/human/typedoc 1
2021-07-31 20:38:26 INFO:  @vladmandic/human version 2.1.2
2021-07-31 20:38:26 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.5.0
2021-07-31 20:38:26 INFO:  Toolchain: {"tfjs":"3.8.0","esbuild":"0.12.17","typescript":"4.3.5","typedoc":"0.21.5","eslint":"7.32.0"}
2021-07-31 20:38:26 INFO:  Clean: ["dist/*","types/*","typedoc/*"]
2021-07-31 20:38:27 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-07-31 20:38:27 STATE: target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1303,"outputFiles":"dist/tfjs.esm.js"}
2021-07-31 20:38:27 STATE: target: node type: node: {"imports":42,"importBytes":435502,"outputBytes":377743,"outputFiles":"dist/human.node.js"}
2021-07-31 20:38:27 STATE: target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1311,"outputFiles":"dist/tfjs.esm.js"}
2021-07-31 20:38:27 STATE: target: nodeGPU type: node: {"imports":42,"importBytes":435510,"outputBytes":377747,"outputFiles":"dist/human.node-gpu.js"}
2021-07-31 20:38:27 STATE: target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1378,"outputFiles":"dist/tfjs.esm.js"}
2021-07-31 20:38:27 STATE: target: nodeWASM type: node: {"imports":42,"importBytes":435577,"outputBytes":377819,"outputFiles":"dist/human.node-wasm.js"}
2021-07-31 20:38:27 STATE: target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2111,"outputBytes":1242,"outputFiles":"dist/tfjs.esm.js"}
2021-07-31 20:38:27 STATE: target: browserNoBundle type: esm: {"imports":42,"importBytes":435441,"outputBytes":247945,"outputFiles":"dist/human.esm-nobundle.js"}
2021-07-31 20:38:27 STATE: target: browserBundle type: tfjs: {"modules":1170,"moduleBytes":4145868,"imports":7,"importBytes":2111,"outputBytes":2334701,"outputFiles":"dist/tfjs.esm.js"}
2021-07-31 20:38:28 STATE: target: browserBundle type: iife: {"imports":42,"importBytes":2768900,"outputBytes":1378408,"outputFiles":"dist/human.js"}
2021-07-31 20:38:28 STATE: target: browserBundle type: esm: {"imports":42,"importBytes":2768900,"outputBytes":1378400,"outputFiles":"dist/human.esm.js"}
2021-07-31 20:38:28 INFO:  Running Linter: ["server/","src/","tfjs/","test/","demo/"]
2021-07-31 20:38:50 INFO:  Linter complete: files: 75 errors: 0 warnings: 0
2021-07-31 20:38:50 INFO:  Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-07-31 20:38:50 INFO:  Generate Typings: ["src/human.ts"] outDir: ["types"]
2021-07-31 20:39:03 INFO:  Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
2021-07-31 20:39:16 INFO:  Documentation generated at /home/vlado/dev/human/typedoc 1

View File

@ -7,6 +7,8 @@ async function typings(entryPoint) {
const configFileName = ts.findConfigFile('./', ts.sys.fileExists, 'tsconfig.json') || '';
const configFile = ts.readConfigFile(configFileName, ts.sys.readFile);
const compilerOptions = ts.parseJsonConfigFileContent(configFile.config, ts.sys, './');
// add explicitly to avoid generating compiled js files
compilerOptions.options.emitDeclarationOnly = true;
log.info('Generate Typings:', entryPoint, 'outDir:', [compilerOptions.options.outDir]);
const compilerHost = ts.createCompilerHost(compilerOptions.options);
const program = ts.createProgram(entryPoint, compilerOptions.options, compilerHost);

View File

@ -145,6 +145,7 @@ export const detectFace = async (parent /* instance of human */, input: Tensor):
// eslint-disable-next-line no-async-promise-executor
let timeStamp;
let ageRes;
let gearRes;
let genderRes;
let emotionRes;
let embeddingRes;
@ -181,6 +182,20 @@ export const detectFace = async (parent /* instance of human */, input: Tensor):
}
parent.analyze('End Emotion:');
// run gear, inherits face from blazeface
/*
parent.analyze('Start GEAR:');
if (parent.config.async) {
gearRes = parent.config.face.agegenderrace.enabled ? agegenderrace.predict(faces[i].image || tf.tensor([]), parent.config, i, faces.length) : {};
} else {
parent.state = 'run:gear';
timeStamp = now();
gearRes = parent.config.face.agegenderrace.enabled ? await agegenderrace.predict(faces[i].image || tf.tensor([]), parent.config, i, faces.length) : {};
parent.performance.emotion = Math.trunc(now() - timeStamp);
}
parent.analyze('End GEAR:');
*/
// run emotion, inherits face from blazeface
parent.analyze('Start Description:');
if (parent.config.async) {
@ -195,7 +210,7 @@ export const detectFace = async (parent /* instance of human */, input: Tensor):
// if async wait for results
if (parent.config.async) {
[ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);
[ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes, gearRes]);
}
parent.analyze('Finish Face:');

88
src/gear/agegenderrace.ts Normal file
View File

@ -0,0 +1,88 @@
/**
* Module that analyzes person age
* Obsolete
*/
/*
to enable, add to config.ts
agegenderrace: {
enabled: boolean,
modelPath: string,
skipFrames: number,
}
agegenderrace: {
enabled: true,
modelPath: 'gear.json',
skipFrames: 1,
},
and enable model loading in models.ts
*/
import { log, join } from '../helpers';
import * as tf from '../../dist/tfjs.esm.js';
import { Config } from '../config';
import { GraphModel, Tensor } from '../tfjs/types';
let model: GraphModel;
let last = { age: 0 };
let skipped = Number.MAX_SAFE_INTEGER;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export async function load(config: Config | any) {
if (!model) {
// @ts-ignore type mismatch on GraphModel
model = await tf.loadGraphModel(join(config.modelBasePath, config.face.agegenderrace.modelPath));
if (!model || !model['modelUrl']) log('load model failed:', config.face.agegenderrace.modelPath);
else if (config.debug) log('load model:', model['modelUrl']);
} else if (config.debug) log('cached model:', model['modelUrl']);
return model;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export async function predict(image: Tensor, config: Config) {
if (!model) return null;
// @ts-ignore config disabled
if ((skipped < config.face.agegenderrace.skipFrames) && config.skipFrame && last.age && (last.age > 0)) {
skipped++;
return last;
}
skipped = 0;
return new Promise(async (resolve) => {
if (!model.inputs[0].shape) return;
const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);
// const enhance = tf.mul(resize, [255.0]);
let ageT;
let genderT;
let raceT;
const obj = { age: 0 };
// @ts-ignore array definition unavailable at compile time
if (config.face.agegenderrace.enabled) [ageT, genderT, raceT] = await model.execute(resize, ['age_output', 'gender_output', 'race_output']);
tf.dispose(resize);
// tf.dispose(enhance);
if (ageT) {
// const data = ageT.dataSync();
// {0: 'below_20', 1: '21-25', 2: '26-30', 3: '31-40',4: '41-50', 5: '51-60', 6: 'Above60'}
}
if (genderT) {
// const data = genderT.dataSync();
}
if (raceT) {
// const data = raceT.dataSync();
// {0: 'white', 1: 'black', 2: 'asian', 3: 'indian', 4: 'others'}
}
tf.dispose(ageT);
tf.dispose(genderT);
tf.dispose(raceT);
last = obj;
resolve(obj);
});
}

View File

@ -336,6 +336,7 @@ export class Human {
log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', true);
this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', 0);
}
// @ts-ignore getGPGPUContext only exists on WebGL backend
const gl = await this.tf.backend().getGPGPUContext().gl;
if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
}

View File

@ -9,6 +9,7 @@ import * as movenet from './movenet/movenet';
import * as nanodet from './object/nanodet';
import * as centernet from './object/centernet';
import * as segmentation from './segmentation/segmentation';
// import * as agegenderrace from './gear/agegenderrace';
/** Load method preloads all instance.configured models on-demand
* - Not explicitly required as any required model is load implicitly on it's first run
@ -39,6 +40,8 @@ export async function load(instance) {
instance.models.faceres,
// @ts-ignore models loaded via promise array cannot be correctly inferred
instance.models.segmentation,
// @ts-ignore models loaded via promise array cannot be correctly inferred
// instance.models.agegenderrace,
] = await Promise.all([
instance.models.face || (instance.config.face.enabled ? facemesh.load(instance.config) : null),
instance.models.emotion || ((instance.config.face.enabled && instance.config.face.emotion.enabled) ? emotion.load(instance.config) : null),
@ -51,6 +54,7 @@ export async function load(instance) {
instance.models.centernet || (instance.config.object.enabled && instance.config.object.modelPath.includes('centernet') ? centernet.load(instance.config) : null),
instance.models.faceres || ((instance.config.face.enabled && instance.config.face.description.enabled) ? faceres.load(instance.config) : null),
instance.models.segmentation || (instance.config.segmentation.enabled ? segmentation.load(instance.config) : null),
// instance.models.agegenderrace || ((instance.config.face.enabled && instance.config.face.agegenderrace.enabled) ? agegenderrace.load(instance.config) : null),
]);
} else { // load models sequentially
if (instance.config.face.enabled && !instance.models.face) instance.models.face = await facemesh.load(instance.config);
@ -64,5 +68,6 @@ export async function load(instance) {
if (instance.config.object.enabled && !instance.models.centernet && instance.config.object.modelPath.includes('centernet')) instance.models.centernet = await centernet.load(instance.config);
if (instance.config.face.enabled && instance.config.face.description.enabled && !instance.models.faceres) instance.models.faceres = await faceres.load(instance.config);
if (instance.config.segmentation.enabled && !instance.models.segmentation) instance.models.segmentation = await segmentation.load(instance.config);
// if (instance.config.face.enabled && instance.config.face.agegenderrace.enabled && !instance.models.agegenderrace) instance.models.agegenderrace = await agegenderrace.load(instance.config);
}
}

View File

@ -1,120 +1,120 @@
2021-07-30 07:16:51 INFO:  @vladmandic/human version 2.1.2
2021-07-30 07:16:51 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-07-30 07:16:51 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-07-30 07:16:51 INFO:  test-node.js start
2021-07-30 07:16:52 STATE: test-node.js passed: create human
2021-07-30 07:16:52 INFO:  test-node.js human version: 2.1.2
2021-07-30 07:16:52 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.0.0
2021-07-30 07:16:52 INFO:  test-node.js tfjs version: 3.8.0
2021-07-30 07:16:53 STATE: test-node.js passed: set backend: tensorflow
2021-07-30 07:16:53 STATE: test-node.js passed: load models
2021-07-30 07:16:53 STATE: test-node.js result: defined models: 14 loaded models: 7
2021-07-30 07:16:53 STATE: test-node.js passed: warmup: none default
2021-07-30 07:16:54 STATE: test-node.js passed: warmup: face default
2021-07-30 07:16:54 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-30 07:16:54 DATA:  test-node.js result: performance: load: 285 total: 1298
2021-07-30 07:16:55 STATE: test-node.js passed: warmup: body default
2021-07-30 07:16:55 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-30 07:16:55 DATA:  test-node.js result: performance: load: 285 total: 1055
2021-07-30 07:16:55 INFO:  test-node.js test body variants
2021-07-30 07:16:56 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:16:57 STATE: test-node.js passed: detect: samples/ai-body.jpg posenet
2021-07-30 07:16:57 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-30 07:16:57 DATA:  test-node.js result: performance: load: 285 total: 732
2021-07-30 07:16:57 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:16:58 STATE: test-node.js passed: detect: samples/ai-body.jpg movenet
2021-07-30 07:16:58 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-30 07:16:58 DATA:  test-node.js result: performance: load: 285 total: 199
2021-07-30 07:16:58 STATE: test-node.js passed: detect: random default
2021-07-30 07:16:58 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0}
2021-07-30 07:16:58 DATA:  test-node.js result: performance: load: 285 total: 583
2021-07-30 07:16:58 INFO:  test-node.js test: first instance
2021-07-30 07:16:59 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-30 07:16:59 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-07-30 07:16:59 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-30 07:16:59 DATA:  test-node.js result: performance: load: 285 total: 857
2021-07-30 07:16:59 INFO:  test-node.js test: second instance
2021-07-30 07:17:00 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-30 07:17:01 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-07-30 07:17:01 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-30 07:17:01 DATA:  test-node.js result: performance: load: 1 total: 841
2021-07-30 07:17:01 INFO:  test-node.js test: concurrent
2021-07-30 07:17:01 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-30 07:17:01 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-30 07:17:02 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:17:02 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:17:06 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-07-30 07:17:06 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-30 07:17:06 DATA:  test-node.js result: performance: load: 285 total: 3647
2021-07-30 07:17:06 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-07-30 07:17:06 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-30 07:17:06 DATA:  test-node.js result: performance: load: 1 total: 3647
2021-07-30 07:17:06 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-07-30 07:17:06 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-30 07:17:06 DATA:  test-node.js result: performance: load: 285 total: 3647
2021-07-30 07:17:06 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-07-30 07:17:06 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-30 07:17:06 DATA:  test-node.js result: performance: load: 1 total: 3647
2021-07-30 07:17:06 INFO:  test-node.js test complete: 13835 ms
2021-07-30 07:17:06 INFO:  test-node-gpu.js start
2021-07-30 07:17:07 WARN:  test-node-gpu.js stderr: 2021-07-30 07:17:07.692969: 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-30 07:17:08 WARN:  test-node-gpu.js stderr: 2021-07-30 07:17:08.019268: 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-30 07:17:08 WARN:  test-node-gpu.js stderr: 2021-07-30 07:17:08.019434: 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-30 07:17:08 STATE: test-node-gpu.js passed: create human
2021-07-30 07:17:08 INFO:  test-node-gpu.js human version: 2.1.2
2021-07-30 07:17:08 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0
2021-07-30 07:17:08 INFO:  test-node-gpu.js tfjs version: 3.8.0
2021-07-30 07:17:08 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-07-30 07:17:08 STATE: test-node-gpu.js passed: load models
2021-07-30 07:17:08 STATE: test-node-gpu.js result: defined models: 14 loaded models: 7
2021-07-30 07:17:08 STATE: test-node-gpu.js passed: warmup: none default
2021-07-30 07:17:09 STATE: test-node-gpu.js passed: warmup: face default
2021-07-30 07:17:09 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-30 07:17:09 DATA:  test-node-gpu.js result: performance: load: 294 total: 1375
2021-07-30 07:17:10 STATE: test-node-gpu.js passed: warmup: body default
2021-07-30 07:17:10 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-30 07:17:10 DATA:  test-node-gpu.js result: performance: load: 294 total: 1066
2021-07-30 07:17:10 INFO:  test-node-gpu.js test body variants
2021-07-30 07:17:11 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:17:12 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
2021-07-30 07:17:12 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-30 07:17:12 DATA:  test-node-gpu.js result: performance: load: 294 total: 738
2021-07-30 07:17:13 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:17:13 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
2021-07-30 07:17:13 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-30 07:17:13 DATA:  test-node-gpu.js result: performance: load: 294 total: 195
2021-07-30 07:17:14 STATE: test-node-gpu.js passed: detect: random default
2021-07-30 07:17:14 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0}
2021-07-30 07:17:14 DATA:  test-node-gpu.js result: performance: load: 294 total: 616
2021-07-30 07:17:14 INFO:  test-node-gpu.js test: first instance
2021-07-30 07:17:14 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-30 07:17:15 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-07-30 07:17:15 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-30 07:17:15 DATA:  test-node-gpu.js result: performance: load: 294 total: 900
2021-07-30 07:17:15 INFO:  test-node-gpu.js test: second instance
2021-07-30 07:17:15 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-07-30 07:17:16 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-07-30 07:17:16 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-30 07:17:16 DATA:  test-node-gpu.js result: performance: load: 4 total: 901
2021-07-30 07:17:16 INFO:  test-node-gpu.js test: concurrent
2021-07-30 07:17:16 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-30 07:17:16 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-07-30 07:17:17 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:17:18 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-07-30 07:17:22 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-07-30 07:17:22 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-30 07:17:22 DATA:  test-node-gpu.js result: performance: load: 294 total: 3775
2021-07-30 07:17:22 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-07-30 07:17:22 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-30 07:17:22 DATA:  test-node-gpu.js result: performance: load: 4 total: 3775
2021-07-30 07:17:22 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-07-30 07:17:22 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-30 07:17:22 DATA:  test-node-gpu.js result: performance: load: 294 total: 3775
2021-07-30 07:17:22 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-07-30 07:17:22 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-30 07:17:22 DATA:  test-node-gpu.js result: performance: load: 4 total: 3775
2021-07-30 07:17:22 INFO:  test-node-gpu.js test complete: 14136 ms
2021-07-30 07:17:22 INFO:  test-node-wasm.js start
2021-07-30 07:17:22 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-30 07:17:22 ERROR: test-node-wasm.js aborting test
2021-07-30 07:17:22 INFO:  status: {"passed":46,"failed":1}
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}

View File

@ -8,7 +8,6 @@
"outDir": "types",
"declaration": true,
"allowSyntheticDefaultImports": true,
"emitDeclarationOnly": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,

2
wiki

@ -1 +1 @@
Subproject commit de0142bceebb460363d28274e1f91d16c0cfbdd0
Subproject commit 0c5c707400b5ebe4780b27e9d6060bc44f6415b8