rebuild all for release

pull/134/head
Vladimir Mandic 2021-05-22 13:17:07 -04:00
parent beb099e911
commit 4c14bcd80e
37 changed files with 4758 additions and 226405 deletions

View File

@ -1,6 +1,6 @@
# @vladmandic/human # @vladmandic/human
Version: **1.9.1** Version: **1.9.2**
Description: **Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gesture Recognition** Description: **Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gesture Recognition**
Author: **Vladimir Mandic <mandic00@live.com>** Author: **Vladimir Mandic <mandic00@live.com>**
@ -9,7 +9,12 @@ Repository: **<git+https://github.com/vladmandic/human.git>**
## Changelog ## Changelog
### **HEAD -> main** 2021/05/21 mandic00@live.com ### **1.9.2** 2021/05/22 mandic00@live.com
- add id and boxraw on missing objects
- restructure results strong typing
### **origin/main** 2021/05/21 mandic00@live.com
### **1.9.1** 2021/05/21 mandic00@live.com ### **1.9.1** 2021/05/21 mandic00@live.com

View File

@ -6,7 +6,7 @@ N/A
## Exploring Features ## Exploring Features
- Output interpolation for draw - drawOptions.bufferedOutput: Output interpolation for draw
## Explore Models ## Explore Models

File diff suppressed because one or more lines are too long

View File

