mirror of https://github.com/vladmandic/human
fix linting and tests
parent
cb3014edc1
commit
b3e8747126
|
@ -24,7 +24,7 @@
|
||||||
"plugin:@typescript-eslint/recommended",
|
"plugin:@typescript-eslint/recommended",
|
||||||
"airbnb-base"
|
"airbnb-base"
|
||||||
],
|
],
|
||||||
"ignorePatterns": [ "dist", "assets", "media", "models", "node_modules" ],
|
"ignorePatterns": [ "dist", "assets", "media", "models", "node_modules", "demo/helpers" ],
|
||||||
"rules": {
|
"rules": {
|
||||||
"@typescript-eslint/ban-ts-comment": "off",
|
"@typescript-eslint/ban-ts-comment": "off",
|
||||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
"@typescript-eslint/explicit-module-boundary-types": "off",
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
node_modules
|
||||||
|
private
|
||||||
|
pnpm-lock.yaml
|
19
README.md
19
README.md
|
@ -1,8 +1,9 @@
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|

|
||||||
|
|
||||||
# Human Library
|
# Human Library
|
||||||
|
|
||||||
|
@ -177,6 +178,8 @@ and [**API Specification**](https://vladmandic.github.io/human/typedoc/classes/h
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|

|
||||||
|

|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
"dev": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",
|
"dev": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",
|
||||||
"build": "rimraf dist/* typedoc/* types/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",
|
"build": "rimraf dist/* typedoc/* types/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",
|
||||||
"lint": "eslint src server demo",
|
"lint": "eslint src server demo",
|
||||||
"test": "npm run lint && npm run start"
|
"test": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation test/test-node.js"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"tensorflowjs",
|
"tensorflowjs",
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
const log = require('@vladmandic/pilogger');
|
||||||
|
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
||||||
|
const tf = require('@tensorflow/tfjs-node');
|
||||||
|
const Human = require('../dist/human.node.js').default;
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
backend: 'tensorflow',
|
||||||
|
debug: false,
|
||||||
|
videoOptimized: false,
|
||||||
|
async: false,
|
||||||
|
warmup: 'full',
|
||||||
|
filter: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
face: {
|
||||||
|
enabled: true,
|
||||||
|
detector: { modelPath: 'file://models/blazeface-back.json', enabled: true, rotation: false },
|
||||||
|
mesh: { modelPath: 'file://models/facemesh.json', enabled: true },
|
||||||
|
iris: { modelPath: 'file://models/iris.json', enabled: true },
|
||||||
|
description: { modelPath: 'file://models/faceres.json', enabled: true },
|
||||||
|
emotion: { modelPath: 'file://models/emotion.json', enabled: true },
|
||||||
|
},
|
||||||
|
hand: {
|
||||||
|
enabled: true,
|
||||||
|
detector: { modelPath: 'file://models/handdetect.json' },
|
||||||
|
skeleton: { modelPath: 'file://models/handskeleton.json' },
|
||||||
|
},
|
||||||
|
// body: { modelPath: 'file://models/efficientpose.json', enabled: true },
|
||||||
|
// body: { modelPath: 'file://models/blazepose.json', enabled: true },
|
||||||
|
body: { modelPath: 'file://models/posenet.json', enabled: true },
|
||||||
|
object: { modelPath: 'file://models/nanodet.json', enabled: true },
|
||||||
|
};
|
||||||
|
|
||||||
|
async function test() {
|
||||||
|
const human = new Human(config);
|
||||||
|
if (human) log.state('passed: create human');
|
||||||
|
else log.error('failed: create human');
|
||||||
|
|
||||||
|
await human.load();
|
||||||
|
if (human.models) {
|
||||||
|
log.state('passed: load models');
|
||||||
|
const keys = Object.keys(human.models);
|
||||||
|
const loaded = keys.filter((model) => human.models[model]);
|
||||||
|
log.data(' result: defined models:', keys.length, 'loaded models:', loaded.length);
|
||||||
|
} else {
|
||||||
|
log.error('failed: load models');
|
||||||
|
}
|
||||||
|
|
||||||
|
const warmup = await human.warmup();
|
||||||
|
if (warmup) {
|
||||||
|
log.state('passed: warmup:', config.warmup);
|
||||||
|
log.data(' result: face:', warmup.face.length, 'body:', warmup.body.length, 'hand:', warmup.hand.length, 'gesture:', warmup.gesture.length, 'object:', warmup.object.length);
|
||||||
|
log.data(' result: performance:', 'load:', warmup.performance.load, 'total:', warmup.performance.total);
|
||||||
|
} else {
|
||||||
|
log.error('failed: warmup');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test();
|
Loading…
Reference in New Issue