mirror of https://github.com/vladmandic/human
update build process to remove warnings
parent
e86a4cb435
commit
fc6873c092
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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)) {
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -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)) {
|
||||
|
|
10
package.json
10
package.json
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
2021-07-30 07:15:56 [36mINFO: [39m @vladmandic/human version 2.1.2
|
||||
2021-07-30 07:15:56 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v16.0.0
|
||||
2021-07-30 07:15:56 [36mINFO: [39m 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 [36mINFO: [39m Clean: ["dist/*","types/*","typedoc/*"]
|
||||
2021-07-30 07:15:56 [36mINFO: [39m Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1303,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: node type: node: {"imports":42,"importBytes":434230,"outputBytes":377710,"outputFiles":"dist/human.node.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1311,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: nodeGPU type: node: {"imports":42,"importBytes":434238,"outputBytes":377714,"outputFiles":"dist/human.node-gpu.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1378,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: nodeWASM type: node: {"imports":42,"importBytes":434305,"outputBytes":377786,"outputFiles":"dist/human.node-wasm.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2111,"outputBytes":1242,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m target: browserNoBundle type: esm: {"imports":42,"importBytes":434169,"outputBytes":247939,"outputFiles":"dist/human.esm-nobundle.js"}
|
||||
2021-07-30 07:15:56 [35mSTATE:[39m 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 [35mSTATE:[39m target: browserBundle type: iife: {"imports":42,"importBytes":2767628,"outputBytes":1378402,"outputFiles":"dist/human.js"}
|
||||
2021-07-30 07:15:57 [35mSTATE:[39m target: browserBundle type: esm: {"imports":42,"importBytes":2767628,"outputBytes":1378394,"outputFiles":"dist/human.esm.js"}
|
||||
2021-07-30 07:15:57 [36mINFO: [39m Running Linter: ["server/","src/","tfjs/","test/","demo/"]
|
||||
2021-07-30 07:16:20 [36mINFO: [39m Linter complete: files: 74 errors: 0 warnings: 0
|
||||
2021-07-30 07:16:20 [36mINFO: [39m Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
|
||||
2021-07-30 07:16:20 [36mINFO: [39m Generate Typings: ["src/human.ts"] outDir: ["types"]
|
||||
2021-07-30 07:16:34 [36mINFO: [39m Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
|
||||
2021-07-30 07:16:47 [36mINFO: [39m Documentation generated at /home/vlado/dev/human/typedoc 1
|
||||
2021-07-31 20:38:26 [36mINFO: [39m @vladmandic/human version 2.1.2
|
||||
2021-07-31 20:38:26 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v16.5.0
|
||||
2021-07-31 20:38:26 [36mINFO: [39m 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 [36mINFO: [39m Clean: ["dist/*","types/*","typedoc/*"]
|
||||
2021-07-31 20:38:27 [36mINFO: [39m Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1303,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: node type: node: {"imports":42,"importBytes":435502,"outputBytes":377743,"outputFiles":"dist/human.node.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1311,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: nodeGPU type: node: {"imports":42,"importBytes":435510,"outputBytes":377747,"outputFiles":"dist/human.node-gpu.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1378,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: nodeWASM type: node: {"imports":42,"importBytes":435577,"outputBytes":377819,"outputFiles":"dist/human.node-wasm.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2111,"outputBytes":1242,"outputFiles":"dist/tfjs.esm.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m target: browserNoBundle type: esm: {"imports":42,"importBytes":435441,"outputBytes":247945,"outputFiles":"dist/human.esm-nobundle.js"}
|
||||
2021-07-31 20:38:27 [35mSTATE:[39m 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 [35mSTATE:[39m target: browserBundle type: iife: {"imports":42,"importBytes":2768900,"outputBytes":1378408,"outputFiles":"dist/human.js"}
|
||||
2021-07-31 20:38:28 [35mSTATE:[39m target: browserBundle type: esm: {"imports":42,"importBytes":2768900,"outputBytes":1378400,"outputFiles":"dist/human.esm.js"}
|
||||
2021-07-31 20:38:28 [36mINFO: [39m Running Linter: ["server/","src/","tfjs/","test/","demo/"]
|
||||
2021-07-31 20:38:50 [36mINFO: [39m Linter complete: files: 75 errors: 0 warnings: 0
|
||||
2021-07-31 20:38:50 [36mINFO: [39m Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
|
||||
2021-07-31 20:38:50 [36mINFO: [39m Generate Typings: ["src/human.ts"] outDir: ["types"]
|
||||
2021-07-31 20:39:03 [36mINFO: [39m Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
|
||||
2021-07-31 20:39:16 [36mINFO: [39m Documentation generated at /home/vlado/dev/human/typedoc 1
|
||||
|
|
|
@ -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);
|
||||
|
|
17
src/face.ts
17
src/face.ts
|
@ -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:');
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
|
@ -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)}`);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
240
test/test.log
240
test/test.log
|
@ -1,120 +1,120 @@
|
|||
2021-07-30 07:16:51 [36mINFO: [39m @vladmandic/human version 2.1.2
|
||||
2021-07-30 07:16:51 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v16.0.0
|
||||
2021-07-30 07:16:51 [36mINFO: [39m tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
|
||||
2021-07-30 07:16:51 [36mINFO: [39m test-node.js start
|
||||
2021-07-30 07:16:52 [35mSTATE:[39m test-node.js passed: create human
|
||||
2021-07-30 07:16:52 [36mINFO: [39m test-node.js human version: 2.1.2
|
||||
2021-07-30 07:16:52 [36mINFO: [39m test-node.js platform: linux x64 agent: NodeJS v16.0.0
|
||||
2021-07-30 07:16:52 [36mINFO: [39m test-node.js tfjs version: 3.8.0
|
||||
2021-07-30 07:16:53 [35mSTATE:[39m test-node.js passed: set backend: tensorflow
|
||||
2021-07-30 07:16:53 [35mSTATE:[39m test-node.js passed: load models
|
||||
2021-07-30 07:16:53 [35mSTATE:[39m test-node.js result: defined models: 14 loaded models: 7
|
||||
2021-07-30 07:16:53 [35mSTATE:[39m test-node.js passed: warmup: none default
|
||||
2021-07-30 07:16:54 [35mSTATE:[39m test-node.js passed: warmup: face default
|
||||
2021-07-30 07:16:54 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 1298
|
||||
2021-07-30 07:16:55 [35mSTATE:[39m test-node.js passed: warmup: body default
|
||||
2021-07-30 07:16:55 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 1055
|
||||
2021-07-30 07:16:55 [36mINFO: [39m test-node.js test body variants
|
||||
2021-07-30 07:16:56 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:16:57 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-07-30 07:16:57 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 732
|
||||
2021-07-30 07:16:57 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:16:58 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-07-30 07:16:58 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 199
|
||||
2021-07-30 07:16:58 [35mSTATE:[39m test-node.js passed: detect: random default
|
||||
2021-07-30 07:16:58 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 583
|
||||
2021-07-30 07:16:58 [36mINFO: [39m test-node.js test: first instance
|
||||
2021-07-30 07:16:59 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-30 07:16:59 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-30 07:16:59 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 857
|
||||
2021-07-30 07:16:59 [36mINFO: [39m test-node.js test: second instance
|
||||
2021-07-30 07:17:00 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-30 07:17:01 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-30 07:17:01 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 1 total: 841
|
||||
2021-07-30 07:17:01 [36mINFO: [39m test-node.js test: concurrent
|
||||
2021-07-30 07:17:01 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-30 07:17:01 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-30 07:17:02 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:17:02 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:17:06 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-30 07:17:06 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 3647
|
||||
2021-07-30 07:17:06 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-30 07:17:06 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 1 total: 3647
|
||||
2021-07-30 07:17:06 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-30 07:17:06 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 285 total: 3647
|
||||
2021-07-30 07:17:06 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-30 07:17:06 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 1 total: 3647
|
||||
2021-07-30 07:17:06 [36mINFO: [39m test-node.js test complete: 13835 ms
|
||||
2021-07-30 07:17:06 [36mINFO: [39m test-node-gpu.js start
|
||||
2021-07-30 07:17:07 [33mWARN: [39m 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 [33mWARN: [39m 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 [33mWARN: [39m 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 [35mSTATE:[39m test-node-gpu.js passed: create human
|
||||
2021-07-30 07:17:08 [36mINFO: [39m test-node-gpu.js human version: 2.1.2
|
||||
2021-07-30 07:17:08 [36mINFO: [39m test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0
|
||||
2021-07-30 07:17:08 [36mINFO: [39m test-node-gpu.js tfjs version: 3.8.0
|
||||
2021-07-30 07:17:08 [35mSTATE:[39m test-node-gpu.js passed: set backend: tensorflow
|
||||
2021-07-30 07:17:08 [35mSTATE:[39m test-node-gpu.js passed: load models
|
||||
2021-07-30 07:17:08 [35mSTATE:[39m test-node-gpu.js result: defined models: 14 loaded models: 7
|
||||
2021-07-30 07:17:08 [35mSTATE:[39m test-node-gpu.js passed: warmup: none default
|
||||
2021-07-30 07:17:09 [35mSTATE:[39m test-node-gpu.js passed: warmup: face default
|
||||
2021-07-30 07:17:09 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 1375
|
||||
2021-07-30 07:17:10 [35mSTATE:[39m test-node-gpu.js passed: warmup: body default
|
||||
2021-07-30 07:17:10 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 1066
|
||||
2021-07-30 07:17:10 [36mINFO: [39m test-node-gpu.js test body variants
|
||||
2021-07-30 07:17:11 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:17:12 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-07-30 07:17:12 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 738
|
||||
2021-07-30 07:17:13 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:17:13 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-07-30 07:17:13 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 195
|
||||
2021-07-30 07:17:14 [35mSTATE:[39m test-node-gpu.js passed: detect: random default
|
||||
2021-07-30 07:17:14 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 616
|
||||
2021-07-30 07:17:14 [36mINFO: [39m test-node-gpu.js test: first instance
|
||||
2021-07-30 07:17:14 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-30 07:17:15 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-30 07:17:15 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 900
|
||||
2021-07-30 07:17:15 [36mINFO: [39m test-node-gpu.js test: second instance
|
||||
2021-07-30 07:17:15 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-30 07:17:16 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-30 07:17:16 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 4 total: 901
|
||||
2021-07-30 07:17:16 [36mINFO: [39m test-node-gpu.js test: concurrent
|
||||
2021-07-30 07:17:16 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-30 07:17:16 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-30 07:17:17 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:17:18 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-30 07:17:22 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-30 07:17:22 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 3775
|
||||
2021-07-30 07:17:22 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-30 07:17:22 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 4 total: 3775
|
||||
2021-07-30 07:17:22 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-30 07:17:22 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 294 total: 3775
|
||||
2021-07-30 07:17:22 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-30 07:17:22 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 4 total: 3775
|
||||
2021-07-30 07:17:22 [36mINFO: [39m test-node-gpu.js test complete: 14136 ms
|
||||
2021-07-30 07:17:22 [36mINFO: [39m test-node-wasm.js start
|
||||
2021-07-30 07:17:22 [31mERROR:[39m 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 [31mERROR:[39m test-node-wasm.js aborting test
|
||||
2021-07-30 07:17:22 [36mINFO: [39m status: {"passed":46,"failed":1}
|
||||
2021-07-31 20:40:15 [36mINFO: [39m @vladmandic/human version 2.1.2
|
||||
2021-07-31 20:40:15 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v16.5.0
|
||||
2021-07-31 20:40:15 [36mINFO: [39m tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
|
||||
2021-07-31 20:40:15 [36mINFO: [39m test-node.js start
|
||||
2021-07-31 20:40:16 [35mSTATE:[39m test-node.js passed: create human
|
||||
2021-07-31 20:40:16 [36mINFO: [39m test-node.js human version: 2.1.2
|
||||
2021-07-31 20:40:16 [36mINFO: [39m test-node.js platform: linux x64 agent: NodeJS v16.5.0
|
||||
2021-07-31 20:40:16 [36mINFO: [39m test-node.js tfjs version: 3.8.0
|
||||
2021-07-31 20:40:16 [35mSTATE:[39m test-node.js passed: set backend: tensorflow
|
||||
2021-07-31 20:40:16 [35mSTATE:[39m test-node.js passed: load models
|
||||
2021-07-31 20:40:16 [35mSTATE:[39m test-node.js result: defined models: 14 loaded models: 7
|
||||
2021-07-31 20:40:16 [35mSTATE:[39m test-node.js passed: warmup: none default
|
||||
2021-07-31 20:40:17 [35mSTATE:[39m test-node.js passed: warmup: face default
|
||||
2021-07-31 20:40:17 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 1216
|
||||
2021-07-31 20:40:19 [35mSTATE:[39m test-node.js passed: warmup: body default
|
||||
2021-07-31 20:40:19 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 1074
|
||||
2021-07-31 20:40:19 [36mINFO: [39m test-node.js test body variants
|
||||
2021-07-31 20:40:19 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:20 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-07-31 20:40:20 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 698
|
||||
2021-07-31 20:40:21 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:21 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-07-31 20:40:21 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 192
|
||||
2021-07-31 20:40:22 [35mSTATE:[39m test-node.js passed: detect: random default
|
||||
2021-07-31 20:40:22 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 160
|
||||
2021-07-31 20:40:22 [36mINFO: [39m test-node.js test: first instance
|
||||
2021-07-31 20:40:22 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-31 20:40:22 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-31 20:40:22 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 135
|
||||
2021-07-31 20:40:22 [36mINFO: [39m test-node.js test: second instance
|
||||
2021-07-31 20:40:22 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-31 20:40:23 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-31 20:40:23 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 4 total: 998
|
||||
2021-07-31 20:40:23 [36mINFO: [39m test-node.js test: concurrent
|
||||
2021-07-31 20:40:23 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-31 20:40:23 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-31 20:40:24 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:25 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:29 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-31 20:40:29 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 3763
|
||||
2021-07-31 20:40:29 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-31 20:40:29 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 4 total: 3763
|
||||
2021-07-31 20:40:29 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-31 20:40:29 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 371 total: 3763
|
||||
2021-07-31 20:40:29 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-31 20:40:29 [32mDATA: [39m 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 [32mDATA: [39m test-node.js result: performance: load: 4 total: 3763
|
||||
2021-07-31 20:40:29 [36mINFO: [39m test-node.js test complete: 12980 ms
|
||||
2021-07-31 20:40:29 [36mINFO: [39m test-node-gpu.js start
|
||||
2021-07-31 20:40:30 [33mWARN: [39m 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 [33mWARN: [39m 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 [33mWARN: [39m 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 [35mSTATE:[39m test-node-gpu.js passed: create human
|
||||
2021-07-31 20:40:30 [36mINFO: [39m test-node-gpu.js human version: 2.1.2
|
||||
2021-07-31 20:40:30 [36mINFO: [39m test-node-gpu.js platform: linux x64 agent: NodeJS v16.5.0
|
||||
2021-07-31 20:40:30 [36mINFO: [39m test-node-gpu.js tfjs version: 3.8.0
|
||||
2021-07-31 20:40:30 [35mSTATE:[39m test-node-gpu.js passed: set backend: tensorflow
|
||||
2021-07-31 20:40:30 [35mSTATE:[39m test-node-gpu.js passed: load models
|
||||
2021-07-31 20:40:30 [35mSTATE:[39m test-node-gpu.js result: defined models: 14 loaded models: 7
|
||||
2021-07-31 20:40:30 [35mSTATE:[39m test-node-gpu.js passed: warmup: none default
|
||||
2021-07-31 20:40:31 [35mSTATE:[39m test-node-gpu.js passed: warmup: face default
|
||||
2021-07-31 20:40:31 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 1259
|
||||
2021-07-31 20:40:33 [35mSTATE:[39m test-node-gpu.js passed: warmup: body default
|
||||
2021-07-31 20:40:33 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 1089
|
||||
2021-07-31 20:40:33 [36mINFO: [39m test-node-gpu.js test body variants
|
||||
2021-07-31 20:40:33 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:34 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-07-31 20:40:34 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 735
|
||||
2021-07-31 20:40:35 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:35 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-07-31 20:40:35 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 209
|
||||
2021-07-31 20:40:36 [35mSTATE:[39m test-node-gpu.js passed: detect: random default
|
||||
2021-07-31 20:40:36 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 618
|
||||
2021-07-31 20:40:36 [36mINFO: [39m test-node-gpu.js test: first instance
|
||||
2021-07-31 20:40:36 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-31 20:40:37 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-31 20:40:37 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 920
|
||||
2021-07-31 20:40:37 [36mINFO: [39m test-node-gpu.js test: second instance
|
||||
2021-07-31 20:40:37 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
|
||||
2021-07-31 20:40:38 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-07-31 20:40:38 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 980
|
||||
2021-07-31 20:40:38 [36mINFO: [39m test-node-gpu.js test: concurrent
|
||||
2021-07-31 20:40:38 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-31 20:40:39 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
|
||||
2021-07-31 20:40:39 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:40 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
|
||||
2021-07-31 20:40:44 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-31 20:40:44 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 3873
|
||||
2021-07-31 20:40:44 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-07-31 20:40:44 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 3873
|
||||
2021-07-31 20:40:44 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-31 20:40:44 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 327 total: 3873
|
||||
2021-07-31 20:40:44 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-07-31 20:40:44 [32mDATA: [39m 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 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 3873
|
||||
2021-07-31 20:40:44 [36mINFO: [39m test-node-gpu.js test complete: 14415 ms
|
||||
2021-07-31 20:40:44 [36mINFO: [39m test-node-wasm.js start
|
||||
2021-07-31 20:40:44 [31mERROR:[39m 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 [31mERROR:[39m test-node-wasm.js aborting test
|
||||
2021-07-31 20:40:44 [36mINFO: [39m status: {"passed":46,"failed":1}
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
"outDir": "types",
|
||||
"declaration": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"emitDeclarationOnly": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"importHelpers": true,
|
||||
|
|
2
wiki
2
wiki
|
@ -1 +1 @@
|
|||
Subproject commit de0142bceebb460363d28274e1f91d16c0cfbdd0
|
||||
Subproject commit 0c5c707400b5ebe4780b27e9d6060bc44f6415b8
|
Loading…
Reference in New Issue