@ -9,7 +9,7 @@ import webRTC from './helpers/webrtc.js';
let human; let human;
const userConfig = { const userConfig = {
warmup: 'full', warmup: 'none',
/* /*
backend: 'webgl', backend: 'webgl',
async: false, async: false,
@ -47,6 +47,7 @@ const ui = {
modelsPreload: true, // preload human models on startup modelsPreload: true, // preload human models on startup
modelsWarmup: true, // warmup human models on startup modelsWarmup: true, // warmup human models on startup
buffered: true, // should output be buffered between frames buffered: true, // should output be buffered between frames
iconSize: '48px', // ui icon sizes
// internal variables // internal variables
busy: false, // internal camera busy flag busy: false, // internal camera busy flag
@ -222,11 +223,14 @@ async function drawResults(input) {
} }
// draw all results // draw all results
human.draw.all(canvas, result);
/* use individual functions
human.draw.face(canvas, result.face); human.draw.face(canvas, result.face);
human.draw.body(canvas, result.body); human.draw.body(canvas, result.body);
human.draw.hand(canvas, result.hand); human.draw.hand(canvas, result.hand);
human.draw.object(canvas, result.object); human.draw.object(canvas, result.object);
human.draw.gesture(canvas, result.gesture); human.draw.gesture(canvas, result.gesture);
*/
await calcSimmilariry(result); await calcSimmilariry(result);
// update log // update log
@ -653,6 +657,8 @@ async function main() {
log('demo starting ...'); log('demo starting ...');
document.documentElement.style.setProperty('--icon-size', ui.iconSize);
// parse url search params // parse url search params
const params = new URLSearchParams(location.search); const params = new URLSearchParams(location.search);
log('url options:', params.toString()); log('url options:', params.toString());

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

75903
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

75909
dist/human.js vendored

File diff suppressed because one or more lines are too long

View File

@ -18401,10 +18401,11 @@ var options = {
fillPolygons: false, fillPolygons: false,
useDepth: true, useDepth: true,
useCurves: false, useCurves: false,
bufferedOutput: true, bufferedOutput: false,
useRawBoxes: false, useRawBoxes: false,
calculateHandBox: true calculateHandBox: true
}; };
var bufferedResult;
function point(ctx, x, y, z = 0, localOptions) { function point(ctx, x, y, z = 0, localOptions) {
ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + 2 * z}, ${127.5 - 2 * z}, 255, 0.3)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + 2 * z}, ${127.5 - 2 * z}, 255, 0.3)` : localOptions.color;
ctx.beginPath(); ctx.beginPath();
@ -18587,7 +18588,6 @@ async function face2(inCanvas2, result, drawOptions) {
} }
} }
} }
var lastDrawnPose = [];
async function body2(inCanvas2, result, drawOptions) { async function body2(inCanvas2, result, drawOptions) {
var _a; var _a;
const localOptions = mergeDeep(options, drawOptions); const localOptions = mergeDeep(options, drawOptions);
@ -18600,8 +18600,6 @@ async function body2(inCanvas2, result, drawOptions) {
return; return;
ctx.lineJoin = "round"; ctx.lineJoin = "round";
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
if (!lastDrawnPose[i] && localOptions.bufferedOutput)
lastDrawnPose[i] = { ...result[i] };
ctx.strokeStyle = localOptions.color; ctx.strokeStyle = localOptions.color;
ctx.fillStyle = localOptions.color; ctx.fillStyle = localOptions.color;
ctx.lineWidth = localOptions.lineWidth; ctx.lineWidth = localOptions.lineWidth;
@ -18620,13 +18618,7 @@ async function body2(inCanvas2, result, drawOptions) {
if (localOptions.drawPoints) { if (localOptions.drawPoints) {
for (let pt = 0; pt < result[i].keypoints.length; pt++) { for (let pt = 0; pt < result[i].keypoints.length; pt++) {
ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + 2 * result[i].keypoints[pt].position.z}, ${127.5 - 2 * result[i].keypoints[pt].position.z}, 255, 0.5)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + 2 * result[i].keypoints[pt].position.z}, ${127.5 - 2 * result[i].keypoints[pt].position.z}, 255, 0.5)` : localOptions.color;
if (localOptions.bufferedOutput) { point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;
lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;
point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1], 0, localOptions);
} else {
point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
}
} }
} }
if (localOptions.drawLabels) { if (localOptions.drawLabels) {
@ -18866,11 +18858,17 @@ async function all(inCanvas2, result, drawOptions) {
return; return;
if (!(inCanvas2 instanceof HTMLCanvasElement)) if (!(inCanvas2 instanceof HTMLCanvasElement))
return; return;
face2(inCanvas2, result.face, localOptions); if (localOptions.bufferedOutput) {
body2(inCanvas2, result.body, localOptions); if (result.timestamp !== (bufferedResult == null ? void 0 : bufferedResult.timestamp))
hand2(inCanvas2, result.hand, localOptions); bufferedResult = result;
gesture(inCanvas2, result.gesture, localOptions); } else {
object(inCanvas2, result.object, localOptions); bufferedResult = result;
}
face2(inCanvas2, bufferedResult.face, localOptions);
body2(inCanvas2, bufferedResult.body, localOptions);
hand2(inCanvas2, bufferedResult.hand, localOptions);
gesture(inCanvas2, bufferedResult.gesture, localOptions);
object(inCanvas2, bufferedResult.object, localOptions);
} }
// src/sample.ts // src/sample.ts
@ -19597,7 +19595,7 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
2Q==`; 2Q==`;
// package.json // package.json
var version = "1.9.1"; var version = "1.9.2";
// src/human.ts // src/human.ts
var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _lastInputSum, _lastCacheDiff, _sanity, _checkBackend, _skipFrame, _warmupBitmap, _warmupCanvas, _warmupNode; var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _lastInputSum, _lastCacheDiff, _sanity, _checkBackend, _skipFrame, _warmupBitmap, _warmupCanvas, _warmupNode;

View File

@ -18402,10 +18402,11 @@ var options = {
fillPolygons: false, fillPolygons: false,
useDepth: true, useDepth: true,
useCurves: false, useCurves: false,
bufferedOutput: true, bufferedOutput: false,
useRawBoxes: false, useRawBoxes: false,
calculateHandBox: true calculateHandBox: true
}; };
var bufferedResult;
function point(ctx, x, y, z = 0, localOptions) { function point(ctx, x, y, z = 0, localOptions) {
ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + 2 * z}, ${127.5 - 2 * z}, 255, 0.3)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + 2 * z}, ${127.5 - 2 * z}, 255, 0.3)` : localOptions.color;
ctx.beginPath(); ctx.beginPath();
@ -18588,7 +18589,6 @@ async function face2(inCanvas2, result, drawOptions) {
} }
} }
} }
var lastDrawnPose = [];
async function body2(inCanvas2, result, drawOptions) { async function body2(inCanvas2, result, drawOptions) {
var _a; var _a;
const localOptions = mergeDeep(options, drawOptions); const localOptions = mergeDeep(options, drawOptions);
@ -18601,8 +18601,6 @@ async function body2(inCanvas2, result, drawOptions) {
return; return;
ctx.lineJoin = "round"; ctx.lineJoin = "round";
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
if (!lastDrawnPose[i] && localOptions.bufferedOutput)
lastDrawnPose[i] = { ...result[i] };
ctx.strokeStyle = localOptions.color; ctx.strokeStyle = localOptions.color;
ctx.fillStyle = localOptions.color; ctx.fillStyle = localOptions.color;
ctx.lineWidth = localOptions.lineWidth; ctx.lineWidth = localOptions.lineWidth;
@ -18621,13 +18619,7 @@ async function body2(inCanvas2, result, drawOptions) {
if (localOptions.drawPoints) { if (localOptions.drawPoints) {
for (let pt = 0; pt < result[i].keypoints.length; pt++) { for (let pt = 0; pt < result[i].keypoints.length; pt++) {
ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + 2 * result[i].keypoints[pt].position.z}, ${127.5 - 2 * result[i].keypoints[pt].position.z}, 255, 0.5)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + 2 * result[i].keypoints[pt].position.z}, ${127.5 - 2 * result[i].keypoints[pt].position.z}, 255, 0.5)` : localOptions.color;
if (localOptions.bufferedOutput) { point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;
lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;
point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1], 0, localOptions);
} else {
point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
}
} }
} }
if (localOptions.drawLabels) { if (localOptions.drawLabels) {
@ -18867,11 +18859,17 @@ async function all(inCanvas2, result, drawOptions) {
return; return;
if (!(inCanvas2 instanceof HTMLCanvasElement)) if (!(inCanvas2 instanceof HTMLCanvasElement))
return; return;
face2(inCanvas2, result.face, localOptions); if (localOptions.bufferedOutput) {
body2(inCanvas2, result.body, localOptions); if (result.timestamp !== (bufferedResult == null ? void 0 : bufferedResult.timestamp))
hand2(inCanvas2, result.hand, localOptions); bufferedResult = result;
gesture(inCanvas2, result.gesture, localOptions); } else {
object(inCanvas2, result.object, localOptions); bufferedResult = result;
}
face2(inCanvas2, bufferedResult.face, localOptions);
body2(inCanvas2, bufferedResult.body, localOptions);
hand2(inCanvas2, bufferedResult.hand, localOptions);
gesture(inCanvas2, bufferedResult.gesture, localOptions);
object(inCanvas2, bufferedResult.object, localOptions);
} }
// src/sample.ts // src/sample.ts
@ -19598,7 +19596,7 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
2Q==`; 2Q==`;
// package.json // package.json
var version = "1.9.1"; var version = "1.9.2";
// src/human.ts // src/human.ts
var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _lastInputSum, _lastCacheDiff, _sanity, _checkBackend, _skipFrame, _warmupBitmap, _warmupCanvas, _warmupNode; var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _lastInputSum, _lastCacheDiff, _sanity, _checkBackend, _skipFrame, _warmupBitmap, _warmupCanvas, _warmupNode;

32
dist/human.node.js vendored
View File

@ -18401,10 +18401,11 @@ var options = {
fillPolygons: false, fillPolygons: false,
useDepth: true, useDepth: true,
useCurves: false, useCurves: false,
bufferedOutput: true, bufferedOutput: false,
useRawBoxes: false, useRawBoxes: false,
calculateHandBox: true calculateHandBox: true
}; };
var bufferedResult;
function point(ctx, x, y, z = 0, localOptions) { function point(ctx, x, y, z = 0, localOptions) {
ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + 2 * z}, ${127.5 - 2 * z}, 255, 0.3)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + 2 * z}, ${127.5 - 2 * z}, 255, 0.3)` : localOptions.color;
ctx.beginPath(); ctx.beginPath();
@ -18587,7 +18588,6 @@ async function face2(inCanvas2, result, drawOptions) {
} }
} }
} }
var lastDrawnPose = [];
async function body2(inCanvas2, result, drawOptions) { async function body2(inCanvas2, result, drawOptions) {
var _a; var _a;
const localOptions = mergeDeep(options, drawOptions); const localOptions = mergeDeep(options, drawOptions);
@ -18600,8 +18600,6 @@ async function body2(inCanvas2, result, drawOptions) {
return; return;
ctx.lineJoin = "round"; ctx.lineJoin = "round";
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
if (!lastDrawnPose[i] && localOptions.bufferedOutput)
lastDrawnPose[i] = { ...result[i] };
ctx.strokeStyle = localOptions.color; ctx.strokeStyle = localOptions.color;
ctx.fillStyle = localOptions.color; ctx.fillStyle = localOptions.color;
ctx.lineWidth = localOptions.lineWidth; ctx.lineWidth = localOptions.lineWidth;
@ -18620,13 +18618,7 @@ async function body2(inCanvas2, result, drawOptions) {
if (localOptions.drawPoints) { if (localOptions.drawPoints) {
for (let pt = 0; pt < result[i].keypoints.length; pt++) { for (let pt = 0; pt < result[i].keypoints.length; pt++) {
ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + 2 * result[i].keypoints[pt].position.z}, ${127.5 - 2 * result[i].keypoints[pt].position.z}, 255, 0.5)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + 2 * result[i].keypoints[pt].position.z}, ${127.5 - 2 * result[i].keypoints[pt].position.z}, 255, 0.5)` : localOptions.color;
if (localOptions.bufferedOutput) { point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;
lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;
point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1], 0, localOptions);
} else {
point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
}
} }
} }
if (localOptions.drawLabels) { if (localOptions.drawLabels) {
@ -18866,11 +18858,17 @@ async function all(inCanvas2, result, drawOptions) {
return; return;
if (!(inCanvas2 instanceof HTMLCanvasElement)) if (!(inCanvas2 instanceof HTMLCanvasElement))
return; return;
face2(inCanvas2, result.face, localOptions); if (localOptions.bufferedOutput) {
body2(inCanvas2, result.body, localOptions); if (result.timestamp !== (bufferedResult == null ? void 0 : bufferedResult.timestamp))
hand2(inCanvas2, result.hand, localOptions); bufferedResult = result;
gesture(inCanvas2, result.gesture, localOptions); } else {
object(inCanvas2, result.object, localOptions); bufferedResult = result;
}
face2(inCanvas2, bufferedResult.face, localOptions);
body2(inCanvas2, bufferedResult.body, localOptions);
hand2(inCanvas2, bufferedResult.hand, localOptions);
gesture(inCanvas2, bufferedResult.gesture, localOptions);
object(inCanvas2, bufferedResult.object, localOptions);
} }
// src/sample.ts // src/sample.ts
@ -19597,7 +19595,7 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
2Q==`; 2Q==`;
// package.json // package.json
var version = "1.9.1"; var version = "1.9.2";
// src/human.ts // src/human.ts
var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _lastInputSum, _lastCacheDiff, _sanity, _checkBackend, _skipFrame, _warmupBitmap, _warmupCanvas, _warmupNode; var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _lastInputSum, _lastCacheDiff, _sanity, _checkBackend, _skipFrame, _warmupBitmap, _warmupCanvas, _warmupNode;

59191
dist/tfjs.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

View File

@ -1,85 +1,17 @@
2021-05-21 06:52:07 INFO:  @vladmandic/human version 1.9.1 2021-05-22 13:15:16 INFO:  @vladmandic/human version 1.9.2
2021-05-21 06:52:07 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0 2021-05-22 13:15:16 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-21 06:52:07 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true} 2021-05-22 13:15:16 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-05-21 06:52:07 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"} 2021-05-22 13:15:16 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"}
2021-05-21 06:52:07 STATE: Build for: node type: node: {"imports":36,"importBytes":418558,"outputBytes":377904,"outputFiles":"dist/human.node.js"} 2021-05-22 13:15:16 STATE: Build for: node type: node: {"imports":36,"importBytes":418395,"outputBytes":378042,"outputFiles":"dist/human.node.js"}
2021-05-21 06:52:07 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"} 2021-05-22 13:15:16 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"}
2021-05-21 06:52:07 STATE: Build for: nodeGPU type: node: {"imports":36,"importBytes":418566,"outputBytes":377908,"outputFiles":"dist/human.node-gpu.js"} 2021-05-22 13:15:16 STATE: Build for: nodeGPU type: node: {"imports":36,"importBytes":418403,"outputBytes":378046,"outputFiles":"dist/human.node-gpu.js"}
2021-05-21 06:52:07 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"} 2021-05-22 13:15:16 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"}
2021-05-21 06:52:07 STATE: Build for: nodeWASM type: node: {"imports":36,"importBytes":418633,"outputBytes":377980,"outputFiles":"dist/human.node-wasm.js"} 2021-05-22 13:15:16 STATE: Build for: nodeWASM type: node: {"imports":36,"importBytes":418470,"outputBytes":378118,"outputFiles":"dist/human.node-wasm.js"}
2021-05-21 06:52:07 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"} 2021-05-22 13:15:16 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"}
2021-05-21 06:52:07 STATE: Build for: browserNoBundle type: esm: {"imports":36,"importBytes":418660,"outputBytes":232241,"outputFiles":"dist/human.esm-nobundle.js"} 2021-05-22 13:15:16 STATE: Build for: browserNoBundle type: esm: {"imports":36,"importBytes":418497,"outputBytes":232255,"outputFiles":"dist/human.esm-nobundle.js"}
2021-05-21 06:52:08 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"} 2021-05-22 13:15:17 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"}
2021-05-21 06:52:08 STATE: Build for: browserBundle type: iife: {"imports":36,"importBytes":1528680,"outputBytes":1340102,"outputFiles":"dist/human.js"} 2021-05-22 13:15:17 STATE: Build for: browserBundle type: iife: {"imports":36,"importBytes":1528517,"outputBytes":1340115,"outputFiles":"dist/human.js"}
2021-05-21 06:52:08 STATE: Build for: browserBundle type: esm: {"imports":36,"importBytes":1528680,"outputBytes":1340094,"outputFiles":"dist/human.esm.js"} 2021-05-22 13:15:17 STATE: Build for: browserBundle type: esm: {"imports":36,"importBytes":1528517,"outputBytes":1340107,"outputFiles":"dist/human.esm.js"}
2021-05-21 06:52:08 INFO:  Generate types: ["src/human.ts"] 2021-05-22 13:15:17 INFO:  Generate types: ["src/human.ts"]
2021-05-21 06:52:13 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"] 2021-05-22 13:15:23 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-05-21 06:52:13 INFO:  Generate TypeDocs: ["src/human.ts"] 2021-05-22 13:15:23 INFO:  Generate TypeDocs: ["src/human.ts"]
2021-05-22 11:04:54 INFO:  @vladmandic/human version 1.9.1
2021-05-22 11:04:54 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-22 11:04:54 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-05-22 11:04:54 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:04:54 STATE: Build for: node type: node: {"imports":36,"importBytes":418552,"outputBytes":377897,"outputFiles":"dist/human.node.js"}
2021-05-22 11:04:54 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:04:54 STATE: Build for: nodeGPU type: node: {"imports":36,"importBytes":418560,"outputBytes":377901,"outputFiles":"dist/human.node-gpu.js"}
2021-05-22 11:04:54 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:04:54 STATE: Build for: nodeWASM type: node: {"imports":36,"importBytes":418627,"outputBytes":377973,"outputFiles":"dist/human.node-wasm.js"}
2021-05-22 11:04:54 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:04:54 STATE: Build for: browserNoBundle type: esm: {"imports":36,"importBytes":418654,"outputBytes":232241,"outputFiles":"dist/human.esm-nobundle.js"}
2021-05-22 11:04:55 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:04:56 STATE: Build for: browserBundle type: iife: {"imports":36,"importBytes":1528674,"outputBytes":1340102,"outputFiles":"dist/human.js"}
2021-05-22 11:04:56 STATE: Build for: browserBundle type: esm: {"imports":36,"importBytes":1528674,"outputBytes":1340094,"outputFiles":"dist/human.esm.js"}
2021-05-22 11:04:56 INFO:  Generate types: ["src/human.ts"]
2021-05-22 11:05:02 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-05-22 11:05:02 INFO:  Generate TypeDocs: ["src/human.ts"]
2021-05-22 11:08:48 INFO:  @vladmandic/human version 1.9.1
2021-05-22 11:08:48 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-22 11:08:48 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-05-22 11:08:48 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:08:48 STATE: Build for: node type: node: {"imports":36,"importBytes":418552,"outputBytes":377897,"outputFiles":"dist/human.node.js"}
2021-05-22 11:08:48 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:08:48 STATE: Build for: nodeGPU type: node: {"imports":36,"importBytes":418560,"outputBytes":377901,"outputFiles":"dist/human.node-gpu.js"}
2021-05-22 11:08:48 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:08:48 STATE: Build for: nodeWASM type: node: {"imports":36,"importBytes":418627,"outputBytes":377973,"outputFiles":"dist/human.node-wasm.js"}
2021-05-22 11:08:48 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:08:48 STATE: Build for: browserNoBundle type: esm: {"imports":36,"importBytes":418654,"outputBytes":232241,"outputFiles":"dist/human.esm-nobundle.js"}
2021-05-22 11:08:49 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:08:49 STATE: Build for: browserBundle type: iife: {"imports":36,"importBytes":1528674,"outputBytes":1340102,"outputFiles":"dist/human.js"}
2021-05-22 11:08:50 STATE: Build for: browserBundle type: esm: {"imports":36,"importBytes":1528674,"outputBytes":1340094,"outputFiles":"dist/human.esm.js"}
2021-05-22 11:08:50 INFO:  Generate types: ["src/human.ts"]
2021-05-22 11:08:56 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-05-22 11:08:56 INFO:  Generate TypeDocs: ["src/human.ts"]
2021-05-22 11:09:59 INFO:  @vladmandic/human version 1.9.1
2021-05-22 11:09:59 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-22 11:09:59 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-05-22 11:09:59 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:09:59 STATE: Build for: node type: node: {"imports":36,"importBytes":418552,"outputBytes":377897,"outputFiles":"dist/human.node.js"}
2021-05-22 11:09:59 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:09:59 STATE: Build for: nodeGPU type: node: {"imports":36,"importBytes":418560,"outputBytes":377901,"outputFiles":"dist/human.node-gpu.js"}
2021-05-22 11:10:00 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:10:00 STATE: Build for: nodeWASM type: node: {"imports":36,"importBytes":418627,"outputBytes":377973,"outputFiles":"dist/human.node-wasm.js"}
2021-05-22 11:10:00 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:10:00 STATE: Build for: browserNoBundle type: esm: {"imports":36,"importBytes":418654,"outputBytes":232241,"outputFiles":"dist/human.esm-nobundle.js"}
2021-05-22 11:10:00 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:10:01 STATE: Build for: browserBundle type: iife: {"imports":36,"importBytes":1528674,"outputBytes":1340102,"outputFiles":"dist/human.js"}
2021-05-22 11:10:01 STATE: Build for: browserBundle type: esm: {"imports":36,"importBytes":1528674,"outputBytes":1340094,"outputFiles":"dist/human.esm.js"}
2021-05-22 11:10:01 INFO:  Generate types: ["src/human.ts"]
2021-05-22 11:10:07 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-05-22 11:10:07 INFO:  Generate TypeDocs: ["src/human.ts"]
2021-05-22 11:27:28 INFO:  @vladmandic/human version 1.9.1
2021-05-22 11:27:28 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-22 11:27:28 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-05-22 11:27:28 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:27:28 STATE: Build for: node type: node: {"imports":36,"importBytes":418710,"outputBytes":377974,"outputFiles":"dist/human.node.js"}
2021-05-22 11:27:28 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:27:28 STATE: Build for: nodeGPU type: node: {"imports":36,"importBytes":418718,"outputBytes":377978,"outputFiles":"dist/human.node-gpu.js"}
2021-05-22 11:27:28 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:27:28 STATE: Build for: nodeWASM type: node: {"imports":36,"importBytes":418785,"outputBytes":378050,"outputFiles":"dist/human.node-wasm.js"}
2021-05-22 11:27:28 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:27:28 STATE: Build for: browserNoBundle type: esm: {"imports":36,"importBytes":418812,"outputBytes":232243,"outputFiles":"dist/human.esm-nobundle.js"}
2021-05-22 11:27:29 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"}
2021-05-22 11:27:29 STATE: Build for: browserBundle type: iife: {"imports":36,"importBytes":1528832,"outputBytes":1340104,"outputFiles":"dist/human.js"}
2021-05-22 11:27:30 STATE: Build for: browserBundle type: esm: {"imports":36,"importBytes":1528832,"outputBytes":1340096,"outputFiles":"dist/human.esm.js"}
2021-05-22 11:27:30 INFO:  Generate types: ["src/human.ts"]
2021-05-22 11:27:35 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-05-22 11:27:35 INFO:  Generate TypeDocs: ["src/human.ts"]

View File

@ -60,11 +60,13 @@ export const options: DrawOptions = {
fillPolygons: <Boolean>false, fillPolygons: <Boolean>false,
useDepth: <Boolean>true, useDepth: <Boolean>true,
useCurves: <Boolean>false, useCurves: <Boolean>false,
bufferedOutput: <Boolean>true, bufferedOutput: <Boolean>false, // not yet implemented
useRawBoxes: <Boolean>false, useRawBoxes: <Boolean>false,
calculateHandBox: <Boolean>true, calculateHandBox: <Boolean>true,
}; };
let bufferedResult: Result;
function point(ctx, x, y, z = 0, localOptions) { function point(ctx, x, y, z = 0, localOptions) {
ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + (2 * z)}, ${127.5 - (2 * z)}, 255, 0.3)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && z ? `rgba(${127.5 + (2 * z)}, ${127.5 - (2 * z)}, 255, 0.3)` : localOptions.color;
ctx.beginPath(); ctx.beginPath();
@ -241,7 +243,6 @@ export async function face(inCanvas: HTMLCanvasElement, result: Array<Face>, dra
} }
} }
const lastDrawnPose:any[] = [];
export async function body(inCanvas: HTMLCanvasElement, result: Array<Body>, drawOptions?: DrawOptions) { export async function body(inCanvas: HTMLCanvasElement, result: Array<Body>, drawOptions?: DrawOptions) {
const localOptions = mergeDeep(options, drawOptions); const localOptions = mergeDeep(options, drawOptions);
if (!result || !inCanvas) return; if (!result || !inCanvas) return;
@ -250,7 +251,6 @@ export async function body(inCanvas: HTMLCanvasElement, result: Array<Body>, dra
if (!ctx) return; if (!ctx) return;
ctx.lineJoin = 'round'; ctx.lineJoin = 'round';
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
if (!lastDrawnPose[i] && localOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };
ctx.strokeStyle = localOptions.color; ctx.strokeStyle = localOptions.color;
ctx.fillStyle = localOptions.color; ctx.fillStyle = localOptions.color;
ctx.lineWidth = localOptions.lineWidth; ctx.lineWidth = localOptions.lineWidth;
@ -272,13 +272,7 @@ export async function body(inCanvas: HTMLCanvasElement, result: Array<Body>, dra
if (localOptions.drawPoints) { if (localOptions.drawPoints) {
for (let pt = 0; pt < result[i].keypoints.length; pt++) { for (let pt = 0; pt < result[i].keypoints.length; pt++) {
ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : localOptions.color; ctx.fillStyle = localOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : localOptions.color;
if (localOptions.bufferedOutput) { point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;
lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;
point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1], 0, localOptions);
} else {
point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 0, localOptions);
}
} }
} }
if (localOptions.drawLabels) { if (localOptions.drawLabels) {
@ -486,9 +480,14 @@ export async function all(inCanvas: HTMLCanvasElement, result: Result, drawOptio
const localOptions = mergeDeep(options, drawOptions); const localOptions = mergeDeep(options, drawOptions);
if (!result || !inCanvas) return; if (!result || !inCanvas) return;
if (!(inCanvas instanceof HTMLCanvasElement)) return; if (!(inCanvas instanceof HTMLCanvasElement)) return;
face(inCanvas, result.face, localOptions); if (localOptions.bufferedOutput) {
body(inCanvas, result.body, localOptions); if (result.timestamp !== bufferedResult?.timestamp) bufferedResult = result;
hand(inCanvas, result.hand, localOptions); } else {
gesture(inCanvas, result.gesture, localOptions); bufferedResult = result;
object(inCanvas, result.object, localOptions); }
face(inCanvas, bufferedResult.face, localOptions);
body(inCanvas, bufferedResult.body, localOptions);
hand(inCanvas, bufferedResult.hand, localOptions);
gesture(inCanvas, bufferedResult.gesture, localOptions);
object(inCanvas, bufferedResult.object, localOptions);
} }

View File

@ -77,7 +77,7 @@ export interface Body {
part: string, part: string,
position: { x: number, y: number, z: number }, position: { x: number, y: number, z: number },
score: number, score: number,
presence: number, presence?: number,
}> }>
} }

View File

@ -1,169 +1,120 @@
2021-05-21 06:52:36 INFO:  @vladmandic/human version 1.9.1 2021-05-22 13:15:45 INFO:  @vladmandic/human version 1.9.2
2021-05-21 06:52:36 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0 2021-05-22 13:15:45 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-21 06:52:36 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"] 2021-05-22 13:15:45 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-05-21 06:52:36 INFO:  test-node.js start 2021-05-22 13:15:45 INFO:  test-node.js start
2021-05-21 06:52:37 STATE: test-node.js passed: create human 2021-05-22 13:15:47 STATE: test-node.js passed: create human
2021-05-21 06:52:37 INFO:  test-node.js human version: 1.9.1 2021-05-22 13:15:47 INFO:  test-node.js human version: 1.9.2
2021-05-21 06:52:37 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.0.0 2021-05-22 13:15:47 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-21 06:52:37 INFO:  test-node.js tfjs version: 3.6.0 2021-05-22 13:15:47 INFO:  test-node.js tfjs version: 3.6.0
2021-05-21 06:52:38 STATE: test-node.js passed: set backend: tensorflow 2021-05-22 13:15:48 STATE: test-node.js passed: set backend: tensorflow
2021-05-21 06:52:38 STATE: test-node.js passed: load models 2021-05-22 13:15:48 STATE: test-node.js passed: load models
2021-05-21 06:52:38 STATE: test-node.js result: defined models: 13 loaded models: 6 2021-05-22 13:15:48 STATE: test-node.js result: defined models: 13 loaded models: 6
2021-05-21 06:52:38 STATE: test-node.js passed: warmup: none default 2021-05-22 13:15:48 STATE: test-node.js passed: warmup: none default
2021-05-21 06:52:39 STATE: test-node.js passed: warmup: face default 2021-05-22 13:15:49 STATE: test-node.js passed: warmup: face default
2021-05-21 06:52:39 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8246909379959106,"class":"person"} {"score":0.96,"keypoints":5} 2021-05-22 13:15:49 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8246909379959106,"class":"person"} {"score":0.96,"keypoints":5}
2021-05-21 06:52:39 DATA:  test-node.js result: performance: load: 376 total: 1674 2021-05-22 13:15:49 DATA:  test-node.js result: performance: load: 316 total: 1750
2021-05-21 06:52:41 STATE: test-node.js passed: warmup: body default 2021-05-22 13:15:51 STATE: test-node.js passed: warmup: body default
2021-05-21 06:52:41 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.7261000871658325,"class":"person"} {"score":0.92,"keypoints":17} 2021-05-22 13:15:51 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.7261000871658325,"class":"person"} {"score":0.92,"keypoints":17}
2021-05-21 06:52:41 DATA:  test-node.js result: performance: load: 376 total: 1566 2021-05-22 13:15:51 DATA:  test-node.js result: performance: load: 316 total: 1623
2021-05-21 06:52:41 INFO:  test-node.js test body variants 2021-05-22 13:15:51 INFO:  test-node.js test body variants
2021-05-21 06:52:42 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:15:52 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:52:43 STATE: test-node.js passed: detect: assets/human-sample-body.jpg posenet 2021-05-22 13:15:53 STATE: test-node.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-21 06:52:43 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":0.91,"keypoints":17} 2021-05-22 13:15:53 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":0.91,"keypoints":17}
2021-05-21 06:52:43 DATA:  test-node.js result: performance: load: 376 total: 1053 2021-05-22 13:15:53 DATA:  test-node.js result: performance: load: 316 total: 986
2021-05-21 06:52:44 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:15:54 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:52:45 STATE: test-node.js passed: detect: assets/human-sample-body.jpg blazepose 2021-05-22 13:15:55 STATE: test-node.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-21 06:52:45 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:15:55 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:52:45 DATA:  test-node.js result: performance: load: 376 total: 480 2021-05-22 13:15:55 DATA:  test-node.js result: performance: load: 316 total: 447
2021-05-21 06:52:46 STATE: test-node.js passed: detect: random default 2021-05-22 13:15:56 STATE: test-node.js passed: detect: random default
2021-05-21 06:52:46 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39} 2021-05-22 13:15:56 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-21 06:52:46 DATA:  test-node.js result: performance: load: 376 total: 844 2021-05-22 13:15:56 DATA:  test-node.js result: performance: load: 316 total: 855
2021-05-21 06:52:46 INFO:  test-node.js test: first instance 2021-05-22 13:15:56 INFO:  test-node.js test: first instance
2021-05-21 06:52:46 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3] 2021-05-22 13:15:56 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-21 06:52:47 STATE: test-node.js passed: detect: assets/sample-me.jpg default 2021-05-22 13:15:58 STATE: test-node.js passed: detect: assets/sample-me.jpg default
2021-05-21 06:52:47 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.6820425987243652,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:15:58 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.6820425987243652,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:52:47 DATA:  test-node.js result: performance: load: 376 total: 1560 2021-05-22 13:15:58 DATA:  test-node.js result: performance: load: 316 total: 1698
2021-05-21 06:52:47 INFO:  test-node.js test: second instance 2021-05-22 13:15:58 INFO:  test-node.js test: second instance
2021-05-21 06:52:48 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3] 2021-05-22 13:15:58 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-21 06:52:49 STATE: test-node.js passed: detect: assets/sample-me.jpg default 2021-05-22 13:16:00 STATE: test-node.js passed: detect: assets/sample-me.jpg default
2021-05-21 06:52:49 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.6820425987243652,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:00 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.6820425987243652,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:52:49 DATA:  test-node.js result: performance: load: 4 total: 1398 2021-05-22 13:16:00 DATA:  test-node.js result: performance: load: 6 total: 1565
2021-05-21 06:52:49 INFO:  test-node.js test: concurrent 2021-05-22 13:16:00 INFO:  test-node.js test: concurrent
2021-05-21 06:52:49 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3] 2021-05-22 13:16:00 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-21 06:52:49 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3] 2021-05-22 13:16:00 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-21 06:52:50 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:16:01 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:52:51 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:16:02 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:52:57 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default 2021-05-22 13:16:08 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default
2021-05-21 06:52:57 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:08 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:52:57 DATA:  test-node.js result: performance: load: 376 total: 5549 2021-05-22 13:16:08 DATA:  test-node.js result: performance: load: 316 total: 5968
2021-05-21 06:52:57 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default 2021-05-22 13:16:08 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default
2021-05-21 06:52:57 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:08 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:52:57 DATA:  test-node.js result: performance: load: 4 total: 5549 2021-05-22 13:16:08 DATA:  test-node.js result: performance: load: 6 total: 5968
2021-05-21 06:52:57 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default 2021-05-22 13:16:08 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default
2021-05-21 06:52:57 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:08 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:52:57 DATA:  test-node.js result: performance: load: 376 total: 5549 2021-05-22 13:16:08 DATA:  test-node.js result: performance: load: 316 total: 5968
2021-05-21 06:52:57 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default 2021-05-22 13:16:08 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default
2021-05-21 06:52:57 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:08 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:52:57 DATA:  test-node.js result: performance: load: 4 total: 5549 2021-05-22 13:16:08 DATA:  test-node.js result: performance: load: 6 total: 5968
2021-05-21 06:52:57 INFO:  test-node.js test complete: 19666 ms 2021-05-22 13:16:08 INFO:  test-node.js test complete: 20457 ms
2021-05-21 06:52:57 INFO:  test-node-gpu.js start 2021-05-22 13:16:08 INFO:  test-node-gpu.js start
2021-05-21 06:52:58 WARN:  test-node-gpu.js stderr: 2021-05-21 06:52:58.204048: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] 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-05-22 13:16:09 WARN:  test-node-gpu.js stderr: 2021-05-22 13:16:09.343674: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] 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-05-21 06:52:58 WARN:  test-node-gpu.js stderr: 2021-05-21 06:52:58.352815: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory 2021-05-22 13:16:09 WARN:  test-node-gpu.js stderr: 2021-05-22 13:16:09.549356: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-05-21 06:52:58 WARN:  test-node-gpu.js stderr: 2021-05-21 06:52:58.352845: 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-05-22 13:16:09 WARN:  test-node-gpu.js stderr: 2021-05-22 13:16:09.549556: 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-05-21 06:52:58 STATE: test-node-gpu.js passed: create human 2021-05-22 13:16:09 STATE: test-node-gpu.js passed: create human
2021-05-21 06:52:58 INFO:  test-node-gpu.js human version: 1.9.1 2021-05-22 13:16:09 INFO:  test-node-gpu.js human version: 1.9.2
2021-05-21 06:52:58 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0 2021-05-22 13:16:09 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-21 06:52:58 INFO:  test-node-gpu.js tfjs version: 3.6.0 2021-05-22 13:16:09 INFO:  test-node-gpu.js tfjs version: 3.6.0
2021-05-21 06:52:58 STATE: test-node-gpu.js passed: set backend: tensorflow 2021-05-22 13:16:10 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-05-21 06:52:58 STATE: test-node-gpu.js passed: load models 2021-05-22 13:16:10 STATE: test-node-gpu.js passed: load models
2021-05-21 06:52:58 STATE: test-node-gpu.js result: defined models: 13 loaded models: 6 2021-05-22 13:16:10 STATE: test-node-gpu.js result: defined models: 13 loaded models: 6
2021-05-21 06:52:58 STATE: test-node-gpu.js passed: warmup: none default 2021-05-22 13:16:10 STATE: test-node-gpu.js passed: warmup: none default
2021-05-21 06:53:00 STATE: test-node-gpu.js passed: warmup: face default 2021-05-22 13:16:11 STATE: test-node-gpu.js passed: warmup: face default
2021-05-21 06:53:00 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8246909379959106,"class":"person"} {"score":0.96,"keypoints":5} 2021-05-22 13:16:11 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8246909379959106,"class":"person"} {"score":0.96,"keypoints":5}
2021-05-21 06:53:00 DATA:  test-node-gpu.js result: performance: load: 312 total: 1787 2021-05-22 13:16:11 DATA:  test-node-gpu.js result: performance: load: 349 total: 1851
2021-05-21 06:53:02 STATE: test-node-gpu.js passed: warmup: body default 2021-05-22 13:16:13 STATE: test-node-gpu.js passed: warmup: body default
2021-05-21 06:53:02 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.7261000871658325,"class":"person"} {"score":0.92,"keypoints":17} 2021-05-22 13:16:13 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.7261000871658325,"class":"person"} {"score":0.92,"keypoints":17}
2021-05-21 06:53:02 DATA:  test-node-gpu.js result: performance: load: 312 total: 1600 2021-05-22 13:16:13 DATA:  test-node-gpu.js result: performance: load: 349 total: 1702
2021-05-21 06:53:02 INFO:  test-node-gpu.js test body variants 2021-05-22 13:16:13 INFO:  test-node-gpu.js test body variants
2021-05-21 06:53:03 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:16:14 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:04 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg posenet 2021-05-22 13:16:15 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-21 06:53:04 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":0.91,"keypoints":17} 2021-05-22 13:16:15 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":0.91,"keypoints":17}
2021-05-21 06:53:04 DATA:  test-node-gpu.js result: performance: load: 312 total: 1012 2021-05-22 13:16:15 DATA:  test-node-gpu.js result: performance: load: 349 total: 1075
2021-05-21 06:53:05 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:16:16 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:05 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg blazepose 2021-05-22 13:16:17 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-21 06:53:05 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:17 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1} {"score":0.7261000871658325,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:53:05 DATA:  test-node-gpu.js result: performance: load: 312 total: 469 2021-05-22 13:16:17 DATA:  test-node-gpu.js result: performance: load: 349 total: 403
2021-05-21 06:53:06 STATE: test-node-gpu.js passed: detect: random default 2021-05-22 13:16:18 STATE: test-node-gpu.js passed: detect: random default
2021-05-21 06:53:06 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 1 {} {"score":0.7261000871658325,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:18 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-21 06:53:06 DATA:  test-node-gpu.js result: performance: load: 312 total: 198 2021-05-22 13:16:18 DATA:  test-node-gpu.js result: performance: load: 349 total: 865
2021-05-21 06:53:06 INFO:  test-node-gpu.js test: first instance 2021-05-22 13:16:18 INFO:  test-node-gpu.js test: first instance
2021-05-21 06:53:06 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3] 2021-05-22 13:16:18 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-21 06:53:06 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default 2021-05-22 13:16:20 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default
2021-05-21 06:53:06 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 1 {} {"score":0.7261000871658325,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:20 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.6820425987243652,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:53:06 DATA:  test-node-gpu.js result: performance: load: 312 total: 184 2021-05-22 13:16:20 DATA:  test-node-gpu.js result: performance: load: 349 total: 1689
2021-05-21 06:53:06 INFO:  test-node-gpu.js test: second instance 2021-05-22 13:16:20 INFO:  test-node-gpu.js test: second instance
2021-05-21 06:53:07 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3] 2021-05-22 13:16:20 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-21 06:53:08 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default 2021-05-22 13:16:22 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default
2021-05-21 06:53:08 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.6820425987243652,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:22 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.6820425987243652,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:53:08 DATA:  test-node-gpu.js result: performance: load: 2 total: 1498 2021-05-22 13:16:22 DATA:  test-node-gpu.js result: performance: load: 4 total: 1609
2021-05-21 06:53:08 INFO:  test-node-gpu.js test: concurrent 2021-05-22 13:16:22 INFO:  test-node-gpu.js test: concurrent
2021-05-21 06:53:08 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3] 2021-05-22 13:16:22 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-21 06:53:08 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3] 2021-05-22 13:16:22 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-21 06:53:09 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:16:23 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:10 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3] 2021-05-22 13:16:24 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:16 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default 2021-05-22 13:16:30 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: performance: load: 312 total: 5825 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: performance: load: 349 total: 6142
2021-05-21 06:53:16 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default 2021-05-22 13:16:30 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.8257162570953369,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: performance: load: 2 total: 5825 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: performance: load: 4 total: 6142
2021-05-21 06:53:16 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default 2021-05-22 13:16:30 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: performance: load: 312 total: 5825 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: performance: load: 349 total: 6142
2021-05-21 06:53:16 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default 2021-05-22 13:16:30 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39} 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.7273815870285034,"class":"person"} {"score":1,"keypoints":39}
2021-05-21 06:53:16 DATA:  test-node-gpu.js result: performance: load: 2 total: 5825 2021-05-22 13:16:30 DATA:  test-node-gpu.js result: performance: load: 4 total: 6142
2021-05-21 06:53:16 INFO:  test-node-gpu.js test complete: 18032 ms 2021-05-22 13:16:30 INFO:  test-node-gpu.js test complete: 20887 ms
2021-05-21 06:53:16 INFO:  test-node-wasm.js start 2021-05-22 13:16:30 INFO:  test-node-wasm.js start
2021-05-21 06:53:16 STATE: test-node-wasm.js passed: model server: http://localhost:10030/models/ 2021-05-22 13:16:30 ERROR: test-node-wasm.js failed: model server: request to http://localhost:10030/models/ failed, reason: connect ECONNREFUSED 127.0.0.1:10030
2021-05-21 06:53:16 STATE: test-node-wasm.js passed: create human 2021-05-22 13:16:30 ERROR: test-node-wasm.js aborting test
2021-05-21 06:53:16 INFO:  test-node-wasm.js human version: 1.9.1 2021-05-22 13:16:31 INFO:  status: {"passed":46,"failed":1}
2021-05-21 06:53:16 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-21 06:53:16 INFO:  test-node-wasm.js tfjs version: 3.6.0
2021-05-21 06:53:17 STATE: test-node-wasm.js passed: set backend: wasm
2021-05-21 06:53:17 STATE: test-node-wasm.js passed: load models
2021-05-21 06:53:17 STATE: test-node-wasm.js result: defined models: 13 loaded models: 5
2021-05-21 06:53:17 STATE: test-node-wasm.js passed: warmup: none default
2021-05-21 06:53:17 ERROR: test-node-wasm.js failed: warmup: face default
2021-05-21 06:53:17 ERROR: test-node-wasm.js failed: warmup: body default
2021-05-21 06:53:17 INFO:  test-node-wasm.js test body variants
2021-05-21 06:53:19 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:23 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-21 06:53:23 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1,"age":28.5,"gender":"female"} {} {"score":0.91,"keypoints":17}
2021-05-21 06:53:23 DATA:  test-node-wasm.js result: performance: load: 859 total: 3195
2021-05-21 06:53:25 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:27 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-21 06:53:27 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1} {} {"score":1,"keypoints":39}
2021-05-21 06:53:27 DATA:  test-node-wasm.js result: performance: load: 859 total: 2390
2021-05-21 06:53:28 STATE: test-node-wasm.js passed: detect: random default
2021-05-21 06:53:28 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-21 06:53:28 DATA:  test-node-wasm.js result: performance: load: 859 total: 385
2021-05-21 06:53:28 INFO:  test-node-wasm.js test: first instance
2021-05-21 06:53:28 STATE: test-node-wasm.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-21 06:53:29 STATE: test-node-wasm.js passed: detect: assets/sample-me.jpg default
2021-05-21 06:53:29 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-21 06:53:29 DATA:  test-node-wasm.js result: performance: load: 859 total: 308
2021-05-21 06:53:29 INFO:  test-node-wasm.js test: second instance
2021-05-21 06:53:29 STATE: test-node-wasm.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-21 06:53:32 STATE: test-node-wasm.js passed: detect: assets/sample-me.jpg default
2021-05-21 06:53:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 0 {"confidence":1,"age":39.2,"gender":"male"} {} {"score":1,"keypoints":39}
2021-05-21 06:53:32 DATA:  test-node-wasm.js result: performance: load: 3 total: 2456
2021-05-21 06:53:32 INFO:  test-node-wasm.js test: concurrent
2021-05-21 06:53:32 STATE: test-node-wasm.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-21 06:53:32 STATE: test-node-wasm.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-21 06:53:34 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:36 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-21 06:53:45 STATE: test-node-wasm.js passed: detect: assets/human-sample-face.jpg default
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 0 {"confidence":1,"age":23.6,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: performance: load: 859 total: 9357
2021-05-21 06:53:45 STATE: test-node-wasm.js passed: detect: assets/human-sample-face.jpg default
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 0 {"confidence":1,"age":23.6,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: performance: load: 3 total: 9357
2021-05-21 06:53:45 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg default
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1,"age":28.5,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: performance: load: 859 total: 9357
2021-05-21 06:53:45 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg default
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1,"age":28.5,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-21 06:53:45 DATA:  test-node-wasm.js result: performance: load: 3 total: 9357
2021-05-21 06:53:45 INFO:  test-node-wasm.js test complete: 28592 ms
2021-05-21 06:53:45 INFO:  status: {"passed":68,"failed":2}

File diff suppressed because one or more lines are too long

View File

@ -875,7 +875,7 @@
<a href="../interfaces/hand.html" class="tsd-kind-icon">Hand</a> <a href="../interfaces/hand.html" class="tsd-kind-icon">Hand</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="../interfaces/object.html" class="tsd-kind-icon">Object</a> <a href="../interfaces/item.html" class="tsd-kind-icon">Item</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="../interfaces/result.html" class="tsd-kind-icon">Result</a> <a href="../interfaces/result.html" class="tsd-kind-icon">Result</a>

View File

@ -79,7 +79,7 @@
<li class="tsd-kind-interface"><a href="interfaces/drawoptions.html" class="tsd-kind-icon">Draw<wbr>Options</a></li> <li class="tsd-kind-interface"><a href="interfaces/drawoptions.html" class="tsd-kind-icon">Draw<wbr>Options</a></li>
<li class="tsd-kind-interface"><a href="interfaces/face.html" class="tsd-kind-icon">Face</a></li> <li class="tsd-kind-interface"><a href="interfaces/face.html" class="tsd-kind-icon">Face</a></li>
<li class="tsd-kind-interface"><a href="interfaces/hand.html" class="tsd-kind-icon">Hand</a></li> <li class="tsd-kind-interface"><a href="interfaces/hand.html" class="tsd-kind-icon">Hand</a></li>
<li class="tsd-kind-interface"><a href="interfaces/object.html" class="tsd-kind-icon">Object</a></li> <li class="tsd-kind-interface"><a href="interfaces/item.html" class="tsd-kind-icon">Item</a></li>
<li class="tsd-kind-interface"><a href="interfaces/result.html" class="tsd-kind-icon">Result</a></li> <li class="tsd-kind-interface"><a href="interfaces/result.html" class="tsd-kind-icon">Result</a></li>
</ul> </ul>
</section> </section>
@ -214,7 +214,7 @@
<a href="interfaces/hand.html" class="tsd-kind-icon">Hand</a> <a href="interfaces/hand.html" class="tsd-kind-icon">Hand</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="interfaces/object.html" class="tsd-kind-icon">Object</a> <a href="interfaces/item.html" class="tsd-kind-icon">Item</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="interfaces/result.html" class="tsd-kind-icon">Result</a> <a href="interfaces/result.html" class="tsd-kind-icon">Result</a>

View File

@ -71,9 +71,10 @@
<p>Array of individual results with one object per detected body <p>Array of individual results with one object per detected body
Each results has:</p> Each results has:</p>
<ul> <ul>
<li>body id number</li> <li>id:body id number</li>
<li>score: overall detection score</li> <li>score: overall detection score</li>
<li>box bounding box: x, y, width, height</li> <li>box: bounding box: x, y, width, height normalized to input image resolution</li>
<li>boxRaw: bounding box: x, y, width, height normalized to 0..1</li>
<li>keypoints: array of keypoints</li> <li>keypoints: array of keypoints</li>
<li>part: body part name</li> <li>part: body part name</li>
<li>position: body part position with x,y,z coordinates</li> <li>position: body part position with x,y,z coordinates</li>
@ -98,6 +99,7 @@
<h3>Properties</h3> <h3>Properties</h3>
<ul class="tsd-index-list"> <ul class="tsd-index-list">
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#box" class="tsd-kind-icon">box</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#box" class="tsd-kind-icon">box</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#id" class="tsd-kind-icon">id</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#id" class="tsd-kind-icon">id</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#keypoints" class="tsd-kind-icon">keypoints</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#keypoints" class="tsd-kind-icon">keypoints</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#score" class="tsd-kind-icon">score</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="body.html#score" class="tsd-kind-icon">score</a></li>
@ -110,11 +112,18 @@
<h2>Properties</h2> <h2>Properties</h2>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="box" class="tsd-anchor"></a> <a name="box" class="tsd-anchor"></a>
<h3>box</h3> <h3><span class="tsd-flag ts-flagOptional">Optional</span> box</h3>
<div class="tsd-signature tsd-kind-icon">box<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">[</span>x<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>y<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>width<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>height<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span></div> <div class="tsd-signature tsd-kind-icon">box<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">[</span>x<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>y<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>width<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>height<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
</section> </section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="boxraw" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagOptional">Optional</span> box<wbr>Raw</h3>
<div class="tsd-signature tsd-kind-icon">box<wbr>Raw<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">[</span>x<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>y<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>width<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span>height<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span></div>
<aside class="tsd-sources">
</aside>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="id" class="tsd-anchor"></a> <a name="id" class="tsd-anchor"></a>
<h3>id</h3> <h3>id</h3>
@ -125,7 +134,7 @@
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="keypoints" class="tsd-anchor"></a> <a name="keypoints" class="tsd-anchor"></a>
<h3>keypoints</h3> <h3>keypoints</h3>
<div class="tsd-signature tsd-kind-icon">keypoints<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>part<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>position<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>x<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>y<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>z<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">; </span>presence<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>score<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">[]</span></div> <div class="tsd-signature tsd-kind-icon">keypoints<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>part<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>position<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>x<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>y<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>z<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">; </span>presence<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>score<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">[]</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
</section> </section>
@ -162,6 +171,9 @@
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="body.html#box" class="tsd-kind-icon">box</a> <a href="body.html#box" class="tsd-kind-icon">box</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="body.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="body.html#id" class="tsd-kind-icon">id</a> <a href="body.html#id" class="tsd-kind-icon">id</a>
</li> </li>
@ -188,7 +200,7 @@
<a href="hand.html" class="tsd-kind-icon">Hand</a> <a href="hand.html" class="tsd-kind-icon">Hand</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="object.html" class="tsd-kind-icon">Object</a> <a href="item.html" class="tsd-kind-icon">Item</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="result.html" class="tsd-kind-icon">Result</a> <a href="result.html" class="tsd-kind-icon">Result</a>

View File

@ -722,7 +722,7 @@
<a href="hand.html" class="tsd-kind-icon">Hand</a> <a href="hand.html" class="tsd-kind-icon">Hand</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="object.html" class="tsd-kind-icon">Object</a> <a href="item.html" class="tsd-kind-icon">Item</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="result.html" class="tsd-kind-icon">Result</a> <a href="result.html" class="tsd-kind-icon">Result</a>

View File

@ -348,7 +348,7 @@
<a href="hand.html" class="tsd-kind-icon">Hand</a> <a href="hand.html" class="tsd-kind-icon">Hand</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="object.html" class="tsd-kind-icon">Object</a> <a href="item.html" class="tsd-kind-icon">Item</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="result.html" class="tsd-kind-icon">Result</a> <a href="result.html" class="tsd-kind-icon">Result</a>

View File

@ -73,21 +73,25 @@
<p>Array of individual results with one object per detected face <p>Array of individual results with one object per detected face
Each result has:</p> Each result has:</p>
<ul> <ul>
<li>overal detection confidence value</li> <li>id: face number</li>
<li>box detection confidence value</li> <li>confidence: overal detection confidence value</li>
<li>mesh detection confidence value</li> <li>boxConfidence: face box detection confidence value</li>
<li>box as array of [x, y, width, height], normalized to image resolution</li> <li>faceConfidence: face keypoints detection confidence value</li>
<li>boxRaw as array of [x, y, width, height], normalized to range 0..1</li> <li>box: face bounding box as array of [x, y, width, height], normalized to image resolution</li>
<li>mesh as array of [x, y, z] points of face mesh, normalized to image resolution</li> <li>boxRaw: face bounding box as array of [x, y, width, height], normalized to range 0..1</li>
<li>meshRaw as array of [x, y, z] points of face mesh, normalized to range 0..1</li> <li>mesh: face keypoints as array of [x, y, z] points of face mesh, normalized to image resolution</li>
<li>annotations as array of annotated face mesh points</li> <li>meshRaw: face keypoints as array of [x, y, z] points of face mesh, normalized to range 0..1</li>
<li>age as value</li> <li>annotations: annotated face keypoints as array of annotated face mesh points</li>
<li>gender as value</li> <li>age: age as value</li>
<li>genderConfidence as value</li> <li>gender: gender as value</li>
<li>emotion as array of possible emotions with their individual scores</li> <li>genderConfidence: gender detection confidence as value</li>
<li>iris as distance value</li> <li>emotion: emotions as array of possible emotions with their individual scores</li>
<li>angle as object with values for roll, yaw and pitch angles</li> <li>embedding: facial descriptor as array of numerical elements</li>
<li>tensor as Tensor object which contains detected face</li> <li>iris: iris distance from current viewpoint as distance value</li>
<li>rotation: face rotiation that contains both angles and matrix used for 3d transformations</li>
<li>angle: face angle as object with values for roll, yaw and pitch angles</li>
<li>matrix: 3d transofrmation matrix as array of numeric values</li>
<li>tensor: face tensor as Tensor object which contains detected face</li>
</ul> </ul>
</div> </div>
</section> </section>
@ -117,6 +121,7 @@
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#faceconfidence" class="tsd-kind-icon">face<wbr>Confidence</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#faceconfidence" class="tsd-kind-icon">face<wbr>Confidence</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#gender" class="tsd-kind-icon">gender</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#gender" class="tsd-kind-icon">gender</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#genderconfidence" class="tsd-kind-icon">gender<wbr>Confidence</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#genderconfidence" class="tsd-kind-icon">gender<wbr>Confidence</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#id" class="tsd-kind-icon">id</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#iris" class="tsd-kind-icon">iris</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#iris" class="tsd-kind-icon">iris</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#mesh" class="tsd-kind-icon">mesh</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#mesh" class="tsd-kind-icon">mesh</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#meshraw" class="tsd-kind-icon">mesh<wbr>Raw</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="face.html#meshraw" class="tsd-kind-icon">mesh<wbr>Raw</a></li>
@ -206,6 +211,13 @@
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
</section> </section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="id" class="tsd-anchor"></a>
<h3>id</h3>
<div class="tsd-signature tsd-kind-icon">id<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
<aside class="tsd-sources">
</aside>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="iris" class="tsd-anchor"></a> <a name="iris" class="tsd-anchor"></a>
<h3>iris</h3> <h3>iris</h3>
@ -230,7 +242,7 @@
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="rotation" class="tsd-anchor"></a> <a name="rotation" class="tsd-anchor"></a>
<h3>rotation</h3> <h3>rotation</h3>
<div class="tsd-signature tsd-kind-icon">rotation<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>angle<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>pitch<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>roll<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>yaw<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">; </span>matrix<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> }</span></div> <div class="tsd-signature tsd-kind-icon">rotation<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>angle<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>pitch<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>roll<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>yaw<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">; </span>matrix<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol"> }</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
<div class="tsd-type-declaration"> <div class="tsd-type-declaration">
@ -251,7 +263,7 @@
</ul> </ul>
</li> </li>
<li class="tsd-parameter"> <li class="tsd-parameter">
<h5>matrix<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">[]</span></h5> <h5>matrix<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span></h5>
</li> </li>
</ul> </ul>
</div> </div>
@ -328,6 +340,9 @@
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="face.html#genderconfidence" class="tsd-kind-icon">gender<wbr>Confidence</a> <a href="face.html#genderconfidence" class="tsd-kind-icon">gender<wbr>Confidence</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="face.html#id" class="tsd-kind-icon">id</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="face.html#iris" class="tsd-kind-icon">iris</a> <a href="face.html#iris" class="tsd-kind-icon">iris</a>
</li> </li>
@ -351,7 +366,7 @@
<a href="hand.html" class="tsd-kind-icon">Hand</a> <a href="hand.html" class="tsd-kind-icon">Hand</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="object.html" class="tsd-kind-icon">Object</a> <a href="item.html" class="tsd-kind-icon">Item</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="result.html" class="tsd-kind-icon">Result</a> <a href="result.html" class="tsd-kind-icon">Result</a>

View File

@ -98,6 +98,7 @@
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#box" class="tsd-kind-icon">box</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#box" class="tsd-kind-icon">box</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#confidence" class="tsd-kind-icon">confidence</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#confidence" class="tsd-kind-icon">confidence</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#id" class="tsd-kind-icon">id</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#landmarks" class="tsd-kind-icon">landmarks</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="hand.html#landmarks" class="tsd-kind-icon">landmarks</a></li>
</ul> </ul>
</section> </section>
@ -109,7 +110,7 @@
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="annotations" class="tsd-anchor"></a> <a name="annotations" class="tsd-anchor"></a>
<h3>annotations</h3> <h3>annotations</h3>
<div class="tsd-signature tsd-kind-icon">annotations<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>part<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>points<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">[]</span></div> <div class="tsd-signature tsd-kind-icon">annotations<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-symbol">{ </span>part<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>points<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
</section> </section>
@ -134,6 +135,13 @@
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
</section> </section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="id" class="tsd-anchor"></a>
<h3>id</h3>
<div class="tsd-signature tsd-kind-icon">id<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
<aside class="tsd-sources">
</aside>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="landmarks" class="tsd-anchor"></a> <a name="landmarks" class="tsd-anchor"></a>
<h3>landmarks</h3> <h3>landmarks</h3>
@ -188,6 +196,9 @@
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="hand.html#confidence" class="tsd-kind-icon">confidence</a> <a href="hand.html#confidence" class="tsd-kind-icon">confidence</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="hand.html#id" class="tsd-kind-icon">id</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="hand.html#landmarks" class="tsd-kind-icon">landmarks</a> <a href="hand.html#landmarks" class="tsd-kind-icon">landmarks</a>
</li> </li>
@ -196,7 +207,7 @@
</ul> </ul>
<ul class="after-current"> <ul class="after-current">
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="object.html" class="tsd-kind-icon">Object</a> <a href="item.html" class="tsd-kind-icon">Item</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="result.html" class="tsd-kind-icon">Result</a> <a href="result.html" class="tsd-kind-icon">Result</a>

View File

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Object | @vladmandic/human</title> <title>Item | @vladmandic/human</title>
<meta name="description" content="Documentation for @vladmandic/human"> <meta name="description" content="Documentation for @vladmandic/human">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../assets/css/main.css"> <link rel="stylesheet" href="../assets/css/main.css">
@ -53,10 +53,10 @@
<a href="../index.html">@vladmandic/human</a> <a href="../index.html">@vladmandic/human</a>
</li> </li>
<li> <li>
<a href="object.html">Object</a> <a href="item.html">Item</a>
</li> </li>
</ul> </ul>
<h1>Interface Object</h1> <h1>Interface Item</h1>
</div> </div>
</div> </div>
</header> </header>
@ -84,7 +84,7 @@
<h3>Hierarchy</h3> <h3>Hierarchy</h3>
<ul class="tsd-hierarchy"> <ul class="tsd-hierarchy">
<li> <li>
<span class="target">Object</span> <span class="target">Item</span>
</li> </li>
</ul> </ul>
</section> </section>
@ -95,14 +95,14 @@
<section class="tsd-index-section "> <section class="tsd-index-section ">
<h3>Properties</h3> <h3>Properties</h3>
<ul class="tsd-index-list"> <ul class="tsd-index-list">
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#box" class="tsd-kind-icon">box</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#box" class="tsd-kind-icon">box</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#center" class="tsd-kind-icon">center</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#center" class="tsd-kind-icon">center</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#centerraw" class="tsd-kind-icon">center<wbr>Raw</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#centerraw" class="tsd-kind-icon">center<wbr>Raw</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#class" class="tsd-kind-icon">class</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#class" class="tsd-kind-icon">class</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#label" class="tsd-kind-icon">label</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#label" class="tsd-kind-icon">label</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#score" class="tsd-kind-icon">score</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#score" class="tsd-kind-icon">score</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="object.html#stridesize" class="tsd-kind-icon">stride<wbr>Size</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="item.html#stridesize" class="tsd-kind-icon">stride<wbr>Size</a></li>
</ul> </ul>
</section> </section>
</div> </div>
@ -126,14 +126,14 @@
</section> </section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="center" class="tsd-anchor"></a> <a name="center" class="tsd-anchor"></a>
<h3>center</h3> <h3><span class="tsd-flag ts-flagOptional">Optional</span> center</h3>
<div class="tsd-signature tsd-kind-icon">center<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></div> <div class="tsd-signature tsd-kind-icon">center<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
</section> </section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="centerraw" class="tsd-anchor"></a> <a name="centerraw" class="tsd-anchor"></a>
<h3>center<wbr>Raw</h3> <h3><span class="tsd-flag ts-flagOptional">Optional</span> center<wbr>Raw</h3>
<div class="tsd-signature tsd-kind-icon">center<wbr>Raw<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></div> <div class="tsd-signature tsd-kind-icon">center<wbr>Raw<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
@ -161,7 +161,7 @@
</section> </section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="stridesize" class="tsd-anchor"></a> <a name="stridesize" class="tsd-anchor"></a>
<h3>stride<wbr>Size</h3> <h3><span class="tsd-flag ts-flagOptional">Optional</span> stride<wbr>Size</h3>
<div class="tsd-signature tsd-kind-icon">stride<wbr>Size<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div> <div class="tsd-signature tsd-kind-icon">stride<wbr>Size<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
@ -202,31 +202,31 @@
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="current tsd-kind-interface"> <li class="current tsd-kind-interface">
<a href="object.html" class="tsd-kind-icon">Object</a> <a href="item.html" class="tsd-kind-icon">Item</a>
<ul> <ul>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#box" class="tsd-kind-icon">box</a> <a href="item.html#box" class="tsd-kind-icon">box</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a> <a href="item.html#boxraw" class="tsd-kind-icon">box<wbr>Raw</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#center" class="tsd-kind-icon">center</a> <a href="item.html#center" class="tsd-kind-icon">center</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#centerraw" class="tsd-kind-icon">center<wbr>Raw</a> <a href="item.html#centerraw" class="tsd-kind-icon">center<wbr>Raw</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#class" class="tsd-kind-icon">class</a> <a href="item.html#class" class="tsd-kind-icon">class</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#label" class="tsd-kind-icon">label</a> <a href="item.html#label" class="tsd-kind-icon">label</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#score" class="tsd-kind-icon">score</a> <a href="item.html#score" class="tsd-kind-icon">score</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="object.html#stridesize" class="tsd-kind-icon">stride<wbr>Size</a> <a href="item.html#stridesize" class="tsd-kind-icon">stride<wbr>Size</a>
</li> </li>
</ul> </ul>
</li> </li>

View File

@ -85,6 +85,7 @@
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="result.html#hand" class="tsd-kind-icon">hand</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="result.html#hand" class="tsd-kind-icon">hand</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="result.html#object" class="tsd-kind-icon">object</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="result.html#object" class="tsd-kind-icon">object</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="result.html#performance" class="tsd-kind-icon">performance</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="result.html#performance" class="tsd-kind-icon">performance</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="result.html#timestamp" class="tsd-kind-icon">timestamp</a></li>
</ul> </ul>
</section> </section>
</div> </div>
@ -150,12 +151,12 @@
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="object" class="tsd-anchor"></a> <a name="object" class="tsd-anchor"></a>
<h3>object</h3> <h3>object</h3>
<div class="tsd-signature tsd-kind-icon">object<span class="tsd-signature-symbol">:</span> <a href="object.html" class="tsd-signature-type" data-tsd-kind="Interface">Object</a><span class="tsd-signature-symbol">[]</span></div> <div class="tsd-signature tsd-kind-icon">object<span class="tsd-signature-symbol">:</span> <a href="item.html" class="tsd-signature-type" data-tsd-kind="Interface">Item</a><span class="tsd-signature-symbol">[]</span></div>
<aside class="tsd-sources"> <aside class="tsd-sources">
</aside> </aside>
<div class="tsd-comment tsd-typography"> <div class="tsd-comment tsd-typography">
<div class="lead"> <div class="lead">
<p><a href="object.html">Object</a>: detection &amp; analysis results</p> <p>{@link Object}: detection &amp; analysis results</p>
</div> </div>
</div> </div>
</section> </section>
@ -174,6 +175,13 @@
</ul> </ul>
</div> </div>
</section> </section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="timestamp" class="tsd-anchor"></a>
<h3>timestamp</h3>
<div class="tsd-signature tsd-kind-icon">timestamp<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
<aside class="tsd-sources">
</aside>
</section>
</section> </section>
</div> </div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight"> <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
@ -208,7 +216,7 @@
<a href="hand.html" class="tsd-kind-icon">Hand</a> <a href="hand.html" class="tsd-kind-icon">Hand</a>
</li> </li>
<li class=" tsd-kind-interface"> <li class=" tsd-kind-interface">
<a href="object.html" class="tsd-kind-icon">Object</a> <a href="item.html" class="tsd-kind-icon">Item</a>
</li> </li>
</ul> </ul>
<ul class="current"> <ul class="current">
@ -236,6 +244,9 @@
<li class=" tsd-kind-property tsd-parent-kind-interface"> <li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="result.html#performance" class="tsd-kind-icon">performance</a> <a href="result.html#performance" class="tsd-kind-icon">performance</a>
</li> </li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="result.html#timestamp" class="tsd-kind-icon">timestamp</a>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>

View File

@ -1,4 +1,4 @@
import type { Result, Face, Body, Hand, Object, Gesture } from '../result'; import type { Result, Face, Body, Hand, Item, Gesture } from '../result';
/** /**
* Draw Options * Draw Options
* Accessed via `human.draw.options` or provided per each draw method as the drawOptions optional parameter * Accessed via `human.draw.options` or provided per each draw method as the drawOptions optional parameter
@ -45,6 +45,6 @@ export declare function gesture(inCanvas: HTMLCanvasElement, result: Array<Gestu
export declare function face(inCanvas: HTMLCanvasElement, result: Array<Face>, drawOptions?: DrawOptions): Promise<void>; export declare function face(inCanvas: HTMLCanvasElement, result: Array<Face>, drawOptions?: DrawOptions): Promise<void>;
export declare function body(inCanvas: HTMLCanvasElement, result: Array<Body>, drawOptions?: DrawOptions): Promise<void>; export declare function body(inCanvas: HTMLCanvasElement, result: Array<Body>, drawOptions?: DrawOptions): Promise<void>;
export declare function hand(inCanvas: HTMLCanvasElement, result: Array<Hand>, drawOptions?: DrawOptions): Promise<void>; export declare function hand(inCanvas: HTMLCanvasElement, result: Array<Hand>, drawOptions?: DrawOptions): Promise<void>;
export declare function object(inCanvas: HTMLCanvasElement, result: Array<Object>, drawOptions?: DrawOptions): Promise<void>; export declare function object(inCanvas: HTMLCanvasElement, result: Array<Item>, drawOptions?: DrawOptions): Promise<void>;
export declare function canvas(inCanvas: HTMLCanvasElement, outCanvas: HTMLCanvasElement): Promise<void>; export declare function canvas(inCanvas: HTMLCanvasElement, outCanvas: HTMLCanvasElement): Promise<void>;
export declare function all(inCanvas: HTMLCanvasElement, result: Result, drawOptions?: DrawOptions): Promise<void>; export declare function all(inCanvas: HTMLCanvasElement, result: Result, drawOptions?: DrawOptions): Promise<void>;

View File

@ -1,16 +1,5 @@
export declare const body: (res: any) => { import { Gesture } from '../result';
body: number; export declare const body: (res: any) => Gesture[];
gesture: string; export declare const face: (res: any) => Gesture[];
}[]; export declare const iris: (res: any) => Gesture[];
export declare const face: (res: any) => { export declare const hand: (res: any) => Gesture[];
face: number;
gesture: string;
}[];
export declare const iris: (res: any) => {
iris: number;
gesture: string;
}[];
export declare const hand: (res: any) => {
hand: number;
gesture: string;
}[];

View File

@ -1,8 +1,3 @@
export declare function predict(input: any, config: any): Promise<{ import { Hand } from '../result';
confidence: number; export declare function predict(input: any, config: any): Promise<Hand[]>;
box: any;
boxRaw: any;
landmarks: any;
annotations: any;
}[]>;
export declare function load(config: any): Promise<[Object, Object]>; export declare function load(config: any): Promise<[Object, Object]>;

2
types/human.d.ts vendored
View File

@ -13,7 +13,7 @@ import * as draw from './draw/draw';
/** Generic Tensor object type */ /** Generic Tensor object type */
export declare type Tensor = typeof tf.Tensor; export declare type Tensor = typeof tf.Tensor;
export type { Config } from './config'; export type { Config } from './config';
export type { Result, Face, Hand, Body, Object, Gesture } from './result'; export type { Result, Face, Hand, Body, Item, Gesture } from './result';
export type { DrawOptions } from './draw/draw'; export type { DrawOptions } from './draw/draw';
/** Defines all possible input types for **Human** detection */ /** Defines all possible input types for **Human** detection */
export declare type Input = Tensor | typeof Image | ImageData | ImageBitmap | HTMLImageElement | HTMLMediaElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas; export declare type Input = Tensor | typeof Image | ImageData | ImageBitmap | HTMLImageElement | HTMLMediaElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;

View File

@ -1,2 +1,3 @@
import { Item } from '../result';
export declare function load(config: any): Promise<any>; export declare function load(config: any): Promise<any>;
export declare function predict(image: any, config: any): Promise<unknown>; export declare function predict(image: any, config: any): Promise<Item[]>;

View File

@ -1,2 +1,3 @@
import { Item } from '../result';
export declare function load(config: any): Promise<any>; export declare function load(config: any): Promise<any>;
export declare function predict(image: any, config: any): Promise<unknown>; export declare function predict(image: any, config: any): Promise<Item[]>;

View File

@ -1,2 +1,3 @@
export declare function predict(input: any, config: any): Promise<any>; import { Body } from '../result';
export declare function predict(input: any, config: any): Promise<Body[]>;
export declare function load(config: any): Promise<any>; export declare function load(config: any): Promise<any>;

65
types/result.d.ts vendored
View File

@ -9,23 +9,28 @@
* *
* Array of individual results with one object per detected face * Array of individual results with one object per detected face
* Each result has: * Each result has:
* - overal detection confidence value * - id: face number
* - box detection confidence value * - confidence: overal detection confidence value
* - mesh detection confidence value * - boxConfidence: face box detection confidence value
* - box as array of [x, y, width, height], normalized to image resolution * - faceConfidence: face keypoints detection confidence value
* - boxRaw as array of [x, y, width, height], normalized to range 0..1 * - box: face bounding box as array of [x, y, width, height], normalized to image resolution
* - mesh as array of [x, y, z] points of face mesh, normalized to image resolution * - boxRaw: face bounding box as array of [x, y, width, height], normalized to range 0..1
* - meshRaw as array of [x, y, z] points of face mesh, normalized to range 0..1 * - mesh: face keypoints as array of [x, y, z] points of face mesh, normalized to image resolution
* - annotations as array of annotated face mesh points * - meshRaw: face keypoints as array of [x, y, z] points of face mesh, normalized to range 0..1
* - age as value * - annotations: annotated face keypoints as array of annotated face mesh points
* - gender as value * - age: age as value
* - genderConfidence as value * - gender: gender as value
* - emotion as array of possible emotions with their individual scores * - genderConfidence: gender detection confidence as value
* - iris as distance value * - emotion: emotions as array of possible emotions with their individual scores
* - angle as object with values for roll, yaw and pitch angles * - embedding: facial descriptor as array of numerical elements
* - tensor as Tensor object which contains detected face * - iris: iris distance from current viewpoint as distance value
* - rotation: face rotiation that contains both angles and matrix used for 3d transformations
* - angle: face angle as object with values for roll, yaw and pitch angles
* - matrix: 3d transofrmation matrix as array of numeric values
* - tensor: face tensor as Tensor object which contains detected face
*/ */
export interface Face { export interface Face {
id: number;
confidence: number; confidence: number;
boxConfidence: number; boxConfidence: number;
faceConfidence: number; faceConfidence: number;
@ -52,7 +57,7 @@ export interface Face {
yaw: number; yaw: number;
pitch: number; pitch: number;
}; };
matrix: Array<[number, number, number, number, number, number, number, number, number]>; matrix: [number, number, number, number, number, number, number, number, number];
}; };
tensor: any; tensor: any;
} }
@ -60,9 +65,10 @@ export interface Face {
* *
* Array of individual results with one object per detected body * Array of individual results with one object per detected body
* Each results has: * Each results has:
* - body id number * - id:body id number
* - score: overall detection score * - score: overall detection score
* - box bounding box: x, y, width, height * - box: bounding box: x, y, width, height normalized to input image resolution
* - boxRaw: bounding box: x, y, width, height normalized to 0..1
* - keypoints: array of keypoints * - keypoints: array of keypoints
* - part: body part name * - part: body part name
* - position: body part position with x,y,z coordinates * - position: body part position with x,y,z coordinates
@ -71,8 +77,9 @@ export interface Face {
*/ */
export interface Body { export interface Body {
id: number; id: number;
box: [x: number, y: number, width: number, height: number];
score: number; score: number;
box?: [x: number, y: number, width: number, height: number];
boxRaw?: [x: number, y: number, width: number, height: number];
keypoints: Array<{ keypoints: Array<{
part: string; part: string;
position: { position: {
@ -81,7 +88,7 @@ export interface Body {
z: number; z: number;
}; };
score: number; score: number;
presence: number; presence?: number;
}>; }>;
} }
/** Hand results /** Hand results
@ -95,14 +102,15 @@ export interface Body {
* - annotations as array of annotated face landmark points * - annotations as array of annotated face landmark points
*/ */
export interface Hand { export interface Hand {
id: number;
confidence: number; confidence: number;
box: [number, number, number, number]; box: [number, number, number, number];
boxRaw: [number, number, number, number]; boxRaw: [number, number, number, number];
landmarks: Array<[number, number, number]>; landmarks: Array<[number, number, number]>;
annotations: Array<{ annotations: Record<string, Array<{
part: string; part: string;
points: Array<[number, number, number]>[]; points: Array<[number, number, number]>;
}>; }>>;
} }
/** Object results /** Object results
* *
@ -115,13 +123,13 @@ export interface Hand {
* - box as array of [x, y, width, height], normalized to image resolution * - box as array of [x, y, width, height], normalized to image resolution
* - boxRaw as array of [x, y, width, height], normalized to range 0..1 * - boxRaw as array of [x, y, width, height], normalized to range 0..1
*/ */
export interface Object { export interface Item {
score: number; score: number;
strideSize: number; strideSize?: number;
class: number; class: number;
label: string; label: string;
center: number[]; center?: number[];
centerRaw: number[]; centerRaw?: number[];
box: number[]; box: number[];
boxRaw: number[]; boxRaw: number[];
} }
@ -155,9 +163,10 @@ export interface Result {
/** {@link Gesture}: detection & analysis results */ /** {@link Gesture}: detection & analysis results */
gesture: Array<Gesture>; gesture: Array<Gesture>;
/** {@link Object}: detection & analysis results */ /** {@link Object}: detection & analysis results */
object: Array<Object>; object: Array<Item>;
performance: { performance: {
any: any; any: any;
}; };
canvas: OffscreenCanvas | HTMLCanvasElement; canvas: OffscreenCanvas | HTMLCanvasElement;
timestamp: number;
} }

2
wiki

@ -1 +1 @@
Subproject commit fa896c5330432f26839d362b81ea9128db60d86b Subproject commit d3e31ec79f0f7f9b3382576dd246cd86de22bb43